{"version":3,"file":"static/js/1026_93f2be89fb3b9e8de11e.js","mappings":"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","sources":["file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/common/hierarchicalKind.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/common/history.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/common/hotReload.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/common/htmlContent.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/common/iconLabels.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/common/idGenerator.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/common/ime.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/common/iterator.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/common/keyCodes.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/common/keybindingLabels.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/common/keybindings.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/common/labels.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/common/lazy.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/common/lifecycle.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/common/linkedList.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/common/linkedText.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/common/map.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/common/marked/marked.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/common/marshalling.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/common/mime.js"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport class HierarchicalKind {\n constructor(value) {\n this.value = value;\n }\n equals(other) {\n return this.value === other.value;\n }\n contains(other) {\n return this.equals(other) || this.value === '' || other.value.startsWith(this.value + HierarchicalKind.sep);\n }\n intersects(other) {\n return this.contains(other) || other.contains(this);\n }\n append(...parts) {\n return new HierarchicalKind((this.value ? [this.value, ...parts] : parts).join(HierarchicalKind.sep));\n }\n}\nHierarchicalKind.sep = '.';\nHierarchicalKind.None = new HierarchicalKind('@@none@@'); // Special kind that matches nothing\nHierarchicalKind.Empty = new HierarchicalKind('');\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { ArrayNavigator } from './navigator.js';\nexport class HistoryNavigator {\n constructor(history = [], limit = 10) {\n this._initialize(history);\n this._limit = limit;\n this._onChange();\n }\n getHistory() {\n return this._elements;\n }\n add(t) {\n this._history.delete(t);\n this._history.add(t);\n this._onChange();\n }\n next() {\n // This will navigate past the end of the last element, and in that case the input should be cleared\n return this._navigator.next();\n }\n previous() {\n if (this._currentPosition() !== 0) {\n return this._navigator.previous();\n }\n return null;\n }\n current() {\n return this._navigator.current();\n }\n first() {\n return this._navigator.first();\n }\n last() {\n return this._navigator.last();\n }\n isLast() {\n return this._currentPosition() >= this._elements.length - 1;\n }\n isNowhere() {\n return this._navigator.current() === null;\n }\n has(t) {\n return this._history.has(t);\n }\n _onChange() {\n this._reduceToLimit();\n const elements = this._elements;\n this._navigator = new ArrayNavigator(elements, 0, elements.length, elements.length);\n }\n _reduceToLimit() {\n const data = this._elements;\n if (data.length > this._limit) {\n this._initialize(data.slice(data.length - this._limit));\n }\n }\n _currentPosition() {\n const currentElement = this._navigator.current();\n if (!currentElement) {\n return -1;\n }\n return this._elements.indexOf(currentElement);\n }\n _initialize(history) {\n this._history = new Set();\n for (const entry of history) {\n this._history.add(entry);\n }\n }\n get _elements() {\n const elements = [];\n this._history.forEach(e => elements.push(e));\n return elements;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { env } from './process.js';\nexport function isHotReloadEnabled() {\n return env && !!env['VSCODE_DEV'];\n}\nexport function registerHotReloadHandler(handler) {\n if (!isHotReloadEnabled()) {\n return { dispose() { } };\n }\n else {\n const handlers = registerGlobalHotReloadHandler();\n handlers.add(handler);\n return {\n dispose() { handlers.delete(handler); }\n };\n }\n}\nfunction registerGlobalHotReloadHandler() {\n if (!hotReloadHandlers) {\n hotReloadHandlers = new Set();\n }\n const g = globalThis;\n if (!g.$hotReload_applyNewExports) {\n g.$hotReload_applyNewExports = args => {\n const args2 = { config: { mode: undefined }, ...args };\n for (const h of hotReloadHandlers) {\n const result = h(args2);\n if (result) {\n return result;\n }\n }\n return undefined;\n };\n }\n return hotReloadHandlers;\n}\nlet hotReloadHandlers = undefined;\nif (isHotReloadEnabled()) {\n // This code does not run in production.\n registerHotReloadHandler(({ oldExports, newSrc, config }) => {\n if (config.mode !== 'patch-prototype') {\n return undefined;\n }\n return newExports => {\n var _a, _b;\n for (const key in newExports) {\n const exportedItem = newExports[key];\n console.log(`[hot-reload] Patching prototype methods of '${key}'`, { exportedItem });\n if (typeof exportedItem === 'function' && exportedItem.prototype) {\n const oldExportedItem = oldExports[key];\n if (oldExportedItem) {\n for (const prop of Object.getOwnPropertyNames(exportedItem.prototype)) {\n const descriptor = Object.getOwnPropertyDescriptor(exportedItem.prototype, prop);\n const oldDescriptor = Object.getOwnPropertyDescriptor(oldExportedItem.prototype, prop);\n if (((_a = descriptor === null || descriptor === void 0 ? void 0 : descriptor.value) === null || _a === void 0 ? void 0 : _a.toString()) !== ((_b = oldDescriptor === null || oldDescriptor === void 0 ? void 0 : oldDescriptor.value) === null || _b === void 0 ? void 0 : _b.toString())) {\n console.log(`[hot-reload] Patching prototype method '${key}.${prop}'`);\n }\n Object.defineProperty(oldExportedItem.prototype, prop, descriptor);\n }\n newExports[key] = oldExportedItem;\n }\n }\n }\n return true;\n };\n });\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { illegalArgument } from './errors.js';\nimport { escapeIcons } from './iconLabels.js';\nimport { isEqual } from './resources.js';\nimport { escapeRegExpCharacters } from './strings.js';\nimport { URI } from './uri.js';\nexport class MarkdownString {\n constructor(value = '', isTrustedOrOptions = false) {\n var _a, _b, _c;\n this.value = value;\n if (typeof this.value !== 'string') {\n throw illegalArgument('value');\n }\n if (typeof isTrustedOrOptions === 'boolean') {\n this.isTrusted = isTrustedOrOptions;\n this.supportThemeIcons = false;\n this.supportHtml = false;\n }\n else {\n this.isTrusted = (_a = isTrustedOrOptions.isTrusted) !== null && _a !== void 0 ? _a : undefined;\n this.supportThemeIcons = (_b = isTrustedOrOptions.supportThemeIcons) !== null && _b !== void 0 ? _b : false;\n this.supportHtml = (_c = isTrustedOrOptions.supportHtml) !== null && _c !== void 0 ? _c : false;\n }\n }\n appendText(value, newlineStyle = 0 /* MarkdownStringTextNewlineStyle.Paragraph */) {\n this.value += escapeMarkdownSyntaxTokens(this.supportThemeIcons ? escapeIcons(value) : value) // CodeQL [SM02383] The Markdown is fully sanitized after being rendered.\n .replace(/([ \\t]+)/g, (_match, g1) => ' '.repeat(g1.length)) // CodeQL [SM02383] The Markdown is fully sanitized after being rendered.\n .replace(/\\>/gm, '\\\\>') // CodeQL [SM02383] The Markdown is fully sanitized after being rendered.\n .replace(/\\n/g, newlineStyle === 1 /* MarkdownStringTextNewlineStyle.Break */ ? '\\\\\\n' : '\\n\\n'); // CodeQL [SM02383] The Markdown is fully sanitized after being rendered.\n return this;\n }\n appendMarkdown(value) {\n this.value += value;\n return this;\n }\n appendCodeblock(langId, code) {\n this.value += `\\n${appendEscapedMarkdownCodeBlockFence(code, langId)}\\n`;\n return this;\n }\n appendLink(target, label, title) {\n this.value += '[';\n this.value += this._escape(label, ']');\n this.value += '](';\n this.value += this._escape(String(target), ')');\n if (title) {\n this.value += ` \"${this._escape(this._escape(title, '\"'), ')')}\"`;\n }\n this.value += ')';\n return this;\n }\n _escape(value, ch) {\n const r = new RegExp(escapeRegExpCharacters(ch), 'g');\n return value.replace(r, (match, offset) => {\n if (value.charAt(offset - 1) !== '\\\\') {\n return `\\\\${match}`;\n }\n else {\n return match;\n }\n });\n }\n}\nexport function isEmptyMarkdownString(oneOrMany) {\n if (isMarkdownString(oneOrMany)) {\n return !oneOrMany.value;\n }\n else if (Array.isArray(oneOrMany)) {\n return oneOrMany.every(isEmptyMarkdownString);\n }\n else {\n return true;\n }\n}\nexport function isMarkdownString(thing) {\n if (thing instanceof MarkdownString) {\n return true;\n }\n else if (thing && typeof thing === 'object') {\n return typeof thing.value === 'string'\n && (typeof thing.isTrusted === 'boolean' || typeof thing.isTrusted === 'object' || thing.isTrusted === undefined)\n && (typeof thing.supportThemeIcons === 'boolean' || thing.supportThemeIcons === undefined);\n }\n return false;\n}\nexport function markdownStringEqual(a, b) {\n if (a === b) {\n return true;\n }\n else if (!a || !b) {\n return false;\n }\n else {\n return a.value === b.value\n && a.isTrusted === b.isTrusted\n && a.supportThemeIcons === b.supportThemeIcons\n && a.supportHtml === b.supportHtml\n && (a.baseUri === b.baseUri || !!a.baseUri && !!b.baseUri && isEqual(URI.from(a.baseUri), URI.from(b.baseUri)));\n }\n}\nexport function escapeMarkdownSyntaxTokens(text) {\n // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash\n return text.replace(/[\\\\`*_{}[\\]()#+\\-!~]/g, '\\\\$&'); // CodeQL [SM02383] Backslash is escaped in the character class\n}\n/**\n * @see https://github.com/microsoft/vscode/issues/193746\n */\nexport function appendEscapedMarkdownCodeBlockFence(code, langId) {\n var _a, _b;\n const longestFenceLength = (_b = (_a = code.match(/^`+/gm)) === null || _a === void 0 ? void 0 : _a.reduce((a, b) => (a.length > b.length ? a : b)).length) !== null && _b !== void 0 ? _b : 0;\n const desiredFenceLength = longestFenceLength >= 3 ? longestFenceLength + 1 : 3;\n // the markdown result\n return [\n `${'`'.repeat(desiredFenceLength)}${langId}`,\n code,\n `${'`'.repeat(desiredFenceLength)}`,\n ].join('\\n');\n}\nexport function escapeDoubleQuotes(input) {\n return input.replace(/\"/g, '"');\n}\nexport function removeMarkdownEscapes(text) {\n if (!text) {\n return text;\n }\n return text.replace(/\\\\([\\\\`*_{}[\\]()#+\\-.!~])/g, '$1');\n}\nexport function parseHrefAndDimensions(href) {\n const dimensions = [];\n const splitted = href.split('|').map(s => s.trim());\n href = splitted[0];\n const parameters = splitted[1];\n if (parameters) {\n const heightFromParams = /height=(\\d+)/.exec(parameters);\n const widthFromParams = /width=(\\d+)/.exec(parameters);\n const height = heightFromParams ? heightFromParams[1] : '';\n const width = widthFromParams ? widthFromParams[1] : '';\n const widthIsFinite = isFinite(parseInt(width));\n const heightIsFinite = isFinite(parseInt(height));\n if (widthIsFinite) {\n dimensions.push(`width=\"${width}\"`);\n }\n if (heightIsFinite) {\n dimensions.push(`height=\"${height}\"`);\n }\n }\n return { href, dimensions };\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { matchesFuzzy } from './filters.js';\nimport { ltrim } from './strings.js';\nimport { ThemeIcon } from './themables.js';\nconst iconStartMarker = '$(';\nconst iconsRegex = new RegExp(`\\\\$\\\\(${ThemeIcon.iconNameExpression}(?:${ThemeIcon.iconModifierExpression})?\\\\)`, 'g'); // no capturing groups\nconst escapeIconsRegex = new RegExp(`(\\\\\\\\)?${iconsRegex.source}`, 'g');\nexport function escapeIcons(text) {\n return text.replace(escapeIconsRegex, (match, escaped) => escaped ? match : `\\\\${match}`);\n}\nconst markdownEscapedIconsRegex = new RegExp(`\\\\\\\\${iconsRegex.source}`, 'g');\nexport function markdownEscapeEscapedIcons(text) {\n // Need to add an extra \\ for escaping in markdown\n return text.replace(markdownEscapedIconsRegex, match => `\\\\${match}`);\n}\nconst stripIconsRegex = new RegExp(`(\\\\s)?(\\\\\\\\)?${iconsRegex.source}(\\\\s)?`, 'g');\n/**\n * Takes a label with icons (`$(iconId)xyz`) and strips the icons out (`xyz`)\n */\nexport function stripIcons(text) {\n if (text.indexOf(iconStartMarker) === -1) {\n return text;\n }\n return text.replace(stripIconsRegex, (match, preWhitespace, escaped, postWhitespace) => escaped ? match : preWhitespace || postWhitespace || '');\n}\n/**\n * Takes a label with icons (`$(iconId)xyz`), removes the icon syntax adds whitespace so that screen readers can read the text better.\n */\nexport function getCodiconAriaLabel(text) {\n if (!text) {\n return '';\n }\n return text.replace(/\\$\\((.*?)\\)/g, (_match, codiconName) => ` ${codiconName} `).trim();\n}\nconst _parseIconsRegex = new RegExp(`\\\\$\\\\(${ThemeIcon.iconNameCharacter}+\\\\)`, 'g');\n/**\n * Takes a label with icons (`abc $(iconId)xyz`) and returns the text (`abc xyz`) and the offsets of the icons (`[3]`)\n */\nexport function parseLabelWithIcons(input) {\n _parseIconsRegex.lastIndex = 0;\n let text = '';\n const iconOffsets = [];\n let iconsOffset = 0;\n while (true) {\n const pos = _parseIconsRegex.lastIndex;\n const match = _parseIconsRegex.exec(input);\n const chars = input.substring(pos, match === null || match === void 0 ? void 0 : match.index);\n if (chars.length > 0) {\n text += chars;\n for (let i = 0; i < chars.length; i++) {\n iconOffsets.push(iconsOffset);\n }\n }\n if (!match) {\n break;\n }\n iconsOffset += match[0].length;\n }\n return { text, iconOffsets };\n}\nexport function matchesFuzzyIconAware(query, target, enableSeparateSubstringMatching = false) {\n const { text, iconOffsets } = target;\n // Return early if there are no icon markers in the word to match against\n if (!iconOffsets || iconOffsets.length === 0) {\n return matchesFuzzy(query, text, enableSeparateSubstringMatching);\n }\n // Trim the word to match against because it could have leading\n // whitespace now if the word started with an icon\n const wordToMatchAgainstWithoutIconsTrimmed = ltrim(text, ' ');\n const leadingWhitespaceOffset = text.length - wordToMatchAgainstWithoutIconsTrimmed.length;\n // match on value without icon\n const matches = matchesFuzzy(query, wordToMatchAgainstWithoutIconsTrimmed, enableSeparateSubstringMatching);\n // Map matches back to offsets with icon and trimming\n if (matches) {\n for (const match of matches) {\n const iconOffset = iconOffsets[match.start + leadingWhitespaceOffset] /* icon offsets at index */ + leadingWhitespaceOffset /* overall leading whitespace offset */;\n match.start += iconOffset;\n match.end += iconOffset;\n }\n }\n return matches;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport class IdGenerator {\n constructor(prefix) {\n this._prefix = prefix;\n this._lastId = 0;\n }\n nextId() {\n return this._prefix + (++this._lastId);\n }\n}\nexport const defaultGenerator = new IdGenerator('id#');\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Emitter } from './event.js';\nexport class IMEImpl {\n constructor() {\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._enabled = true;\n }\n get enabled() {\n return this._enabled;\n }\n /**\n * Enable IME\n */\n enable() {\n this._enabled = true;\n this._onDidChange.fire();\n }\n /**\n * Disable IME\n */\n disable() {\n this._enabled = false;\n this._onDidChange.fire();\n }\n}\nexport const IME = new IMEImpl();\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport var Iterable;\n(function (Iterable) {\n function is(thing) {\n return thing && typeof thing === 'object' && typeof thing[Symbol.iterator] === 'function';\n }\n Iterable.is = is;\n const _empty = Object.freeze([]);\n function empty() {\n return _empty;\n }\n Iterable.empty = empty;\n function* single(element) {\n yield element;\n }\n Iterable.single = single;\n function wrap(iterableOrElement) {\n if (is(iterableOrElement)) {\n return iterableOrElement;\n }\n else {\n return single(iterableOrElement);\n }\n }\n Iterable.wrap = wrap;\n function from(iterable) {\n return iterable || _empty;\n }\n Iterable.from = from;\n function* reverse(array) {\n for (let i = array.length - 1; i >= 0; i--) {\n yield array[i];\n }\n }\n Iterable.reverse = reverse;\n function isEmpty(iterable) {\n return !iterable || iterable[Symbol.iterator]().next().done === true;\n }\n Iterable.isEmpty = isEmpty;\n function first(iterable) {\n return iterable[Symbol.iterator]().next().value;\n }\n Iterable.first = first;\n function some(iterable, predicate) {\n for (const element of iterable) {\n if (predicate(element)) {\n return true;\n }\n }\n return false;\n }\n Iterable.some = some;\n function find(iterable, predicate) {\n for (const element of iterable) {\n if (predicate(element)) {\n return element;\n }\n }\n return undefined;\n }\n Iterable.find = find;\n function* filter(iterable, predicate) {\n for (const element of iterable) {\n if (predicate(element)) {\n yield element;\n }\n }\n }\n Iterable.filter = filter;\n function* map(iterable, fn) {\n let index = 0;\n for (const element of iterable) {\n yield fn(element, index++);\n }\n }\n Iterable.map = map;\n function* concat(...iterables) {\n for (const iterable of iterables) {\n yield* iterable;\n }\n }\n Iterable.concat = concat;\n function reduce(iterable, reducer, initialValue) {\n let value = initialValue;\n for (const element of iterable) {\n value = reducer(value, element);\n }\n return value;\n }\n Iterable.reduce = reduce;\n /**\n * Returns an iterable slice of the array, with the same semantics as `array.slice()`.\n */\n function* slice(arr, from, to = arr.length) {\n if (from < 0) {\n from += arr.length;\n }\n if (to < 0) {\n to += arr.length;\n }\n else if (to > arr.length) {\n to = arr.length;\n }\n for (; from < to; from++) {\n yield arr[from];\n }\n }\n Iterable.slice = slice;\n /**\n * Consumes `atMost` elements from iterable and returns the consumed elements,\n * and an iterable for the rest of the elements.\n */\n function consume(iterable, atMost = Number.POSITIVE_INFINITY) {\n const consumed = [];\n if (atMost === 0) {\n return [consumed, iterable];\n }\n const iterator = iterable[Symbol.iterator]();\n for (let i = 0; i < atMost; i++) {\n const next = iterator.next();\n if (next.done) {\n return [consumed, Iterable.empty()];\n }\n consumed.push(next.value);\n }\n return [consumed, { [Symbol.iterator]() { return iterator; } }];\n }\n Iterable.consume = consume;\n async function asyncToArray(iterable) {\n const result = [];\n for await (const item of iterable) {\n result.push(item);\n }\n return Promise.resolve(result);\n }\n Iterable.asyncToArray = asyncToArray;\n})(Iterable || (Iterable = {}));\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nclass KeyCodeStrMap {\n constructor() {\n this._keyCodeToStr = [];\n this._strToKeyCode = Object.create(null);\n }\n define(keyCode, str) {\n this._keyCodeToStr[keyCode] = str;\n this._strToKeyCode[str.toLowerCase()] = keyCode;\n }\n keyCodeToStr(keyCode) {\n return this._keyCodeToStr[keyCode];\n }\n strToKeyCode(str) {\n return this._strToKeyCode[str.toLowerCase()] || 0 /* KeyCode.Unknown */;\n }\n}\nconst uiMap = new KeyCodeStrMap();\nconst userSettingsUSMap = new KeyCodeStrMap();\nconst userSettingsGeneralMap = new KeyCodeStrMap();\nexport const EVENT_KEY_CODE_MAP = new Array(230);\nexport const NATIVE_WINDOWS_KEY_CODE_TO_KEY_CODE = {};\nconst scanCodeIntToStr = [];\nconst scanCodeStrToInt = Object.create(null);\nconst scanCodeLowerCaseStrToInt = Object.create(null);\n/**\n * -1 if a ScanCode => KeyCode mapping depends on kb layout.\n */\nexport const IMMUTABLE_CODE_TO_KEY_CODE = [];\n/**\n * -1 if a KeyCode => ScanCode mapping depends on kb layout.\n */\nexport const IMMUTABLE_KEY_CODE_TO_CODE = [];\nfor (let i = 0; i <= 193 /* ScanCode.MAX_VALUE */; i++) {\n IMMUTABLE_CODE_TO_KEY_CODE[i] = -1 /* KeyCode.DependsOnKbLayout */;\n}\nfor (let i = 0; i <= 132 /* KeyCode.MAX_VALUE */; i++) {\n IMMUTABLE_KEY_CODE_TO_CODE[i] = -1 /* ScanCode.DependsOnKbLayout */;\n}\n(function () {\n // See https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx\n // See https://github.com/microsoft/node-native-keymap/blob/88c0b0e5/deps/chromium/keyboard_codes_win.h\n const empty = '';\n const mappings = [\n // immutable, scanCode, scanCodeStr, keyCode, keyCodeStr, eventKeyCode, vkey, usUserSettingsLabel, generalUserSettingsLabel\n [1, 0 /* ScanCode.None */, 'None', 0 /* KeyCode.Unknown */, 'unknown', 0, 'VK_UNKNOWN', empty, empty],\n [1, 1 /* ScanCode.Hyper */, 'Hyper', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 2 /* ScanCode.Super */, 'Super', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 3 /* ScanCode.Fn */, 'Fn', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 4 /* ScanCode.FnLock */, 'FnLock', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 5 /* ScanCode.Suspend */, 'Suspend', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 6 /* ScanCode.Resume */, 'Resume', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 7 /* ScanCode.Turbo */, 'Turbo', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 8 /* ScanCode.Sleep */, 'Sleep', 0 /* KeyCode.Unknown */, empty, 0, 'VK_SLEEP', empty, empty],\n [1, 9 /* ScanCode.WakeUp */, 'WakeUp', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [0, 10 /* ScanCode.KeyA */, 'KeyA', 31 /* KeyCode.KeyA */, 'A', 65, 'VK_A', empty, empty],\n [0, 11 /* ScanCode.KeyB */, 'KeyB', 32 /* KeyCode.KeyB */, 'B', 66, 'VK_B', empty, empty],\n [0, 12 /* ScanCode.KeyC */, 'KeyC', 33 /* KeyCode.KeyC */, 'C', 67, 'VK_C', empty, empty],\n [0, 13 /* ScanCode.KeyD */, 'KeyD', 34 /* KeyCode.KeyD */, 'D', 68, 'VK_D', empty, empty],\n [0, 14 /* ScanCode.KeyE */, 'KeyE', 35 /* KeyCode.KeyE */, 'E', 69, 'VK_E', empty, empty],\n [0, 15 /* ScanCode.KeyF */, 'KeyF', 36 /* KeyCode.KeyF */, 'F', 70, 'VK_F', empty, empty],\n [0, 16 /* ScanCode.KeyG */, 'KeyG', 37 /* KeyCode.KeyG */, 'G', 71, 'VK_G', empty, empty],\n [0, 17 /* ScanCode.KeyH */, 'KeyH', 38 /* KeyCode.KeyH */, 'H', 72, 'VK_H', empty, empty],\n [0, 18 /* ScanCode.KeyI */, 'KeyI', 39 /* KeyCode.KeyI */, 'I', 73, 'VK_I', empty, empty],\n [0, 19 /* ScanCode.KeyJ */, 'KeyJ', 40 /* KeyCode.KeyJ */, 'J', 74, 'VK_J', empty, empty],\n [0, 20 /* ScanCode.KeyK */, 'KeyK', 41 /* KeyCode.KeyK */, 'K', 75, 'VK_K', empty, empty],\n [0, 21 /* ScanCode.KeyL */, 'KeyL', 42 /* KeyCode.KeyL */, 'L', 76, 'VK_L', empty, empty],\n [0, 22 /* ScanCode.KeyM */, 'KeyM', 43 /* KeyCode.KeyM */, 'M', 77, 'VK_M', empty, empty],\n [0, 23 /* ScanCode.KeyN */, 'KeyN', 44 /* KeyCode.KeyN */, 'N', 78, 'VK_N', empty, empty],\n [0, 24 /* ScanCode.KeyO */, 'KeyO', 45 /* KeyCode.KeyO */, 'O', 79, 'VK_O', empty, empty],\n [0, 25 /* ScanCode.KeyP */, 'KeyP', 46 /* KeyCode.KeyP */, 'P', 80, 'VK_P', empty, empty],\n [0, 26 /* ScanCode.KeyQ */, 'KeyQ', 47 /* KeyCode.KeyQ */, 'Q', 81, 'VK_Q', empty, empty],\n [0, 27 /* ScanCode.KeyR */, 'KeyR', 48 /* KeyCode.KeyR */, 'R', 82, 'VK_R', empty, empty],\n [0, 28 /* ScanCode.KeyS */, 'KeyS', 49 /* KeyCode.KeyS */, 'S', 83, 'VK_S', empty, empty],\n [0, 29 /* ScanCode.KeyT */, 'KeyT', 50 /* KeyCode.KeyT */, 'T', 84, 'VK_T', empty, empty],\n [0, 30 /* ScanCode.KeyU */, 'KeyU', 51 /* KeyCode.KeyU */, 'U', 85, 'VK_U', empty, empty],\n [0, 31 /* ScanCode.KeyV */, 'KeyV', 52 /* KeyCode.KeyV */, 'V', 86, 'VK_V', empty, empty],\n [0, 32 /* ScanCode.KeyW */, 'KeyW', 53 /* KeyCode.KeyW */, 'W', 87, 'VK_W', empty, empty],\n [0, 33 /* ScanCode.KeyX */, 'KeyX', 54 /* KeyCode.KeyX */, 'X', 88, 'VK_X', empty, empty],\n [0, 34 /* ScanCode.KeyY */, 'KeyY', 55 /* KeyCode.KeyY */, 'Y', 89, 'VK_Y', empty, empty],\n [0, 35 /* ScanCode.KeyZ */, 'KeyZ', 56 /* KeyCode.KeyZ */, 'Z', 90, 'VK_Z', empty, empty],\n [0, 36 /* ScanCode.Digit1 */, 'Digit1', 22 /* KeyCode.Digit1 */, '1', 49, 'VK_1', empty, empty],\n [0, 37 /* ScanCode.Digit2 */, 'Digit2', 23 /* KeyCode.Digit2 */, '2', 50, 'VK_2', empty, empty],\n [0, 38 /* ScanCode.Digit3 */, 'Digit3', 24 /* KeyCode.Digit3 */, '3', 51, 'VK_3', empty, empty],\n [0, 39 /* ScanCode.Digit4 */, 'Digit4', 25 /* KeyCode.Digit4 */, '4', 52, 'VK_4', empty, empty],\n [0, 40 /* ScanCode.Digit5 */, 'Digit5', 26 /* KeyCode.Digit5 */, '5', 53, 'VK_5', empty, empty],\n [0, 41 /* ScanCode.Digit6 */, 'Digit6', 27 /* KeyCode.Digit6 */, '6', 54, 'VK_6', empty, empty],\n [0, 42 /* ScanCode.Digit7 */, 'Digit7', 28 /* KeyCode.Digit7 */, '7', 55, 'VK_7', empty, empty],\n [0, 43 /* ScanCode.Digit8 */, 'Digit8', 29 /* KeyCode.Digit8 */, '8', 56, 'VK_8', empty, empty],\n [0, 44 /* ScanCode.Digit9 */, 'Digit9', 30 /* KeyCode.Digit9 */, '9', 57, 'VK_9', empty, empty],\n [0, 45 /* ScanCode.Digit0 */, 'Digit0', 21 /* KeyCode.Digit0 */, '0', 48, 'VK_0', empty, empty],\n [1, 46 /* ScanCode.Enter */, 'Enter', 3 /* KeyCode.Enter */, 'Enter', 13, 'VK_RETURN', empty, empty],\n [1, 47 /* ScanCode.Escape */, 'Escape', 9 /* KeyCode.Escape */, 'Escape', 27, 'VK_ESCAPE', empty, empty],\n [1, 48 /* ScanCode.Backspace */, 'Backspace', 1 /* KeyCode.Backspace */, 'Backspace', 8, 'VK_BACK', empty, empty],\n [1, 49 /* ScanCode.Tab */, 'Tab', 2 /* KeyCode.Tab */, 'Tab', 9, 'VK_TAB', empty, empty],\n [1, 50 /* ScanCode.Space */, 'Space', 10 /* KeyCode.Space */, 'Space', 32, 'VK_SPACE', empty, empty],\n [0, 51 /* ScanCode.Minus */, 'Minus', 88 /* KeyCode.Minus */, '-', 189, 'VK_OEM_MINUS', '-', 'OEM_MINUS'],\n [0, 52 /* ScanCode.Equal */, 'Equal', 86 /* KeyCode.Equal */, '=', 187, 'VK_OEM_PLUS', '=', 'OEM_PLUS'],\n [0, 53 /* ScanCode.BracketLeft */, 'BracketLeft', 92 /* KeyCode.BracketLeft */, '[', 219, 'VK_OEM_4', '[', 'OEM_4'],\n [0, 54 /* ScanCode.BracketRight */, 'BracketRight', 94 /* KeyCode.BracketRight */, ']', 221, 'VK_OEM_6', ']', 'OEM_6'],\n [0, 55 /* ScanCode.Backslash */, 'Backslash', 93 /* KeyCode.Backslash */, '\\\\', 220, 'VK_OEM_5', '\\\\', 'OEM_5'],\n [0, 56 /* ScanCode.IntlHash */, 'IntlHash', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], // has been dropped from the w3c spec\n [0, 57 /* ScanCode.Semicolon */, 'Semicolon', 85 /* KeyCode.Semicolon */, ';', 186, 'VK_OEM_1', ';', 'OEM_1'],\n [0, 58 /* ScanCode.Quote */, 'Quote', 95 /* KeyCode.Quote */, '\\'', 222, 'VK_OEM_7', '\\'', 'OEM_7'],\n [0, 59 /* ScanCode.Backquote */, 'Backquote', 91 /* KeyCode.Backquote */, '`', 192, 'VK_OEM_3', '`', 'OEM_3'],\n [0, 60 /* ScanCode.Comma */, 'Comma', 87 /* KeyCode.Comma */, ',', 188, 'VK_OEM_COMMA', ',', 'OEM_COMMA'],\n [0, 61 /* ScanCode.Period */, 'Period', 89 /* KeyCode.Period */, '.', 190, 'VK_OEM_PERIOD', '.', 'OEM_PERIOD'],\n [0, 62 /* ScanCode.Slash */, 'Slash', 90 /* KeyCode.Slash */, '/', 191, 'VK_OEM_2', '/', 'OEM_2'],\n [1, 63 /* ScanCode.CapsLock */, 'CapsLock', 8 /* KeyCode.CapsLock */, 'CapsLock', 20, 'VK_CAPITAL', empty, empty],\n [1, 64 /* ScanCode.F1 */, 'F1', 59 /* KeyCode.F1 */, 'F1', 112, 'VK_F1', empty, empty],\n [1, 65 /* ScanCode.F2 */, 'F2', 60 /* KeyCode.F2 */, 'F2', 113, 'VK_F2', empty, empty],\n [1, 66 /* ScanCode.F3 */, 'F3', 61 /* KeyCode.F3 */, 'F3', 114, 'VK_F3', empty, empty],\n [1, 67 /* ScanCode.F4 */, 'F4', 62 /* KeyCode.F4 */, 'F4', 115, 'VK_F4', empty, empty],\n [1, 68 /* ScanCode.F5 */, 'F5', 63 /* KeyCode.F5 */, 'F5', 116, 'VK_F5', empty, empty],\n [1, 69 /* ScanCode.F6 */, 'F6', 64 /* KeyCode.F6 */, 'F6', 117, 'VK_F6', empty, empty],\n [1, 70 /* ScanCode.F7 */, 'F7', 65 /* KeyCode.F7 */, 'F7', 118, 'VK_F7', empty, empty],\n [1, 71 /* ScanCode.F8 */, 'F8', 66 /* KeyCode.F8 */, 'F8', 119, 'VK_F8', empty, empty],\n [1, 72 /* ScanCode.F9 */, 'F9', 67 /* KeyCode.F9 */, 'F9', 120, 'VK_F9', empty, empty],\n [1, 73 /* ScanCode.F10 */, 'F10', 68 /* KeyCode.F10 */, 'F10', 121, 'VK_F10', empty, empty],\n [1, 74 /* ScanCode.F11 */, 'F11', 69 /* KeyCode.F11 */, 'F11', 122, 'VK_F11', empty, empty],\n [1, 75 /* ScanCode.F12 */, 'F12', 70 /* KeyCode.F12 */, 'F12', 123, 'VK_F12', empty, empty],\n [1, 76 /* ScanCode.PrintScreen */, 'PrintScreen', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 77 /* ScanCode.ScrollLock */, 'ScrollLock', 84 /* KeyCode.ScrollLock */, 'ScrollLock', 145, 'VK_SCROLL', empty, empty],\n [1, 78 /* ScanCode.Pause */, 'Pause', 7 /* KeyCode.PauseBreak */, 'PauseBreak', 19, 'VK_PAUSE', empty, empty],\n [1, 79 /* ScanCode.Insert */, 'Insert', 19 /* KeyCode.Insert */, 'Insert', 45, 'VK_INSERT', empty, empty],\n [1, 80 /* ScanCode.Home */, 'Home', 14 /* KeyCode.Home */, 'Home', 36, 'VK_HOME', empty, empty],\n [1, 81 /* ScanCode.PageUp */, 'PageUp', 11 /* KeyCode.PageUp */, 'PageUp', 33, 'VK_PRIOR', empty, empty],\n [1, 82 /* ScanCode.Delete */, 'Delete', 20 /* KeyCode.Delete */, 'Delete', 46, 'VK_DELETE', empty, empty],\n [1, 83 /* ScanCode.End */, 'End', 13 /* KeyCode.End */, 'End', 35, 'VK_END', empty, empty],\n [1, 84 /* ScanCode.PageDown */, 'PageDown', 12 /* KeyCode.PageDown */, 'PageDown', 34, 'VK_NEXT', empty, empty],\n [1, 85 /* ScanCode.ArrowRight */, 'ArrowRight', 17 /* KeyCode.RightArrow */, 'RightArrow', 39, 'VK_RIGHT', 'Right', empty],\n [1, 86 /* ScanCode.ArrowLeft */, 'ArrowLeft', 15 /* KeyCode.LeftArrow */, 'LeftArrow', 37, 'VK_LEFT', 'Left', empty],\n [1, 87 /* ScanCode.ArrowDown */, 'ArrowDown', 18 /* KeyCode.DownArrow */, 'DownArrow', 40, 'VK_DOWN', 'Down', empty],\n [1, 88 /* ScanCode.ArrowUp */, 'ArrowUp', 16 /* KeyCode.UpArrow */, 'UpArrow', 38, 'VK_UP', 'Up', empty],\n [1, 89 /* ScanCode.NumLock */, 'NumLock', 83 /* KeyCode.NumLock */, 'NumLock', 144, 'VK_NUMLOCK', empty, empty],\n [1, 90 /* ScanCode.NumpadDivide */, 'NumpadDivide', 113 /* KeyCode.NumpadDivide */, 'NumPad_Divide', 111, 'VK_DIVIDE', empty, empty],\n [1, 91 /* ScanCode.NumpadMultiply */, 'NumpadMultiply', 108 /* KeyCode.NumpadMultiply */, 'NumPad_Multiply', 106, 'VK_MULTIPLY', empty, empty],\n [1, 92 /* ScanCode.NumpadSubtract */, 'NumpadSubtract', 111 /* KeyCode.NumpadSubtract */, 'NumPad_Subtract', 109, 'VK_SUBTRACT', empty, empty],\n [1, 93 /* ScanCode.NumpadAdd */, 'NumpadAdd', 109 /* KeyCode.NumpadAdd */, 'NumPad_Add', 107, 'VK_ADD', empty, empty],\n [1, 94 /* ScanCode.NumpadEnter */, 'NumpadEnter', 3 /* KeyCode.Enter */, empty, 0, empty, empty, empty],\n [1, 95 /* ScanCode.Numpad1 */, 'Numpad1', 99 /* KeyCode.Numpad1 */, 'NumPad1', 97, 'VK_NUMPAD1', empty, empty],\n [1, 96 /* ScanCode.Numpad2 */, 'Numpad2', 100 /* KeyCode.Numpad2 */, 'NumPad2', 98, 'VK_NUMPAD2', empty, empty],\n [1, 97 /* ScanCode.Numpad3 */, 'Numpad3', 101 /* KeyCode.Numpad3 */, 'NumPad3', 99, 'VK_NUMPAD3', empty, empty],\n [1, 98 /* ScanCode.Numpad4 */, 'Numpad4', 102 /* KeyCode.Numpad4 */, 'NumPad4', 100, 'VK_NUMPAD4', empty, empty],\n [1, 99 /* ScanCode.Numpad5 */, 'Numpad5', 103 /* KeyCode.Numpad5 */, 'NumPad5', 101, 'VK_NUMPAD5', empty, empty],\n [1, 100 /* ScanCode.Numpad6 */, 'Numpad6', 104 /* KeyCode.Numpad6 */, 'NumPad6', 102, 'VK_NUMPAD6', empty, empty],\n [1, 101 /* ScanCode.Numpad7 */, 'Numpad7', 105 /* KeyCode.Numpad7 */, 'NumPad7', 103, 'VK_NUMPAD7', empty, empty],\n [1, 102 /* ScanCode.Numpad8 */, 'Numpad8', 106 /* KeyCode.Numpad8 */, 'NumPad8', 104, 'VK_NUMPAD8', empty, empty],\n [1, 103 /* ScanCode.Numpad9 */, 'Numpad9', 107 /* KeyCode.Numpad9 */, 'NumPad9', 105, 'VK_NUMPAD9', empty, empty],\n [1, 104 /* ScanCode.Numpad0 */, 'Numpad0', 98 /* KeyCode.Numpad0 */, 'NumPad0', 96, 'VK_NUMPAD0', empty, empty],\n [1, 105 /* ScanCode.NumpadDecimal */, 'NumpadDecimal', 112 /* KeyCode.NumpadDecimal */, 'NumPad_Decimal', 110, 'VK_DECIMAL', empty, empty],\n [0, 106 /* ScanCode.IntlBackslash */, 'IntlBackslash', 97 /* KeyCode.IntlBackslash */, 'OEM_102', 226, 'VK_OEM_102', empty, empty],\n [1, 107 /* ScanCode.ContextMenu */, 'ContextMenu', 58 /* KeyCode.ContextMenu */, 'ContextMenu', 93, empty, empty, empty],\n [1, 108 /* ScanCode.Power */, 'Power', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 109 /* ScanCode.NumpadEqual */, 'NumpadEqual', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 110 /* ScanCode.F13 */, 'F13', 71 /* KeyCode.F13 */, 'F13', 124, 'VK_F13', empty, empty],\n [1, 111 /* ScanCode.F14 */, 'F14', 72 /* KeyCode.F14 */, 'F14', 125, 'VK_F14', empty, empty],\n [1, 112 /* ScanCode.F15 */, 'F15', 73 /* KeyCode.F15 */, 'F15', 126, 'VK_F15', empty, empty],\n [1, 113 /* ScanCode.F16 */, 'F16', 74 /* KeyCode.F16 */, 'F16', 127, 'VK_F16', empty, empty],\n [1, 114 /* ScanCode.F17 */, 'F17', 75 /* KeyCode.F17 */, 'F17', 128, 'VK_F17', empty, empty],\n [1, 115 /* ScanCode.F18 */, 'F18', 76 /* KeyCode.F18 */, 'F18', 129, 'VK_F18', empty, empty],\n [1, 116 /* ScanCode.F19 */, 'F19', 77 /* KeyCode.F19 */, 'F19', 130, 'VK_F19', empty, empty],\n [1, 117 /* ScanCode.F20 */, 'F20', 78 /* KeyCode.F20 */, 'F20', 131, 'VK_F20', empty, empty],\n [1, 118 /* ScanCode.F21 */, 'F21', 79 /* KeyCode.F21 */, 'F21', 132, 'VK_F21', empty, empty],\n [1, 119 /* ScanCode.F22 */, 'F22', 80 /* KeyCode.F22 */, 'F22', 133, 'VK_F22', empty, empty],\n [1, 120 /* ScanCode.F23 */, 'F23', 81 /* KeyCode.F23 */, 'F23', 134, 'VK_F23', empty, empty],\n [1, 121 /* ScanCode.F24 */, 'F24', 82 /* KeyCode.F24 */, 'F24', 135, 'VK_F24', empty, empty],\n [1, 122 /* ScanCode.Open */, 'Open', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 123 /* ScanCode.Help */, 'Help', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 124 /* ScanCode.Select */, 'Select', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 125 /* ScanCode.Again */, 'Again', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 126 /* ScanCode.Undo */, 'Undo', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 127 /* ScanCode.Cut */, 'Cut', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 128 /* ScanCode.Copy */, 'Copy', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 129 /* ScanCode.Paste */, 'Paste', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 130 /* ScanCode.Find */, 'Find', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 131 /* ScanCode.AudioVolumeMute */, 'AudioVolumeMute', 117 /* KeyCode.AudioVolumeMute */, 'AudioVolumeMute', 173, 'VK_VOLUME_MUTE', empty, empty],\n [1, 132 /* ScanCode.AudioVolumeUp */, 'AudioVolumeUp', 118 /* KeyCode.AudioVolumeUp */, 'AudioVolumeUp', 175, 'VK_VOLUME_UP', empty, empty],\n [1, 133 /* ScanCode.AudioVolumeDown */, 'AudioVolumeDown', 119 /* KeyCode.AudioVolumeDown */, 'AudioVolumeDown', 174, 'VK_VOLUME_DOWN', empty, empty],\n [1, 134 /* ScanCode.NumpadComma */, 'NumpadComma', 110 /* KeyCode.NUMPAD_SEPARATOR */, 'NumPad_Separator', 108, 'VK_SEPARATOR', empty, empty],\n [0, 135 /* ScanCode.IntlRo */, 'IntlRo', 115 /* KeyCode.ABNT_C1 */, 'ABNT_C1', 193, 'VK_ABNT_C1', empty, empty],\n [1, 136 /* ScanCode.KanaMode */, 'KanaMode', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [0, 137 /* ScanCode.IntlYen */, 'IntlYen', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 138 /* ScanCode.Convert */, 'Convert', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 139 /* ScanCode.NonConvert */, 'NonConvert', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 140 /* ScanCode.Lang1 */, 'Lang1', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 141 /* ScanCode.Lang2 */, 'Lang2', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 142 /* ScanCode.Lang3 */, 'Lang3', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 143 /* ScanCode.Lang4 */, 'Lang4', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 144 /* ScanCode.Lang5 */, 'Lang5', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 145 /* ScanCode.Abort */, 'Abort', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 146 /* ScanCode.Props */, 'Props', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 147 /* ScanCode.NumpadParenLeft */, 'NumpadParenLeft', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 148 /* ScanCode.NumpadParenRight */, 'NumpadParenRight', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 149 /* ScanCode.NumpadBackspace */, 'NumpadBackspace', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 150 /* ScanCode.NumpadMemoryStore */, 'NumpadMemoryStore', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 151 /* ScanCode.NumpadMemoryRecall */, 'NumpadMemoryRecall', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 152 /* ScanCode.NumpadMemoryClear */, 'NumpadMemoryClear', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 153 /* ScanCode.NumpadMemoryAdd */, 'NumpadMemoryAdd', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 154 /* ScanCode.NumpadMemorySubtract */, 'NumpadMemorySubtract', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 155 /* ScanCode.NumpadClear */, 'NumpadClear', 131 /* KeyCode.Clear */, 'Clear', 12, 'VK_CLEAR', empty, empty],\n [1, 156 /* ScanCode.NumpadClearEntry */, 'NumpadClearEntry', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 0 /* ScanCode.None */, empty, 5 /* KeyCode.Ctrl */, 'Ctrl', 17, 'VK_CONTROL', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 4 /* KeyCode.Shift */, 'Shift', 16, 'VK_SHIFT', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 6 /* KeyCode.Alt */, 'Alt', 18, 'VK_MENU', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 57 /* KeyCode.Meta */, 'Meta', 91, 'VK_COMMAND', empty, empty],\n [1, 157 /* ScanCode.ControlLeft */, 'ControlLeft', 5 /* KeyCode.Ctrl */, empty, 0, 'VK_LCONTROL', empty, empty],\n [1, 158 /* ScanCode.ShiftLeft */, 'ShiftLeft', 4 /* KeyCode.Shift */, empty, 0, 'VK_LSHIFT', empty, empty],\n [1, 159 /* ScanCode.AltLeft */, 'AltLeft', 6 /* KeyCode.Alt */, empty, 0, 'VK_LMENU', empty, empty],\n [1, 160 /* ScanCode.MetaLeft */, 'MetaLeft', 57 /* KeyCode.Meta */, empty, 0, 'VK_LWIN', empty, empty],\n [1, 161 /* ScanCode.ControlRight */, 'ControlRight', 5 /* KeyCode.Ctrl */, empty, 0, 'VK_RCONTROL', empty, empty],\n [1, 162 /* ScanCode.ShiftRight */, 'ShiftRight', 4 /* KeyCode.Shift */, empty, 0, 'VK_RSHIFT', empty, empty],\n [1, 163 /* ScanCode.AltRight */, 'AltRight', 6 /* KeyCode.Alt */, empty, 0, 'VK_RMENU', empty, empty],\n [1, 164 /* ScanCode.MetaRight */, 'MetaRight', 57 /* KeyCode.Meta */, empty, 0, 'VK_RWIN', empty, empty],\n [1, 165 /* ScanCode.BrightnessUp */, 'BrightnessUp', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 166 /* ScanCode.BrightnessDown */, 'BrightnessDown', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 167 /* ScanCode.MediaPlay */, 'MediaPlay', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 168 /* ScanCode.MediaRecord */, 'MediaRecord', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 169 /* ScanCode.MediaFastForward */, 'MediaFastForward', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 170 /* ScanCode.MediaRewind */, 'MediaRewind', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 171 /* ScanCode.MediaTrackNext */, 'MediaTrackNext', 124 /* KeyCode.MediaTrackNext */, 'MediaTrackNext', 176, 'VK_MEDIA_NEXT_TRACK', empty, empty],\n [1, 172 /* ScanCode.MediaTrackPrevious */, 'MediaTrackPrevious', 125 /* KeyCode.MediaTrackPrevious */, 'MediaTrackPrevious', 177, 'VK_MEDIA_PREV_TRACK', empty, empty],\n [1, 173 /* ScanCode.MediaStop */, 'MediaStop', 126 /* KeyCode.MediaStop */, 'MediaStop', 178, 'VK_MEDIA_STOP', empty, empty],\n [1, 174 /* ScanCode.Eject */, 'Eject', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 175 /* ScanCode.MediaPlayPause */, 'MediaPlayPause', 127 /* KeyCode.MediaPlayPause */, 'MediaPlayPause', 179, 'VK_MEDIA_PLAY_PAUSE', empty, empty],\n [1, 176 /* ScanCode.MediaSelect */, 'MediaSelect', 128 /* KeyCode.LaunchMediaPlayer */, 'LaunchMediaPlayer', 181, 'VK_MEDIA_LAUNCH_MEDIA_SELECT', empty, empty],\n [1, 177 /* ScanCode.LaunchMail */, 'LaunchMail', 129 /* KeyCode.LaunchMail */, 'LaunchMail', 180, 'VK_MEDIA_LAUNCH_MAIL', empty, empty],\n [1, 178 /* ScanCode.LaunchApp2 */, 'LaunchApp2', 130 /* KeyCode.LaunchApp2 */, 'LaunchApp2', 183, 'VK_MEDIA_LAUNCH_APP2', empty, empty],\n [1, 179 /* ScanCode.LaunchApp1 */, 'LaunchApp1', 0 /* KeyCode.Unknown */, empty, 0, 'VK_MEDIA_LAUNCH_APP1', empty, empty],\n [1, 180 /* ScanCode.SelectTask */, 'SelectTask', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 181 /* ScanCode.LaunchScreenSaver */, 'LaunchScreenSaver', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 182 /* ScanCode.BrowserSearch */, 'BrowserSearch', 120 /* KeyCode.BrowserSearch */, 'BrowserSearch', 170, 'VK_BROWSER_SEARCH', empty, empty],\n [1, 183 /* ScanCode.BrowserHome */, 'BrowserHome', 121 /* KeyCode.BrowserHome */, 'BrowserHome', 172, 'VK_BROWSER_HOME', empty, empty],\n [1, 184 /* ScanCode.BrowserBack */, 'BrowserBack', 122 /* KeyCode.BrowserBack */, 'BrowserBack', 166, 'VK_BROWSER_BACK', empty, empty],\n [1, 185 /* ScanCode.BrowserForward */, 'BrowserForward', 123 /* KeyCode.BrowserForward */, 'BrowserForward', 167, 'VK_BROWSER_FORWARD', empty, empty],\n [1, 186 /* ScanCode.BrowserStop */, 'BrowserStop', 0 /* KeyCode.Unknown */, empty, 0, 'VK_BROWSER_STOP', empty, empty],\n [1, 187 /* ScanCode.BrowserRefresh */, 'BrowserRefresh', 0 /* KeyCode.Unknown */, empty, 0, 'VK_BROWSER_REFRESH', empty, empty],\n [1, 188 /* ScanCode.BrowserFavorites */, 'BrowserFavorites', 0 /* KeyCode.Unknown */, empty, 0, 'VK_BROWSER_FAVORITES', empty, empty],\n [1, 189 /* ScanCode.ZoomToggle */, 'ZoomToggle', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 190 /* ScanCode.MailReply */, 'MailReply', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 191 /* ScanCode.MailForward */, 'MailForward', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 192 /* ScanCode.MailSend */, 'MailSend', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n // See https://lists.w3.org/Archives/Public/www-dom/2010JulSep/att-0182/keyCode-spec.html\n // If an Input Method Editor is processing key input and the event is keydown, return 229.\n [1, 0 /* ScanCode.None */, empty, 114 /* KeyCode.KEY_IN_COMPOSITION */, 'KeyInComposition', 229, empty, empty, empty],\n [1, 0 /* ScanCode.None */, empty, 116 /* KeyCode.ABNT_C2 */, 'ABNT_C2', 194, 'VK_ABNT_C2', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 96 /* KeyCode.OEM_8 */, 'OEM_8', 223, 'VK_OEM_8', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_KANA', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_HANGUL', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_JUNJA', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_FINAL', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_HANJA', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_KANJI', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_CONVERT', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_NONCONVERT', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_ACCEPT', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_MODECHANGE', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_SELECT', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_PRINT', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_EXECUTE', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_SNAPSHOT', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_HELP', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_APPS', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_PROCESSKEY', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_PACKET', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_DBE_SBCSCHAR', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_DBE_DBCSCHAR', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_ATTN', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_CRSEL', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_EXSEL', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_EREOF', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_PLAY', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_ZOOM', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_NONAME', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_PA1', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_OEM_CLEAR', empty, empty],\n ];\n const seenKeyCode = [];\n const seenScanCode = [];\n for (const mapping of mappings) {\n const [immutable, scanCode, scanCodeStr, keyCode, keyCodeStr, eventKeyCode, vkey, usUserSettingsLabel, generalUserSettingsLabel] = mapping;\n if (!seenScanCode[scanCode]) {\n seenScanCode[scanCode] = true;\n scanCodeIntToStr[scanCode] = scanCodeStr;\n scanCodeStrToInt[scanCodeStr] = scanCode;\n scanCodeLowerCaseStrToInt[scanCodeStr.toLowerCase()] = scanCode;\n if (immutable) {\n IMMUTABLE_CODE_TO_KEY_CODE[scanCode] = keyCode;\n if ((keyCode !== 0 /* KeyCode.Unknown */)\n && (keyCode !== 3 /* KeyCode.Enter */)\n && (keyCode !== 5 /* KeyCode.Ctrl */)\n && (keyCode !== 4 /* KeyCode.Shift */)\n && (keyCode !== 6 /* KeyCode.Alt */)\n && (keyCode !== 57 /* KeyCode.Meta */)) {\n IMMUTABLE_KEY_CODE_TO_CODE[keyCode] = scanCode;\n }\n }\n }\n if (!seenKeyCode[keyCode]) {\n seenKeyCode[keyCode] = true;\n if (!keyCodeStr) {\n throw new Error(`String representation missing for key code ${keyCode} around scan code ${scanCodeStr}`);\n }\n uiMap.define(keyCode, keyCodeStr);\n userSettingsUSMap.define(keyCode, usUserSettingsLabel || keyCodeStr);\n userSettingsGeneralMap.define(keyCode, generalUserSettingsLabel || usUserSettingsLabel || keyCodeStr);\n }\n if (eventKeyCode) {\n EVENT_KEY_CODE_MAP[eventKeyCode] = keyCode;\n }\n if (vkey) {\n NATIVE_WINDOWS_KEY_CODE_TO_KEY_CODE[vkey] = keyCode;\n }\n }\n // Manually added due to the exclusion above (due to duplication with NumpadEnter)\n IMMUTABLE_KEY_CODE_TO_CODE[3 /* KeyCode.Enter */] = 46 /* ScanCode.Enter */;\n})();\nexport var KeyCodeUtils;\n(function (KeyCodeUtils) {\n function toString(keyCode) {\n return uiMap.keyCodeToStr(keyCode);\n }\n KeyCodeUtils.toString = toString;\n function fromString(key) {\n return uiMap.strToKeyCode(key);\n }\n KeyCodeUtils.fromString = fromString;\n function toUserSettingsUS(keyCode) {\n return userSettingsUSMap.keyCodeToStr(keyCode);\n }\n KeyCodeUtils.toUserSettingsUS = toUserSettingsUS;\n function toUserSettingsGeneral(keyCode) {\n return userSettingsGeneralMap.keyCodeToStr(keyCode);\n }\n KeyCodeUtils.toUserSettingsGeneral = toUserSettingsGeneral;\n function fromUserSettings(key) {\n return userSettingsUSMap.strToKeyCode(key) || userSettingsGeneralMap.strToKeyCode(key);\n }\n KeyCodeUtils.fromUserSettings = fromUserSettings;\n function toElectronAccelerator(keyCode) {\n if (keyCode >= 98 /* KeyCode.Numpad0 */ && keyCode <= 113 /* KeyCode.NumpadDivide */) {\n // [Electron Accelerators] Electron is able to parse numpad keys, but unfortunately it\n // renders them just as regular keys in menus. For example, num0 is rendered as \"0\",\n // numdiv is rendered as \"/\", numsub is rendered as \"-\".\n //\n // This can lead to incredible confusion, as it makes numpad based keybindings indistinguishable\n // from keybindings based on regular keys.\n //\n // We therefore need to fall back to custom rendering for numpad keys.\n return null;\n }\n switch (keyCode) {\n case 16 /* KeyCode.UpArrow */:\n return 'Up';\n case 18 /* KeyCode.DownArrow */:\n return 'Down';\n case 15 /* KeyCode.LeftArrow */:\n return 'Left';\n case 17 /* KeyCode.RightArrow */:\n return 'Right';\n }\n return uiMap.keyCodeToStr(keyCode);\n }\n KeyCodeUtils.toElectronAccelerator = toElectronAccelerator;\n})(KeyCodeUtils || (KeyCodeUtils = {}));\nexport function KeyChord(firstPart, secondPart) {\n const chordPart = ((secondPart & 0x0000FFFF) << 16) >>> 0;\n return (firstPart | chordPart) >>> 0;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as nls from '../../nls.js';\nexport class ModifierLabelProvider {\n constructor(mac, windows, linux = windows) {\n this.modifierLabels = [null]; // index 0 will never me accessed.\n this.modifierLabels[2 /* OperatingSystem.Macintosh */] = mac;\n this.modifierLabels[1 /* OperatingSystem.Windows */] = windows;\n this.modifierLabels[3 /* OperatingSystem.Linux */] = linux;\n }\n toLabel(OS, chords, keyLabelProvider) {\n if (chords.length === 0) {\n return null;\n }\n const result = [];\n for (let i = 0, len = chords.length; i < len; i++) {\n const chord = chords[i];\n const keyLabel = keyLabelProvider(chord);\n if (keyLabel === null) {\n // this keybinding cannot be expressed...\n return null;\n }\n result[i] = _simpleAsString(chord, keyLabel, this.modifierLabels[OS]);\n }\n return result.join(' ');\n }\n}\n/**\n * A label provider that prints modifiers in a suitable format for displaying in the UI.\n */\nexport const UILabelProvider = new ModifierLabelProvider({\n ctrlKey: '\\u2303',\n shiftKey: '⇧',\n altKey: '⌥',\n metaKey: '⌘',\n separator: '',\n}, {\n ctrlKey: nls.localize({ key: 'ctrlKey', comment: ['This is the short form for the Control key on the keyboard'] }, \"Ctrl\"),\n shiftKey: nls.localize({ key: 'shiftKey', comment: ['This is the short form for the Shift key on the keyboard'] }, \"Shift\"),\n altKey: nls.localize({ key: 'altKey', comment: ['This is the short form for the Alt key on the keyboard'] }, \"Alt\"),\n metaKey: nls.localize({ key: 'windowsKey', comment: ['This is the short form for the Windows key on the keyboard'] }, \"Windows\"),\n separator: '+',\n}, {\n ctrlKey: nls.localize({ key: 'ctrlKey', comment: ['This is the short form for the Control key on the keyboard'] }, \"Ctrl\"),\n shiftKey: nls.localize({ key: 'shiftKey', comment: ['This is the short form for the Shift key on the keyboard'] }, \"Shift\"),\n altKey: nls.localize({ key: 'altKey', comment: ['This is the short form for the Alt key on the keyboard'] }, \"Alt\"),\n metaKey: nls.localize({ key: 'superKey', comment: ['This is the short form for the Super key on the keyboard'] }, \"Super\"),\n separator: '+',\n});\n/**\n * A label provider that prints modifiers in a suitable format for ARIA.\n */\nexport const AriaLabelProvider = new ModifierLabelProvider({\n ctrlKey: nls.localize({ key: 'ctrlKey.long', comment: ['This is the long form for the Control key on the keyboard'] }, \"Control\"),\n shiftKey: nls.localize({ key: 'shiftKey.long', comment: ['This is the long form for the Shift key on the keyboard'] }, \"Shift\"),\n altKey: nls.localize({ key: 'optKey.long', comment: ['This is the long form for the Alt/Option key on the keyboard'] }, \"Option\"),\n metaKey: nls.localize({ key: 'cmdKey.long', comment: ['This is the long form for the Command key on the keyboard'] }, \"Command\"),\n separator: '+',\n}, {\n ctrlKey: nls.localize({ key: 'ctrlKey.long', comment: ['This is the long form for the Control key on the keyboard'] }, \"Control\"),\n shiftKey: nls.localize({ key: 'shiftKey.long', comment: ['This is the long form for the Shift key on the keyboard'] }, \"Shift\"),\n altKey: nls.localize({ key: 'altKey.long', comment: ['This is the long form for the Alt key on the keyboard'] }, \"Alt\"),\n metaKey: nls.localize({ key: 'windowsKey.long', comment: ['This is the long form for the Windows key on the keyboard'] }, \"Windows\"),\n separator: '+',\n}, {\n ctrlKey: nls.localize({ key: 'ctrlKey.long', comment: ['This is the long form for the Control key on the keyboard'] }, \"Control\"),\n shiftKey: nls.localize({ key: 'shiftKey.long', comment: ['This is the long form for the Shift key on the keyboard'] }, \"Shift\"),\n altKey: nls.localize({ key: 'altKey.long', comment: ['This is the long form for the Alt key on the keyboard'] }, \"Alt\"),\n metaKey: nls.localize({ key: 'superKey.long', comment: ['This is the long form for the Super key on the keyboard'] }, \"Super\"),\n separator: '+',\n});\n/**\n * A label provider that prints modifiers in a suitable format for Electron Accelerators.\n * See https://github.com/electron/electron/blob/master/docs/api/accelerator.md\n */\nexport const ElectronAcceleratorLabelProvider = new ModifierLabelProvider({\n ctrlKey: 'Ctrl',\n shiftKey: 'Shift',\n altKey: 'Alt',\n metaKey: 'Cmd',\n separator: '+',\n}, {\n ctrlKey: 'Ctrl',\n shiftKey: 'Shift',\n altKey: 'Alt',\n metaKey: 'Super',\n separator: '+',\n});\n/**\n * A label provider that prints modifiers in a suitable format for user settings.\n */\nexport const UserSettingsLabelProvider = new ModifierLabelProvider({\n ctrlKey: 'ctrl',\n shiftKey: 'shift',\n altKey: 'alt',\n metaKey: 'cmd',\n separator: '+',\n}, {\n ctrlKey: 'ctrl',\n shiftKey: 'shift',\n altKey: 'alt',\n metaKey: 'win',\n separator: '+',\n}, {\n ctrlKey: 'ctrl',\n shiftKey: 'shift',\n altKey: 'alt',\n metaKey: 'meta',\n separator: '+',\n});\nfunction _simpleAsString(modifiers, key, labels) {\n if (key === null) {\n return '';\n }\n const result = [];\n // translate modifier keys: Ctrl-Shift-Alt-Meta\n if (modifiers.ctrlKey) {\n result.push(labels.ctrlKey);\n }\n if (modifiers.shiftKey) {\n result.push(labels.shiftKey);\n }\n if (modifiers.altKey) {\n result.push(labels.altKey);\n }\n if (modifiers.metaKey) {\n result.push(labels.metaKey);\n }\n // the actual key\n if (key !== '') {\n result.push(key);\n }\n return result.join(labels.separator);\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { illegalArgument } from './errors.js';\nexport function decodeKeybinding(keybinding, OS) {\n if (typeof keybinding === 'number') {\n if (keybinding === 0) {\n return null;\n }\n const firstChord = (keybinding & 0x0000FFFF) >>> 0;\n const secondChord = (keybinding & 0xFFFF0000) >>> 16;\n if (secondChord !== 0) {\n return new Keybinding([\n createSimpleKeybinding(firstChord, OS),\n createSimpleKeybinding(secondChord, OS)\n ]);\n }\n return new Keybinding([createSimpleKeybinding(firstChord, OS)]);\n }\n else {\n const chords = [];\n for (let i = 0; i < keybinding.length; i++) {\n chords.push(createSimpleKeybinding(keybinding[i], OS));\n }\n return new Keybinding(chords);\n }\n}\nexport function createSimpleKeybinding(keybinding, OS) {\n const ctrlCmd = (keybinding & 2048 /* BinaryKeybindingsMask.CtrlCmd */ ? true : false);\n const winCtrl = (keybinding & 256 /* BinaryKeybindingsMask.WinCtrl */ ? true : false);\n const ctrlKey = (OS === 2 /* OperatingSystem.Macintosh */ ? winCtrl : ctrlCmd);\n const shiftKey = (keybinding & 1024 /* BinaryKeybindingsMask.Shift */ ? true : false);\n const altKey = (keybinding & 512 /* BinaryKeybindingsMask.Alt */ ? true : false);\n const metaKey = (OS === 2 /* OperatingSystem.Macintosh */ ? ctrlCmd : winCtrl);\n const keyCode = (keybinding & 255 /* BinaryKeybindingsMask.KeyCode */);\n return new KeyCodeChord(ctrlKey, shiftKey, altKey, metaKey, keyCode);\n}\n/**\n * Represents a chord which uses the `keyCode` field of keyboard events.\n * A chord is a combination of keys pressed simultaneously.\n */\nexport class KeyCodeChord {\n constructor(ctrlKey, shiftKey, altKey, metaKey, keyCode) {\n this.ctrlKey = ctrlKey;\n this.shiftKey = shiftKey;\n this.altKey = altKey;\n this.metaKey = metaKey;\n this.keyCode = keyCode;\n }\n equals(other) {\n return (other instanceof KeyCodeChord\n && this.ctrlKey === other.ctrlKey\n && this.shiftKey === other.shiftKey\n && this.altKey === other.altKey\n && this.metaKey === other.metaKey\n && this.keyCode === other.keyCode);\n }\n isModifierKey() {\n return (this.keyCode === 0 /* KeyCode.Unknown */\n || this.keyCode === 5 /* KeyCode.Ctrl */\n || this.keyCode === 57 /* KeyCode.Meta */\n || this.keyCode === 6 /* KeyCode.Alt */\n || this.keyCode === 4 /* KeyCode.Shift */);\n }\n /**\n * Does this keybinding refer to the key code of a modifier and it also has the modifier flag?\n */\n isDuplicateModifierCase() {\n return ((this.ctrlKey && this.keyCode === 5 /* KeyCode.Ctrl */)\n || (this.shiftKey && this.keyCode === 4 /* KeyCode.Shift */)\n || (this.altKey && this.keyCode === 6 /* KeyCode.Alt */)\n || (this.metaKey && this.keyCode === 57 /* KeyCode.Meta */));\n }\n}\n/**\n * Represents a chord which uses the `code` field of keyboard events.\n * A chord is a combination of keys pressed simultaneously.\n */\nexport class ScanCodeChord {\n constructor(ctrlKey, shiftKey, altKey, metaKey, scanCode) {\n this.ctrlKey = ctrlKey;\n this.shiftKey = shiftKey;\n this.altKey = altKey;\n this.metaKey = metaKey;\n this.scanCode = scanCode;\n }\n /**\n * Does this keybinding refer to the key code of a modifier and it also has the modifier flag?\n */\n isDuplicateModifierCase() {\n return ((this.ctrlKey && (this.scanCode === 157 /* ScanCode.ControlLeft */ || this.scanCode === 161 /* ScanCode.ControlRight */))\n || (this.shiftKey && (this.scanCode === 158 /* ScanCode.ShiftLeft */ || this.scanCode === 162 /* ScanCode.ShiftRight */))\n || (this.altKey && (this.scanCode === 159 /* ScanCode.AltLeft */ || this.scanCode === 163 /* ScanCode.AltRight */))\n || (this.metaKey && (this.scanCode === 160 /* ScanCode.MetaLeft */ || this.scanCode === 164 /* ScanCode.MetaRight */)));\n }\n}\n/**\n * A keybinding is a sequence of chords.\n */\nexport class Keybinding {\n constructor(chords) {\n if (chords.length === 0) {\n throw illegalArgument(`chords`);\n }\n this.chords = chords;\n }\n}\nexport class ResolvedChord {\n constructor(ctrlKey, shiftKey, altKey, metaKey, keyLabel, keyAriaLabel) {\n this.ctrlKey = ctrlKey;\n this.shiftKey = shiftKey;\n this.altKey = altKey;\n this.metaKey = metaKey;\n this.keyLabel = keyLabel;\n this.keyAriaLabel = keyAriaLabel;\n }\n}\n/**\n * A resolved keybinding. Consists of one or multiple chords.\n */\nexport class ResolvedKeybinding {\n}\n","import { hasDriveLetter } from './extpath.js';\nimport { isWindows } from './platform.js';\nexport function normalizeDriveLetter(path, isWindowsOS = isWindows) {\n if (hasDriveLetter(path, isWindowsOS)) {\n return path.charAt(0).toUpperCase() + path.slice(1);\n }\n return path;\n}\nlet normalizedUserHomeCached = Object.create(null);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport class Lazy {\n constructor(executor) {\n this.executor = executor;\n this._didRun = false;\n }\n /**\n * Get the wrapped value.\n *\n * This will force evaluation of the lazy value if it has not been resolved yet. Lazy values are only\n * resolved once. `getValue` will re-throw exceptions that are hit while resolving the value\n */\n get value() {\n if (!this._didRun) {\n try {\n this._value = this.executor();\n }\n catch (err) {\n this._error = err;\n }\n finally {\n this._didRun = true;\n }\n }\n if (this._error) {\n throw this._error;\n }\n return this._value;\n }\n /**\n * Get the wrapped value without forcing evaluation.\n */\n get rawValue() { return this._value; }\n}\n","import { createSingleCallFunction } from './functional.js';\nimport { Iterable } from './iterator.js';\n// #region Disposable Tracking\n/**\n * Enables logging of potentially leaked disposables.\n *\n * A disposable is considered leaked if it is not disposed or not registered as the child of\n * another disposable. This tracking is very simple an only works for classes that either\n * extend Disposable or use a DisposableStore. This means there are a lot of false positives.\n */\nconst TRACK_DISPOSABLES = false;\nlet disposableTracker = null;\nexport function setDisposableTracker(tracker) {\n disposableTracker = tracker;\n}\nif (TRACK_DISPOSABLES) {\n const __is_disposable_tracked__ = '__is_disposable_tracked__';\n setDisposableTracker(new class {\n trackDisposable(x) {\n const stack = new Error('Potentially leaked disposable').stack;\n setTimeout(() => {\n if (!x[__is_disposable_tracked__]) {\n console.log(stack);\n }\n }, 3000);\n }\n setParent(child, parent) {\n if (child && child !== Disposable.None) {\n try {\n child[__is_disposable_tracked__] = true;\n }\n catch (_a) {\n // noop\n }\n }\n }\n markAsDisposed(disposable) {\n if (disposable && disposable !== Disposable.None) {\n try {\n disposable[__is_disposable_tracked__] = true;\n }\n catch (_a) {\n // noop\n }\n }\n }\n markAsSingleton(disposable) { }\n });\n}\nexport function trackDisposable(x) {\n disposableTracker === null || disposableTracker === void 0 ? void 0 : disposableTracker.trackDisposable(x);\n return x;\n}\nexport function markAsDisposed(disposable) {\n disposableTracker === null || disposableTracker === void 0 ? void 0 : disposableTracker.markAsDisposed(disposable);\n}\nfunction setParentOfDisposable(child, parent) {\n disposableTracker === null || disposableTracker === void 0 ? void 0 : disposableTracker.setParent(child, parent);\n}\nfunction setParentOfDisposables(children, parent) {\n if (!disposableTracker) {\n return;\n }\n for (const child of children) {\n disposableTracker.setParent(child, parent);\n }\n}\n/**\n * Indicates that the given object is a singleton which does not need to be disposed.\n*/\nexport function markAsSingleton(singleton) {\n disposableTracker === null || disposableTracker === void 0 ? void 0 : disposableTracker.markAsSingleton(singleton);\n return singleton;\n}\n/**\n * Check if `thing` is {@link IDisposable disposable}.\n */\nexport function isDisposable(thing) {\n return typeof thing === 'object' && thing !== null && typeof thing.dispose === 'function' && thing.dispose.length === 0;\n}\nexport function dispose(arg) {\n if (Iterable.is(arg)) {\n const errors = [];\n for (const d of arg) {\n if (d) {\n try {\n d.dispose();\n }\n catch (e) {\n errors.push(e);\n }\n }\n }\n if (errors.length === 1) {\n throw errors[0];\n }\n else if (errors.length > 1) {\n throw new AggregateError(errors, 'Encountered errors while disposing of store');\n }\n return Array.isArray(arg) ? [] : arg;\n }\n else if (arg) {\n arg.dispose();\n return arg;\n }\n}\n/**\n * Combine multiple disposable values into a single {@link IDisposable}.\n */\nexport function combinedDisposable(...disposables) {\n const parent = toDisposable(() => dispose(disposables));\n setParentOfDisposables(disposables, parent);\n return parent;\n}\n/**\n * Turn a function that implements dispose into an {@link IDisposable}.\n *\n * @param fn Clean up function, guaranteed to be called only **once**.\n */\nexport function toDisposable(fn) {\n const self = trackDisposable({\n dispose: createSingleCallFunction(() => {\n markAsDisposed(self);\n fn();\n })\n });\n return self;\n}\n/**\n * Manages a collection of disposable values.\n *\n * This is the preferred way to manage multiple disposables. A `DisposableStore` is safer to work with than an\n * `IDisposable[]` as it considers edge cases, such as registering the same value multiple times or adding an item to a\n * store that has already been disposed of.\n */\nexport class DisposableStore {\n constructor() {\n this._toDispose = new Set();\n this._isDisposed = false;\n trackDisposable(this);\n }\n /**\n * Dispose of all registered disposables and mark this object as disposed.\n *\n * Any future disposables added to this object will be disposed of on `add`.\n */\n dispose() {\n if (this._isDisposed) {\n return;\n }\n markAsDisposed(this);\n this._isDisposed = true;\n this.clear();\n }\n /**\n * @return `true` if this object has been disposed of.\n */\n get isDisposed() {\n return this._isDisposed;\n }\n /**\n * Dispose of all registered disposables but do not mark this object as disposed.\n */\n clear() {\n if (this._toDispose.size === 0) {\n return;\n }\n try {\n dispose(this._toDispose);\n }\n finally {\n this._toDispose.clear();\n }\n }\n /**\n * Add a new {@link IDisposable disposable} to the collection.\n */\n add(o) {\n if (!o) {\n return o;\n }\n if (o === this) {\n throw new Error('Cannot register a disposable on itself!');\n }\n setParentOfDisposable(o, this);\n if (this._isDisposed) {\n if (!DisposableStore.DISABLE_DISPOSED_WARNING) {\n console.warn(new Error('Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!').stack);\n }\n }\n else {\n this._toDispose.add(o);\n }\n return o;\n }\n /**\n * Deletes the value from the store, but does not dispose it.\n */\n deleteAndLeak(o) {\n if (!o) {\n return;\n }\n if (this._toDispose.has(o)) {\n this._toDispose.delete(o);\n setParentOfDisposable(o, null);\n }\n }\n}\nDisposableStore.DISABLE_DISPOSED_WARNING = false;\n/**\n * Abstract base class for a {@link IDisposable disposable} object.\n *\n * Subclasses can {@linkcode _register} disposables that will be automatically cleaned up when this object is disposed of.\n */\nexport class Disposable {\n constructor() {\n this._store = new DisposableStore();\n trackDisposable(this);\n setParentOfDisposable(this._store, this);\n }\n dispose() {\n markAsDisposed(this);\n this._store.dispose();\n }\n /**\n * Adds `o` to the collection of disposables managed by this object.\n */\n _register(o) {\n if (o === this) {\n throw new Error('Cannot register a disposable on itself!');\n }\n return this._store.add(o);\n }\n}\n/**\n * A disposable that does nothing when it is disposed of.\n *\n * TODO: This should not be a static property.\n */\nDisposable.None = Object.freeze({ dispose() { } });\n/**\n * Manages the lifecycle of a disposable value that may be changed.\n *\n * This ensures that when the disposable value is changed, the previously held disposable is disposed of. You can\n * also register a `MutableDisposable` on a `Disposable` to ensure it is automatically cleaned up.\n */\nexport class MutableDisposable {\n constructor() {\n this._isDisposed = false;\n trackDisposable(this);\n }\n get value() {\n return this._isDisposed ? undefined : this._value;\n }\n set value(value) {\n var _a;\n if (this._isDisposed || value === this._value) {\n return;\n }\n (_a = this._value) === null || _a === void 0 ? void 0 : _a.dispose();\n if (value) {\n setParentOfDisposable(value, this);\n }\n this._value = value;\n }\n /**\n * Resets the stored value and disposed of the previously stored value.\n */\n clear() {\n this.value = undefined;\n }\n dispose() {\n var _a;\n this._isDisposed = true;\n markAsDisposed(this);\n (_a = this._value) === null || _a === void 0 ? void 0 : _a.dispose();\n this._value = undefined;\n }\n}\nexport class RefCountedDisposable {\n constructor(_disposable) {\n this._disposable = _disposable;\n this._counter = 1;\n }\n acquire() {\n this._counter++;\n return this;\n }\n release() {\n if (--this._counter === 0) {\n this._disposable.dispose();\n }\n return this;\n }\n}\nexport class ImmortalReference {\n constructor(object) {\n this.object = object;\n }\n dispose() { }\n}\n/**\n * A map the manages the lifecycle of the values that it stores.\n */\nexport class DisposableMap {\n constructor() {\n this._store = new Map();\n this._isDisposed = false;\n trackDisposable(this);\n }\n /**\n * Disposes of all stored values and mark this object as disposed.\n *\n * Trying to use this object after it has been disposed of is an error.\n */\n dispose() {\n markAsDisposed(this);\n this._isDisposed = true;\n this.clearAndDisposeAll();\n }\n /**\n * Disposes of all stored values and clear the map, but DO NOT mark this object as disposed.\n */\n clearAndDisposeAll() {\n if (!this._store.size) {\n return;\n }\n try {\n dispose(this._store.values());\n }\n finally {\n this._store.clear();\n }\n }\n get(key) {\n return this._store.get(key);\n }\n set(key, value, skipDisposeOnOverwrite = false) {\n var _a;\n if (this._isDisposed) {\n console.warn(new Error('Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!').stack);\n }\n if (!skipDisposeOnOverwrite) {\n (_a = this._store.get(key)) === null || _a === void 0 ? void 0 : _a.dispose();\n }\n this._store.set(key, value);\n }\n /**\n * Delete the value stored for `key` from this map and also dispose of it.\n */\n deleteAndDispose(key) {\n var _a;\n (_a = this._store.get(key)) === null || _a === void 0 ? void 0 : _a.dispose();\n this._store.delete(key);\n }\n [Symbol.iterator]() {\n return this._store[Symbol.iterator]();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nclass Node {\n constructor(element) {\n this.element = element;\n this.next = Node.Undefined;\n this.prev = Node.Undefined;\n }\n}\nNode.Undefined = new Node(undefined);\nexport class LinkedList {\n constructor() {\n this._first = Node.Undefined;\n this._last = Node.Undefined;\n this._size = 0;\n }\n get size() {\n return this._size;\n }\n isEmpty() {\n return this._first === Node.Undefined;\n }\n clear() {\n let node = this._first;\n while (node !== Node.Undefined) {\n const next = node.next;\n node.prev = Node.Undefined;\n node.next = Node.Undefined;\n node = next;\n }\n this._first = Node.Undefined;\n this._last = Node.Undefined;\n this._size = 0;\n }\n unshift(element) {\n return this._insert(element, false);\n }\n push(element) {\n return this._insert(element, true);\n }\n _insert(element, atTheEnd) {\n const newNode = new Node(element);\n if (this._first === Node.Undefined) {\n this._first = newNode;\n this._last = newNode;\n }\n else if (atTheEnd) {\n // push\n const oldLast = this._last;\n this._last = newNode;\n newNode.prev = oldLast;\n oldLast.next = newNode;\n }\n else {\n // unshift\n const oldFirst = this._first;\n this._first = newNode;\n newNode.next = oldFirst;\n oldFirst.prev = newNode;\n }\n this._size += 1;\n let didRemove = false;\n return () => {\n if (!didRemove) {\n didRemove = true;\n this._remove(newNode);\n }\n };\n }\n shift() {\n if (this._first === Node.Undefined) {\n return undefined;\n }\n else {\n const res = this._first.element;\n this._remove(this._first);\n return res;\n }\n }\n pop() {\n if (this._last === Node.Undefined) {\n return undefined;\n }\n else {\n const res = this._last.element;\n this._remove(this._last);\n return res;\n }\n }\n _remove(node) {\n if (node.prev !== Node.Undefined && node.next !== Node.Undefined) {\n // middle\n const anchor = node.prev;\n anchor.next = node.next;\n node.next.prev = anchor;\n }\n else if (node.prev === Node.Undefined && node.next === Node.Undefined) {\n // only node\n this._first = Node.Undefined;\n this._last = Node.Undefined;\n }\n else if (node.next === Node.Undefined) {\n // last\n this._last = this._last.prev;\n this._last.next = Node.Undefined;\n }\n else if (node.prev === Node.Undefined) {\n // first\n this._first = this._first.next;\n this._first.prev = Node.Undefined;\n }\n // done\n this._size -= 1;\n }\n *[Symbol.iterator]() {\n let node = this._first;\n while (node !== Node.Undefined) {\n yield node.element;\n node = node.next;\n }\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { memoize } from './decorators.js';\nexport class LinkedText {\n constructor(nodes) {\n this.nodes = nodes;\n }\n toString() {\n return this.nodes.map(node => typeof node === 'string' ? node : node.label).join('');\n }\n}\n__decorate([\n memoize\n], LinkedText.prototype, \"toString\", null);\nconst LINK_REGEX = /\\[([^\\]]+)\\]\\(((?:https?:\\/\\/|command:|file:)[^\\)\\s]+)(?: ([\"'])(.+?)(\\3))?\\)/gi;\nexport function parseLinkedText(text) {\n const result = [];\n let index = 0;\n let match;\n while (match = LINK_REGEX.exec(text)) {\n if (match.index - index > 0) {\n result.push(text.substring(index, match.index));\n }\n const [, label, href, , title] = match;\n if (title) {\n result.push({ label, href, title });\n }\n else {\n result.push({ label, href });\n }\n index = match.index + match[0].length;\n }\n if (index < text.length) {\n result.push(text.substring(index));\n }\n return new LinkedText(result);\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar _a, _b;\nclass ResourceMapEntry {\n constructor(uri, value) {\n this.uri = uri;\n this.value = value;\n }\n}\nfunction isEntries(arg) {\n return Array.isArray(arg);\n}\nexport class ResourceMap {\n constructor(arg, toKey) {\n this[_a] = 'ResourceMap';\n if (arg instanceof ResourceMap) {\n this.map = new Map(arg.map);\n this.toKey = toKey !== null && toKey !== void 0 ? toKey : ResourceMap.defaultToKey;\n }\n else if (isEntries(arg)) {\n this.map = new Map();\n this.toKey = toKey !== null && toKey !== void 0 ? toKey : ResourceMap.defaultToKey;\n for (const [resource, value] of arg) {\n this.set(resource, value);\n }\n }\n else {\n this.map = new Map();\n this.toKey = arg !== null && arg !== void 0 ? arg : ResourceMap.defaultToKey;\n }\n }\n set(resource, value) {\n this.map.set(this.toKey(resource), new ResourceMapEntry(resource, value));\n return this;\n }\n get(resource) {\n var _c;\n return (_c = this.map.get(this.toKey(resource))) === null || _c === void 0 ? void 0 : _c.value;\n }\n has(resource) {\n return this.map.has(this.toKey(resource));\n }\n get size() {\n return this.map.size;\n }\n clear() {\n this.map.clear();\n }\n delete(resource) {\n return this.map.delete(this.toKey(resource));\n }\n forEach(clb, thisArg) {\n if (typeof thisArg !== 'undefined') {\n clb = clb.bind(thisArg);\n }\n for (const [_, entry] of this.map) {\n clb(entry.value, entry.uri, this);\n }\n }\n *values() {\n for (const entry of this.map.values()) {\n yield entry.value;\n }\n }\n *keys() {\n for (const entry of this.map.values()) {\n yield entry.uri;\n }\n }\n *entries() {\n for (const entry of this.map.values()) {\n yield [entry.uri, entry.value];\n }\n }\n *[(_a = Symbol.toStringTag, Symbol.iterator)]() {\n for (const [, entry] of this.map) {\n yield [entry.uri, entry.value];\n }\n }\n}\nResourceMap.defaultToKey = (resource) => resource.toString();\nexport class LinkedMap {\n constructor() {\n this[_b] = 'LinkedMap';\n this._map = new Map();\n this._head = undefined;\n this._tail = undefined;\n this._size = 0;\n this._state = 0;\n }\n clear() {\n this._map.clear();\n this._head = undefined;\n this._tail = undefined;\n this._size = 0;\n this._state++;\n }\n isEmpty() {\n return !this._head && !this._tail;\n }\n get size() {\n return this._size;\n }\n get first() {\n var _c;\n return (_c = this._head) === null || _c === void 0 ? void 0 : _c.value;\n }\n get last() {\n var _c;\n return (_c = this._tail) === null || _c === void 0 ? void 0 : _c.value;\n }\n has(key) {\n return this._map.has(key);\n }\n get(key, touch = 0 /* Touch.None */) {\n const item = this._map.get(key);\n if (!item) {\n return undefined;\n }\n if (touch !== 0 /* Touch.None */) {\n this.touch(item, touch);\n }\n return item.value;\n }\n set(key, value, touch = 0 /* Touch.None */) {\n let item = this._map.get(key);\n if (item) {\n item.value = value;\n if (touch !== 0 /* Touch.None */) {\n this.touch(item, touch);\n }\n }\n else {\n item = { key, value, next: undefined, previous: undefined };\n switch (touch) {\n case 0 /* Touch.None */:\n this.addItemLast(item);\n break;\n case 1 /* Touch.AsOld */:\n this.addItemFirst(item);\n break;\n case 2 /* Touch.AsNew */:\n this.addItemLast(item);\n break;\n default:\n this.addItemLast(item);\n break;\n }\n this._map.set(key, item);\n this._size++;\n }\n return this;\n }\n delete(key) {\n return !!this.remove(key);\n }\n remove(key) {\n const item = this._map.get(key);\n if (!item) {\n return undefined;\n }\n this._map.delete(key);\n this.removeItem(item);\n this._size--;\n return item.value;\n }\n shift() {\n if (!this._head && !this._tail) {\n return undefined;\n }\n if (!this._head || !this._tail) {\n throw new Error('Invalid list');\n }\n const item = this._head;\n this._map.delete(item.key);\n this.removeItem(item);\n this._size--;\n return item.value;\n }\n forEach(callbackfn, thisArg) {\n const state = this._state;\n let current = this._head;\n while (current) {\n if (thisArg) {\n callbackfn.bind(thisArg)(current.value, current.key, this);\n }\n else {\n callbackfn(current.value, current.key, this);\n }\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n current = current.next;\n }\n }\n keys() {\n const map = this;\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]() {\n return iterator;\n },\n next() {\n if (map._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: current.key, done: false };\n current = current.next;\n return result;\n }\n else {\n return { value: undefined, done: true };\n }\n }\n };\n return iterator;\n }\n values() {\n const map = this;\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]() {\n return iterator;\n },\n next() {\n if (map._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: current.value, done: false };\n current = current.next;\n return result;\n }\n else {\n return { value: undefined, done: true };\n }\n }\n };\n return iterator;\n }\n entries() {\n const map = this;\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]() {\n return iterator;\n },\n next() {\n if (map._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: [current.key, current.value], done: false };\n current = current.next;\n return result;\n }\n else {\n return { value: undefined, done: true };\n }\n }\n };\n return iterator;\n }\n [(_b = Symbol.toStringTag, Symbol.iterator)]() {\n return this.entries();\n }\n trimOld(newSize) {\n if (newSize >= this.size) {\n return;\n }\n if (newSize === 0) {\n this.clear();\n return;\n }\n let current = this._head;\n let currentSize = this.size;\n while (current && currentSize > newSize) {\n this._map.delete(current.key);\n current = current.next;\n currentSize--;\n }\n this._head = current;\n this._size = currentSize;\n if (current) {\n current.previous = undefined;\n }\n this._state++;\n }\n trimNew(newSize) {\n if (newSize >= this.size) {\n return;\n }\n if (newSize === 0) {\n this.clear();\n return;\n }\n let current = this._tail;\n let currentSize = this.size;\n while (current && currentSize > newSize) {\n this._map.delete(current.key);\n current = current.previous;\n currentSize--;\n }\n this._tail = current;\n this._size = currentSize;\n if (current) {\n current.next = undefined;\n }\n this._state++;\n }\n addItemFirst(item) {\n // First time Insert\n if (!this._head && !this._tail) {\n this._tail = item;\n }\n else if (!this._head) {\n throw new Error('Invalid list');\n }\n else {\n item.next = this._head;\n this._head.previous = item;\n }\n this._head = item;\n this._state++;\n }\n addItemLast(item) {\n // First time Insert\n if (!this._head && !this._tail) {\n this._head = item;\n }\n else if (!this._tail) {\n throw new Error('Invalid list');\n }\n else {\n item.previous = this._tail;\n this._tail.next = item;\n }\n this._tail = item;\n this._state++;\n }\n removeItem(item) {\n if (item === this._head && item === this._tail) {\n this._head = undefined;\n this._tail = undefined;\n }\n else if (item === this._head) {\n // This can only happen if size === 1 which is handled\n // by the case above.\n if (!item.next) {\n throw new Error('Invalid list');\n }\n item.next.previous = undefined;\n this._head = item.next;\n }\n else if (item === this._tail) {\n // This can only happen if size === 1 which is handled\n // by the case above.\n if (!item.previous) {\n throw new Error('Invalid list');\n }\n item.previous.next = undefined;\n this._tail = item.previous;\n }\n else {\n const next = item.next;\n const previous = item.previous;\n if (!next || !previous) {\n throw new Error('Invalid list');\n }\n next.previous = previous;\n previous.next = next;\n }\n item.next = undefined;\n item.previous = undefined;\n this._state++;\n }\n touch(item, touch) {\n if (!this._head || !this._tail) {\n throw new Error('Invalid list');\n }\n if ((touch !== 1 /* Touch.AsOld */ && touch !== 2 /* Touch.AsNew */)) {\n return;\n }\n if (touch === 1 /* Touch.AsOld */) {\n if (item === this._head) {\n return;\n }\n const next = item.next;\n const previous = item.previous;\n // Unlink the item\n if (item === this._tail) {\n // previous must be defined since item was not head but is tail\n // So there are more than on item in the map\n previous.next = undefined;\n this._tail = previous;\n }\n else {\n // Both next and previous are not undefined since item was neither head nor tail.\n next.previous = previous;\n previous.next = next;\n }\n // Insert the node at head\n item.previous = undefined;\n item.next = this._head;\n this._head.previous = item;\n this._head = item;\n this._state++;\n }\n else if (touch === 2 /* Touch.AsNew */) {\n if (item === this._tail) {\n return;\n }\n const next = item.next;\n const previous = item.previous;\n // Unlink the item.\n if (item === this._head) {\n // next must be defined since item was not tail but is head\n // So there are more than on item in the map\n next.previous = undefined;\n this._head = next;\n }\n else {\n // Both next and previous are not undefined since item was neither head nor tail.\n next.previous = previous;\n previous.next = next;\n }\n item.next = undefined;\n item.previous = this._tail;\n this._tail.next = item;\n this._tail = item;\n this._state++;\n }\n }\n toJSON() {\n const data = [];\n this.forEach((value, key) => {\n data.push([key, value]);\n });\n return data;\n }\n fromJSON(data) {\n this.clear();\n for (const [key, value] of data) {\n this.set(key, value);\n }\n }\n}\nclass Cache extends LinkedMap {\n constructor(limit, ratio = 1) {\n super();\n this._limit = limit;\n this._ratio = Math.min(Math.max(0, ratio), 1);\n }\n get limit() {\n return this._limit;\n }\n set limit(limit) {\n this._limit = limit;\n this.checkTrim();\n }\n get(key, touch = 2 /* Touch.AsNew */) {\n return super.get(key, touch);\n }\n peek(key) {\n return super.get(key, 0 /* Touch.None */);\n }\n set(key, value) {\n super.set(key, value, 2 /* Touch.AsNew */);\n return this;\n }\n checkTrim() {\n if (this.size > this._limit) {\n this.trim(Math.round(this._limit * this._ratio));\n }\n }\n}\nexport class LRUCache extends Cache {\n constructor(limit, ratio = 1) {\n super(limit, ratio);\n }\n trim(newSize) {\n this.trimOld(newSize);\n }\n set(key, value) {\n super.set(key, value);\n this.checkTrim();\n return this;\n }\n}\n/**\n * A map that allows access both by keys and values.\n * **NOTE**: values need to be unique.\n */\nexport class BidirectionalMap {\n constructor(entries) {\n this._m1 = new Map();\n this._m2 = new Map();\n if (entries) {\n for (const [key, value] of entries) {\n this.set(key, value);\n }\n }\n }\n clear() {\n this._m1.clear();\n this._m2.clear();\n }\n set(key, value) {\n this._m1.set(key, value);\n this._m2.set(value, key);\n }\n get(key) {\n return this._m1.get(key);\n }\n getKey(value) {\n return this._m2.get(value);\n }\n delete(key) {\n const value = this._m1.get(key);\n if (value === undefined) {\n return false;\n }\n this._m1.delete(key);\n this._m2.delete(value);\n return true;\n }\n keys() {\n return this._m1.keys();\n }\n values() {\n return this._m1.values();\n }\n}\nexport class SetMap {\n constructor() {\n this.map = new Map();\n }\n add(key, value) {\n let values = this.map.get(key);\n if (!values) {\n values = new Set();\n this.map.set(key, values);\n }\n values.add(value);\n }\n delete(key, value) {\n const values = this.map.get(key);\n if (!values) {\n return;\n }\n values.delete(value);\n if (values.size === 0) {\n this.map.delete(key);\n }\n }\n forEach(key, fn) {\n const values = this.map.get(key);\n if (!values) {\n return;\n }\n values.forEach(fn);\n }\n get(key) {\n const values = this.map.get(key);\n if (!values) {\n return new Set();\n }\n return values;\n }\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2022, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n// ESM-uncomment-begin\nlet __marked_exports = {};\n(function() {\n function define(deps, factory) {\n factory(__marked_exports);\n }\n define.amd = true;\n// ESM-uncomment-end\n\n (function (global, factory) {\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.marked = {}));\n})(this, (function (exports) { 'use strict';\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n\n function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n function getDefaults() {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n }\n exports.defaults = getDefaults();\n function changeDefaults(newDefaults) {\n exports.defaults = newDefaults;\n }\n\n /**\n * Helpers\n */\n var escapeTest = /[&<>\"']/;\n var escapeReplace = /[&<>\"']/g;\n var escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\n var escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\n var escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n var getEscapeReplacement = function getEscapeReplacement(ch) {\n return escapeReplacements[ch];\n };\n\n function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n }\n var unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n /**\n * @param {string} html\n */\n\n function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, function (_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));\n }\n\n return '';\n });\n }\n var caret = /(^|[^\\[])\\^/g;\n /**\n * @param {string | RegExp} regex\n * @param {string} opt\n */\n\n function edit(regex, opt) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n var obj = {\n replace: function replace(name, val) {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: function getRegex() {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n }\n var nonWordAndColonTest = /[^\\w:]/g;\n var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n /**\n * @param {boolean} sanitize\n * @param {string} base\n * @param {string} href\n */\n\n function cleanUrl(sanitize, base, href) {\n if (sanitize) {\n var prot;\n\n try {\n prot = decodeURIComponent(unescape(href)).replace(nonWordAndColonTest, '').toLowerCase();\n } catch (e) {\n return null;\n }\n\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n\n return href;\n }\n var baseUrls = {};\n var justDomain = /^[^:]+:\\/*[^/]*$/;\n var protocol = /^([^:]+:)[\\s\\S]*$/;\n var domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n /**\n * @param {string} base\n * @param {string} href\n */\n\n function resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n\n base = baseUrls[' ' + base];\n var relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n }\n var noopTest = {\n exec: function noopTest() {}\n };\n function merge(obj) {\n var i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n }\n function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n var row = tableRow.replace(/\\|/g, function (match, offset, str) {\n var escaped = false,\n curr = offset;\n\n while (--curr >= 0 && str[curr] === '\\\\') {\n escaped = !escaped;\n }\n\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n var i = 0; // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n\n if (!cells[0].trim()) {\n cells.shift();\n }\n\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) {\n cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n\n return cells;\n }\n /**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param {string} str\n * @param {string} c\n * @param {boolean} invert Remove suffix of non-c chars instead. Default falsey.\n */\n\n function rtrim(str, c, invert) {\n var l = str.length;\n\n if (l === 0) {\n return '';\n } // Length of suffix matching the invert condition.\n\n\n var suffLen = 0; // Step left until we fail to match the invert condition.\n\n while (suffLen < l) {\n var currChar = str.charAt(l - suffLen - 1);\n\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n }\n function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n\n var l = str.length;\n var level = 0,\n i = 0;\n\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n\n if (level < 0) {\n return i;\n }\n }\n }\n\n return -1;\n }\n function checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n } // copied from https://stackoverflow.com/a/5450113/806777\n\n /**\n * @param {string} pattern\n * @param {number} count\n */\n\n function repeatString(pattern, count) {\n if (count < 1) {\n return '';\n }\n\n var result = '';\n\n while (count > 1) {\n if (count & 1) {\n result += pattern;\n }\n\n count >>= 1;\n pattern += pattern;\n }\n\n return result + pattern;\n }\n\n function outputLink(cap, link, raw, lexer) {\n var href = link.href;\n var title = link.title ? escape(link.title) : null;\n var text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n var token = {\n type: 'link',\n raw: raw,\n href: href,\n title: title,\n text: text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n\n return {\n type: 'image',\n raw: raw,\n href: href,\n title: title,\n text: escape(text)\n };\n }\n\n function indentCodeCompensation(raw, text) {\n var matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n var indentToCode = matchIndentToCode[1];\n return text.split('\\n').map(function (node) {\n var matchIndentInNode = node.match(/^\\s+/);\n\n if (matchIndentInNode === null) {\n return node;\n }\n\n var indentInNode = matchIndentInNode[0];\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n }).join('\\n');\n }\n /**\n * Tokenizer\n */\n\n\n var Tokenizer = /*#__PURE__*/function () {\n function Tokenizer(options) {\n this.options = options || exports.defaults;\n }\n\n var _proto = Tokenizer.prototype;\n\n _proto.space = function space(src) {\n var cap = this.rules.block.newline.exec(src);\n\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n };\n\n _proto.code = function code(src) {\n var cap = this.rules.block.code.exec(src);\n\n if (cap) {\n var text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic ? rtrim(text, '\\n') : text\n };\n }\n };\n\n _proto.fences = function fences(src) {\n var cap = this.rules.block.fences.exec(src);\n\n if (cap) {\n var raw = cap[0];\n var text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw: raw,\n lang: cap[2] ? cap[2].trim() : cap[2],\n text: text\n };\n }\n };\n\n _proto.heading = function heading(src) {\n var cap = this.rules.block.heading.exec(src);\n\n if (cap) {\n var text = cap[2].trim(); // remove trailing #s\n\n if (/#$/.test(text)) {\n var trimmed = rtrim(text, '#');\n\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text: text,\n tokens: this.lexer.inline(text)\n };\n }\n };\n\n _proto.hr = function hr(src) {\n var cap = this.rules.block.hr.exec(src);\n\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n };\n\n _proto.blockquote = function blockquote(src) {\n var cap = this.rules.block.blockquote.exec(src);\n\n if (cap) {\n var text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens: this.lexer.blockTokens(text, []),\n text: text\n };\n }\n };\n\n _proto.list = function list(src) {\n var cap = this.rules.block.list.exec(src);\n\n if (cap) {\n var raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine, line, nextLine, rawLine, itemContents, endEarly;\n var bull = cap[1].trim();\n var isordered = bull.length > 1;\n var list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? \"\\\\d{1,9}\\\\\" + bull.slice(-1) : \"\\\\\" + bull;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n } // Get next list item\n\n\n var itemRegex = new RegExp(\"^( {0,3}\" + bull + \")((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))\"); // Check if current bullet point can start a new List Item\n\n while (src) {\n endEarly = false;\n\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) {\n // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n line = cap[2].split('\\n', 1)[0];\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) {\n // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n var nextBulletRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}(?:[*+-]|\\\\d{1,9}[.)])((?: [^\\\\n]*)?(?:\\\\n|$))\");\n var hrRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)\");\n var fencesBeginRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}(?:```|~~~)\");\n var headingBeginRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}#\"); // Check if following lines should be included in List Item\n\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n line = rawLine; // Re-align to follow commonmark nesting rules\n\n if (this.options.pedantic) {\n line = line.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n } // End list item if found code fences\n\n\n if (fencesBeginRegex.test(line)) {\n break;\n } // End list item if found start of new heading\n\n\n if (headingBeginRegex.test(line)) {\n break;\n } // End list item if found start of new bullet\n\n\n if (nextBulletRegex.test(line)) {\n break;\n } // Horizontal rule found\n\n\n if (hrRegex.test(src)) {\n break;\n }\n\n if (line.search(/[^ ]/) >= indent || !line.trim()) {\n // Dedent if possible\n itemContents += '\\n' + line.slice(indent);\n } else if (!blankLine) {\n // Until blank line, item doesn't need indentation\n itemContents += '\\n' + line;\n } else {\n // Otherwise, improper indentation ends this item\n break;\n }\n\n if (!blankLine && !line.trim()) {\n // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n } // Check for task list items\n\n\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw: raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n list.raw += raw;\n } // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n\n\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n var l = list.items.length; // Item child tokens handled here at end because we needed to have the final item to trim it first\n\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n var spacers = list.items[i].tokens.filter(function (t) {\n return t.type === 'space';\n });\n var hasMultipleLineBreaks = spacers.every(function (t) {\n var chars = t.raw.split('');\n var lineBreaks = 0;\n\n for (var _iterator = _createForOfIteratorHelperLoose(chars), _step; !(_step = _iterator()).done;) {\n var _char = _step.value;\n\n if (_char === '\\n') {\n lineBreaks += 1;\n }\n\n if (lineBreaks > 1) {\n return true;\n }\n }\n\n return false;\n });\n\n if (!list.loose && spacers.length && hasMultipleLineBreaks) {\n // Having a single line break doesn't mean a list is loose. A single line break is terminating the last list item\n list.loose = true;\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n };\n\n _proto.html = function html(src) {\n var cap = this.rules.block.html.exec(src);\n\n if (cap) {\n var token = {\n type: 'html',\n raw: cap[0],\n pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n\n if (this.options.sanitize) {\n var text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n token.type = 'paragraph';\n token.text = text;\n token.tokens = this.lexer.inline(text);\n }\n\n return token;\n }\n };\n\n _proto.def = function def(src) {\n var cap = this.rules.block.def.exec(src);\n\n if (cap) {\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n var tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n return {\n type: 'def',\n tag: tag,\n raw: cap[0],\n href: cap[2],\n title: cap[3]\n };\n }\n };\n\n _proto.table = function table(src) {\n var cap = this.rules.block.table.exec(src);\n\n if (cap) {\n var item = {\n type: 'table',\n header: splitCells(cap[1]).map(function (c) {\n return {\n text: c\n };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n var l = item.align.length;\n var i, j, k, row;\n\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.rows.length;\n\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(function (c) {\n return {\n text: c\n };\n });\n } // parse child tokens inside headers and cells\n // header child tokens\n\n\n l = item.header.length;\n\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n } // cell child tokens\n\n\n l = item.rows.length;\n\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n };\n\n _proto.lheading = function lheading(src) {\n var cap = this.rules.block.lheading.exec(src);\n\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n };\n\n _proto.paragraph = function paragraph(src) {\n var cap = this.rules.block.paragraph.exec(src);\n\n if (cap) {\n var text = cap[1].charAt(cap[1].length - 1) === '\\n' ? cap[1].slice(0, -1) : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text: text,\n tokens: this.lexer.inline(text)\n };\n }\n };\n\n _proto.text = function text(src) {\n var cap = this.rules.block.text.exec(src);\n\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n };\n\n _proto.escape = function escape$1(src) {\n var cap = this.rules.inline.escape.exec(src);\n\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n };\n\n _proto.tag = function tag(src) {\n var cap = this.rules.inline.tag.exec(src);\n\n if (cap) {\n if (!this.lexer.state.inLink && /^/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize ? 'text' : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0]\n };\n }\n };\n\n _proto.link = function link(src) {\n var cap = this.rules.inline.link.exec(src);\n\n if (cap) {\n var trimmedUrl = cap[2].trim();\n\n if (!this.options.pedantic && /^$/.test(trimmedUrl)) {\n return;\n } // ending angle bracket cannot be escaped\n\n\n var rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n var lastParenIndex = findClosingBracket(cap[2], '()');\n\n if (lastParenIndex > -1) {\n var start = cap[0].indexOf('!') === 0 ? 5 : 4;\n var linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n\n var href = cap[2];\n var title = '';\n\n if (this.options.pedantic) {\n // split pedantic href and title\n var link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n\n if (/^$/.test(trimmedUrl)) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n };\n\n _proto.reflink = function reflink(src, links) {\n var cap;\n\n if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n var link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n\n if (!link || !link.href) {\n var text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text: text\n };\n }\n\n return outputLink(cap, link, cap[0], this.lexer);\n }\n };\n\n _proto.emStrong = function emStrong(src, maskedSrc, prevChar) {\n if (prevChar === void 0) {\n prevChar = '';\n }\n\n var match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return; // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n\n if (match[3] && prevChar.match(/(?:[0-9A-Za-z\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xBC-\\xBE\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u0660-\\u0669\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0966-\\u096F\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09F9\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AEF\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\\u0B71-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0BE6-\\u0BF2\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D58-\\u0D61\\u0D66-\\u0D78\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DE6-\\u0DEF\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F20-\\u0F33\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F-\\u1049\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u1090-\\u1099\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B50-\\u1B59\\u1B83-\\u1BA0\\u1BAE-\\u1BE5\\u1C00-\\u1C23\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2CFD\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3192-\\u3195\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA830-\\uA835\\uA840-\\uA873\\uA882-\\uA8B3\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA900-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF-\\uA9D9\\uA9E0-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE1-\\uDEFB\\uDF00-\\uDF23\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC58-\\uDC76\\uDC79-\\uDC9E\\uDCA7-\\uDCAF\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDCFB-\\uDD1B\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBC-\\uDDCF\\uDDD2-\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE40-\\uDE48\\uDE60-\\uDE7E\\uDE80-\\uDE9F\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDEEB-\\uDEEF\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF58-\\uDF72\\uDF78-\\uDF91\\uDFA9-\\uDFAF]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDCFA-\\uDD23\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF27\\uDF30-\\uDF45\\uDF51-\\uDF54\\uDF70-\\uDF81\\uDFB0-\\uDFCB\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC52-\\uDC6F\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD03-\\uDD26\\uDD36-\\uDD3F\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDD0-\\uDDDA\\uDDDC\\uDDE1-\\uDDF4\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDEF0-\\uDEF9\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC50-\\uDC59\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEAA\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF30-\\uDF3B\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCF2\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC50-\\uDC6C\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF2\\uDFB0\\uDFC0-\\uDFD4]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDE70-\\uDEBE\\uDEC0-\\uDEC9\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF5B-\\uDF61\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE96\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB\\uDEF0-\\uDEF9]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDCC7-\\uDCCF\\uDD00-\\uDD43\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83C[\\uDD00-\\uDD0C]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])/)) return;\n var nextChar = match[1] || match[2] || '';\n\n if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {\n var lLength = match[0].length - 1;\n var rDelim,\n rLength,\n delimTotal = lLength,\n midDelimTotal = 0;\n var endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0; // Clip maskedSrc to same section of string as src (move to lexer?)\n\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) {\n // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) {\n // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); // Create `em` if smallest delimiter has odd char count. *a***\n\n if (Math.min(lLength, rLength) % 2) {\n var _text = src.slice(1, lLength + match.index + rLength);\n\n return {\n type: 'em',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text: _text,\n tokens: this.lexer.inlineTokens(_text)\n };\n } // Create 'strong' if smallest delimiter has even char count. **a***\n\n\n var text = src.slice(2, lLength + match.index + rLength - 1);\n return {\n type: 'strong',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text: text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n };\n\n _proto.codespan = function codespan(src) {\n var cap = this.rules.inline.code.exec(src);\n\n if (cap) {\n var text = cap[2].replace(/\\n/g, ' ');\n var hasNonSpaceChars = /[^ ]/.test(text);\n var hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text: text\n };\n }\n };\n\n _proto.br = function br(src) {\n var cap = this.rules.inline.br.exec(src);\n\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n };\n\n _proto.del = function del(src) {\n var cap = this.rules.inline.del.exec(src);\n\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n };\n\n _proto.autolink = function autolink(src, mangle) {\n var cap = this.rules.inline.autolink.exec(src);\n\n if (cap) {\n var text, href;\n\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.url = function url(src, mangle) {\n var cap;\n\n if (cap = this.rules.inline.url.exec(src)) {\n var text, href;\n\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n var prevCapZero;\n\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n\n text = escape(cap[0]);\n\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.inlineText = function inlineText(src, smartypants) {\n var cap = this.rules.inline.text.exec(src);\n\n if (cap) {\n var text;\n\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n\n return {\n type: 'text',\n raw: cap[0],\n text: text\n };\n }\n };\n\n return Tokenizer;\n }();\n\n /**\n * Block-Level Grammar\n */\n\n var block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*\\n)|~{3,})([^\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?]+)>?(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n };\n block._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\n block._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\n block.def = edit(block.def).replace('label', block._label).replace('title', block._title).getRegex();\n block.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\n block.listItemStart = edit(/^( *)(bull) */).replace('bull', block.bullet).getRegex();\n block.list = edit(block.list).replace(/bull/g, block.bullet).replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))').replace('def', '\\\\n+(?=' + block.def.source + ')').getRegex();\n block._tag = 'address|article|aside|base|basefont|blockquote|body|caption' + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr' + '|track|ul';\n block._comment = /|$)/;\n block.html = edit(block.html, 'i').replace('comment', block._comment).replace('tag', block._tag).replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\n block.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '').replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n block.blockquote = edit(block.blockquote).replace('paragraph', block.paragraph).getRegex();\n /**\n * Normal Block Grammar\n */\n\n block.normal = merge({}, block);\n /**\n * GFM Block Grammar\n */\n\n block.gfm = merge({}, block.normal, {\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n\n });\n block.gfm.table = edit(block.gfm.table).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n block.gfm.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n /**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\n block.pedantic = merge({}, block.normal, {\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)' + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))').replace('comment', block._comment).replace(/tag/g, '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b').getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n // fences not supported\n paragraph: edit(block.normal._paragraph).replace('hr', block.hr).replace('heading', ' *#{1,6} *[^\\n]').replace('lheading', block.lheading).replace('blockquote', ' {0,3}>').replace('|fences', '').replace('|list', '').replace('|html', '').getRegex()\n });\n /**\n * Inline-Level Grammar\n */\n\n var inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment' + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^',\n // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // () Skip orphan inside strong () Consume to delim (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a\n rDelimAst: /^[^_*]*?\\_\\_[^_*]*?\\*[^_*]*?(?=\\_\\_)|[^*]+(?=[^*])|[punct_](\\*+)(?=[\\s]|$)|[^punct*_\\s](\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|[^punct*_\\s](\\*+)(?=[^punct*_\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?\\_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|[punct*](\\_+)(?=[\\s]|$)|[^punct*_\\s](\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\?@\\\\[\\\\]`^{|}~';\n inline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex(); // sequences em should skip over [title](link), `code`, \n\n inline.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\n inline.escapedEmSt = /\\\\\\*|\\\\_/g;\n inline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n inline.emStrong.lDelim = edit(inline.emStrong.lDelim).replace(/punct/g, inline._punctuation).getRegex();\n inline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g').replace(/punct/g, inline._punctuation).getRegex();\n inline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g').replace(/punct/g, inline._punctuation).getRegex();\n inline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\n inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\n inline.autolink = edit(inline.autolink).replace('scheme', inline._scheme).replace('email', inline._email).getRegex();\n inline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n inline.tag = edit(inline.tag).replace('comment', inline._comment).replace('attribute', inline._attribute).getRegex();\n inline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\n inline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\n inline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n inline.link = edit(inline.link).replace('label', inline._label).replace('href', inline._href).replace('title', inline._title).getRegex();\n inline.reflink = edit(inline.reflink).replace('label', inline._label).replace('ref', block._label).getRegex();\n inline.nolink = edit(inline.nolink).replace('ref', block._label).getRegex();\n inline.reflinkSearch = edit(inline.reflinkSearch, 'g').replace('reflink', inline.reflink).replace('nolink', inline.nolink).getRegex();\n /**\n * Normal Inline Grammar\n */\n\n inline.normal = merge({}, inline);\n /**\n * Pedantic Inline Grammar\n */\n\n inline.pedantic = merge({}, inline.normal, {\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/).replace('label', inline._label).getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace('label', inline._label).getRegex()\n });\n /**\n * GFM Inline Grammar\n */\n\n inline.gfm = merge({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n\n out += '&#' + ch + ';';\n }\n\n return out;\n }\n /**\n * Block Lexer\n */\n\n\n var Lexer = /*#__PURE__*/function () {\n function Lexer(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || exports.defaults;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n var rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n\n\n /**\n * Static Lex Method\n */\n Lexer.lex = function lex(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n ;\n\n Lexer.lexInline = function lexInline(src, options) {\n var lexer = new Lexer(options);\n return lexer.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n ;\n\n var _proto = Lexer.prototype;\n\n _proto.lex = function lex(src) {\n src = src.replace(/\\r\\n|\\r/g, '\\n');\n this.blockTokens(src, this.tokens);\n var next;\n\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n /**\n * Lexing\n */\n ;\n\n _proto.blockTokens = function blockTokens(src, tokens) {\n var _this = this;\n\n if (tokens === void 0) {\n tokens = [];\n }\n\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, function (_, leading, tabs) {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n var token, lastToken, cutSrc, lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some(function (extTokenizer) {\n if (token = extTokenizer.call({\n lexer: _this\n }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n\n return false;\n })) {\n continue;\n } // newline\n\n\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n\n continue;\n } // code\n\n\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1]; // An indented code block cannot interrupt a paragraph.\n\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // fences\n\n\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // heading\n\n\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // hr\n\n\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // blockquote\n\n\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // list\n\n\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // html\n\n\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // def\n\n\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n\n continue;\n } // table (gfm)\n\n\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // lheading\n\n\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n\n\n cutSrc = src;\n\n if (this.options.extensions && this.options.extensions.startBlock) {\n (function () {\n var startIndex = Infinity;\n var tempSrc = src.slice(1);\n var tempStart = void 0;\n\n _this.options.extensions.startBlock.forEach(function (getStartIndex) {\n tempStart = getStartIndex.call({\n lexer: this\n }, tempSrc);\n\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n })();\n }\n\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n\n lastParagraphClipped = cutSrc.length !== src.length;\n src = src.substring(token.raw.length);\n continue;\n } // text\n\n\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n };\n\n _proto.inline = function inline(src, tokens) {\n if (tokens === void 0) {\n tokens = [];\n }\n\n this.inlineQueue.push({\n src: src,\n tokens: tokens\n });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n ;\n\n _proto.inlineTokens = function inlineTokens(src, tokens) {\n var _this2 = this;\n\n if (tokens === void 0) {\n tokens = [];\n }\n\n var token, lastToken, cutSrc; // String with links masked to avoid interference with em and strong\n\n var maskedSrc = src;\n var match;\n var keepPrevChar, prevChar; // Mask out reflinks\n\n if (this.tokens.links) {\n var links = Object.keys(this.tokens.links);\n\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n } // Mask out other blocks\n\n\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n } // Mask out escaped em & strong delimiters\n\n\n while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n\n keepPrevChar = false; // extensions\n\n if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some(function (extTokenizer) {\n if (token = extTokenizer.call({\n lexer: _this2\n }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n\n return false;\n })) {\n continue;\n } // escape\n\n\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // tag\n\n\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // link\n\n\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // reflink, nolink\n\n\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // em & strong\n\n\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // code\n\n\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // br\n\n\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // del (gfm)\n\n\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // autolink\n\n\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // url (gfm)\n\n\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n\n\n cutSrc = src;\n\n if (this.options.extensions && this.options.extensions.startInline) {\n (function () {\n var startIndex = Infinity;\n var tempSrc = src.slice(1);\n var tempStart = void 0;\n\n _this2.options.extensions.startInline.forEach(function (getStartIndex) {\n tempStart = getStartIndex.call({\n lexer: this\n }, tempSrc);\n\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n })();\n }\n\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n\n if (token.raw.slice(-1) !== '_') {\n // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n };\n\n _createClass(Lexer, null, [{\n key: \"rules\",\n get: function get() {\n return {\n block: block,\n inline: inline\n };\n }\n }]);\n\n return Lexer;\n }();\n\n /**\n * Renderer\n */\n\n var Renderer = /*#__PURE__*/function () {\n function Renderer(options) {\n this.options = options || exports.defaults;\n }\n\n var _proto = Renderer.prototype;\n\n _proto.code = function code(_code, infostring, escaped) {\n var lang = (infostring || '').match(/\\S*/)[0];\n\n if (this.options.highlight) {\n var out = this.options.highlight(_code, lang);\n\n if (out != null && out !== _code) {\n escaped = true;\n _code = out;\n }\n }\n\n _code = _code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
' + (escaped ? _code : escape(_code, true)) + '
\\n';\n }\n\n return '
' + (escaped ? _code : escape(_code, true)) + '
\\n';\n }\n /**\n * @param {string} quote\n */\n ;\n\n _proto.blockquote = function blockquote(quote) {\n return \"
\\n\" + quote + \"
\\n\";\n };\n\n _proto.html = function html(_html) {\n return _html;\n }\n /**\n * @param {string} text\n * @param {string} level\n * @param {string} raw\n * @param {any} slugger\n */\n ;\n\n _proto.heading = function heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n var id = this.options.headerPrefix + slugger.slug(raw);\n return \"\" + text + \"\\n\";\n } // ignore IDs\n\n\n return \"\" + text + \"\\n\";\n };\n\n _proto.hr = function hr() {\n return this.options.xhtml ? '
\\n' : '
\\n';\n };\n\n _proto.list = function list(body, ordered, start) {\n var type = ordered ? 'ol' : 'ul',\n startatt = ordered && start !== 1 ? ' start=\"' + start + '\"' : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.listitem = function listitem(text) {\n return \"
  • \" + text + \"
  • \\n\";\n };\n\n _proto.checkbox = function checkbox(checked) {\n return ' ';\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.paragraph = function paragraph(text) {\n return \"

    \" + text + \"

    \\n\";\n }\n /**\n * @param {string} header\n * @param {string} body\n */\n ;\n\n _proto.table = function table(header, body) {\n if (body) body = \"\" + body + \"\";\n return '\\n' + '\\n' + header + '\\n' + body + '
    \\n';\n }\n /**\n * @param {string} content\n */\n ;\n\n _proto.tablerow = function tablerow(content) {\n return \"\\n\" + content + \"\\n\";\n };\n\n _proto.tablecell = function tablecell(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align ? \"<\" + type + \" align=\\\"\" + flags.align + \"\\\">\" : \"<\" + type + \">\";\n return tag + content + (\"\\n\");\n }\n /**\n * span level renderer\n * @param {string} text\n */\n ;\n\n _proto.strong = function strong(text) {\n return \"\" + text + \"\";\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.em = function em(text) {\n return \"\" + text + \"\";\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.codespan = function codespan(text) {\n return \"\" + text + \"\";\n };\n\n _proto.br = function br() {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.del = function del(text) {\n return \"\" + text + \"\";\n }\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n ;\n\n _proto.link = function link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = '
    ';\n return out;\n }\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n ;\n\n _proto.image = function image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = \"\\\"\"' : '>';\n return out;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n return Renderer;\n }();\n\n /**\n * TextRenderer\n * returns only the textual part of the token\n */\n var TextRenderer = /*#__PURE__*/function () {\n function TextRenderer() {}\n\n var _proto = TextRenderer.prototype;\n\n // no need for block level renderers\n _proto.strong = function strong(text) {\n return text;\n };\n\n _proto.em = function em(text) {\n return text;\n };\n\n _proto.codespan = function codespan(text) {\n return text;\n };\n\n _proto.del = function del(text) {\n return text;\n };\n\n _proto.html = function html(text) {\n return text;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n _proto.link = function link(href, title, text) {\n return '' + text;\n };\n\n _proto.image = function image(href, title, text) {\n return '' + text;\n };\n\n _proto.br = function br() {\n return '';\n };\n\n return TextRenderer;\n }();\n\n /**\n * Slugger generates header id\n */\n var Slugger = /*#__PURE__*/function () {\n function Slugger() {\n this.seen = {};\n }\n /**\n * @param {string} value\n */\n\n\n var _proto = Slugger.prototype;\n\n _proto.serialize = function serialize(value) {\n return value.toLowerCase().trim() // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '') // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '').replace(/\\s/g, '-');\n }\n /**\n * Finds the next safe (unique) slug to use\n * @param {string} originalSlug\n * @param {boolean} isDryRun\n */\n ;\n\n _proto.getNextSafeSlug = function getNextSafeSlug(originalSlug, isDryRun) {\n var slug = originalSlug;\n var occurenceAccumulator = 0;\n\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n\n return slug;\n }\n /**\n * Convert string to unique id\n * @param {object} [options]\n * @param {boolean} [options.dryrun] Generates the next unique slug without\n * updating the internal accumulator.\n */\n ;\n\n _proto.slug = function slug(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n };\n\n return Slugger;\n }();\n\n /**\n * Parsing & Compiling\n */\n\n var Parser = /*#__PURE__*/function () {\n function Parser(options) {\n this.options = options || exports.defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer();\n this.slugger = new Slugger();\n }\n /**\n * Static Parse Method\n */\n\n\n Parser.parse = function parse(tokens, options) {\n var parser = new Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n ;\n\n Parser.parseInline = function parseInline(tokens, options) {\n var parser = new Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n ;\n\n var _proto = Parser.prototype;\n\n _proto.parse = function parse(tokens, top) {\n if (top === void 0) {\n top = true;\n }\n\n var out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i]; // Run any renderer extensions\n\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({\n parser: this\n }, token);\n\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space':\n {\n continue;\n }\n\n case 'hr':\n {\n out += this.renderer.hr();\n continue;\n }\n\n case 'heading':\n {\n out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape(this.parseInline(token.tokens, this.textRenderer)), this.slugger);\n continue;\n }\n\n case 'code':\n {\n out += this.renderer.code(token.text, token.lang, token.escaped);\n continue;\n }\n\n case 'table':\n {\n header = ''; // header\n\n cell = '';\n l2 = token.header.length;\n\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(this.parseInline(token.header[j].tokens), {\n header: true,\n align: token.align[j]\n });\n }\n\n header += this.renderer.tablerow(cell);\n body = '';\n l2 = token.rows.length;\n\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n cell = '';\n l3 = row.length;\n\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k].tokens), {\n header: false,\n align: token.align[k]\n });\n }\n\n body += this.renderer.tablerow(cell);\n }\n\n out += this.renderer.table(header, body);\n continue;\n }\n\n case 'blockquote':\n {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n\n case 'list':\n {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n body = '';\n\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n itemBody = '';\n\n if (item.task) {\n checkbox = this.renderer.checkbox(checked);\n\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n\n case 'html':\n {\n // TODO parse inline content if parameter markdown=1\n out += this.renderer.html(token.text);\n continue;\n }\n\n case 'paragraph':\n {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n\n case 'text':\n {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n ;\n\n _proto.parseInline = function parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n var out = '',\n i,\n token,\n ret;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i]; // Run any renderer extensions\n\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({\n parser: this\n }, token);\n\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape':\n {\n out += renderer.text(token.text);\n break;\n }\n\n case 'html':\n {\n out += renderer.html(token.text);\n break;\n }\n\n case 'link':\n {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'image':\n {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n\n case 'strong':\n {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'em':\n {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'codespan':\n {\n out += renderer.codespan(token.text);\n break;\n }\n\n case 'br':\n {\n out += renderer.br();\n break;\n }\n\n case 'del':\n {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'text':\n {\n out += renderer.text(token.text);\n break;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n };\n\n return Parser;\n }();\n\n /**\n * Marked\n */\n\n function marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (typeof opt === 'function') {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n if (callback) {\n var highlight = opt.highlight;\n var tokens;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n var done = function done(err) {\n var out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n }\n\n opt.highlight = highlight;\n return err ? callback(err) : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n if (!tokens.length) return done();\n var pending = 0;\n marked.walkTokens(tokens, function (token) {\n if (token.type === 'code') {\n pending++;\n setTimeout(function () {\n highlight(token.text, token.lang, function (err, code) {\n if (err) {\n return done(err);\n }\n\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n function onError(e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (opt.silent) {\n return '

    An error occurred:

    ' + escape(e.message + '', true) + '
    ';\n }\n\n throw e;\n }\n\n try {\n var _tokens = Lexer.lex(src, opt);\n\n if (opt.walkTokens) {\n if (opt.async) {\n return Promise.all(marked.walkTokens(_tokens, opt.walkTokens)).then(function () {\n return Parser.parse(_tokens, opt);\n })[\"catch\"](onError);\n }\n\n marked.walkTokens(_tokens, opt.walkTokens);\n }\n\n return Parser.parse(_tokens, opt);\n } catch (e) {\n onError(e);\n }\n }\n /**\n * Options\n */\n\n marked.options = marked.setOptions = function (opt) {\n merge(marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n };\n\n marked.getDefaults = getDefaults;\n marked.defaults = exports.defaults;\n /**\n * Use Extension\n */\n\n marked.use = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var opts = merge.apply(void 0, [{}].concat(args));\n var extensions = marked.defaults.extensions || {\n renderers: {},\n childTokens: {}\n };\n var hasExtensions;\n args.forEach(function (pack) {\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n hasExtensions = true;\n pack.extensions.forEach(function (ext) {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n\n if (ext.renderer) {\n // Renderer extensions\n var prevRenderer = extensions.renderers ? extensions.renderers[ext.name] : null;\n\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var ret = ext.renderer.apply(this, args);\n\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n\n if (ext.tokenizer) {\n // Tokenizer Extensions\n if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n\n if (ext.start) {\n // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n\n if (ext.childTokens) {\n // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n } // ==-- Parse \"overwrite\" extensions --== //\n\n\n if (pack.renderer) {\n (function () {\n var renderer = marked.defaults.renderer || new Renderer();\n\n var _loop = function _loop(prop) {\n var prevRenderer = renderer[prop]; // Replace renderer with func to run extension, but fall back if false\n\n renderer[prop] = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n var ret = pack.renderer[prop].apply(renderer, args);\n\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in pack.renderer) {\n _loop(prop);\n }\n\n opts.renderer = renderer;\n })();\n }\n\n if (pack.tokenizer) {\n (function () {\n var tokenizer = marked.defaults.tokenizer || new Tokenizer();\n\n var _loop2 = function _loop2(prop) {\n var prevTokenizer = tokenizer[prop]; // Replace tokenizer with func to run extension, but fall back if false\n\n tokenizer[prop] = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n var ret = pack.tokenizer[prop].apply(tokenizer, args);\n\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in pack.tokenizer) {\n _loop2(prop);\n }\n\n opts.tokenizer = tokenizer;\n })();\n } // ==-- Parse WalkTokens extensions --== //\n\n\n if (pack.walkTokens) {\n var _walkTokens = marked.defaults.walkTokens;\n\n opts.walkTokens = function (token) {\n var values = [];\n values.push(pack.walkTokens.call(this, token));\n\n if (_walkTokens) {\n values = values.concat(_walkTokens.call(this, token));\n }\n\n return values;\n };\n }\n\n if (hasExtensions) {\n opts.extensions = extensions;\n }\n\n marked.setOptions(opts);\n });\n };\n /**\n * Run callback for every token\n */\n\n\n marked.walkTokens = function (tokens, callback) {\n var values = [];\n\n var _loop3 = function _loop3() {\n var token = _step.value;\n values = values.concat(callback.call(marked, token));\n\n switch (token.type) {\n case 'table':\n {\n for (var _iterator2 = _createForOfIteratorHelperLoose(token.header), _step2; !(_step2 = _iterator2()).done;) {\n var cell = _step2.value;\n values = values.concat(marked.walkTokens(cell.tokens, callback));\n }\n\n for (var _iterator3 = _createForOfIteratorHelperLoose(token.rows), _step3; !(_step3 = _iterator3()).done;) {\n var row = _step3.value;\n\n for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {\n var _cell = _step4.value;\n values = values.concat(marked.walkTokens(_cell.tokens, callback));\n }\n }\n\n break;\n }\n\n case 'list':\n {\n values = values.concat(marked.walkTokens(token.items, callback));\n break;\n }\n\n default:\n {\n if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) {\n // Walk any extensions\n marked.defaults.extensions.childTokens[token.type].forEach(function (childTokens) {\n values = values.concat(marked.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(marked.walkTokens(token.tokens, callback));\n }\n }\n }\n };\n\n for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {\n _loop3();\n }\n\n return values;\n };\n /**\n * Parse Inline\n * @param {string} src\n */\n\n\n marked.parseInline = function (src, opt) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked.parseInline(): input parameter is undefined or null');\n }\n\n if (typeof src !== 'string') {\n throw new Error('marked.parseInline(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n try {\n var tokens = Lexer.lexInline(src, opt);\n\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n\n return Parser.parseInline(tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (opt.silent) {\n return '

    An error occurred:

    ' + escape(e.message + '', true) + '
    ';\n }\n\n throw e;\n }\n };\n /**\n * Expose\n */\n\n\n marked.Parser = Parser;\n marked.parser = Parser.parse;\n marked.Renderer = Renderer;\n marked.TextRenderer = TextRenderer;\n marked.Lexer = Lexer;\n marked.lexer = Lexer.lex;\n marked.Tokenizer = Tokenizer;\n marked.Slugger = Slugger;\n marked.parse = marked;\n var options = marked.options;\n var setOptions = marked.setOptions;\n var use = marked.use;\n var walkTokens = marked.walkTokens;\n var parseInline = marked.parseInline;\n var parse = marked;\n var parser = Parser.parse;\n var lexer = Lexer.lex;\n\n exports.Lexer = Lexer;\n exports.Parser = Parser;\n exports.Renderer = Renderer;\n exports.Slugger = Slugger;\n exports.TextRenderer = TextRenderer;\n exports.Tokenizer = Tokenizer;\n exports.getDefaults = getDefaults;\n exports.lexer = lexer;\n exports.marked = marked;\n exports.options = options;\n exports.parse = parse;\n exports.parseInline = parseInline;\n exports.parser = parser;\n exports.setOptions = setOptions;\n exports.use = use;\n exports.walkTokens = walkTokens;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n\n// ESM-uncomment-begin\n})();\nexport var Lexer = (__marked_exports.Lexer || exports.Lexer);\nexport var Parser = (__marked_exports.Parser || exports.Parser);\nexport var Renderer = (__marked_exports.Renderer || exports.Renderer);\nexport var Slugger = (__marked_exports.Slugger || exports.Slugger);\nexport var TextRenderer = (__marked_exports.TextRenderer || exports.TextRenderer);\nexport var Tokenizer = (__marked_exports.Tokenizer || exports.Tokenizer);\nexport var getDefaults = (__marked_exports.getDefaults || exports.getDefaults);\nexport var lexer = (__marked_exports.lexer || exports.lexer);\nexport var marked = (__marked_exports.marked || exports.marked);\nexport var options = (__marked_exports.options || exports.options);\nexport var parse = (__marked_exports.parse || exports.parse);\nexport var parseInline = (__marked_exports.parseInline || exports.parseInline);\nexport var parser = (__marked_exports.parser || exports.parser);\nexport var setOptions = (__marked_exports.setOptions || exports.setOptions);\nexport var use = (__marked_exports.use || exports.use);\nexport var walkTokens = (__marked_exports.walkTokens || exports.walkTokens);\n// ESM-uncomment-end\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { VSBuffer } from './buffer.js';\nimport { URI } from './uri.js';\nexport function stringify(obj) {\n return JSON.stringify(obj, replacer);\n}\nexport function parse(text) {\n let data = JSON.parse(text);\n data = revive(data);\n return data;\n}\nfunction replacer(key, value) {\n // URI is done via toJSON-member\n if (value instanceof RegExp) {\n return {\n $mid: 2 /* MarshalledId.Regexp */,\n source: value.source,\n flags: value.flags,\n };\n }\n return value;\n}\nexport function revive(obj, depth = 0) {\n if (!obj || depth > 200) {\n return obj;\n }\n if (typeof obj === 'object') {\n switch (obj.$mid) {\n case 1 /* MarshalledId.Uri */: return URI.revive(obj);\n case 2 /* MarshalledId.Regexp */: return new RegExp(obj.source, obj.flags);\n case 17 /* MarshalledId.Date */: return new Date(obj.source);\n }\n if (obj instanceof VSBuffer\n || obj instanceof Uint8Array) {\n return obj;\n }\n if (Array.isArray(obj)) {\n for (let i = 0; i < obj.length; ++i) {\n obj[i] = revive(obj[i], depth + 1);\n }\n }\n else {\n // walk object\n for (const key in obj) {\n if (Object.hasOwnProperty.call(obj, key)) {\n obj[key] = revive(obj[key], depth + 1);\n }\n }\n }\n }\n return obj;\n}\n","export const Mimes = Object.freeze({\n text: 'text/plain',\n binary: 'application/octet-stream',\n unknown: 'application/unknown',\n markdown: 'text/markdown',\n latex: 'text/latex',\n uriList: 'text/uri-list',\n});\n"],"names":["HierarchicalKind","constructor","value","this","equals","other","contains","startsWith","sep","intersects","append","parts","join","None","Empty","HistoryNavigator","history","limit","_initialize","_limit","_onChange","getHistory","_elements","add","t","_history","delete","next","_navigator","previous","_currentPosition","current","first","last","isLast","length","isNowhere","has","_reduceToLimit","elements","data","slice","currentElement","indexOf","Set","entry","forEach","e","push","isHotReloadEnabled","registerHotReloadHandler","handler","handlers","hotReloadHandlers","g","globalThis","$hotReload_applyNewExports","args","args2","config","mode","undefined","h","result","registerGlobalHotReloadHandler","dispose","oldExports","newSrc","newExports","_a","_b","key","exportedItem","console","log","prototype","oldExportedItem","prop","Object","getOwnPropertyNames","descriptor","getOwnPropertyDescriptor","oldDescriptor","toString","defineProperty","MarkdownString","isTrustedOrOptions","_c","isTrusted","supportThemeIcons","supportHtml","appendText","newlineStyle","text","replace","_match","g1","repeat","appendMarkdown","appendCodeblock","langId","code","longestFenceLength","match","reduce","a","b","desiredFenceLength","appendEscapedMarkdownCodeBlockFence","appendLink","target","label","title","_escape","String","ch","r","RegExp","offset","charAt","isEmptyMarkdownString","oneOrMany","isMarkdownString","Array","isArray","every","thing","markdownStringEqual","baseUri","escapeDoubleQuotes","input","removeMarkdownEscapes","parseHrefAndDimensions","href","dimensions","splitted","split","map","s","trim","parameters","heightFromParams","exec","widthFromParams","height","width","widthIsFinite","isFinite","parseInt","heightIsFinite","iconStartMarker","iconsRegex","escapeIconsRegex","source","escapeIcons","escaped","markdownEscapedIconsRegex","markdownEscapeEscapedIcons","stripIconsRegex","stripIcons","preWhitespace","postWhitespace","getCodiconAriaLabel","codiconName","_parseIconsRegex","parseLabelWithIcons","lastIndex","iconOffsets","iconsOffset","pos","chars","substring","index","i","matchesFuzzyIconAware","query","enableSeparateSubstringMatching","wordToMatchAgainstWithoutIconsTrimmed","leadingWhitespaceOffset","matches","iconOffset","start","end","IdGenerator","prefix","_prefix","_lastId","nextId","defaultGenerator","IME","_onDidChange","onDidChange","event","_enabled","enabled","enable","fire","disable","Iterable","is","Symbol","iterator","_empty","freeze","single","element","empty","wrap","iterableOrElement","from","iterable","reverse","array","isEmpty","done","some","predicate","find","filter","fn","concat","iterables","reducer","initialValue","arr","to","consume","atMost","Number","POSITIVE_INFINITY","consumed","asyncToArray","async","item","Promise","resolve","KeyCodeStrMap","_keyCodeToStr","_strToKeyCode","create","define","keyCode","str","toLowerCase","keyCodeToStr","strToKeyCode","uiMap","userSettingsUSMap","userSettingsGeneralMap","EVENT_KEY_CODE_MAP","NATIVE_WINDOWS_KEY_CODE_TO_KEY_CODE","scanCodeIntToStr","scanCodeStrToInt","scanCodeLowerCaseStrToInt","IMMUTABLE_CODE_TO_KEY_CODE","IMMUTABLE_KEY_CODE_TO_CODE","KeyCodeUtils","KeyChord","firstPart","secondPart","mappings","seenKeyCode","seenScanCode","mapping","immutable","scanCode","scanCodeStr","keyCodeStr","eventKeyCode","vkey","usUserSettingsLabel","generalUserSettingsLabel","Error","fromString","toUserSettingsUS","toUserSettingsGeneral","fromUserSettings","toElectronAccelerator","ModifierLabelProvider","mac","windows","linux","modifierLabels","toLabel","OS","chords","keyLabelProvider","len","chord","keyLabel","_simpleAsString","UILabelProvider","ctrlKey","shiftKey","altKey","metaKey","separator","comment","AriaLabelProvider","ElectronAcceleratorLabelProvider","UserSettingsLabelProvider","modifiers","labels","decodeKeybinding","keybinding","firstChord","secondChord","Keybinding","createSimpleKeybinding","ctrlCmd","winCtrl","KeyCodeChord","isModifierKey","isDuplicateModifierCase","ResolvedChord","keyAriaLabel","ResolvedKeybinding","normalizeDriveLetter","path","isWindowsOS","toUpperCase","Lazy","executor","_didRun","_value","err","_error","rawValue","disposableTracker","trackDisposable","x","markAsDisposed","disposable","setParentOfDisposable","child","parent","setParent","markAsSingleton","singleton","isDisposable","arg","errors","d","AggregateError","combinedDisposable","disposables","toDisposable","children","setParentOfDisposables","self","DisposableStore","_toDispose","_isDisposed","clear","isDisposed","size","o","DISABLE_DISPOSED_WARNING","warn","stack","deleteAndLeak","Disposable","_store","_register","MutableDisposable","RefCountedDisposable","_disposable","_counter","acquire","release","ImmortalReference","object","DisposableMap","Map","clearAndDisposeAll","values","get","set","skipDisposeOnOverwrite","deleteAndDispose","Node","Undefined","prev","LinkedList","_first","_last","_size","node","unshift","_insert","atTheEnd","newNode","oldLast","oldFirst","didRemove","_remove","shift","res","pop","anchor","__decorate","decorators","desc","c","arguments","Reflect","decorate","LinkedText","nodes","LINK_REGEX","parseLinkedText","ResourceMapEntry","uri","ResourceMap","toKey","defaultToKey","isEntries","resource","clb","thisArg","bind","_","keys","entries","toStringTag","LinkedMap","_map","_head","_tail","_state","touch","addItemLast","addItemFirst","remove","removeItem","callbackfn","state","trimOld","newSize","currentSize","trimNew","toJSON","fromJSON","Cache","ratio","super","_ratio","Math","min","max","checkTrim","peek","round","LRUCache","BidirectionalMap","_m1","_m2","getKey","SetMap","__marked_exports","deps","factory","global","amd","exports","_defineProperties","props","enumerable","configurable","writable","_arrayLikeToArray","arr2","_createForOfIteratorHelperLoose","allowArrayLike","it","call","minLen","n","name","test","_unsupportedIterableToArray","TypeError","getDefaults","baseUrl","breaks","extensions","gfm","headerIds","headerPrefix","highlight","langPrefix","mangle","pedantic","renderer","sanitize","sanitizer","silent","smartLists","smartypants","tokenizer","walkTokens","xhtml","defaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","escape","html","encode","unescapeTest","unescape","fromCharCode","caret","edit","regex","opt","obj","val","getRegex","nonWordAndColonTest","originIndependentUrl","cleanUrl","base","prot","decodeURIComponent","baseUrls","justDomain","rtrim","relativeBase","protocol","domain","resolveUrl","encodeURI","noopTest","merge","hasOwnProperty","splitCells","tableRow","count","cells","curr","splice","invert","l","suffLen","currChar","checkSanitizeDeprecation","repeatString","pattern","outputLink","cap","link","raw","lexer","inLink","token","type","tokens","inlineTokens","Tokenizer","options","_proto","space","src","rules","block","newline","codeBlockStyle","fences","matchIndentToCode","indentToCode","matchIndentInNode","indentCodeCompensation","lang","heading","trimmed","depth","inline","hr","blockquote","blockTokens","list","istask","ischecked","indent","blankLine","endsWithBlankLine","line","nextLine","rawLine","itemContents","endEarly","bull","isordered","ordered","loose","items","itemRegex","trimLeft","search","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","task","checked","trimRight","top","spacers","hasMultipleLineBreaks","_step","lineBreaks","_iterator","pre","def","tag","table","header","align","rows","j","k","row","lheading","paragraph","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","level","findClosingBracket","linkLen","_escapes","reflink","links","nolink","emStrong","maskedSrc","prevChar","lDelim","nextChar","punctuation","rDelim","rLength","lLength","delimTotal","midDelimTotal","endReg","rDelimAst","rDelimUnd","_text","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","br","del","autolink","url","prevCapZero","_backpedal","inlineText","_paragraph","_label","_title","bullet","listItemStart","_tag","_comment","normal","reflinkSearch","out","charCodeAt","random","_punctuation","blockSkip","escapedEmSt","_scheme","_email","_attribute","_href","strong","middle","endAst","endUnd","em","_extended_email","Lexer","inlineQueue","lex","lexInline","Constructor","protoProps","staticProps","lastToken","cutSrc","lastParagraphClipped","_this","leading","tabs","extTokenizer","startBlock","startIndex","Infinity","tempSrc","tempStart","getStartIndex","errMsg","error","_this2","keepPrevChar","includes","lastIndexOf","startInline","Renderer","_code","infostring","quote","_html","slugger","slug","body","listitem","checkbox","tablerow","content","tablecell","flags","image","TextRenderer","Slugger","seen","serialize","getNextSafeSlug","originalSlug","isDryRun","occurenceAccumulator","dryrun","Parser","textRenderer","parse","parseInline","l2","l3","cell","itemBody","ret","renderers","parser","marked","callback","pending","setTimeout","onError","message","_tokens","all","then","setOptions","newDefaults","use","_len","_key","hasExtensions","opts","apply","childTokens","pack","ext","prevRenderer","_len2","_key2","_loop","_len3","_key3","_loop2","prevTokenizer","_len4","_key4","_walkTokens","_loop3","_step2","_iterator2","_step3","_iterator3","_step4","_iterator4","_cell","stringify","JSON","replacer","revive","$mid","Date","Uint8Array","Mimes","binary","unknown","markdown","latex","uriList"],"sourceRoot":""}