@athrio/loom 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -0
- package/dist/LoomServer-3C83kvX5.js +13812 -0
- package/dist/LoomServer-3C83kvX5.js.map +1 -0
- package/dist/LoomStore-DPhVqYEz.js +150493 -0
- package/dist/LoomStore-DPhVqYEz.js.map +1 -0
- package/dist/main-BQJiwrlj.js +11957 -0
- package/dist/main-BQJiwrlj.js.map +1 -0
- package/dist/main.js +10412 -0
- package/dist/main.js.map +1 -0
- package/dist/rolldown-runtime-yvBN9yY6.js +47 -0
- package/dist/volar-service-markdown-ZE1pdvJT.js +26933 -0
- package/dist/volar-service-markdown-ZE1pdvJT.js.map +1 -0
- package/package.json +39 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"volar-service-markdown-ZE1pdvJT.js","names":["exports","path","path","path","path","picomatch","#map","#normalizeRefName","Range","uri","lsp","#addEdit","lsp","#changes","#documentChanges","lsp","#linkProvider","#getDefinitionBlockGroups","#getLastNonWhitespaceLine","lsp","l10n","#kind","#linkProvider","#isEnabled","_a","#getExtractLinkAction","#getPlaceholder","#matchesHref","#isDisposed","#maxDegreeOfParalellism","#outstandingPromises","#runningPromises","#size","#consume","#consumed","#toKey","#map","lsp","#filesToLinksMap","#configuration","#workspace","#linkProvider","#tocProvider","#logger","#validateFileLinks","#validateFragmentLinks","#validateReferenceLinks","#validateUnusedLinkDefinitions","#validateDuplicateLinkDefinitions","#isIgnoredLink","l10n","#isMarkdownPath","picomatch","#onDidChangeLinkedToFile","#linkedToFile","#startWatching","#onLinkedResourceChanged","#onLinkedToFileChanged","#linkWatcher","#computer","#removeUnusedDefTitle","l10n","#removeDuplicateDefTitle","#isEnabled","#getRemoveDefinitionAction","lsp","#configuration","#workspace","#tocProvider","#linkCache","#getDefinitionOfLinkAtPosition","#getDefinitionOfRef","#getDefinitionOfLink","exports","exports","exports","#map","lsp","#getValue","#hasValue","#value","#workspace","#getValue","#invalidate","#onDidDeleteDocument","#cache","#loadDocument","#resetEntry","#loadingDocuments","CancellationTokenSource","#evict","#onDidChangeDocument","#ensureInit","#update","#init","#populateCache","#buildTocFromTokens","#getHtmlIdEntries","#buildToc","#getHeaderTitleAsPlainText","lsp","#getHeaderLevel","#tokenToPlainText","#htmlIdAttrPattern","#collectHtmlIdEntries","HTMLElement","#slugifier","#parser","#workspace","#logger","#cache","#htmlIdResources","#doc","#update","#configuration","#parser","#workspace","#tocProvider","#linkCache","#logger","#getReferencesToHeader","#getReferencesToHtmlId","#getReferencesToLinkAtPosition","#getAllLinksInWorkspace","#findLinksToFile","#getReferencesToLinkReference","#getReferencesToLink","#isMarkdownPath","#getPathRange","lsp","l10n","#configuration","#workspace","#parser","#referencesProvider","#tableOfContentProvider","#slugifier","#logger","#getAllReferences","#findHeaderDeclaration","#findHtmlIdDeclaration","#renameReferenceLinks","#renameExternalLink","#renameFragment","#renameFilePath","#getLinkRenameEdit","#cachedRefs","#configuration","#tocProvider","#linkProvider","#getHighlightsForHeader","#getHighlightsForLinkAtPosition","lsp","#getHighlightsForReference","#getHighlightsForLinkFragment","#getHighlightsForLinkPath","#getHighlightsForExternalLink","lsp","#tokenizer","#workspace","#getInlineLinks","#getReferenceLinks","#getLinkDefinitions","#getAutoLinks","#getHtmlLinks","#getReferenceLinksInText","#getHtmlLinksFromNode","#linkAttrsByTag","HTMLElement","#config","#tocProvider","#logger","#linkComputer","#linkCache","#toValidDocumentLink","#reviveLinkHrefData","#resolveInternalLinkTarget","#createCommandUri","#createOpenAtPosCommand","l10n","#tocProvider","#linkProvider","#logger","#provideLinkDefinitionSymbols","#toSymbolTree","lsp","#buildTocSymbolTree","#definitionToDocumentSymbol","#tocToDocumentSymbol","#getTocSymbolName","#config","#workspace","#linkCache","#referencesProvider","#addDirectoryRenameEdits","#addSingleFileRenameEdits","#addEditsForReferencesToFile","#tryAddEditsInSelf","#addLinkRenameEdit","#addEditsForLinksInSelf","#parser","#tocProvider","#logger","#getRegions","#getHeaderFoldingRanges","#getBlockFoldingRanges","#getRegionsFromTokens","lsp","#getBlockFoldingRangesFromTokens","#getFoldingRangeKind","#linkProvider","#getHoverContents","mdBuilder.imageLink","mdBuilder.video","#configuration","#workspace","#linkProvider","#tocProvider","#workspaceTocCache","#getPathCompletionContext","#provideCompletionItems","#provideReferenceSuggestions","lsp","#provideWorkspaceHeaderSuggestions","#provideHeaderSuggestions","#resolveReference","#providePathSuggestions","#htmlAttributeStartPattern","#refLooksLikeUrl","#createCompletionContext","#linkStartPattern","#definitionPattern","#referenceLinkStartPattern","#referenceLinkShortHandPrefix","#getAnchorContext","l10n","#createTocCompletion","#createHtmlIdCompletion","#createHeaderCompletion","#normalizeFileNameCompletion","#getPathInsertText","#getPathDocumentation","mdBuilder.inlineCode","mdBuilder.codeLink","mdBuilder.imageLink","mdBuilder.video","#getFileUriOfTextDocument","#resolvePath","lsp","#parser","#tocProvider","#linkProvider","#logger","#provideSelectionRange","#getHeaderSelectionRange","#getBlockSelectionRange","#config","#linkProvider","#parseMetadata","#computedPastedRanges","lsp","#symbolProvider","#cache","#toSymbolInformation","lsp"],"sources":["../../../node_modules/vscode-jsonrpc/lib/common/is.js","../../../node_modules/vscode-jsonrpc/lib/common/messages.js","../../../node_modules/vscode-jsonrpc/lib/common/linkedMap.js","../../../node_modules/vscode-jsonrpc/lib/common/disposable.js","../../../node_modules/vscode-jsonrpc/lib/common/ral.js","../../../node_modules/vscode-jsonrpc/lib/common/events.js","../../../node_modules/vscode-jsonrpc/lib/common/cancellation.js","../../../node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js","../../../node_modules/vscode-jsonrpc/lib/common/semaphore.js","../../../node_modules/vscode-jsonrpc/lib/common/messageReader.js","../../../node_modules/vscode-jsonrpc/lib/common/messageWriter.js","../../../node_modules/vscode-jsonrpc/lib/common/messageBuffer.js","../../../node_modules/vscode-jsonrpc/lib/common/connection.js","../../../node_modules/vscode-jsonrpc/lib/common/api.js","../../../node_modules/vscode-jsonrpc/lib/node/ril.js","../../../node_modules/vscode-jsonrpc/lib/node/main.js","../../../node_modules/vscode-markdown-languageservice/node_modules/picomatch/lib/constants.js","../../../node_modules/vscode-markdown-languageservice/node_modules/picomatch/lib/utils.js","../../../node_modules/vscode-markdown-languageservice/node_modules/picomatch/lib/scan.js","../../../node_modules/vscode-markdown-languageservice/node_modules/picomatch/lib/parse.js","../../../node_modules/vscode-markdown-languageservice/node_modules/picomatch/lib/picomatch.js","../../../node_modules/vscode-markdown-languageservice/node_modules/picomatch/index.js","../../../node_modules/vscode-markdown-languageservice/out/config.js","../../../node_modules/@vscode/l10n/dist/main.js","../../../node_modules/vscode-markdown-languageservice/out/types/documentLink.js","../../../node_modules/vscode-markdown-languageservice/out/types/position.js","../../../node_modules/vscode-markdown-languageservice/out/types/range.js","../../../node_modules/vscode-markdown-languageservice/out/util/vscodeUri.js","../../../node_modules/vscode-markdown-languageservice/out/util/number.js","../../../node_modules/vscode-markdown-languageservice/out/types/textDocument.js","../../../node_modules/vscode-markdown-languageservice/out/util/editBuilder.js","../../../node_modules/vscode-markdown-languageservice/out/util/schemes.js","../../../node_modules/vscode-markdown-languageservice/out/util/path.js","../../../node_modules/vscode-markdown-languageservice/out/util/string.js","../../../node_modules/vscode-markdown-languageservice/out/languageFeatures/organizeLinkDefs.js","../../../node_modules/vscode-markdown-languageservice/out/languageFeatures/codeActions/util.js","../../../node_modules/vscode-markdown-languageservice/out/languageFeatures/codeActions/extractLinkDef.js","../../../node_modules/vscode-markdown-languageservice/out/logging.js","../../../node_modules/vscode-markdown-languageservice/out/util/dispose.js","../../../node_modules/vscode-markdown-languageservice/out/util/limiter.js","../../../node_modules/vscode-markdown-languageservice/out/util/resourceMap.js","../../../node_modules/vscode-markdown-languageservice/out/workspace.js","../../../node_modules/vscode-markdown-languageservice/out/languageFeatures/diagnostics.js","../../../node_modules/vscode-markdown-languageservice/out/languageFeatures/codeActions/removeLinkDefinition.js","../../../node_modules/vscode-markdown-languageservice/out/languageFeatures/definitions.js","../../../node_modules/he/he.js","../../../node_modules/node-html-parser/dist/nodes/node.js","../../../node_modules/node-html-parser/dist/nodes/type.js","../../../node_modules/node-html-parser/dist/nodes/comment.js","../../../node_modules/domelementtype/lib/index.js","../../../node_modules/domhandler/lib/node.js","../../../node_modules/domhandler/lib/index.js","../../../node_modules/entities/lib/generated/decode-data-html.js","../../../node_modules/entities/lib/generated/decode-data-xml.js","../../../node_modules/entities/lib/decode_codepoint.js","../../../node_modules/entities/lib/decode.js","../../../node_modules/entities/lib/generated/encode-html.js","../../../node_modules/entities/lib/escape.js","../../../node_modules/entities/lib/encode.js","../../../node_modules/entities/lib/index.js","../../../node_modules/dom-serializer/lib/foreignNames.js","../../../node_modules/dom-serializer/lib/index.js","../../../node_modules/domutils/lib/stringify.js","../../../node_modules/domutils/lib/traversal.js","../../../node_modules/domutils/lib/manipulation.js","../../../node_modules/domutils/lib/querying.js","../../../node_modules/domutils/lib/legacy.js","../../../node_modules/domutils/lib/helpers.js","../../../node_modules/domutils/lib/feeds.js","../../../node_modules/domutils/lib/index.js","../../../node_modules/boolbase/index.js","../../../node_modules/css-what/lib/commonjs/types.js","../../../node_modules/css-what/lib/commonjs/parse.js","../../../node_modules/css-what/lib/commonjs/stringify.js","../../../node_modules/css-what/lib/commonjs/index.js","../../../node_modules/css-select/lib/sort.js","../../../node_modules/css-select/lib/attributes.js","../../../node_modules/nth-check/lib/parse.js","../../../node_modules/nth-check/lib/compile.js","../../../node_modules/nth-check/lib/index.js","../../../node_modules/css-select/lib/pseudo-selectors/filters.js","../../../node_modules/css-select/lib/pseudo-selectors/pseudos.js","../../../node_modules/css-select/lib/pseudo-selectors/aliases.js","../../../node_modules/css-select/lib/pseudo-selectors/subselects.js","../../../node_modules/css-select/lib/pseudo-selectors/index.js","../../../node_modules/css-select/lib/general.js","../../../node_modules/css-select/lib/compile.js","../../../node_modules/css-select/lib/index.js","../../../node_modules/node-html-parser/dist/back.js","../../../node_modules/node-html-parser/dist/matcher.js","../../../node_modules/node-html-parser/dist/void-tag.js","../../../node_modules/node-html-parser/dist/nodes/text.js","../../../node_modules/node-html-parser/dist/nodes/html.js","../../../node_modules/node-html-parser/dist/parse.js","../../../node_modules/node-html-parser/dist/valid.js","../../../node_modules/node-html-parser/dist/index.js","../../../node_modules/vscode-markdown-languageservice/out/util/noLinkRanges.js","../../../node_modules/vscode-markdown-languageservice/out/util/lazy.js","../../../node_modules/vscode-markdown-languageservice/out/workspaceCache.js","../../../node_modules/vscode-markdown-languageservice/out/tableOfContents.js","../../../node_modules/vscode-languageserver-textdocument/lib/esm/main.js","../../../node_modules/vscode-markdown-languageservice/out/types/inMemoryDocument.js","../../../node_modules/vscode-markdown-languageservice/out/util/mdLinks.js","../../../node_modules/vscode-markdown-languageservice/out/util/uri.js","../../../node_modules/vscode-markdown-languageservice/out/languageFeatures/references.js","../../../node_modules/vscode-markdown-languageservice/out/languageFeatures/rename.js","../../../node_modules/vscode-markdown-languageservice/out/languageFeatures/documentHighlights.js","../../../node_modules/vscode-markdown-languageservice/out/util/arrays.js","../../../node_modules/vscode-markdown-languageservice/out/util/html.js","../../../node_modules/vscode-markdown-languageservice/out/languageFeatures/documentLinks.js","../../../node_modules/vscode-markdown-languageservice/out/languageFeatures/documentSymbols.js","../../../node_modules/vscode-markdown-languageservice/out/languageFeatures/fileRename.js","../../../node_modules/vscode-markdown-languageservice/out/languageFeatures/folding.js","../../../node_modules/vscode-markdown-languageservice/out/util/mdBuilder.js","../../../node_modules/vscode-markdown-languageservice/out/util/media.js","../../../node_modules/vscode-markdown-languageservice/out/languageFeatures/hover.js","../../../node_modules/vscode-markdown-languageservice/out/languageFeatures/pathCompletions.js","../../../node_modules/vscode-markdown-languageservice/out/languageFeatures/smartSelect.js","../../../node_modules/vscode-markdown-languageservice/out/languageFeatures/updatePastedLinks.js","../../../node_modules/vscode-markdown-languageservice/out/languageFeatures/workspaceSymbols.js","../../../node_modules/vscode-markdown-languageservice/out/slugify.js","../../../node_modules/vscode-markdown-languageservice/out/index.js","../../../node_modules/mdurl/build/index.cjs.js","../../../node_modules/uc.micro/build/index.cjs.js","../../../node_modules/linkify-it/build/index.cjs.js","../../../node_modules/punycode.js/punycode.js","../../../node_modules/markdown-it/dist/index.cjs.js","../../../node_modules/volar-service-markdown/index.js"],"sourcesContent":["\"use strict\";\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 * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringArray = exports.array = exports.func = exports.error = exports.number = exports.string = exports.boolean = void 0;\nfunction boolean(value) {\n return value === true || value === false;\n}\nexports.boolean = boolean;\nfunction string(value) {\n return typeof value === 'string' || value instanceof String;\n}\nexports.string = string;\nfunction number(value) {\n return typeof value === 'number' || value instanceof Number;\n}\nexports.number = number;\nfunction error(value) {\n return value instanceof Error;\n}\nexports.error = error;\nfunction func(value) {\n return typeof value === 'function';\n}\nexports.func = func;\nfunction array(value) {\n return Array.isArray(value);\n}\nexports.array = array;\nfunction stringArray(value) {\n return array(value) && value.every(elem => string(elem));\n}\nexports.stringArray = stringArray;\n","\"use strict\";\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 * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Message = exports.NotificationType9 = exports.NotificationType8 = exports.NotificationType7 = exports.NotificationType6 = exports.NotificationType5 = exports.NotificationType4 = exports.NotificationType3 = exports.NotificationType2 = exports.NotificationType1 = exports.NotificationType0 = exports.NotificationType = exports.RequestType9 = exports.RequestType8 = exports.RequestType7 = exports.RequestType6 = exports.RequestType5 = exports.RequestType4 = exports.RequestType3 = exports.RequestType2 = exports.RequestType1 = exports.RequestType = exports.RequestType0 = exports.AbstractMessageSignature = exports.ParameterStructures = exports.ResponseError = exports.ErrorCodes = void 0;\nconst is = require(\"./is\");\n/**\n * Predefined error codes.\n */\nvar ErrorCodes;\n(function (ErrorCodes) {\n // Defined by JSON RPC\n ErrorCodes.ParseError = -32700;\n ErrorCodes.InvalidRequest = -32600;\n ErrorCodes.MethodNotFound = -32601;\n ErrorCodes.InvalidParams = -32602;\n ErrorCodes.InternalError = -32603;\n /**\n * This is the start range of JSON RPC reserved error codes.\n * It doesn't denote a real error code. No application error codes should\n * be defined between the start and end range. For backwards\n * compatibility the `ServerNotInitialized` and the `UnknownErrorCode`\n * are left in the range.\n *\n * @since 3.16.0\n */\n ErrorCodes.jsonrpcReservedErrorRangeStart = -32099;\n /** @deprecated use jsonrpcReservedErrorRangeStart */\n ErrorCodes.serverErrorStart = -32099;\n /**\n * An error occurred when write a message to the transport layer.\n */\n ErrorCodes.MessageWriteError = -32099;\n /**\n * An error occurred when reading a message from the transport layer.\n */\n ErrorCodes.MessageReadError = -32098;\n /**\n * The connection got disposed or lost and all pending responses got\n * rejected.\n */\n ErrorCodes.PendingResponseRejected = -32097;\n /**\n * The connection is inactive and a use of it failed.\n */\n ErrorCodes.ConnectionInactive = -32096;\n /**\n * Error code indicating that a server received a notification or\n * request before the server has received the `initialize` request.\n */\n ErrorCodes.ServerNotInitialized = -32002;\n ErrorCodes.UnknownErrorCode = -32001;\n /**\n * This is the end range of JSON RPC reserved error codes.\n * It doesn't denote a real error code.\n *\n * @since 3.16.0\n */\n ErrorCodes.jsonrpcReservedErrorRangeEnd = -32000;\n /** @deprecated use jsonrpcReservedErrorRangeEnd */\n ErrorCodes.serverErrorEnd = -32000;\n})(ErrorCodes || (exports.ErrorCodes = ErrorCodes = {}));\n/**\n * An error object return in a response in case a request\n * has failed.\n */\nclass ResponseError extends Error {\n constructor(code, message, data) {\n super(message);\n this.code = is.number(code) ? code : ErrorCodes.UnknownErrorCode;\n this.data = data;\n Object.setPrototypeOf(this, ResponseError.prototype);\n }\n toJson() {\n const result = {\n code: this.code,\n message: this.message\n };\n if (this.data !== undefined) {\n result.data = this.data;\n }\n return result;\n }\n}\nexports.ResponseError = ResponseError;\nclass ParameterStructures {\n constructor(kind) {\n this.kind = kind;\n }\n static is(value) {\n return value === ParameterStructures.auto || value === ParameterStructures.byName || value === ParameterStructures.byPosition;\n }\n toString() {\n return this.kind;\n }\n}\nexports.ParameterStructures = ParameterStructures;\n/**\n * The parameter structure is automatically inferred on the number of parameters\n * and the parameter type in case of a single param.\n */\nParameterStructures.auto = new ParameterStructures('auto');\n/**\n * Forces `byPosition` parameter structure. This is useful if you have a single\n * parameter which has a literal type.\n */\nParameterStructures.byPosition = new ParameterStructures('byPosition');\n/**\n * Forces `byName` parameter structure. This is only useful when having a single\n * parameter. The library will report errors if used with a different number of\n * parameters.\n */\nParameterStructures.byName = new ParameterStructures('byName');\n/**\n * An abstract implementation of a MessageType.\n */\nclass AbstractMessageSignature {\n constructor(method, numberOfParams) {\n this.method = method;\n this.numberOfParams = numberOfParams;\n }\n get parameterStructures() {\n return ParameterStructures.auto;\n }\n}\nexports.AbstractMessageSignature = AbstractMessageSignature;\n/**\n * Classes to type request response pairs\n */\nclass RequestType0 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 0);\n }\n}\nexports.RequestType0 = RequestType0;\nclass RequestType extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.RequestType = RequestType;\nclass RequestType1 extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.RequestType1 = RequestType1;\nclass RequestType2 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 2);\n }\n}\nexports.RequestType2 = RequestType2;\nclass RequestType3 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 3);\n }\n}\nexports.RequestType3 = RequestType3;\nclass RequestType4 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 4);\n }\n}\nexports.RequestType4 = RequestType4;\nclass RequestType5 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 5);\n }\n}\nexports.RequestType5 = RequestType5;\nclass RequestType6 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 6);\n }\n}\nexports.RequestType6 = RequestType6;\nclass RequestType7 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 7);\n }\n}\nexports.RequestType7 = RequestType7;\nclass RequestType8 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 8);\n }\n}\nexports.RequestType8 = RequestType8;\nclass RequestType9 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 9);\n }\n}\nexports.RequestType9 = RequestType9;\nclass NotificationType extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.NotificationType = NotificationType;\nclass NotificationType0 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 0);\n }\n}\nexports.NotificationType0 = NotificationType0;\nclass NotificationType1 extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.NotificationType1 = NotificationType1;\nclass NotificationType2 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 2);\n }\n}\nexports.NotificationType2 = NotificationType2;\nclass NotificationType3 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 3);\n }\n}\nexports.NotificationType3 = NotificationType3;\nclass NotificationType4 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 4);\n }\n}\nexports.NotificationType4 = NotificationType4;\nclass NotificationType5 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 5);\n }\n}\nexports.NotificationType5 = NotificationType5;\nclass NotificationType6 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 6);\n }\n}\nexports.NotificationType6 = NotificationType6;\nclass NotificationType7 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 7);\n }\n}\nexports.NotificationType7 = NotificationType7;\nclass NotificationType8 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 8);\n }\n}\nexports.NotificationType8 = NotificationType8;\nclass NotificationType9 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 9);\n }\n}\nexports.NotificationType9 = NotificationType9;\nvar Message;\n(function (Message) {\n /**\n * Tests if the given message is a request message\n */\n function isRequest(message) {\n const candidate = message;\n return candidate && is.string(candidate.method) && (is.string(candidate.id) || is.number(candidate.id));\n }\n Message.isRequest = isRequest;\n /**\n * Tests if the given message is a notification message\n */\n function isNotification(message) {\n const candidate = message;\n return candidate && is.string(candidate.method) && message.id === void 0;\n }\n Message.isNotification = isNotification;\n /**\n * Tests if the given message is a response message\n */\n function isResponse(message) {\n const candidate = message;\n return candidate && (candidate.result !== void 0 || !!candidate.error) && (is.string(candidate.id) || is.number(candidate.id) || candidate.id === null);\n }\n Message.isResponse = isResponse;\n})(Message || (exports.Message = Message = {}));\n","\"use strict\";\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;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LRUCache = exports.LinkedMap = exports.Touch = void 0;\nvar Touch;\n(function (Touch) {\n Touch.None = 0;\n Touch.First = 1;\n Touch.AsOld = Touch.First;\n Touch.Last = 2;\n Touch.AsNew = Touch.Last;\n})(Touch || (exports.Touch = Touch = {}));\nclass LinkedMap {\n constructor() {\n this[_a] = '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 return this._head?.value;\n }\n get last() {\n return this._tail?.value;\n }\n has(key) {\n return this._map.has(key);\n }\n get(key, touch = Touch.None) {\n const item = this._map.get(key);\n if (!item) {\n return undefined;\n }\n if (touch !== Touch.None) {\n this.touch(item, touch);\n }\n return item.value;\n }\n set(key, value, touch = Touch.None) {\n let item = this._map.get(key);\n if (item) {\n item.value = value;\n if (touch !== Touch.None) {\n this.touch(item, touch);\n }\n }\n else {\n item = { key, value, next: undefined, previous: undefined };\n switch (touch) {\n case Touch.None:\n this.addItemLast(item);\n break;\n case Touch.First:\n this.addItemFirst(item);\n break;\n case Touch.Last:\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 state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: () => {\n if (this._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 state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: () => {\n if (this._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 state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: () => {\n if (this._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 [(_a = 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 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 happened if size === 1 which is handle\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 happened if size === 1 which is handle\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 !== Touch.First && touch !== Touch.Last)) {\n return;\n }\n if (touch === Touch.First) {\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 === Touch.Last) {\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}\nexports.LinkedMap = LinkedMap;\nclass LRUCache 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 ratio() {\n return this._ratio;\n }\n set ratio(ratio) {\n this._ratio = Math.min(Math.max(0, ratio), 1);\n this.checkTrim();\n }\n get(key, touch = Touch.AsNew) {\n return super.get(key, touch);\n }\n peek(key) {\n return super.get(key, Touch.None);\n }\n set(key, value) {\n super.set(key, value, Touch.Last);\n this.checkTrim();\n return this;\n }\n checkTrim() {\n if (this.size > this._limit) {\n this.trimOld(Math.round(this._limit * this._ratio));\n }\n }\n}\nexports.LRUCache = LRUCache;\n","\"use strict\";\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 *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Disposable = void 0;\nvar Disposable;\n(function (Disposable) {\n function create(func) {\n return {\n dispose: func\n };\n }\n Disposable.create = create;\n})(Disposable || (exports.Disposable = Disposable = {}));\n","\"use strict\";\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 * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet _ral;\nfunction RAL() {\n if (_ral === undefined) {\n throw new Error(`No runtime abstraction layer installed`);\n }\n return _ral;\n}\n(function (RAL) {\n function install(ral) {\n if (ral === undefined) {\n throw new Error(`No runtime abstraction layer provided`);\n }\n _ral = ral;\n }\n RAL.install = install;\n})(RAL || (RAL = {}));\nexports.default = RAL;\n","\"use strict\";\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 * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Emitter = exports.Event = void 0;\nconst ral_1 = require(\"./ral\");\nvar Event;\n(function (Event) {\n const _disposable = { dispose() { } };\n Event.None = function () { return _disposable; };\n})(Event || (exports.Event = Event = {}));\nclass CallbackList {\n add(callback, context = null, bucket) {\n if (!this._callbacks) {\n this._callbacks = [];\n this._contexts = [];\n }\n this._callbacks.push(callback);\n this._contexts.push(context);\n if (Array.isArray(bucket)) {\n bucket.push({ dispose: () => this.remove(callback, context) });\n }\n }\n remove(callback, context = null) {\n if (!this._callbacks) {\n return;\n }\n let foundCallbackWithDifferentContext = false;\n for (let i = 0, len = this._callbacks.length; i < len; i++) {\n if (this._callbacks[i] === callback) {\n if (this._contexts[i] === context) {\n // callback & context match => remove it\n this._callbacks.splice(i, 1);\n this._contexts.splice(i, 1);\n return;\n }\n else {\n foundCallbackWithDifferentContext = true;\n }\n }\n }\n if (foundCallbackWithDifferentContext) {\n throw new Error('When adding a listener with a context, you should remove it with the same context');\n }\n }\n invoke(...args) {\n if (!this._callbacks) {\n return [];\n }\n const ret = [], callbacks = this._callbacks.slice(0), contexts = this._contexts.slice(0);\n for (let i = 0, len = callbacks.length; i < len; i++) {\n try {\n ret.push(callbacks[i].apply(contexts[i], args));\n }\n catch (e) {\n // eslint-disable-next-line no-console\n (0, ral_1.default)().console.error(e);\n }\n }\n return ret;\n }\n isEmpty() {\n return !this._callbacks || this._callbacks.length === 0;\n }\n dispose() {\n this._callbacks = undefined;\n this._contexts = undefined;\n }\n}\nclass Emitter {\n constructor(_options) {\n this._options = _options;\n }\n /**\n * For the public to allow to subscribe\n * to events from this Emitter\n */\n get event() {\n if (!this._event) {\n this._event = (listener, thisArgs, disposables) => {\n if (!this._callbacks) {\n this._callbacks = new CallbackList();\n }\n if (this._options && this._options.onFirstListenerAdd && this._callbacks.isEmpty()) {\n this._options.onFirstListenerAdd(this);\n }\n this._callbacks.add(listener, thisArgs);\n const result = {\n dispose: () => {\n if (!this._callbacks) {\n // disposable is disposed after emitter is disposed.\n return;\n }\n this._callbacks.remove(listener, thisArgs);\n result.dispose = Emitter._noop;\n if (this._options && this._options.onLastListenerRemove && this._callbacks.isEmpty()) {\n this._options.onLastListenerRemove(this);\n }\n }\n };\n if (Array.isArray(disposables)) {\n disposables.push(result);\n }\n return result;\n };\n }\n return this._event;\n }\n /**\n * To be kept private to fire an event to\n * subscribers\n */\n fire(event) {\n if (this._callbacks) {\n this._callbacks.invoke.call(this._callbacks, event);\n }\n }\n dispose() {\n if (this._callbacks) {\n this._callbacks.dispose();\n this._callbacks = undefined;\n }\n }\n}\nexports.Emitter = Emitter;\nEmitter._noop = function () { };\n","\"use strict\";\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 *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CancellationTokenSource = exports.CancellationToken = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst events_1 = require(\"./events\");\nvar CancellationToken;\n(function (CancellationToken) {\n CancellationToken.None = Object.freeze({\n isCancellationRequested: false,\n onCancellationRequested: events_1.Event.None\n });\n CancellationToken.Cancelled = Object.freeze({\n isCancellationRequested: true,\n onCancellationRequested: events_1.Event.None\n });\n function is(value) {\n const candidate = value;\n return candidate && (candidate === CancellationToken.None\n || candidate === CancellationToken.Cancelled\n || (Is.boolean(candidate.isCancellationRequested) && !!candidate.onCancellationRequested));\n }\n CancellationToken.is = is;\n})(CancellationToken || (exports.CancellationToken = CancellationToken = {}));\nconst shortcutEvent = Object.freeze(function (callback, context) {\n const handle = (0, ral_1.default)().timer.setTimeout(callback.bind(context), 0);\n return { dispose() { handle.dispose(); } };\n});\nclass MutableToken {\n constructor() {\n this._isCancelled = false;\n }\n cancel() {\n if (!this._isCancelled) {\n this._isCancelled = true;\n if (this._emitter) {\n this._emitter.fire(undefined);\n this.dispose();\n }\n }\n }\n get isCancellationRequested() {\n return this._isCancelled;\n }\n get onCancellationRequested() {\n if (this._isCancelled) {\n return shortcutEvent;\n }\n if (!this._emitter) {\n this._emitter = new events_1.Emitter();\n }\n return this._emitter.event;\n }\n dispose() {\n if (this._emitter) {\n this._emitter.dispose();\n this._emitter = undefined;\n }\n }\n}\nclass CancellationTokenSource {\n get token() {\n if (!this._token) {\n // be lazy and create the token only when\n // actually needed\n this._token = new MutableToken();\n }\n return this._token;\n }\n cancel() {\n if (!this._token) {\n // save an object by returning the default\n // cancelled token when cancellation happens\n // before someone asks for the token\n this._token = CancellationToken.Cancelled;\n }\n else {\n this._token.cancel();\n }\n }\n dispose() {\n if (!this._token) {\n // ensure to initialize with an empty token if we had none\n this._token = CancellationToken.None;\n }\n else if (this._token instanceof MutableToken) {\n // actually dispose\n this._token.dispose();\n }\n }\n}\nexports.CancellationTokenSource = CancellationTokenSource;\n","\"use strict\";\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 * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SharedArrayReceiverStrategy = exports.SharedArraySenderStrategy = void 0;\nconst cancellation_1 = require(\"./cancellation\");\nvar CancellationState;\n(function (CancellationState) {\n CancellationState.Continue = 0;\n CancellationState.Cancelled = 1;\n})(CancellationState || (CancellationState = {}));\nclass SharedArraySenderStrategy {\n constructor() {\n this.buffers = new Map();\n }\n enableCancellation(request) {\n if (request.id === null) {\n return;\n }\n const buffer = new SharedArrayBuffer(4);\n const data = new Int32Array(buffer, 0, 1);\n data[0] = CancellationState.Continue;\n this.buffers.set(request.id, buffer);\n request.$cancellationData = buffer;\n }\n async sendCancellation(_conn, id) {\n const buffer = this.buffers.get(id);\n if (buffer === undefined) {\n return;\n }\n const data = new Int32Array(buffer, 0, 1);\n Atomics.store(data, 0, CancellationState.Cancelled);\n }\n cleanup(id) {\n this.buffers.delete(id);\n }\n dispose() {\n this.buffers.clear();\n }\n}\nexports.SharedArraySenderStrategy = SharedArraySenderStrategy;\nclass SharedArrayBufferCancellationToken {\n constructor(buffer) {\n this.data = new Int32Array(buffer, 0, 1);\n }\n get isCancellationRequested() {\n return Atomics.load(this.data, 0) === CancellationState.Cancelled;\n }\n get onCancellationRequested() {\n throw new Error(`Cancellation over SharedArrayBuffer doesn't support cancellation events`);\n }\n}\nclass SharedArrayBufferCancellationTokenSource {\n constructor(buffer) {\n this.token = new SharedArrayBufferCancellationToken(buffer);\n }\n cancel() {\n }\n dispose() {\n }\n}\nclass SharedArrayReceiverStrategy {\n constructor() {\n this.kind = 'request';\n }\n createCancellationTokenSource(request) {\n const buffer = request.$cancellationData;\n if (buffer === undefined) {\n return new cancellation_1.CancellationTokenSource();\n }\n return new SharedArrayBufferCancellationTokenSource(buffer);\n }\n}\nexports.SharedArrayReceiverStrategy = SharedArrayReceiverStrategy;\n","\"use strict\";\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 * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Semaphore = void 0;\nconst ral_1 = require(\"./ral\");\nclass Semaphore {\n constructor(capacity = 1) {\n if (capacity <= 0) {\n throw new Error('Capacity must be greater than 0');\n }\n this._capacity = capacity;\n this._active = 0;\n this._waiting = [];\n }\n lock(thunk) {\n return new Promise((resolve, reject) => {\n this._waiting.push({ thunk, resolve, reject });\n this.runNext();\n });\n }\n get active() {\n return this._active;\n }\n runNext() {\n if (this._waiting.length === 0 || this._active === this._capacity) {\n return;\n }\n (0, ral_1.default)().timer.setImmediate(() => this.doRunNext());\n }\n doRunNext() {\n if (this._waiting.length === 0 || this._active === this._capacity) {\n return;\n }\n const next = this._waiting.shift();\n this._active++;\n if (this._active > this._capacity) {\n throw new Error(`To many thunks active`);\n }\n try {\n const result = next.thunk();\n if (result instanceof Promise) {\n result.then((value) => {\n this._active--;\n next.resolve(value);\n this.runNext();\n }, (err) => {\n this._active--;\n next.reject(err);\n this.runNext();\n });\n }\n else {\n this._active--;\n next.resolve(result);\n this.runNext();\n }\n }\n catch (err) {\n this._active--;\n next.reject(err);\n this.runNext();\n }\n }\n}\nexports.Semaphore = Semaphore;\n","\"use strict\";\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 * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReadableStreamMessageReader = exports.AbstractMessageReader = exports.MessageReader = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst events_1 = require(\"./events\");\nconst semaphore_1 = require(\"./semaphore\");\nvar MessageReader;\n(function (MessageReader) {\n function is(value) {\n let candidate = value;\n return candidate && Is.func(candidate.listen) && Is.func(candidate.dispose) &&\n Is.func(candidate.onError) && Is.func(candidate.onClose) && Is.func(candidate.onPartialMessage);\n }\n MessageReader.is = is;\n})(MessageReader || (exports.MessageReader = MessageReader = {}));\nclass AbstractMessageReader {\n constructor() {\n this.errorEmitter = new events_1.Emitter();\n this.closeEmitter = new events_1.Emitter();\n this.partialMessageEmitter = new events_1.Emitter();\n }\n dispose() {\n this.errorEmitter.dispose();\n this.closeEmitter.dispose();\n }\n get onError() {\n return this.errorEmitter.event;\n }\n fireError(error) {\n this.errorEmitter.fire(this.asError(error));\n }\n get onClose() {\n return this.closeEmitter.event;\n }\n fireClose() {\n this.closeEmitter.fire(undefined);\n }\n get onPartialMessage() {\n return this.partialMessageEmitter.event;\n }\n firePartialMessage(info) {\n this.partialMessageEmitter.fire(info);\n }\n asError(error) {\n if (error instanceof Error) {\n return error;\n }\n else {\n return new Error(`Reader received error. Reason: ${Is.string(error.message) ? error.message : 'unknown'}`);\n }\n }\n}\nexports.AbstractMessageReader = AbstractMessageReader;\nvar ResolvedMessageReaderOptions;\n(function (ResolvedMessageReaderOptions) {\n function fromOptions(options) {\n let charset;\n let result;\n let contentDecoder;\n const contentDecoders = new Map();\n let contentTypeDecoder;\n const contentTypeDecoders = new Map();\n if (options === undefined || typeof options === 'string') {\n charset = options ?? 'utf-8';\n }\n else {\n charset = options.charset ?? 'utf-8';\n if (options.contentDecoder !== undefined) {\n contentDecoder = options.contentDecoder;\n contentDecoders.set(contentDecoder.name, contentDecoder);\n }\n if (options.contentDecoders !== undefined) {\n for (const decoder of options.contentDecoders) {\n contentDecoders.set(decoder.name, decoder);\n }\n }\n if (options.contentTypeDecoder !== undefined) {\n contentTypeDecoder = options.contentTypeDecoder;\n contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder);\n }\n if (options.contentTypeDecoders !== undefined) {\n for (const decoder of options.contentTypeDecoders) {\n contentTypeDecoders.set(decoder.name, decoder);\n }\n }\n }\n if (contentTypeDecoder === undefined) {\n contentTypeDecoder = (0, ral_1.default)().applicationJson.decoder;\n contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder);\n }\n return { charset, contentDecoder, contentDecoders, contentTypeDecoder, contentTypeDecoders };\n }\n ResolvedMessageReaderOptions.fromOptions = fromOptions;\n})(ResolvedMessageReaderOptions || (ResolvedMessageReaderOptions = {}));\nclass ReadableStreamMessageReader extends AbstractMessageReader {\n constructor(readable, options) {\n super();\n this.readable = readable;\n this.options = ResolvedMessageReaderOptions.fromOptions(options);\n this.buffer = (0, ral_1.default)().messageBuffer.create(this.options.charset);\n this._partialMessageTimeout = 10000;\n this.nextMessageLength = -1;\n this.messageToken = 0;\n this.readSemaphore = new semaphore_1.Semaphore(1);\n }\n set partialMessageTimeout(timeout) {\n this._partialMessageTimeout = timeout;\n }\n get partialMessageTimeout() {\n return this._partialMessageTimeout;\n }\n listen(callback) {\n this.nextMessageLength = -1;\n this.messageToken = 0;\n this.partialMessageTimer = undefined;\n this.callback = callback;\n const result = this.readable.onData((data) => {\n this.onData(data);\n });\n this.readable.onError((error) => this.fireError(error));\n this.readable.onClose(() => this.fireClose());\n return result;\n }\n onData(data) {\n try {\n this.buffer.append(data);\n while (true) {\n if (this.nextMessageLength === -1) {\n const headers = this.buffer.tryReadHeaders(true);\n if (!headers) {\n return;\n }\n const contentLength = headers.get('content-length');\n if (!contentLength) {\n this.fireError(new Error(`Header must provide a Content-Length property.\\n${JSON.stringify(Object.fromEntries(headers))}`));\n return;\n }\n const length = parseInt(contentLength);\n if (isNaN(length)) {\n this.fireError(new Error(`Content-Length value must be a number. Got ${contentLength}`));\n return;\n }\n this.nextMessageLength = length;\n }\n const body = this.buffer.tryReadBody(this.nextMessageLength);\n if (body === undefined) {\n /** We haven't received the full message yet. */\n this.setPartialMessageTimer();\n return;\n }\n this.clearPartialMessageTimer();\n this.nextMessageLength = -1;\n // Make sure that we convert one received message after the\n // other. Otherwise it could happen that a decoding of a second\n // smaller message finished before the decoding of a first larger\n // message and then we would deliver the second message first.\n this.readSemaphore.lock(async () => {\n const bytes = this.options.contentDecoder !== undefined\n ? await this.options.contentDecoder.decode(body)\n : body;\n const message = await this.options.contentTypeDecoder.decode(bytes, this.options);\n this.callback(message);\n }).catch((error) => {\n this.fireError(error);\n });\n }\n }\n catch (error) {\n this.fireError(error);\n }\n }\n clearPartialMessageTimer() {\n if (this.partialMessageTimer) {\n this.partialMessageTimer.dispose();\n this.partialMessageTimer = undefined;\n }\n }\n setPartialMessageTimer() {\n this.clearPartialMessageTimer();\n if (this._partialMessageTimeout <= 0) {\n return;\n }\n this.partialMessageTimer = (0, ral_1.default)().timer.setTimeout((token, timeout) => {\n this.partialMessageTimer = undefined;\n if (token === this.messageToken) {\n this.firePartialMessage({ messageToken: token, waitingTime: timeout });\n this.setPartialMessageTimer();\n }\n }, this._partialMessageTimeout, this.messageToken, this._partialMessageTimeout);\n }\n}\nexports.ReadableStreamMessageReader = ReadableStreamMessageReader;\n","\"use strict\";\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 * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WriteableStreamMessageWriter = exports.AbstractMessageWriter = exports.MessageWriter = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst semaphore_1 = require(\"./semaphore\");\nconst events_1 = require(\"./events\");\nconst ContentLength = 'Content-Length: ';\nconst CRLF = '\\r\\n';\nvar MessageWriter;\n(function (MessageWriter) {\n function is(value) {\n let candidate = value;\n return candidate && Is.func(candidate.dispose) && Is.func(candidate.onClose) &&\n Is.func(candidate.onError) && Is.func(candidate.write);\n }\n MessageWriter.is = is;\n})(MessageWriter || (exports.MessageWriter = MessageWriter = {}));\nclass AbstractMessageWriter {\n constructor() {\n this.errorEmitter = new events_1.Emitter();\n this.closeEmitter = new events_1.Emitter();\n }\n dispose() {\n this.errorEmitter.dispose();\n this.closeEmitter.dispose();\n }\n get onError() {\n return this.errorEmitter.event;\n }\n fireError(error, message, count) {\n this.errorEmitter.fire([this.asError(error), message, count]);\n }\n get onClose() {\n return this.closeEmitter.event;\n }\n fireClose() {\n this.closeEmitter.fire(undefined);\n }\n asError(error) {\n if (error instanceof Error) {\n return error;\n }\n else {\n return new Error(`Writer received error. Reason: ${Is.string(error.message) ? error.message : 'unknown'}`);\n }\n }\n}\nexports.AbstractMessageWriter = AbstractMessageWriter;\nvar ResolvedMessageWriterOptions;\n(function (ResolvedMessageWriterOptions) {\n function fromOptions(options) {\n if (options === undefined || typeof options === 'string') {\n return { charset: options ?? 'utf-8', contentTypeEncoder: (0, ral_1.default)().applicationJson.encoder };\n }\n else {\n return { charset: options.charset ?? 'utf-8', contentEncoder: options.contentEncoder, contentTypeEncoder: options.contentTypeEncoder ?? (0, ral_1.default)().applicationJson.encoder };\n }\n }\n ResolvedMessageWriterOptions.fromOptions = fromOptions;\n})(ResolvedMessageWriterOptions || (ResolvedMessageWriterOptions = {}));\nclass WriteableStreamMessageWriter extends AbstractMessageWriter {\n constructor(writable, options) {\n super();\n this.writable = writable;\n this.options = ResolvedMessageWriterOptions.fromOptions(options);\n this.errorCount = 0;\n this.writeSemaphore = new semaphore_1.Semaphore(1);\n this.writable.onError((error) => this.fireError(error));\n this.writable.onClose(() => this.fireClose());\n }\n async write(msg) {\n return this.writeSemaphore.lock(async () => {\n const payload = this.options.contentTypeEncoder.encode(msg, this.options).then((buffer) => {\n if (this.options.contentEncoder !== undefined) {\n return this.options.contentEncoder.encode(buffer);\n }\n else {\n return buffer;\n }\n });\n return payload.then((buffer) => {\n const headers = [];\n headers.push(ContentLength, buffer.byteLength.toString(), CRLF);\n headers.push(CRLF);\n return this.doWrite(msg, headers, buffer);\n }, (error) => {\n this.fireError(error);\n throw error;\n });\n });\n }\n async doWrite(msg, headers, data) {\n try {\n await this.writable.write(headers.join(''), 'ascii');\n return this.writable.write(data);\n }\n catch (error) {\n this.handleError(error, msg);\n return Promise.reject(error);\n }\n }\n handleError(error, msg) {\n this.errorCount++;\n this.fireError(error, msg, this.errorCount);\n }\n end() {\n this.writable.end();\n }\n}\nexports.WriteableStreamMessageWriter = WriteableStreamMessageWriter;\n","\"use strict\";\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 *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractMessageBuffer = void 0;\nconst CR = 13;\nconst LF = 10;\nconst CRLF = '\\r\\n';\nclass AbstractMessageBuffer {\n constructor(encoding = 'utf-8') {\n this._encoding = encoding;\n this._chunks = [];\n this._totalLength = 0;\n }\n get encoding() {\n return this._encoding;\n }\n append(chunk) {\n const toAppend = typeof chunk === 'string' ? this.fromString(chunk, this._encoding) : chunk;\n this._chunks.push(toAppend);\n this._totalLength += toAppend.byteLength;\n }\n tryReadHeaders(lowerCaseKeys = false) {\n if (this._chunks.length === 0) {\n return undefined;\n }\n let state = 0;\n let chunkIndex = 0;\n let offset = 0;\n let chunkBytesRead = 0;\n row: while (chunkIndex < this._chunks.length) {\n const chunk = this._chunks[chunkIndex];\n offset = 0;\n column: while (offset < chunk.length) {\n const value = chunk[offset];\n switch (value) {\n case CR:\n switch (state) {\n case 0:\n state = 1;\n break;\n case 2:\n state = 3;\n break;\n default:\n state = 0;\n }\n break;\n case LF:\n switch (state) {\n case 1:\n state = 2;\n break;\n case 3:\n state = 4;\n offset++;\n break row;\n default:\n state = 0;\n }\n break;\n default:\n state = 0;\n }\n offset++;\n }\n chunkBytesRead += chunk.byteLength;\n chunkIndex++;\n }\n if (state !== 4) {\n return undefined;\n }\n // The buffer contains the two CRLF at the end. So we will\n // have two empty lines after the split at the end as well.\n const buffer = this._read(chunkBytesRead + offset);\n const result = new Map();\n const headers = this.toString(buffer, 'ascii').split(CRLF);\n if (headers.length < 2) {\n return result;\n }\n for (let i = 0; i < headers.length - 2; i++) {\n const header = headers[i];\n const index = header.indexOf(':');\n if (index === -1) {\n throw new Error(`Message header must separate key and value using ':'\\n${header}`);\n }\n const key = header.substr(0, index);\n const value = header.substr(index + 1).trim();\n result.set(lowerCaseKeys ? key.toLowerCase() : key, value);\n }\n return result;\n }\n tryReadBody(length) {\n if (this._totalLength < length) {\n return undefined;\n }\n return this._read(length);\n }\n get numberOfBytes() {\n return this._totalLength;\n }\n _read(byteCount) {\n if (byteCount === 0) {\n return this.emptyBuffer();\n }\n if (byteCount > this._totalLength) {\n throw new Error(`Cannot read so many bytes!`);\n }\n if (this._chunks[0].byteLength === byteCount) {\n // super fast path, precisely first chunk must be returned\n const chunk = this._chunks[0];\n this._chunks.shift();\n this._totalLength -= byteCount;\n return this.asNative(chunk);\n }\n if (this._chunks[0].byteLength > byteCount) {\n // fast path, the reading is entirely within the first chunk\n const chunk = this._chunks[0];\n const result = this.asNative(chunk, byteCount);\n this._chunks[0] = chunk.slice(byteCount);\n this._totalLength -= byteCount;\n return result;\n }\n const result = this.allocNative(byteCount);\n let resultOffset = 0;\n let chunkIndex = 0;\n while (byteCount > 0) {\n const chunk = this._chunks[chunkIndex];\n if (chunk.byteLength > byteCount) {\n // this chunk will survive\n const chunkPart = chunk.slice(0, byteCount);\n result.set(chunkPart, resultOffset);\n resultOffset += byteCount;\n this._chunks[chunkIndex] = chunk.slice(byteCount);\n this._totalLength -= byteCount;\n byteCount -= byteCount;\n }\n else {\n // this chunk will be entirely read\n result.set(chunk, resultOffset);\n resultOffset += chunk.byteLength;\n this._chunks.shift();\n this._totalLength -= chunk.byteLength;\n byteCount -= chunk.byteLength;\n }\n }\n return result;\n }\n}\nexports.AbstractMessageBuffer = AbstractMessageBuffer;\n","\"use strict\";\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 * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createMessageConnection = exports.ConnectionOptions = exports.MessageStrategy = exports.CancellationStrategy = exports.CancellationSenderStrategy = exports.CancellationReceiverStrategy = exports.RequestCancellationReceiverStrategy = exports.IdCancellationReceiverStrategy = exports.ConnectionStrategy = exports.ConnectionError = exports.ConnectionErrors = exports.LogTraceNotification = exports.SetTraceNotification = exports.TraceFormat = exports.TraceValues = exports.Trace = exports.NullLogger = exports.ProgressType = exports.ProgressToken = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst messages_1 = require(\"./messages\");\nconst linkedMap_1 = require(\"./linkedMap\");\nconst events_1 = require(\"./events\");\nconst cancellation_1 = require(\"./cancellation\");\nvar CancelNotification;\n(function (CancelNotification) {\n CancelNotification.type = new messages_1.NotificationType('$/cancelRequest');\n})(CancelNotification || (CancelNotification = {}));\nvar ProgressToken;\n(function (ProgressToken) {\n function is(value) {\n return typeof value === 'string' || typeof value === 'number';\n }\n ProgressToken.is = is;\n})(ProgressToken || (exports.ProgressToken = ProgressToken = {}));\nvar ProgressNotification;\n(function (ProgressNotification) {\n ProgressNotification.type = new messages_1.NotificationType('$/progress');\n})(ProgressNotification || (ProgressNotification = {}));\nclass ProgressType {\n constructor() {\n }\n}\nexports.ProgressType = ProgressType;\nvar StarRequestHandler;\n(function (StarRequestHandler) {\n function is(value) {\n return Is.func(value);\n }\n StarRequestHandler.is = is;\n})(StarRequestHandler || (StarRequestHandler = {}));\nexports.NullLogger = Object.freeze({\n error: () => { },\n warn: () => { },\n info: () => { },\n log: () => { }\n});\nvar Trace;\n(function (Trace) {\n Trace[Trace[\"Off\"] = 0] = \"Off\";\n Trace[Trace[\"Messages\"] = 1] = \"Messages\";\n Trace[Trace[\"Compact\"] = 2] = \"Compact\";\n Trace[Trace[\"Verbose\"] = 3] = \"Verbose\";\n})(Trace || (exports.Trace = Trace = {}));\nvar TraceValues;\n(function (TraceValues) {\n /**\n * Turn tracing off.\n */\n TraceValues.Off = 'off';\n /**\n * Trace messages only.\n */\n TraceValues.Messages = 'messages';\n /**\n * Compact message tracing.\n */\n TraceValues.Compact = 'compact';\n /**\n * Verbose message tracing.\n */\n TraceValues.Verbose = 'verbose';\n})(TraceValues || (exports.TraceValues = TraceValues = {}));\n(function (Trace) {\n function fromString(value) {\n if (!Is.string(value)) {\n return Trace.Off;\n }\n value = value.toLowerCase();\n switch (value) {\n case 'off':\n return Trace.Off;\n case 'messages':\n return Trace.Messages;\n case 'compact':\n return Trace.Compact;\n case 'verbose':\n return Trace.Verbose;\n default:\n return Trace.Off;\n }\n }\n Trace.fromString = fromString;\n function toString(value) {\n switch (value) {\n case Trace.Off:\n return 'off';\n case Trace.Messages:\n return 'messages';\n case Trace.Compact:\n return 'compact';\n case Trace.Verbose:\n return 'verbose';\n default:\n return 'off';\n }\n }\n Trace.toString = toString;\n})(Trace || (exports.Trace = Trace = {}));\nvar TraceFormat;\n(function (TraceFormat) {\n TraceFormat[\"Text\"] = \"text\";\n TraceFormat[\"JSON\"] = \"json\";\n})(TraceFormat || (exports.TraceFormat = TraceFormat = {}));\n(function (TraceFormat) {\n function fromString(value) {\n if (!Is.string(value)) {\n return TraceFormat.Text;\n }\n value = value.toLowerCase();\n if (value === 'json') {\n return TraceFormat.JSON;\n }\n else {\n return TraceFormat.Text;\n }\n }\n TraceFormat.fromString = fromString;\n})(TraceFormat || (exports.TraceFormat = TraceFormat = {}));\nvar SetTraceNotification;\n(function (SetTraceNotification) {\n SetTraceNotification.type = new messages_1.NotificationType('$/setTrace');\n})(SetTraceNotification || (exports.SetTraceNotification = SetTraceNotification = {}));\nvar LogTraceNotification;\n(function (LogTraceNotification) {\n LogTraceNotification.type = new messages_1.NotificationType('$/logTrace');\n})(LogTraceNotification || (exports.LogTraceNotification = LogTraceNotification = {}));\nvar ConnectionErrors;\n(function (ConnectionErrors) {\n /**\n * The connection is closed.\n */\n ConnectionErrors[ConnectionErrors[\"Closed\"] = 1] = \"Closed\";\n /**\n * The connection got disposed.\n */\n ConnectionErrors[ConnectionErrors[\"Disposed\"] = 2] = \"Disposed\";\n /**\n * The connection is already in listening mode.\n */\n ConnectionErrors[ConnectionErrors[\"AlreadyListening\"] = 3] = \"AlreadyListening\";\n})(ConnectionErrors || (exports.ConnectionErrors = ConnectionErrors = {}));\nclass ConnectionError extends Error {\n constructor(code, message) {\n super(message);\n this.code = code;\n Object.setPrototypeOf(this, ConnectionError.prototype);\n }\n}\nexports.ConnectionError = ConnectionError;\nvar ConnectionStrategy;\n(function (ConnectionStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && Is.func(candidate.cancelUndispatched);\n }\n ConnectionStrategy.is = is;\n})(ConnectionStrategy || (exports.ConnectionStrategy = ConnectionStrategy = {}));\nvar IdCancellationReceiverStrategy;\n(function (IdCancellationReceiverStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && (candidate.kind === undefined || candidate.kind === 'id') && Is.func(candidate.createCancellationTokenSource) && (candidate.dispose === undefined || Is.func(candidate.dispose));\n }\n IdCancellationReceiverStrategy.is = is;\n})(IdCancellationReceiverStrategy || (exports.IdCancellationReceiverStrategy = IdCancellationReceiverStrategy = {}));\nvar RequestCancellationReceiverStrategy;\n(function (RequestCancellationReceiverStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && candidate.kind === 'request' && Is.func(candidate.createCancellationTokenSource) && (candidate.dispose === undefined || Is.func(candidate.dispose));\n }\n RequestCancellationReceiverStrategy.is = is;\n})(RequestCancellationReceiverStrategy || (exports.RequestCancellationReceiverStrategy = RequestCancellationReceiverStrategy = {}));\nvar CancellationReceiverStrategy;\n(function (CancellationReceiverStrategy) {\n CancellationReceiverStrategy.Message = Object.freeze({\n createCancellationTokenSource(_) {\n return new cancellation_1.CancellationTokenSource();\n }\n });\n function is(value) {\n return IdCancellationReceiverStrategy.is(value) || RequestCancellationReceiverStrategy.is(value);\n }\n CancellationReceiverStrategy.is = is;\n})(CancellationReceiverStrategy || (exports.CancellationReceiverStrategy = CancellationReceiverStrategy = {}));\nvar CancellationSenderStrategy;\n(function (CancellationSenderStrategy) {\n CancellationSenderStrategy.Message = Object.freeze({\n sendCancellation(conn, id) {\n return conn.sendNotification(CancelNotification.type, { id });\n },\n cleanup(_) { }\n });\n function is(value) {\n const candidate = value;\n return candidate && Is.func(candidate.sendCancellation) && Is.func(candidate.cleanup);\n }\n CancellationSenderStrategy.is = is;\n})(CancellationSenderStrategy || (exports.CancellationSenderStrategy = CancellationSenderStrategy = {}));\nvar CancellationStrategy;\n(function (CancellationStrategy) {\n CancellationStrategy.Message = Object.freeze({\n receiver: CancellationReceiverStrategy.Message,\n sender: CancellationSenderStrategy.Message\n });\n function is(value) {\n const candidate = value;\n return candidate && CancellationReceiverStrategy.is(candidate.receiver) && CancellationSenderStrategy.is(candidate.sender);\n }\n CancellationStrategy.is = is;\n})(CancellationStrategy || (exports.CancellationStrategy = CancellationStrategy = {}));\nvar MessageStrategy;\n(function (MessageStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && Is.func(candidate.handleMessage);\n }\n MessageStrategy.is = is;\n})(MessageStrategy || (exports.MessageStrategy = MessageStrategy = {}));\nvar ConnectionOptions;\n(function (ConnectionOptions) {\n function is(value) {\n const candidate = value;\n return candidate && (CancellationStrategy.is(candidate.cancellationStrategy) || ConnectionStrategy.is(candidate.connectionStrategy) || MessageStrategy.is(candidate.messageStrategy));\n }\n ConnectionOptions.is = is;\n})(ConnectionOptions || (exports.ConnectionOptions = ConnectionOptions = {}));\nvar ConnectionState;\n(function (ConnectionState) {\n ConnectionState[ConnectionState[\"New\"] = 1] = \"New\";\n ConnectionState[ConnectionState[\"Listening\"] = 2] = \"Listening\";\n ConnectionState[ConnectionState[\"Closed\"] = 3] = \"Closed\";\n ConnectionState[ConnectionState[\"Disposed\"] = 4] = \"Disposed\";\n})(ConnectionState || (ConnectionState = {}));\nfunction createMessageConnection(messageReader, messageWriter, _logger, options) {\n const logger = _logger !== undefined ? _logger : exports.NullLogger;\n let sequenceNumber = 0;\n let notificationSequenceNumber = 0;\n let unknownResponseSequenceNumber = 0;\n const version = '2.0';\n let starRequestHandler = undefined;\n const requestHandlers = new Map();\n let starNotificationHandler = undefined;\n const notificationHandlers = new Map();\n const progressHandlers = new Map();\n let timer;\n let messageQueue = new linkedMap_1.LinkedMap();\n let responsePromises = new Map();\n let knownCanceledRequests = new Set();\n let requestTokens = new Map();\n let trace = Trace.Off;\n let traceFormat = TraceFormat.Text;\n let tracer;\n let state = ConnectionState.New;\n const errorEmitter = new events_1.Emitter();\n const closeEmitter = new events_1.Emitter();\n const unhandledNotificationEmitter = new events_1.Emitter();\n const unhandledProgressEmitter = new events_1.Emitter();\n const disposeEmitter = new events_1.Emitter();\n const cancellationStrategy = (options && options.cancellationStrategy) ? options.cancellationStrategy : CancellationStrategy.Message;\n function createRequestQueueKey(id) {\n if (id === null) {\n throw new Error(`Can't send requests with id null since the response can't be correlated.`);\n }\n return 'req-' + id.toString();\n }\n function createResponseQueueKey(id) {\n if (id === null) {\n return 'res-unknown-' + (++unknownResponseSequenceNumber).toString();\n }\n else {\n return 'res-' + id.toString();\n }\n }\n function createNotificationQueueKey() {\n return 'not-' + (++notificationSequenceNumber).toString();\n }\n function addMessageToQueue(queue, message) {\n if (messages_1.Message.isRequest(message)) {\n queue.set(createRequestQueueKey(message.id), message);\n }\n else if (messages_1.Message.isResponse(message)) {\n queue.set(createResponseQueueKey(message.id), message);\n }\n else {\n queue.set(createNotificationQueueKey(), message);\n }\n }\n function cancelUndispatched(_message) {\n return undefined;\n }\n function isListening() {\n return state === ConnectionState.Listening;\n }\n function isClosed() {\n return state === ConnectionState.Closed;\n }\n function isDisposed() {\n return state === ConnectionState.Disposed;\n }\n function closeHandler() {\n if (state === ConnectionState.New || state === ConnectionState.Listening) {\n state = ConnectionState.Closed;\n closeEmitter.fire(undefined);\n }\n // If the connection is disposed don't sent close events.\n }\n function readErrorHandler(error) {\n errorEmitter.fire([error, undefined, undefined]);\n }\n function writeErrorHandler(data) {\n errorEmitter.fire(data);\n }\n messageReader.onClose(closeHandler);\n messageReader.onError(readErrorHandler);\n messageWriter.onClose(closeHandler);\n messageWriter.onError(writeErrorHandler);\n function triggerMessageQueue() {\n if (timer || messageQueue.size === 0) {\n return;\n }\n timer = (0, ral_1.default)().timer.setImmediate(() => {\n timer = undefined;\n processMessageQueue();\n });\n }\n function handleMessage(message) {\n if (messages_1.Message.isRequest(message)) {\n handleRequest(message);\n }\n else if (messages_1.Message.isNotification(message)) {\n handleNotification(message);\n }\n else if (messages_1.Message.isResponse(message)) {\n handleResponse(message);\n }\n else {\n handleInvalidMessage(message);\n }\n }\n function processMessageQueue() {\n if (messageQueue.size === 0) {\n return;\n }\n const message = messageQueue.shift();\n try {\n const messageStrategy = options?.messageStrategy;\n if (MessageStrategy.is(messageStrategy)) {\n messageStrategy.handleMessage(message, handleMessage);\n }\n else {\n handleMessage(message);\n }\n }\n finally {\n triggerMessageQueue();\n }\n }\n const callback = (message) => {\n try {\n // We have received a cancellation message. Check if the message is still in the queue\n // and cancel it if allowed to do so.\n if (messages_1.Message.isNotification(message) && message.method === CancelNotification.type.method) {\n const cancelId = message.params.id;\n const key = createRequestQueueKey(cancelId);\n const toCancel = messageQueue.get(key);\n if (messages_1.Message.isRequest(toCancel)) {\n const strategy = options?.connectionStrategy;\n const response = (strategy && strategy.cancelUndispatched) ? strategy.cancelUndispatched(toCancel, cancelUndispatched) : cancelUndispatched(toCancel);\n if (response && (response.error !== undefined || response.result !== undefined)) {\n messageQueue.delete(key);\n requestTokens.delete(cancelId);\n response.id = toCancel.id;\n traceSendingResponse(response, message.method, Date.now());\n messageWriter.write(response).catch(() => logger.error(`Sending response for canceled message failed.`));\n return;\n }\n }\n const cancellationToken = requestTokens.get(cancelId);\n // The request is already running. Cancel the token\n if (cancellationToken !== undefined) {\n cancellationToken.cancel();\n traceReceivedNotification(message);\n return;\n }\n else {\n // Remember the cancel but still queue the message to\n // clean up state in process message.\n knownCanceledRequests.add(cancelId);\n }\n }\n addMessageToQueue(messageQueue, message);\n }\n finally {\n triggerMessageQueue();\n }\n };\n function handleRequest(requestMessage) {\n if (isDisposed()) {\n // we return here silently since we fired an event when the\n // connection got disposed.\n return;\n }\n function reply(resultOrError, method, startTime) {\n const message = {\n jsonrpc: version,\n id: requestMessage.id\n };\n if (resultOrError instanceof messages_1.ResponseError) {\n message.error = resultOrError.toJson();\n }\n else {\n message.result = resultOrError === undefined ? null : resultOrError;\n }\n traceSendingResponse(message, method, startTime);\n messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n }\n function replyError(error, method, startTime) {\n const message = {\n jsonrpc: version,\n id: requestMessage.id,\n error: error.toJson()\n };\n traceSendingResponse(message, method, startTime);\n messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n }\n function replySuccess(result, method, startTime) {\n // The JSON RPC defines that a response must either have a result or an error\n // So we can't treat undefined as a valid response result.\n if (result === undefined) {\n result = null;\n }\n const message = {\n jsonrpc: version,\n id: requestMessage.id,\n result: result\n };\n traceSendingResponse(message, method, startTime);\n messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n }\n traceReceivedRequest(requestMessage);\n const element = requestHandlers.get(requestMessage.method);\n let type;\n let requestHandler;\n if (element) {\n type = element.type;\n requestHandler = element.handler;\n }\n const startTime = Date.now();\n if (requestHandler || starRequestHandler) {\n const tokenKey = requestMessage.id ?? String(Date.now()); //\n const cancellationSource = IdCancellationReceiverStrategy.is(cancellationStrategy.receiver)\n ? cancellationStrategy.receiver.createCancellationTokenSource(tokenKey)\n : cancellationStrategy.receiver.createCancellationTokenSource(requestMessage);\n if (requestMessage.id !== null && knownCanceledRequests.has(requestMessage.id)) {\n cancellationSource.cancel();\n }\n if (requestMessage.id !== null) {\n requestTokens.set(tokenKey, cancellationSource);\n }\n try {\n let handlerResult;\n if (requestHandler) {\n if (requestMessage.params === undefined) {\n if (type !== undefined && type.numberOfParams !== 0) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines ${type.numberOfParams} params but received none.`), requestMessage.method, startTime);\n return;\n }\n handlerResult = requestHandler(cancellationSource.token);\n }\n else if (Array.isArray(requestMessage.params)) {\n if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byName) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by name but received parameters by position`), requestMessage.method, startTime);\n return;\n }\n handlerResult = requestHandler(...requestMessage.params, cancellationSource.token);\n }\n else {\n if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byPosition) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by position but received parameters by name`), requestMessage.method, startTime);\n return;\n }\n handlerResult = requestHandler(requestMessage.params, cancellationSource.token);\n }\n }\n else if (starRequestHandler) {\n handlerResult = starRequestHandler(requestMessage.method, requestMessage.params, cancellationSource.token);\n }\n const promise = handlerResult;\n if (!handlerResult) {\n requestTokens.delete(tokenKey);\n replySuccess(handlerResult, requestMessage.method, startTime);\n }\n else if (promise.then) {\n promise.then((resultOrError) => {\n requestTokens.delete(tokenKey);\n reply(resultOrError, requestMessage.method, startTime);\n }, error => {\n requestTokens.delete(tokenKey);\n if (error instanceof messages_1.ResponseError) {\n replyError(error, requestMessage.method, startTime);\n }\n else if (error && Is.string(error.message)) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);\n }\n else {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);\n }\n });\n }\n else {\n requestTokens.delete(tokenKey);\n reply(handlerResult, requestMessage.method, startTime);\n }\n }\n catch (error) {\n requestTokens.delete(tokenKey);\n if (error instanceof messages_1.ResponseError) {\n reply(error, requestMessage.method, startTime);\n }\n else if (error && Is.string(error.message)) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);\n }\n else {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);\n }\n }\n }\n else {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.MethodNotFound, `Unhandled method ${requestMessage.method}`), requestMessage.method, startTime);\n }\n }\n function handleResponse(responseMessage) {\n if (isDisposed()) {\n // See handle request.\n return;\n }\n if (responseMessage.id === null) {\n if (responseMessage.error) {\n logger.error(`Received response message without id: Error is: \\n${JSON.stringify(responseMessage.error, undefined, 4)}`);\n }\n else {\n logger.error(`Received response message without id. No further error information provided.`);\n }\n }\n else {\n const key = responseMessage.id;\n const responsePromise = responsePromises.get(key);\n traceReceivedResponse(responseMessage, responsePromise);\n if (responsePromise !== undefined) {\n responsePromises.delete(key);\n try {\n if (responseMessage.error) {\n const error = responseMessage.error;\n responsePromise.reject(new messages_1.ResponseError(error.code, error.message, error.data));\n }\n else if (responseMessage.result !== undefined) {\n responsePromise.resolve(responseMessage.result);\n }\n else {\n throw new Error('Should never happen.');\n }\n }\n catch (error) {\n if (error.message) {\n logger.error(`Response handler '${responsePromise.method}' failed with message: ${error.message}`);\n }\n else {\n logger.error(`Response handler '${responsePromise.method}' failed unexpectedly.`);\n }\n }\n }\n }\n }\n function handleNotification(message) {\n if (isDisposed()) {\n // See handle request.\n return;\n }\n let type = undefined;\n let notificationHandler;\n if (message.method === CancelNotification.type.method) {\n const cancelId = message.params.id;\n knownCanceledRequests.delete(cancelId);\n traceReceivedNotification(message);\n return;\n }\n else {\n const element = notificationHandlers.get(message.method);\n if (element) {\n notificationHandler = element.handler;\n type = element.type;\n }\n }\n if (notificationHandler || starNotificationHandler) {\n try {\n traceReceivedNotification(message);\n if (notificationHandler) {\n if (message.params === undefined) {\n if (type !== undefined) {\n if (type.numberOfParams !== 0 && type.parameterStructures !== messages_1.ParameterStructures.byName) {\n logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but received none.`);\n }\n }\n notificationHandler();\n }\n else if (Array.isArray(message.params)) {\n // There are JSON-RPC libraries that send progress message as positional params although\n // specified as named. So convert them if this is the case.\n const params = message.params;\n if (message.method === ProgressNotification.type.method && params.length === 2 && ProgressToken.is(params[0])) {\n notificationHandler({ token: params[0], value: params[1] });\n }\n else {\n if (type !== undefined) {\n if (type.parameterStructures === messages_1.ParameterStructures.byName) {\n logger.error(`Notification ${message.method} defines parameters by name but received parameters by position`);\n }\n if (type.numberOfParams !== message.params.length) {\n logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but received ${params.length} arguments`);\n }\n }\n notificationHandler(...params);\n }\n }\n else {\n if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byPosition) {\n logger.error(`Notification ${message.method} defines parameters by position but received parameters by name`);\n }\n notificationHandler(message.params);\n }\n }\n else if (starNotificationHandler) {\n starNotificationHandler(message.method, message.params);\n }\n }\n catch (error) {\n if (error.message) {\n logger.error(`Notification handler '${message.method}' failed with message: ${error.message}`);\n }\n else {\n logger.error(`Notification handler '${message.method}' failed unexpectedly.`);\n }\n }\n }\n else {\n unhandledNotificationEmitter.fire(message);\n }\n }\n function handleInvalidMessage(message) {\n if (!message) {\n logger.error('Received empty message.');\n return;\n }\n logger.error(`Received message which is neither a response nor a notification message:\\n${JSON.stringify(message, null, 4)}`);\n // Test whether we find an id to reject the promise\n const responseMessage = message;\n if (Is.string(responseMessage.id) || Is.number(responseMessage.id)) {\n const key = responseMessage.id;\n const responseHandler = responsePromises.get(key);\n if (responseHandler) {\n responseHandler.reject(new Error('The received response has neither a result nor an error property.'));\n }\n }\n }\n function stringifyTrace(params) {\n if (params === undefined || params === null) {\n return undefined;\n }\n switch (trace) {\n case Trace.Verbose:\n return JSON.stringify(params, null, 4);\n case Trace.Compact:\n return JSON.stringify(params);\n default:\n return undefined;\n }\n }\n function traceSendingRequest(message) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if ((trace === Trace.Verbose || trace === Trace.Compact) && message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n tracer.log(`Sending request '${message.method} - (${message.id})'.`, data);\n }\n else {\n logLSPMessage('send-request', message);\n }\n }\n function traceSendingNotification(message) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n else {\n data = 'No parameters provided.\\n\\n';\n }\n }\n tracer.log(`Sending notification '${message.method}'.`, data);\n }\n else {\n logLSPMessage('send-notification', message);\n }\n }\n function traceSendingResponse(message, method, startTime) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.error && message.error.data) {\n data = `Error data: ${stringifyTrace(message.error.data)}\\n\\n`;\n }\n else {\n if (message.result) {\n data = `Result: ${stringifyTrace(message.result)}\\n\\n`;\n }\n else if (message.error === undefined) {\n data = 'No result returned.\\n\\n';\n }\n }\n }\n tracer.log(`Sending response '${method} - (${message.id})'. Processing request took ${Date.now() - startTime}ms`, data);\n }\n else {\n logLSPMessage('send-response', message);\n }\n }\n function traceReceivedRequest(message) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if ((trace === Trace.Verbose || trace === Trace.Compact) && message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n tracer.log(`Received request '${message.method} - (${message.id})'.`, data);\n }\n else {\n logLSPMessage('receive-request', message);\n }\n }\n function traceReceivedNotification(message) {\n if (trace === Trace.Off || !tracer || message.method === LogTraceNotification.type.method) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n else {\n data = 'No parameters provided.\\n\\n';\n }\n }\n tracer.log(`Received notification '${message.method}'.`, data);\n }\n else {\n logLSPMessage('receive-notification', message);\n }\n }\n function traceReceivedResponse(message, responsePromise) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.error && message.error.data) {\n data = `Error data: ${stringifyTrace(message.error.data)}\\n\\n`;\n }\n else {\n if (message.result) {\n data = `Result: ${stringifyTrace(message.result)}\\n\\n`;\n }\n else if (message.error === undefined) {\n data = 'No result returned.\\n\\n';\n }\n }\n }\n if (responsePromise) {\n const error = message.error ? ` Request failed: ${message.error.message} (${message.error.code}).` : '';\n tracer.log(`Received response '${responsePromise.method} - (${message.id})' in ${Date.now() - responsePromise.timerStart}ms.${error}`, data);\n }\n else {\n tracer.log(`Received response ${message.id} without active response promise.`, data);\n }\n }\n else {\n logLSPMessage('receive-response', message);\n }\n }\n function logLSPMessage(type, message) {\n if (!tracer || trace === Trace.Off) {\n return;\n }\n const lspMessage = {\n isLSPMessage: true,\n type,\n message,\n timestamp: Date.now()\n };\n tracer.log(lspMessage);\n }\n function throwIfClosedOrDisposed() {\n if (isClosed()) {\n throw new ConnectionError(ConnectionErrors.Closed, 'Connection is closed.');\n }\n if (isDisposed()) {\n throw new ConnectionError(ConnectionErrors.Disposed, 'Connection is disposed.');\n }\n }\n function throwIfListening() {\n if (isListening()) {\n throw new ConnectionError(ConnectionErrors.AlreadyListening, 'Connection is already listening');\n }\n }\n function throwIfNotListening() {\n if (!isListening()) {\n throw new Error('Call listen() first.');\n }\n }\n function undefinedToNull(param) {\n if (param === undefined) {\n return null;\n }\n else {\n return param;\n }\n }\n function nullToUndefined(param) {\n if (param === null) {\n return undefined;\n }\n else {\n return param;\n }\n }\n function isNamedParam(param) {\n return param !== undefined && param !== null && !Array.isArray(param) && typeof param === 'object';\n }\n function computeSingleParam(parameterStructures, param) {\n switch (parameterStructures) {\n case messages_1.ParameterStructures.auto:\n if (isNamedParam(param)) {\n return nullToUndefined(param);\n }\n else {\n return [undefinedToNull(param)];\n }\n case messages_1.ParameterStructures.byName:\n if (!isNamedParam(param)) {\n throw new Error(`Received parameters by name but param is not an object literal.`);\n }\n return nullToUndefined(param);\n case messages_1.ParameterStructures.byPosition:\n return [undefinedToNull(param)];\n default:\n throw new Error(`Unknown parameter structure ${parameterStructures.toString()}`);\n }\n }\n function computeMessageParams(type, params) {\n let result;\n const numberOfParams = type.numberOfParams;\n switch (numberOfParams) {\n case 0:\n result = undefined;\n break;\n case 1:\n result = computeSingleParam(type.parameterStructures, params[0]);\n break;\n default:\n result = [];\n for (let i = 0; i < params.length && i < numberOfParams; i++) {\n result.push(undefinedToNull(params[i]));\n }\n if (params.length < numberOfParams) {\n for (let i = params.length; i < numberOfParams; i++) {\n result.push(null);\n }\n }\n break;\n }\n return result;\n }\n const connection = {\n sendNotification: (type, ...args) => {\n throwIfClosedOrDisposed();\n let method;\n let messageParams;\n if (Is.string(type)) {\n method = type;\n const first = args[0];\n let paramStart = 0;\n let parameterStructures = messages_1.ParameterStructures.auto;\n if (messages_1.ParameterStructures.is(first)) {\n paramStart = 1;\n parameterStructures = first;\n }\n let paramEnd = args.length;\n const numberOfParams = paramEnd - paramStart;\n switch (numberOfParams) {\n case 0:\n messageParams = undefined;\n break;\n case 1:\n messageParams = computeSingleParam(parameterStructures, args[paramStart]);\n break;\n default:\n if (parameterStructures === messages_1.ParameterStructures.byName) {\n throw new Error(`Received ${numberOfParams} parameters for 'by Name' notification parameter structure.`);\n }\n messageParams = args.slice(paramStart, paramEnd).map(value => undefinedToNull(value));\n break;\n }\n }\n else {\n const params = args;\n method = type.method;\n messageParams = computeMessageParams(type, params);\n }\n const notificationMessage = {\n jsonrpc: version,\n method: method,\n params: messageParams\n };\n traceSendingNotification(notificationMessage);\n return messageWriter.write(notificationMessage).catch((error) => {\n logger.error(`Sending notification failed.`);\n throw error;\n });\n },\n onNotification: (type, handler) => {\n throwIfClosedOrDisposed();\n let method;\n if (Is.func(type)) {\n starNotificationHandler = type;\n }\n else if (handler) {\n if (Is.string(type)) {\n method = type;\n notificationHandlers.set(type, { type: undefined, handler });\n }\n else {\n method = type.method;\n notificationHandlers.set(type.method, { type, handler });\n }\n }\n return {\n dispose: () => {\n if (method !== undefined) {\n notificationHandlers.delete(method);\n }\n else {\n starNotificationHandler = undefined;\n }\n }\n };\n },\n onProgress: (_type, token, handler) => {\n if (progressHandlers.has(token)) {\n throw new Error(`Progress handler for token ${token} already registered`);\n }\n progressHandlers.set(token, handler);\n return {\n dispose: () => {\n progressHandlers.delete(token);\n }\n };\n },\n sendProgress: (_type, token, value) => {\n // This should not await but simple return to ensure that we don't have another\n // async scheduling. Otherwise one send could overtake another send.\n return connection.sendNotification(ProgressNotification.type, { token, value });\n },\n onUnhandledProgress: unhandledProgressEmitter.event,\n sendRequest: (type, ...args) => {\n throwIfClosedOrDisposed();\n throwIfNotListening();\n let method;\n let messageParams;\n let token = undefined;\n if (Is.string(type)) {\n method = type;\n const first = args[0];\n const last = args[args.length - 1];\n let paramStart = 0;\n let parameterStructures = messages_1.ParameterStructures.auto;\n if (messages_1.ParameterStructures.is(first)) {\n paramStart = 1;\n parameterStructures = first;\n }\n let paramEnd = args.length;\n if (cancellation_1.CancellationToken.is(last)) {\n paramEnd = paramEnd - 1;\n token = last;\n }\n const numberOfParams = paramEnd - paramStart;\n switch (numberOfParams) {\n case 0:\n messageParams = undefined;\n break;\n case 1:\n messageParams = computeSingleParam(parameterStructures, args[paramStart]);\n break;\n default:\n if (parameterStructures === messages_1.ParameterStructures.byName) {\n throw new Error(`Received ${numberOfParams} parameters for 'by Name' request parameter structure.`);\n }\n messageParams = args.slice(paramStart, paramEnd).map(value => undefinedToNull(value));\n break;\n }\n }\n else {\n const params = args;\n method = type.method;\n messageParams = computeMessageParams(type, params);\n const numberOfParams = type.numberOfParams;\n token = cancellation_1.CancellationToken.is(params[numberOfParams]) ? params[numberOfParams] : undefined;\n }\n const id = sequenceNumber++;\n let disposable;\n if (token) {\n disposable = token.onCancellationRequested(() => {\n const p = cancellationStrategy.sender.sendCancellation(connection, id);\n if (p === undefined) {\n logger.log(`Received no promise from cancellation strategy when cancelling id ${id}`);\n return Promise.resolve();\n }\n else {\n return p.catch(() => {\n logger.log(`Sending cancellation messages for id ${id} failed`);\n });\n }\n });\n }\n const requestMessage = {\n jsonrpc: version,\n id: id,\n method: method,\n params: messageParams\n };\n traceSendingRequest(requestMessage);\n if (typeof cancellationStrategy.sender.enableCancellation === 'function') {\n cancellationStrategy.sender.enableCancellation(requestMessage);\n }\n return new Promise(async (resolve, reject) => {\n const resolveWithCleanup = (r) => {\n resolve(r);\n cancellationStrategy.sender.cleanup(id);\n disposable?.dispose();\n };\n const rejectWithCleanup = (r) => {\n reject(r);\n cancellationStrategy.sender.cleanup(id);\n disposable?.dispose();\n };\n const responsePromise = { method: method, timerStart: Date.now(), resolve: resolveWithCleanup, reject: rejectWithCleanup };\n try {\n responsePromises.set(id, responsePromise);\n await messageWriter.write(requestMessage);\n }\n catch (error) {\n // Writing the message failed. So we need to delete it from the response promises and\n // reject it.\n responsePromises.delete(id);\n responsePromise.reject(new messages_1.ResponseError(messages_1.ErrorCodes.MessageWriteError, error.message ? error.message : 'Unknown reason'));\n logger.error(`Sending request failed.`);\n throw error;\n }\n });\n },\n onRequest: (type, handler) => {\n throwIfClosedOrDisposed();\n let method = null;\n if (StarRequestHandler.is(type)) {\n method = undefined;\n starRequestHandler = type;\n }\n else if (Is.string(type)) {\n method = null;\n if (handler !== undefined) {\n method = type;\n requestHandlers.set(type, { handler: handler, type: undefined });\n }\n }\n else {\n if (handler !== undefined) {\n method = type.method;\n requestHandlers.set(type.method, { type, handler });\n }\n }\n return {\n dispose: () => {\n if (method === null) {\n return;\n }\n if (method !== undefined) {\n requestHandlers.delete(method);\n }\n else {\n starRequestHandler = undefined;\n }\n }\n };\n },\n hasPendingResponse: () => {\n return responsePromises.size > 0;\n },\n trace: async (_value, _tracer, sendNotificationOrTraceOptions) => {\n let _sendNotification = false;\n let _traceFormat = TraceFormat.Text;\n if (sendNotificationOrTraceOptions !== undefined) {\n if (Is.boolean(sendNotificationOrTraceOptions)) {\n _sendNotification = sendNotificationOrTraceOptions;\n }\n else {\n _sendNotification = sendNotificationOrTraceOptions.sendNotification || false;\n _traceFormat = sendNotificationOrTraceOptions.traceFormat || TraceFormat.Text;\n }\n }\n trace = _value;\n traceFormat = _traceFormat;\n if (trace === Trace.Off) {\n tracer = undefined;\n }\n else {\n tracer = _tracer;\n }\n if (_sendNotification && !isClosed() && !isDisposed()) {\n await connection.sendNotification(SetTraceNotification.type, { value: Trace.toString(_value) });\n }\n },\n onError: errorEmitter.event,\n onClose: closeEmitter.event,\n onUnhandledNotification: unhandledNotificationEmitter.event,\n onDispose: disposeEmitter.event,\n end: () => {\n messageWriter.end();\n },\n dispose: () => {\n if (isDisposed()) {\n return;\n }\n state = ConnectionState.Disposed;\n disposeEmitter.fire(undefined);\n const error = new messages_1.ResponseError(messages_1.ErrorCodes.PendingResponseRejected, 'Pending response rejected since connection got disposed');\n for (const promise of responsePromises.values()) {\n promise.reject(error);\n }\n responsePromises = new Map();\n requestTokens = new Map();\n knownCanceledRequests = new Set();\n messageQueue = new linkedMap_1.LinkedMap();\n // Test for backwards compatibility\n if (Is.func(messageWriter.dispose)) {\n messageWriter.dispose();\n }\n if (Is.func(messageReader.dispose)) {\n messageReader.dispose();\n }\n },\n listen: () => {\n throwIfClosedOrDisposed();\n throwIfListening();\n state = ConnectionState.Listening;\n messageReader.listen(callback);\n },\n inspect: () => {\n // eslint-disable-next-line no-console\n (0, ral_1.default)().console.log('inspect');\n }\n };\n connection.onNotification(LogTraceNotification.type, (params) => {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n const verbose = trace === Trace.Verbose || trace === Trace.Compact;\n tracer.log(params.message, verbose ? params.verbose : undefined);\n });\n connection.onNotification(ProgressNotification.type, (params) => {\n const handler = progressHandlers.get(params.token);\n if (handler) {\n handler(params.value);\n }\n else {\n unhandledProgressEmitter.fire(params);\n }\n });\n return connection;\n}\nexports.createMessageConnection = createMessageConnection;\n","\"use strict\";\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 * ------------------------------------------------------------------------------------------ */\n/// <reference path=\"../../typings/thenable.d.ts\" />\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProgressType = exports.ProgressToken = exports.createMessageConnection = exports.NullLogger = exports.ConnectionOptions = exports.ConnectionStrategy = exports.AbstractMessageBuffer = exports.WriteableStreamMessageWriter = exports.AbstractMessageWriter = exports.MessageWriter = exports.ReadableStreamMessageReader = exports.AbstractMessageReader = exports.MessageReader = exports.SharedArrayReceiverStrategy = exports.SharedArraySenderStrategy = exports.CancellationToken = exports.CancellationTokenSource = exports.Emitter = exports.Event = exports.Disposable = exports.LRUCache = exports.Touch = exports.LinkedMap = exports.ParameterStructures = exports.NotificationType9 = exports.NotificationType8 = exports.NotificationType7 = exports.NotificationType6 = exports.NotificationType5 = exports.NotificationType4 = exports.NotificationType3 = exports.NotificationType2 = exports.NotificationType1 = exports.NotificationType0 = exports.NotificationType = exports.ErrorCodes = exports.ResponseError = exports.RequestType9 = exports.RequestType8 = exports.RequestType7 = exports.RequestType6 = exports.RequestType5 = exports.RequestType4 = exports.RequestType3 = exports.RequestType2 = exports.RequestType1 = exports.RequestType0 = exports.RequestType = exports.Message = exports.RAL = void 0;\nexports.MessageStrategy = exports.CancellationStrategy = exports.CancellationSenderStrategy = exports.CancellationReceiverStrategy = exports.ConnectionError = exports.ConnectionErrors = exports.LogTraceNotification = exports.SetTraceNotification = exports.TraceFormat = exports.TraceValues = exports.Trace = void 0;\nconst messages_1 = require(\"./messages\");\nObject.defineProperty(exports, \"Message\", { enumerable: true, get: function () { return messages_1.Message; } });\nObject.defineProperty(exports, \"RequestType\", { enumerable: true, get: function () { return messages_1.RequestType; } });\nObject.defineProperty(exports, \"RequestType0\", { enumerable: true, get: function () { return messages_1.RequestType0; } });\nObject.defineProperty(exports, \"RequestType1\", { enumerable: true, get: function () { return messages_1.RequestType1; } });\nObject.defineProperty(exports, \"RequestType2\", { enumerable: true, get: function () { return messages_1.RequestType2; } });\nObject.defineProperty(exports, \"RequestType3\", { enumerable: true, get: function () { return messages_1.RequestType3; } });\nObject.defineProperty(exports, \"RequestType4\", { enumerable: true, get: function () { return messages_1.RequestType4; } });\nObject.defineProperty(exports, \"RequestType5\", { enumerable: true, get: function () { return messages_1.RequestType5; } });\nObject.defineProperty(exports, \"RequestType6\", { enumerable: true, get: function () { return messages_1.RequestType6; } });\nObject.defineProperty(exports, \"RequestType7\", { enumerable: true, get: function () { return messages_1.RequestType7; } });\nObject.defineProperty(exports, \"RequestType8\", { enumerable: true, get: function () { return messages_1.RequestType8; } });\nObject.defineProperty(exports, \"RequestType9\", { enumerable: true, get: function () { return messages_1.RequestType9; } });\nObject.defineProperty(exports, \"ResponseError\", { enumerable: true, get: function () { return messages_1.ResponseError; } });\nObject.defineProperty(exports, \"ErrorCodes\", { enumerable: true, get: function () { return messages_1.ErrorCodes; } });\nObject.defineProperty(exports, \"NotificationType\", { enumerable: true, get: function () { return messages_1.NotificationType; } });\nObject.defineProperty(exports, \"NotificationType0\", { enumerable: true, get: function () { return messages_1.NotificationType0; } });\nObject.defineProperty(exports, \"NotificationType1\", { enumerable: true, get: function () { return messages_1.NotificationType1; } });\nObject.defineProperty(exports, \"NotificationType2\", { enumerable: true, get: function () { return messages_1.NotificationType2; } });\nObject.defineProperty(exports, \"NotificationType3\", { enumerable: true, get: function () { return messages_1.NotificationType3; } });\nObject.defineProperty(exports, \"NotificationType4\", { enumerable: true, get: function () { return messages_1.NotificationType4; } });\nObject.defineProperty(exports, \"NotificationType5\", { enumerable: true, get: function () { return messages_1.NotificationType5; } });\nObject.defineProperty(exports, \"NotificationType6\", { enumerable: true, get: function () { return messages_1.NotificationType6; } });\nObject.defineProperty(exports, \"NotificationType7\", { enumerable: true, get: function () { return messages_1.NotificationType7; } });\nObject.defineProperty(exports, \"NotificationType8\", { enumerable: true, get: function () { return messages_1.NotificationType8; } });\nObject.defineProperty(exports, \"NotificationType9\", { enumerable: true, get: function () { return messages_1.NotificationType9; } });\nObject.defineProperty(exports, \"ParameterStructures\", { enumerable: true, get: function () { return messages_1.ParameterStructures; } });\nconst linkedMap_1 = require(\"./linkedMap\");\nObject.defineProperty(exports, \"LinkedMap\", { enumerable: true, get: function () { return linkedMap_1.LinkedMap; } });\nObject.defineProperty(exports, \"LRUCache\", { enumerable: true, get: function () { return linkedMap_1.LRUCache; } });\nObject.defineProperty(exports, \"Touch\", { enumerable: true, get: function () { return linkedMap_1.Touch; } });\nconst disposable_1 = require(\"./disposable\");\nObject.defineProperty(exports, \"Disposable\", { enumerable: true, get: function () { return disposable_1.Disposable; } });\nconst events_1 = require(\"./events\");\nObject.defineProperty(exports, \"Event\", { enumerable: true, get: function () { return events_1.Event; } });\nObject.defineProperty(exports, \"Emitter\", { enumerable: true, get: function () { return events_1.Emitter; } });\nconst cancellation_1 = require(\"./cancellation\");\nObject.defineProperty(exports, \"CancellationTokenSource\", { enumerable: true, get: function () { return cancellation_1.CancellationTokenSource; } });\nObject.defineProperty(exports, \"CancellationToken\", { enumerable: true, get: function () { return cancellation_1.CancellationToken; } });\nconst sharedArrayCancellation_1 = require(\"./sharedArrayCancellation\");\nObject.defineProperty(exports, \"SharedArraySenderStrategy\", { enumerable: true, get: function () { return sharedArrayCancellation_1.SharedArraySenderStrategy; } });\nObject.defineProperty(exports, \"SharedArrayReceiverStrategy\", { enumerable: true, get: function () { return sharedArrayCancellation_1.SharedArrayReceiverStrategy; } });\nconst messageReader_1 = require(\"./messageReader\");\nObject.defineProperty(exports, \"MessageReader\", { enumerable: true, get: function () { return messageReader_1.MessageReader; } });\nObject.defineProperty(exports, \"AbstractMessageReader\", { enumerable: true, get: function () { return messageReader_1.AbstractMessageReader; } });\nObject.defineProperty(exports, \"ReadableStreamMessageReader\", { enumerable: true, get: function () { return messageReader_1.ReadableStreamMessageReader; } });\nconst messageWriter_1 = require(\"./messageWriter\");\nObject.defineProperty(exports, \"MessageWriter\", { enumerable: true, get: function () { return messageWriter_1.MessageWriter; } });\nObject.defineProperty(exports, \"AbstractMessageWriter\", { enumerable: true, get: function () { return messageWriter_1.AbstractMessageWriter; } });\nObject.defineProperty(exports, \"WriteableStreamMessageWriter\", { enumerable: true, get: function () { return messageWriter_1.WriteableStreamMessageWriter; } });\nconst messageBuffer_1 = require(\"./messageBuffer\");\nObject.defineProperty(exports, \"AbstractMessageBuffer\", { enumerable: true, get: function () { return messageBuffer_1.AbstractMessageBuffer; } });\nconst connection_1 = require(\"./connection\");\nObject.defineProperty(exports, \"ConnectionStrategy\", { enumerable: true, get: function () { return connection_1.ConnectionStrategy; } });\nObject.defineProperty(exports, \"ConnectionOptions\", { enumerable: true, get: function () { return connection_1.ConnectionOptions; } });\nObject.defineProperty(exports, \"NullLogger\", { enumerable: true, get: function () { return connection_1.NullLogger; } });\nObject.defineProperty(exports, \"createMessageConnection\", { enumerable: true, get: function () { return connection_1.createMessageConnection; } });\nObject.defineProperty(exports, \"ProgressToken\", { enumerable: true, get: function () { return connection_1.ProgressToken; } });\nObject.defineProperty(exports, \"ProgressType\", { enumerable: true, get: function () { return connection_1.ProgressType; } });\nObject.defineProperty(exports, \"Trace\", { enumerable: true, get: function () { return connection_1.Trace; } });\nObject.defineProperty(exports, \"TraceValues\", { enumerable: true, get: function () { return connection_1.TraceValues; } });\nObject.defineProperty(exports, \"TraceFormat\", { enumerable: true, get: function () { return connection_1.TraceFormat; } });\nObject.defineProperty(exports, \"SetTraceNotification\", { enumerable: true, get: function () { return connection_1.SetTraceNotification; } });\nObject.defineProperty(exports, \"LogTraceNotification\", { enumerable: true, get: function () { return connection_1.LogTraceNotification; } });\nObject.defineProperty(exports, \"ConnectionErrors\", { enumerable: true, get: function () { return connection_1.ConnectionErrors; } });\nObject.defineProperty(exports, \"ConnectionError\", { enumerable: true, get: function () { return connection_1.ConnectionError; } });\nObject.defineProperty(exports, \"CancellationReceiverStrategy\", { enumerable: true, get: function () { return connection_1.CancellationReceiverStrategy; } });\nObject.defineProperty(exports, \"CancellationSenderStrategy\", { enumerable: true, get: function () { return connection_1.CancellationSenderStrategy; } });\nObject.defineProperty(exports, \"CancellationStrategy\", { enumerable: true, get: function () { return connection_1.CancellationStrategy; } });\nObject.defineProperty(exports, \"MessageStrategy\", { enumerable: true, get: function () { return connection_1.MessageStrategy; } });\nconst ral_1 = require(\"./ral\");\nexports.RAL = ral_1.default;\n","\"use strict\";\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 * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"util\");\nconst api_1 = require(\"../common/api\");\nclass MessageBuffer extends api_1.AbstractMessageBuffer {\n constructor(encoding = 'utf-8') {\n super(encoding);\n }\n emptyBuffer() {\n return MessageBuffer.emptyBuffer;\n }\n fromString(value, encoding) {\n return Buffer.from(value, encoding);\n }\n toString(value, encoding) {\n if (value instanceof Buffer) {\n return value.toString(encoding);\n }\n else {\n return new util_1.TextDecoder(encoding).decode(value);\n }\n }\n asNative(buffer, length) {\n if (length === undefined) {\n return buffer instanceof Buffer ? buffer : Buffer.from(buffer);\n }\n else {\n return buffer instanceof Buffer ? buffer.slice(0, length) : Buffer.from(buffer, 0, length);\n }\n }\n allocNative(length) {\n return Buffer.allocUnsafe(length);\n }\n}\nMessageBuffer.emptyBuffer = Buffer.allocUnsafe(0);\nclass ReadableStreamWrapper {\n constructor(stream) {\n this.stream = stream;\n }\n onClose(listener) {\n this.stream.on('close', listener);\n return api_1.Disposable.create(() => this.stream.off('close', listener));\n }\n onError(listener) {\n this.stream.on('error', listener);\n return api_1.Disposable.create(() => this.stream.off('error', listener));\n }\n onEnd(listener) {\n this.stream.on('end', listener);\n return api_1.Disposable.create(() => this.stream.off('end', listener));\n }\n onData(listener) {\n this.stream.on('data', listener);\n return api_1.Disposable.create(() => this.stream.off('data', listener));\n }\n}\nclass WritableStreamWrapper {\n constructor(stream) {\n this.stream = stream;\n }\n onClose(listener) {\n this.stream.on('close', listener);\n return api_1.Disposable.create(() => this.stream.off('close', listener));\n }\n onError(listener) {\n this.stream.on('error', listener);\n return api_1.Disposable.create(() => this.stream.off('error', listener));\n }\n onEnd(listener) {\n this.stream.on('end', listener);\n return api_1.Disposable.create(() => this.stream.off('end', listener));\n }\n write(data, encoding) {\n return new Promise((resolve, reject) => {\n const callback = (error) => {\n if (error === undefined || error === null) {\n resolve();\n }\n else {\n reject(error);\n }\n };\n if (typeof data === 'string') {\n this.stream.write(data, encoding, callback);\n }\n else {\n this.stream.write(data, callback);\n }\n });\n }\n end() {\n this.stream.end();\n }\n}\nconst _ril = Object.freeze({\n messageBuffer: Object.freeze({\n create: (encoding) => new MessageBuffer(encoding)\n }),\n applicationJson: Object.freeze({\n encoder: Object.freeze({\n name: 'application/json',\n encode: (msg, options) => {\n try {\n return Promise.resolve(Buffer.from(JSON.stringify(msg, undefined, 0), options.charset));\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n }),\n decoder: Object.freeze({\n name: 'application/json',\n decode: (buffer, options) => {\n try {\n if (buffer instanceof Buffer) {\n return Promise.resolve(JSON.parse(buffer.toString(options.charset)));\n }\n else {\n return Promise.resolve(JSON.parse(new util_1.TextDecoder(options.charset).decode(buffer)));\n }\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n })\n }),\n stream: Object.freeze({\n asReadableStream: (stream) => new ReadableStreamWrapper(stream),\n asWritableStream: (stream) => new WritableStreamWrapper(stream)\n }),\n console: console,\n timer: Object.freeze({\n setTimeout(callback, ms, ...args) {\n const handle = setTimeout(callback, ms, ...args);\n return { dispose: () => clearTimeout(handle) };\n },\n setImmediate(callback, ...args) {\n const handle = setImmediate(callback, ...args);\n return { dispose: () => clearImmediate(handle) };\n },\n setInterval(callback, ms, ...args) {\n const handle = setInterval(callback, ms, ...args);\n return { dispose: () => clearInterval(handle) };\n }\n })\n});\nfunction RIL() {\n return _ril;\n}\n(function (RIL) {\n function install() {\n api_1.RAL.install(_ril);\n }\n RIL.install = install;\n})(RIL || (RIL = {}));\nexports.default = RIL;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createMessageConnection = exports.createServerSocketTransport = exports.createClientSocketTransport = exports.createServerPipeTransport = exports.createClientPipeTransport = exports.generateRandomPipeName = exports.StreamMessageWriter = exports.StreamMessageReader = exports.SocketMessageWriter = exports.SocketMessageReader = exports.PortMessageWriter = exports.PortMessageReader = exports.IPCMessageWriter = exports.IPCMessageReader = void 0;\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 * ----------------------------------------------------------------------------------------- */\nconst ril_1 = require(\"./ril\");\n// Install the node runtime abstract.\nril_1.default.install();\nconst path = require(\"path\");\nconst os = require(\"os\");\nconst crypto_1 = require(\"crypto\");\nconst net_1 = require(\"net\");\nconst api_1 = require(\"../common/api\");\n__exportStar(require(\"../common/api\"), exports);\nclass IPCMessageReader extends api_1.AbstractMessageReader {\n constructor(process) {\n super();\n this.process = process;\n let eventEmitter = this.process;\n eventEmitter.on('error', (error) => this.fireError(error));\n eventEmitter.on('close', () => this.fireClose());\n }\n listen(callback) {\n this.process.on('message', callback);\n return api_1.Disposable.create(() => this.process.off('message', callback));\n }\n}\nexports.IPCMessageReader = IPCMessageReader;\nclass IPCMessageWriter extends api_1.AbstractMessageWriter {\n constructor(process) {\n super();\n this.process = process;\n this.errorCount = 0;\n const eventEmitter = this.process;\n eventEmitter.on('error', (error) => this.fireError(error));\n eventEmitter.on('close', () => this.fireClose);\n }\n write(msg) {\n try {\n if (typeof this.process.send === 'function') {\n this.process.send(msg, undefined, undefined, (error) => {\n if (error) {\n this.errorCount++;\n this.handleError(error, msg);\n }\n else {\n this.errorCount = 0;\n }\n });\n }\n return Promise.resolve();\n }\n catch (error) {\n this.handleError(error, msg);\n return Promise.reject(error);\n }\n }\n handleError(error, msg) {\n this.errorCount++;\n this.fireError(error, msg, this.errorCount);\n }\n end() {\n }\n}\nexports.IPCMessageWriter = IPCMessageWriter;\nclass PortMessageReader extends api_1.AbstractMessageReader {\n constructor(port) {\n super();\n this.onData = new api_1.Emitter;\n port.on('close', () => this.fireClose);\n port.on('error', (error) => this.fireError(error));\n port.on('message', (message) => {\n this.onData.fire(message);\n });\n }\n listen(callback) {\n return this.onData.event(callback);\n }\n}\nexports.PortMessageReader = PortMessageReader;\nclass PortMessageWriter extends api_1.AbstractMessageWriter {\n constructor(port) {\n super();\n this.port = port;\n this.errorCount = 0;\n port.on('close', () => this.fireClose());\n port.on('error', (error) => this.fireError(error));\n }\n write(msg) {\n try {\n this.port.postMessage(msg);\n return Promise.resolve();\n }\n catch (error) {\n this.handleError(error, msg);\n return Promise.reject(error);\n }\n }\n handleError(error, msg) {\n this.errorCount++;\n this.fireError(error, msg, this.errorCount);\n }\n end() {\n }\n}\nexports.PortMessageWriter = PortMessageWriter;\nclass SocketMessageReader extends api_1.ReadableStreamMessageReader {\n constructor(socket, encoding = 'utf-8') {\n super((0, ril_1.default)().stream.asReadableStream(socket), encoding);\n }\n}\nexports.SocketMessageReader = SocketMessageReader;\nclass SocketMessageWriter extends api_1.WriteableStreamMessageWriter {\n constructor(socket, options) {\n super((0, ril_1.default)().stream.asWritableStream(socket), options);\n this.socket = socket;\n }\n dispose() {\n super.dispose();\n this.socket.destroy();\n }\n}\nexports.SocketMessageWriter = SocketMessageWriter;\nclass StreamMessageReader extends api_1.ReadableStreamMessageReader {\n constructor(readable, encoding) {\n super((0, ril_1.default)().stream.asReadableStream(readable), encoding);\n }\n}\nexports.StreamMessageReader = StreamMessageReader;\nclass StreamMessageWriter extends api_1.WriteableStreamMessageWriter {\n constructor(writable, options) {\n super((0, ril_1.default)().stream.asWritableStream(writable), options);\n }\n}\nexports.StreamMessageWriter = StreamMessageWriter;\nconst XDG_RUNTIME_DIR = process.env['XDG_RUNTIME_DIR'];\nconst safeIpcPathLengths = new Map([\n ['linux', 107],\n ['darwin', 103]\n]);\nfunction generateRandomPipeName() {\n const randomSuffix = (0, crypto_1.randomBytes)(21).toString('hex');\n if (process.platform === 'win32') {\n return `\\\\\\\\.\\\\pipe\\\\vscode-jsonrpc-${randomSuffix}-sock`;\n }\n let result;\n if (XDG_RUNTIME_DIR) {\n result = path.join(XDG_RUNTIME_DIR, `vscode-ipc-${randomSuffix}.sock`);\n }\n else {\n result = path.join(os.tmpdir(), `vscode-${randomSuffix}.sock`);\n }\n const limit = safeIpcPathLengths.get(process.platform);\n if (limit !== undefined && result.length > limit) {\n (0, ril_1.default)().console.warn(`WARNING: IPC handle \"${result}\" is longer than ${limit} characters.`);\n }\n return result;\n}\nexports.generateRandomPipeName = generateRandomPipeName;\nfunction createClientPipeTransport(pipeName, encoding = 'utf-8') {\n let connectResolve;\n const connected = new Promise((resolve, _reject) => {\n connectResolve = resolve;\n });\n return new Promise((resolve, reject) => {\n let server = (0, net_1.createServer)((socket) => {\n server.close();\n connectResolve([\n new SocketMessageReader(socket, encoding),\n new SocketMessageWriter(socket, encoding)\n ]);\n });\n server.on('error', reject);\n server.listen(pipeName, () => {\n server.removeListener('error', reject);\n resolve({\n onConnected: () => { return connected; }\n });\n });\n });\n}\nexports.createClientPipeTransport = createClientPipeTransport;\nfunction createServerPipeTransport(pipeName, encoding = 'utf-8') {\n const socket = (0, net_1.createConnection)(pipeName);\n return [\n new SocketMessageReader(socket, encoding),\n new SocketMessageWriter(socket, encoding)\n ];\n}\nexports.createServerPipeTransport = createServerPipeTransport;\nfunction createClientSocketTransport(port, encoding = 'utf-8') {\n let connectResolve;\n const connected = new Promise((resolve, _reject) => {\n connectResolve = resolve;\n });\n return new Promise((resolve, reject) => {\n const server = (0, net_1.createServer)((socket) => {\n server.close();\n connectResolve([\n new SocketMessageReader(socket, encoding),\n new SocketMessageWriter(socket, encoding)\n ]);\n });\n server.on('error', reject);\n server.listen(port, '127.0.0.1', () => {\n server.removeListener('error', reject);\n resolve({\n onConnected: () => { return connected; }\n });\n });\n });\n}\nexports.createClientSocketTransport = createClientSocketTransport;\nfunction createServerSocketTransport(port, encoding = 'utf-8') {\n const socket = (0, net_1.createConnection)(port, '127.0.0.1');\n return [\n new SocketMessageReader(socket, encoding),\n new SocketMessageWriter(socket, encoding)\n ];\n}\nexports.createServerSocketTransport = createServerSocketTransport;\nfunction isReadableStream(value) {\n const candidate = value;\n return candidate.read !== undefined && candidate.addListener !== undefined;\n}\nfunction isWritableStream(value) {\n const candidate = value;\n return candidate.write !== undefined && candidate.addListener !== undefined;\n}\nfunction createMessageConnection(input, output, logger, options) {\n if (!logger) {\n logger = api_1.NullLogger;\n }\n const reader = isReadableStream(input) ? new StreamMessageReader(input) : input;\n const writer = isWritableStream(output) ? new StreamMessageWriter(output) : output;\n if (api_1.ConnectionStrategy.is(options)) {\n options = { connectionStrategy: options };\n }\n return (0, api_1.createMessageConnection)(reader, writer, logger, options);\n}\nexports.createMessageConnection = createMessageConnection;\n","'use strict';\n\nconst path = require('path');\nconst WIN_SLASH = '\\\\\\\\/';\nconst WIN_NO_SLASH = `[^${WIN_SLASH}]`;\n\nconst DEFAULT_MAX_EXTGLOB_RECURSION = 0;\n\n/**\n * Posix glob regex\n */\n\nconst DOT_LITERAL = '\\\\.';\nconst PLUS_LITERAL = '\\\\+';\nconst QMARK_LITERAL = '\\\\?';\nconst SLASH_LITERAL = '\\\\/';\nconst ONE_CHAR = '(?=.)';\nconst QMARK = '[^/]';\nconst END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;\nconst START_ANCHOR = `(?:^|${SLASH_LITERAL})`;\nconst DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;\nconst NO_DOT = `(?!${DOT_LITERAL})`;\nconst NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;\nconst NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;\nconst NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;\nconst QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;\nconst STAR = `${QMARK}*?`;\n\nconst POSIX_CHARS = {\n DOT_LITERAL,\n PLUS_LITERAL,\n QMARK_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n QMARK,\n END_ANCHOR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n};\n\n/**\n * Windows glob regex\n */\n\nconst WINDOWS_CHARS = {\n ...POSIX_CHARS,\n\n SLASH_LITERAL: `[${WIN_SLASH}]`,\n QMARK: WIN_NO_SLASH,\n STAR: `${WIN_NO_SLASH}*?`,\n DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,\n NO_DOT: `(?!${DOT_LITERAL})`,\n NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,\n NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n QMARK_NO_DOT: `[^.${WIN_SLASH}]`,\n START_ANCHOR: `(?:^|[${WIN_SLASH}])`,\n END_ANCHOR: `(?:[${WIN_SLASH}]|$)`\n};\n\n/**\n * POSIX Bracket Regex\n */\n\nconst POSIX_REGEX_SOURCE = {\n __proto__: null,\n alnum: 'a-zA-Z0-9',\n alpha: 'a-zA-Z',\n ascii: '\\\\x00-\\\\x7F',\n blank: ' \\\\t',\n cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n digit: '0-9',\n graph: '\\\\x21-\\\\x7E',\n lower: 'a-z',\n print: '\\\\x20-\\\\x7E ',\n punct: '\\\\-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n upper: 'A-Z',\n word: 'A-Za-z0-9_',\n xdigit: 'A-Fa-f0-9'\n};\n\nmodule.exports = {\n DEFAULT_MAX_EXTGLOB_RECURSION,\n MAX_LENGTH: 1024 * 64,\n POSIX_REGEX_SOURCE,\n\n // regular expressions\n REGEX_BACKSLASH: /\\\\(?![*+?^${}(|)[\\]])/g,\n REGEX_NON_SPECIAL_CHARS: /^[^@![\\].,$*+?^{}()|\\\\/]+/,\n REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\\]]/,\n REGEX_SPECIAL_CHARS_BACKREF: /(\\\\?)((\\W)(\\3*))/g,\n REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\\]])/g,\n REGEX_REMOVE_BACKSLASH: /(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,\n\n // Replace globs with equivalent patterns to reduce parsing time.\n REPLACEMENTS: {\n __proto__: null,\n '***': '*',\n '**/**': '**',\n '**/**/**': '**'\n },\n\n // Digits\n CHAR_0: 48, /* 0 */\n CHAR_9: 57, /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 65, /* A */\n CHAR_LOWERCASE_A: 97, /* a */\n CHAR_UPPERCASE_Z: 90, /* Z */\n CHAR_LOWERCASE_Z: 122, /* z */\n\n CHAR_LEFT_PARENTHESES: 40, /* ( */\n CHAR_RIGHT_PARENTHESES: 41, /* ) */\n\n CHAR_ASTERISK: 42, /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: 38, /* & */\n CHAR_AT: 64, /* @ */\n CHAR_BACKWARD_SLASH: 92, /* \\ */\n CHAR_CARRIAGE_RETURN: 13, /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */\n CHAR_COLON: 58, /* : */\n CHAR_COMMA: 44, /* , */\n CHAR_DOT: 46, /* . */\n CHAR_DOUBLE_QUOTE: 34, /* \" */\n CHAR_EQUAL: 61, /* = */\n CHAR_EXCLAMATION_MARK: 33, /* ! */\n CHAR_FORM_FEED: 12, /* \\f */\n CHAR_FORWARD_SLASH: 47, /* / */\n CHAR_GRAVE_ACCENT: 96, /* ` */\n CHAR_HASH: 35, /* # */\n CHAR_HYPHEN_MINUS: 45, /* - */\n CHAR_LEFT_ANGLE_BRACKET: 60, /* < */\n CHAR_LEFT_CURLY_BRACE: 123, /* { */\n CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */\n CHAR_LINE_FEED: 10, /* \\n */\n CHAR_NO_BREAK_SPACE: 160, /* \\u00A0 */\n CHAR_PERCENT: 37, /* % */\n CHAR_PLUS: 43, /* + */\n CHAR_QUESTION_MARK: 63, /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */\n CHAR_RIGHT_CURLY_BRACE: 125, /* } */\n CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */\n CHAR_SEMICOLON: 59, /* ; */\n CHAR_SINGLE_QUOTE: 39, /* ' */\n CHAR_SPACE: 32, /* */\n CHAR_TAB: 9, /* \\t */\n CHAR_UNDERSCORE: 95, /* _ */\n CHAR_VERTICAL_LINE: 124, /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \\uFEFF */\n\n SEP: path.sep,\n\n /**\n * Create EXTGLOB_CHARS\n */\n\n extglobChars(chars) {\n return {\n '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },\n '?': { type: 'qmark', open: '(?:', close: ')?' },\n '+': { type: 'plus', open: '(?:', close: ')+' },\n '*': { type: 'star', open: '(?:', close: ')*' },\n '@': { type: 'at', open: '(?:', close: ')' }\n };\n },\n\n /**\n * Create GLOB_CHARS\n */\n\n globChars(win32) {\n return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;\n }\n};\n","'use strict';\n\nconst path = require('path');\nconst win32 = process.platform === 'win32';\nconst {\n REGEX_BACKSLASH,\n REGEX_REMOVE_BACKSLASH,\n REGEX_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_GLOBAL\n} = require('./constants');\n\nexports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nexports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);\nexports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);\nexports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\\\$1');\nexports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');\n\nexports.removeBackslashes = str => {\n return str.replace(REGEX_REMOVE_BACKSLASH, match => {\n return match === '\\\\' ? '' : match;\n });\n};\n\nexports.supportsLookbehinds = () => {\n const segs = process.version.slice(1).split('.').map(Number);\n if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {\n return true;\n }\n return false;\n};\n\nexports.isWindows = options => {\n if (options && typeof options.windows === 'boolean') {\n return options.windows;\n }\n return win32 === true || path.sep === '\\\\';\n};\n\nexports.escapeLast = (input, char, lastIdx) => {\n const idx = input.lastIndexOf(char, lastIdx);\n if (idx === -1) return input;\n if (input[idx - 1] === '\\\\') return exports.escapeLast(input, char, idx - 1);\n return `${input.slice(0, idx)}\\\\${input.slice(idx)}`;\n};\n\nexports.removePrefix = (input, state = {}) => {\n let output = input;\n if (output.startsWith('./')) {\n output = output.slice(2);\n state.prefix = './';\n }\n return output;\n};\n\nexports.wrapOutput = (input, state = {}, options = {}) => {\n const prepend = options.contains ? '' : '^';\n const append = options.contains ? '' : '$';\n\n let output = `${prepend}(?:${input})${append}`;\n if (state.negated === true) {\n output = `(?:^(?!${output}).*$)`;\n }\n return output;\n};\n","'use strict';\n\nconst utils = require('./utils');\nconst {\n CHAR_ASTERISK, /* * */\n CHAR_AT, /* @ */\n CHAR_BACKWARD_SLASH, /* \\ */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_EXCLAMATION_MARK, /* ! */\n CHAR_FORWARD_SLASH, /* / */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_PLUS, /* + */\n CHAR_QUESTION_MARK, /* ? */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_RIGHT_SQUARE_BRACKET /* ] */\n} = require('./constants');\n\nconst isPathSeparator = code => {\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n};\n\nconst depth = token => {\n if (token.isPrefix !== true) {\n token.depth = token.isGlobstar ? Infinity : 1;\n }\n};\n\n/**\n * Quickly scans a glob pattern and returns an object with a handful of\n * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),\n * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not\n * with `!(`) and `negatedExtglob` (true if the path starts with `!(`).\n *\n * ```js\n * const pm = require('picomatch');\n * console.log(pm.scan('foo/bar/*.js'));\n * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an object with tokens and regex source string.\n * @api public\n */\n\nconst scan = (input, options) => {\n const opts = options || {};\n\n const length = input.length - 1;\n const scanToEnd = opts.parts === true || opts.scanToEnd === true;\n const slashes = [];\n const tokens = [];\n const parts = [];\n\n let str = input;\n let index = -1;\n let start = 0;\n let lastIndex = 0;\n let isBrace = false;\n let isBracket = false;\n let isGlob = false;\n let isExtglob = false;\n let isGlobstar = false;\n let braceEscaped = false;\n let backslashes = false;\n let negated = false;\n let negatedExtglob = false;\n let finished = false;\n let braces = 0;\n let prev;\n let code;\n let token = { value: '', depth: 0, isGlob: false };\n\n const eos = () => index >= length;\n const peek = () => str.charCodeAt(index + 1);\n const advance = () => {\n prev = code;\n return str.charCodeAt(++index);\n };\n\n while (index < length) {\n code = advance();\n let next;\n\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braceEscaped = true;\n }\n continue;\n }\n\n if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n continue;\n }\n\n if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (braceEscaped !== true && code === CHAR_COMMA) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_RIGHT_CURLY_BRACE) {\n braces--;\n\n if (braces === 0) {\n braceEscaped = false;\n isBrace = token.isBrace = true;\n finished = true;\n break;\n }\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_FORWARD_SLASH) {\n slashes.push(index);\n tokens.push(token);\n token = { value: '', depth: 0, isGlob: false };\n\n if (finished === true) continue;\n if (prev === CHAR_DOT && index === (start + 1)) {\n start += 2;\n continue;\n }\n\n lastIndex = index + 1;\n continue;\n }\n\n if (opts.noext !== true) {\n const isExtglobChar = code === CHAR_PLUS\n || code === CHAR_AT\n || code === CHAR_ASTERISK\n || code === CHAR_QUESTION_MARK\n || code === CHAR_EXCLAMATION_MARK;\n\n if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n isExtglob = token.isExtglob = true;\n finished = true;\n if (code === CHAR_EXCLAMATION_MARK && index === start) {\n negatedExtglob = true;\n }\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n }\n\n if (code === CHAR_ASTERISK) {\n if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_QUESTION_MARK) {\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_LEFT_SQUARE_BRACKET) {\n while (eos() !== true && (next = advance())) {\n if (next === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n isBracket = token.isBracket = true;\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {\n negated = token.negated = true;\n start++;\n continue;\n }\n\n if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_LEFT_PARENTHESES) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n\n if (isGlob === true) {\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n }\n\n if (opts.noext === true) {\n isExtglob = false;\n isGlob = false;\n }\n\n let base = str;\n let prefix = '';\n let glob = '';\n\n if (start > 0) {\n prefix = str.slice(0, start);\n str = str.slice(start);\n lastIndex -= start;\n }\n\n if (base && isGlob === true && lastIndex > 0) {\n base = str.slice(0, lastIndex);\n glob = str.slice(lastIndex);\n } else if (isGlob === true) {\n base = '';\n glob = str;\n } else {\n base = str;\n }\n\n if (base && base !== '' && base !== '/' && base !== str) {\n if (isPathSeparator(base.charCodeAt(base.length - 1))) {\n base = base.slice(0, -1);\n }\n }\n\n if (opts.unescape === true) {\n if (glob) glob = utils.removeBackslashes(glob);\n\n if (base && backslashes === true) {\n base = utils.removeBackslashes(base);\n }\n }\n\n const state = {\n prefix,\n input,\n start,\n base,\n glob,\n isBrace,\n isBracket,\n isGlob,\n isExtglob,\n isGlobstar,\n negated,\n negatedExtglob\n };\n\n if (opts.tokens === true) {\n state.maxDepth = 0;\n if (!isPathSeparator(code)) {\n tokens.push(token);\n }\n state.tokens = tokens;\n }\n\n if (opts.parts === true || opts.tokens === true) {\n let prevIndex;\n\n for (let idx = 0; idx < slashes.length; idx++) {\n const n = prevIndex ? prevIndex + 1 : start;\n const i = slashes[idx];\n const value = input.slice(n, i);\n if (opts.tokens) {\n if (idx === 0 && start !== 0) {\n tokens[idx].isPrefix = true;\n tokens[idx].value = prefix;\n } else {\n tokens[idx].value = value;\n }\n depth(tokens[idx]);\n state.maxDepth += tokens[idx].depth;\n }\n if (idx !== 0 || value !== '') {\n parts.push(value);\n }\n prevIndex = i;\n }\n\n if (prevIndex && prevIndex + 1 < input.length) {\n const value = input.slice(prevIndex + 1);\n parts.push(value);\n\n if (opts.tokens) {\n tokens[tokens.length - 1].value = value;\n depth(tokens[tokens.length - 1]);\n state.maxDepth += tokens[tokens.length - 1].depth;\n }\n }\n\n state.slashes = slashes;\n state.parts = parts;\n }\n\n return state;\n};\n\nmodule.exports = scan;\n","'use strict';\n\nconst constants = require('./constants');\nconst utils = require('./utils');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n POSIX_REGEX_SOURCE,\n REGEX_NON_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_BACKREF,\n REPLACEMENTS\n} = constants;\n\n/**\n * Helpers\n */\n\nconst expandRange = (args, options) => {\n if (typeof options.expandRange === 'function') {\n return options.expandRange(...args, options);\n }\n\n args.sort();\n const value = `[${args.join('-')}]`;\n\n try {\n /* eslint-disable-next-line no-new */\n new RegExp(value);\n } catch (ex) {\n return args.map(v => utils.escapeRegex(v)).join('..');\n }\n\n return value;\n};\n\n/**\n * Create the message for a syntax error\n */\n\nconst syntaxError = (type, char) => {\n return `Missing ${type}: \"${char}\" - use \"\\\\\\\\${char}\" to match literal characters`;\n};\n\nconst splitTopLevel = input => {\n const parts = [];\n let bracket = 0;\n let paren = 0;\n let quote = 0;\n let value = '';\n let escaped = false;\n\n for (const ch of input) {\n if (escaped === true) {\n value += ch;\n escaped = false;\n continue;\n }\n\n if (ch === '\\\\') {\n value += ch;\n escaped = true;\n continue;\n }\n\n if (ch === '\"') {\n quote = quote === 1 ? 0 : 1;\n value += ch;\n continue;\n }\n\n if (quote === 0) {\n if (ch === '[') {\n bracket++;\n } else if (ch === ']' && bracket > 0) {\n bracket--;\n } else if (bracket === 0) {\n if (ch === '(') {\n paren++;\n } else if (ch === ')' && paren > 0) {\n paren--;\n } else if (ch === '|' && paren === 0) {\n parts.push(value);\n value = '';\n continue;\n }\n }\n }\n\n value += ch;\n }\n\n parts.push(value);\n return parts;\n};\n\nconst isPlainBranch = branch => {\n let escaped = false;\n\n for (const ch of branch) {\n if (escaped === true) {\n escaped = false;\n continue;\n }\n\n if (ch === '\\\\') {\n escaped = true;\n continue;\n }\n\n if (/[?*+@!()[\\]{}]/.test(ch)) {\n return false;\n }\n }\n\n return true;\n};\n\nconst normalizeSimpleBranch = branch => {\n let value = branch.trim();\n let changed = true;\n\n while (changed === true) {\n changed = false;\n\n if (/^@\\([^\\\\()[\\]{}|]+\\)$/.test(value)) {\n value = value.slice(2, -1);\n changed = true;\n }\n }\n\n if (!isPlainBranch(value)) {\n return;\n }\n\n return value.replace(/\\\\(.)/g, '$1');\n};\n\nconst hasRepeatedCharPrefixOverlap = branches => {\n const values = branches.map(normalizeSimpleBranch).filter(Boolean);\n\n for (let i = 0; i < values.length; i++) {\n for (let j = i + 1; j < values.length; j++) {\n const a = values[i];\n const b = values[j];\n const char = a[0];\n\n if (!char || a !== char.repeat(a.length) || b !== char.repeat(b.length)) {\n continue;\n }\n\n if (a === b || a.startsWith(b) || b.startsWith(a)) {\n return true;\n }\n }\n }\n\n return false;\n};\n\nconst parseRepeatedExtglob = (pattern, requireEnd = true) => {\n if ((pattern[0] !== '+' && pattern[0] !== '*') || pattern[1] !== '(') {\n return;\n }\n\n let bracket = 0;\n let paren = 0;\n let quote = 0;\n let escaped = false;\n\n for (let i = 1; i < pattern.length; i++) {\n const ch = pattern[i];\n\n if (escaped === true) {\n escaped = false;\n continue;\n }\n\n if (ch === '\\\\') {\n escaped = true;\n continue;\n }\n\n if (ch === '\"') {\n quote = quote === 1 ? 0 : 1;\n continue;\n }\n\n if (quote === 1) {\n continue;\n }\n\n if (ch === '[') {\n bracket++;\n continue;\n }\n\n if (ch === ']' && bracket > 0) {\n bracket--;\n continue;\n }\n\n if (bracket > 0) {\n continue;\n }\n\n if (ch === '(') {\n paren++;\n continue;\n }\n\n if (ch === ')') {\n paren--;\n\n if (paren === 0) {\n if (requireEnd === true && i !== pattern.length - 1) {\n return;\n }\n\n return {\n type: pattern[0],\n body: pattern.slice(2, i),\n end: i\n };\n }\n }\n }\n};\n\nconst getStarExtglobSequenceOutput = pattern => {\n let index = 0;\n const chars = [];\n\n while (index < pattern.length) {\n const match = parseRepeatedExtglob(pattern.slice(index), false);\n\n if (!match || match.type !== '*') {\n return;\n }\n\n const branches = splitTopLevel(match.body).map(branch => branch.trim());\n if (branches.length !== 1) {\n return;\n }\n\n const branch = normalizeSimpleBranch(branches[0]);\n if (!branch || branch.length !== 1) {\n return;\n }\n\n chars.push(branch);\n index += match.end + 1;\n }\n\n if (chars.length < 1) {\n return;\n }\n\n const source = chars.length === 1\n ? utils.escapeRegex(chars[0])\n : `[${chars.map(ch => utils.escapeRegex(ch)).join('')}]`;\n\n return `${source}*`;\n};\n\nconst repeatedExtglobRecursion = pattern => {\n let depth = 0;\n let value = pattern.trim();\n let match = parseRepeatedExtglob(value);\n\n while (match) {\n depth++;\n value = match.body.trim();\n match = parseRepeatedExtglob(value);\n }\n\n return depth;\n};\n\nconst analyzeRepeatedExtglob = (body, options) => {\n if (options.maxExtglobRecursion === false) {\n return { risky: false };\n }\n\n const max =\n typeof options.maxExtglobRecursion === 'number'\n ? options.maxExtglobRecursion\n : constants.DEFAULT_MAX_EXTGLOB_RECURSION;\n\n const branches = splitTopLevel(body).map(branch => branch.trim());\n\n if (branches.length > 1) {\n if (\n branches.some(branch => branch === '') ||\n branches.some(branch => /^[*?]+$/.test(branch)) ||\n hasRepeatedCharPrefixOverlap(branches)\n ) {\n return { risky: true };\n }\n }\n\n for (const branch of branches) {\n const safeOutput = getStarExtglobSequenceOutput(branch);\n if (safeOutput) {\n return { risky: true, safeOutput };\n }\n\n if (repeatedExtglobRecursion(branch) > max) {\n return { risky: true };\n }\n }\n\n return { risky: false };\n};\n\n/**\n * Parse the given input string.\n * @param {String} input\n * @param {Object} options\n * @return {Object}\n */\n\nconst parse = (input, options) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n input = REPLACEMENTS[input] || input;\n\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\n let len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n const bos = { type: 'bos', value: '', output: opts.prepend || '' };\n const tokens = [bos];\n\n const capture = opts.capture ? '' : '?:';\n const win32 = utils.isWindows(options);\n\n // create constants based on platform, for windows or posix\n const PLATFORM_CHARS = constants.globChars(win32);\n const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);\n\n const {\n DOT_LITERAL,\n PLUS_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n } = PLATFORM_CHARS;\n\n const globstar = opts => {\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const nodot = opts.dot ? '' : NO_DOT;\n const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;\n let star = opts.bash === true ? globstar(opts) : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n // minimatch options support\n if (typeof opts.noext === 'boolean') {\n opts.noextglob = opts.noext;\n }\n\n const state = {\n input,\n index: -1,\n start: 0,\n dot: opts.dot === true,\n consumed: '',\n output: '',\n prefix: '',\n backtrack: false,\n negated: false,\n brackets: 0,\n braces: 0,\n parens: 0,\n quotes: 0,\n globstar: false,\n tokens\n };\n\n input = utils.removePrefix(input, state);\n len = input.length;\n\n const extglobs = [];\n const braces = [];\n const stack = [];\n let prev = bos;\n let value;\n\n /**\n * Tokenizing helpers\n */\n\n const eos = () => state.index === len - 1;\n const peek = state.peek = (n = 1) => input[state.index + n];\n const advance = state.advance = () => input[++state.index] || '';\n const remaining = () => input.slice(state.index + 1);\n const consume = (value = '', num = 0) => {\n state.consumed += value;\n state.index += num;\n };\n\n const append = token => {\n state.output += token.output != null ? token.output : token.value;\n consume(token.value);\n };\n\n const negate = () => {\n let count = 1;\n\n while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {\n advance();\n state.start++;\n count++;\n }\n\n if (count % 2 === 0) {\n return false;\n }\n\n state.negated = true;\n state.start++;\n return true;\n };\n\n const increment = type => {\n state[type]++;\n stack.push(type);\n };\n\n const decrement = type => {\n state[type]--;\n stack.pop();\n };\n\n /**\n * Push tokens onto the tokens array. This helper speeds up\n * tokenizing by 1) helping us avoid backtracking as much as possible,\n * and 2) helping us avoid creating extra tokens when consecutive\n * characters are plain text. This improves performance and simplifies\n * lookbehinds.\n */\n\n const push = tok => {\n if (prev.type === 'globstar') {\n const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');\n const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));\n\n if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {\n state.output = state.output.slice(0, -prev.output.length);\n prev.type = 'star';\n prev.value = '*';\n prev.output = star;\n state.output += prev.output;\n }\n }\n\n if (extglobs.length && tok.type !== 'paren') {\n extglobs[extglobs.length - 1].inner += tok.value;\n }\n\n if (tok.value || tok.output) append(tok);\n if (prev && prev.type === 'text' && tok.type === 'text') {\n prev.value += tok.value;\n prev.output = (prev.output || '') + tok.value;\n return;\n }\n\n tok.prev = prev;\n tokens.push(tok);\n prev = tok;\n };\n\n const extglobOpen = (type, value) => {\n const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };\n\n token.prev = prev;\n token.parens = state.parens;\n token.output = state.output;\n token.startIndex = state.index;\n token.tokensIndex = tokens.length;\n const output = (opts.capture ? '(' : '') + token.open;\n\n increment('parens');\n push({ type, value, output: state.output ? '' : ONE_CHAR });\n push({ type: 'paren', extglob: true, value: advance(), output });\n extglobs.push(token);\n };\n\n const extglobClose = token => {\n const literal = input.slice(token.startIndex, state.index + 1);\n const body = input.slice(token.startIndex + 2, state.index);\n const analysis = analyzeRepeatedExtglob(body, opts);\n\n if ((token.type === 'plus' || token.type === 'star') && analysis.risky) {\n const safeOutput = analysis.safeOutput\n ? (token.output ? '' : ONE_CHAR) + (opts.capture ? `(${analysis.safeOutput})` : analysis.safeOutput)\n : undefined;\n const open = tokens[token.tokensIndex];\n\n open.type = 'text';\n open.value = literal;\n open.output = safeOutput || utils.escapeRegex(literal);\n\n for (let i = token.tokensIndex + 1; i < tokens.length; i++) {\n tokens[i].value = '';\n tokens[i].output = '';\n delete tokens[i].suffix;\n }\n\n state.output = token.output + open.output;\n state.backtrack = true;\n\n push({ type: 'paren', extglob: true, value, output: '' });\n decrement('parens');\n return;\n }\n\n let output = token.close + (opts.capture ? ')' : '');\n let rest;\n\n if (token.type === 'negate') {\n let extglobStar = star;\n\n if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {\n extglobStar = globstar(opts);\n }\n\n if (extglobStar !== star || eos() || /^\\)+$/.test(remaining())) {\n output = token.close = `)$))${extglobStar}`;\n }\n\n if (token.inner.includes('*') && (rest = remaining()) && /^\\.[^\\\\/.]+$/.test(rest)) {\n // Any non-magical string (`.ts`) or even nested expression (`.{ts,tsx}`) can follow after the closing parenthesis.\n // In this case, we need to parse the string and use it in the output of the original pattern.\n // Suitable patterns: `/!(*.d).ts`, `/!(*.d).{ts,tsx}`, `**/!(*-dbg).@(js)`.\n //\n // Disabling the `fastpaths` option due to a problem with parsing strings as `.ts` in the pattern like `**/!(*.d).ts`.\n const expression = parse(rest, { ...options, fastpaths: false }).output;\n\n output = token.close = `)${expression})${extglobStar})`;\n }\n\n if (token.prev.type === 'bos') {\n state.negatedExtglob = true;\n }\n }\n\n push({ type: 'paren', extglob: true, value, output });\n decrement('parens');\n };\n\n /**\n * Fast paths\n */\n\n if (opts.fastpaths !== false && !/(^[*!]|[/()[\\]{}\"])/.test(input)) {\n let backslashes = false;\n\n let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {\n if (first === '\\\\') {\n backslashes = true;\n return m;\n }\n\n if (first === '?') {\n if (esc) {\n return esc + first + (rest ? QMARK.repeat(rest.length) : '');\n }\n if (index === 0) {\n return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');\n }\n return QMARK.repeat(chars.length);\n }\n\n if (first === '.') {\n return DOT_LITERAL.repeat(chars.length);\n }\n\n if (first === '*') {\n if (esc) {\n return esc + first + (rest ? star : '');\n }\n return star;\n }\n return esc ? m : `\\\\${m}`;\n });\n\n if (backslashes === true) {\n if (opts.unescape === true) {\n output = output.replace(/\\\\/g, '');\n } else {\n output = output.replace(/\\\\+/g, m => {\n return m.length % 2 === 0 ? '\\\\\\\\' : (m ? '\\\\' : '');\n });\n }\n }\n\n if (output === input && opts.contains === true) {\n state.output = input;\n return state;\n }\n\n state.output = utils.wrapOutput(output, state, options);\n return state;\n }\n\n /**\n * Tokenize input until we reach end-of-string\n */\n\n while (!eos()) {\n value = advance();\n\n if (value === '\\u0000') {\n continue;\n }\n\n /**\n * Escaped characters\n */\n\n if (value === '\\\\') {\n const next = peek();\n\n if (next === '/' && opts.bash !== true) {\n continue;\n }\n\n if (next === '.' || next === ';') {\n continue;\n }\n\n if (!next) {\n value += '\\\\';\n push({ type: 'text', value });\n continue;\n }\n\n // collapse slashes to reduce potential for exploits\n const match = /^\\\\+/.exec(remaining());\n let slashes = 0;\n\n if (match && match[0].length > 2) {\n slashes = match[0].length;\n state.index += slashes;\n if (slashes % 2 !== 0) {\n value += '\\\\';\n }\n }\n\n if (opts.unescape === true) {\n value = advance();\n } else {\n value += advance();\n }\n\n if (state.brackets === 0) {\n push({ type: 'text', value });\n continue;\n }\n }\n\n /**\n * If we're inside a regex character class, continue\n * until we reach the closing bracket.\n */\n\n if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {\n if (opts.posix !== false && value === ':') {\n const inner = prev.value.slice(1);\n if (inner.includes('[')) {\n prev.posix = true;\n\n if (inner.includes(':')) {\n const idx = prev.value.lastIndexOf('[');\n const pre = prev.value.slice(0, idx);\n const rest = prev.value.slice(idx + 2);\n const posix = POSIX_REGEX_SOURCE[rest];\n if (posix) {\n prev.value = pre + posix;\n state.backtrack = true;\n advance();\n\n if (!bos.output && tokens.indexOf(prev) === 1) {\n bos.output = ONE_CHAR;\n }\n continue;\n }\n }\n }\n }\n\n if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {\n value = `\\\\${value}`;\n }\n\n if (value === ']' && (prev.value === '[' || prev.value === '[^')) {\n value = `\\\\${value}`;\n }\n\n if (opts.posix === true && value === '!' && prev.value === '[') {\n value = '^';\n }\n\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * If we're inside a quoted string, continue\n * until we reach the closing double quote.\n */\n\n if (state.quotes === 1 && value !== '\"') {\n value = utils.escapeRegex(value);\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * Double quotes\n */\n\n if (value === '\"') {\n state.quotes = state.quotes === 1 ? 0 : 1;\n if (opts.keepQuotes === true) {\n push({ type: 'text', value });\n }\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === '(') {\n increment('parens');\n push({ type: 'paren', value });\n continue;\n }\n\n if (value === ')') {\n if (state.parens === 0 && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '('));\n }\n\n const extglob = extglobs[extglobs.length - 1];\n if (extglob && state.parens === extglob.parens + 1) {\n extglobClose(extglobs.pop());\n continue;\n }\n\n push({ type: 'paren', value, output: state.parens ? ')' : '\\\\)' });\n decrement('parens');\n continue;\n }\n\n /**\n * Square brackets\n */\n\n if (value === '[') {\n if (opts.nobracket === true || !remaining().includes(']')) {\n if (opts.nobracket !== true && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('closing', ']'));\n }\n\n value = `\\\\${value}`;\n } else {\n increment('brackets');\n }\n\n push({ type: 'bracket', value });\n continue;\n }\n\n if (value === ']') {\n if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n if (state.brackets === 0) {\n if (opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '['));\n }\n\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n decrement('brackets');\n\n const prevValue = prev.value.slice(1);\n if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {\n value = `/${value}`;\n }\n\n prev.value += value;\n append({ value });\n\n // when literal brackets are explicitly disabled\n // assume we should match with a regex character class\n if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {\n continue;\n }\n\n const escaped = utils.escapeRegex(prev.value);\n state.output = state.output.slice(0, -prev.value.length);\n\n // when literal brackets are explicitly enabled\n // assume we should escape the brackets to match literal characters\n if (opts.literalBrackets === true) {\n state.output += escaped;\n prev.value = escaped;\n continue;\n }\n\n // when the user specifies nothing, try to match both\n prev.value = `(${capture}${escaped}|${prev.value})`;\n state.output += prev.value;\n continue;\n }\n\n /**\n * Braces\n */\n\n if (value === '{' && opts.nobrace !== true) {\n increment('braces');\n\n const open = {\n type: 'brace',\n value,\n output: '(',\n outputIndex: state.output.length,\n tokensIndex: state.tokens.length\n };\n\n braces.push(open);\n push(open);\n continue;\n }\n\n if (value === '}') {\n const brace = braces[braces.length - 1];\n\n if (opts.nobrace === true || !brace) {\n push({ type: 'text', value, output: value });\n continue;\n }\n\n let output = ')';\n\n if (brace.dots === true) {\n const arr = tokens.slice();\n const range = [];\n\n for (let i = arr.length - 1; i >= 0; i--) {\n tokens.pop();\n if (arr[i].type === 'brace') {\n break;\n }\n if (arr[i].type !== 'dots') {\n range.unshift(arr[i].value);\n }\n }\n\n output = expandRange(range, opts);\n state.backtrack = true;\n }\n\n if (brace.comma !== true && brace.dots !== true) {\n const out = state.output.slice(0, brace.outputIndex);\n const toks = state.tokens.slice(brace.tokensIndex);\n brace.value = brace.output = '\\\\{';\n value = output = '\\\\}';\n state.output = out;\n for (const t of toks) {\n state.output += (t.output || t.value);\n }\n }\n\n push({ type: 'brace', value, output });\n decrement('braces');\n braces.pop();\n continue;\n }\n\n /**\n * Pipes\n */\n\n if (value === '|') {\n if (extglobs.length > 0) {\n extglobs[extglobs.length - 1].conditions++;\n }\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Commas\n */\n\n if (value === ',') {\n let output = value;\n\n const brace = braces[braces.length - 1];\n if (brace && stack[stack.length - 1] === 'braces') {\n brace.comma = true;\n output = '|';\n }\n\n push({ type: 'comma', value, output });\n continue;\n }\n\n /**\n * Slashes\n */\n\n if (value === '/') {\n // if the beginning of the glob is \"./\", advance the start\n // to the current index, and don't add the \"./\" characters\n // to the state. This greatly simplifies lookbehinds when\n // checking for BOS characters like \"!\" and \".\" (not \"./\")\n if (prev.type === 'dot' && state.index === state.start + 1) {\n state.start = state.index + 1;\n state.consumed = '';\n state.output = '';\n tokens.pop();\n prev = bos; // reset \"prev\" to the first token\n continue;\n }\n\n push({ type: 'slash', value, output: SLASH_LITERAL });\n continue;\n }\n\n /**\n * Dots\n */\n\n if (value === '.') {\n if (state.braces > 0 && prev.type === 'dot') {\n if (prev.value === '.') prev.output = DOT_LITERAL;\n const brace = braces[braces.length - 1];\n prev.type = 'dots';\n prev.output += value;\n prev.value += value;\n brace.dots = true;\n continue;\n }\n\n if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {\n push({ type: 'text', value, output: DOT_LITERAL });\n continue;\n }\n\n push({ type: 'dot', value, output: DOT_LITERAL });\n continue;\n }\n\n /**\n * Question marks\n */\n\n if (value === '?') {\n const isGroup = prev && prev.value === '(';\n if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('qmark', value);\n continue;\n }\n\n if (prev && prev.type === 'paren') {\n const next = peek();\n let output = value;\n\n if (next === '<' && !utils.supportsLookbehinds()) {\n throw new Error('Node.js v10 or higher is required for regex lookbehinds');\n }\n\n if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\\w+>)/.test(remaining()))) {\n output = `\\\\${value}`;\n }\n\n push({ type: 'text', value, output });\n continue;\n }\n\n if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {\n push({ type: 'qmark', value, output: QMARK_NO_DOT });\n continue;\n }\n\n push({ type: 'qmark', value, output: QMARK });\n continue;\n }\n\n /**\n * Exclamation\n */\n\n if (value === '!') {\n if (opts.noextglob !== true && peek() === '(') {\n if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {\n extglobOpen('negate', value);\n continue;\n }\n }\n\n if (opts.nonegate !== true && state.index === 0) {\n negate();\n continue;\n }\n }\n\n /**\n * Plus\n */\n\n if (value === '+') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('plus', value);\n continue;\n }\n\n if ((prev && prev.value === '(') || opts.regex === false) {\n push({ type: 'plus', value, output: PLUS_LITERAL });\n continue;\n }\n\n if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {\n push({ type: 'plus', value });\n continue;\n }\n\n push({ type: 'plus', value: PLUS_LITERAL });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value === '@') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n push({ type: 'at', extglob: true, value, output: '' });\n continue;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value !== '*') {\n if (value === '$' || value === '^') {\n value = `\\\\${value}`;\n }\n\n const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());\n if (match) {\n value += match[0];\n state.index += match[0].length;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Stars\n */\n\n if (prev && (prev.type === 'globstar' || prev.star === true)) {\n prev.type = 'star';\n prev.star = true;\n prev.value += value;\n prev.output = star;\n state.backtrack = true;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n let rest = remaining();\n if (opts.noextglob !== true && /^\\([^?]/.test(rest)) {\n extglobOpen('star', value);\n continue;\n }\n\n if (prev.type === 'star') {\n if (opts.noglobstar === true) {\n consume(value);\n continue;\n }\n\n const prior = prev.prev;\n const before = prior.prev;\n const isStart = prior.type === 'slash' || prior.type === 'bos';\n const afterStar = before && (before.type === 'star' || before.type === 'globstar');\n\n if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');\n const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');\n if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n // strip consecutive `/**/`\n while (rest.slice(0, 3) === '/**') {\n const after = input[state.index + 4];\n if (after && after !== '/') {\n break;\n }\n rest = rest.slice(3);\n consume('/**', 3);\n }\n\n if (prior.type === 'bos' && eos()) {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = globstar(opts);\n state.output = prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');\n prev.value += value;\n state.globstar = true;\n state.output += prior.output + prev.output;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {\n const end = rest[1] !== void 0 ? '|$' : '';\n\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;\n prev.value += value;\n\n state.output += prior.output + prev.output;\n state.globstar = true;\n\n consume(value + advance());\n\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n if (prior.type === 'bos' && rest[0] === '/') {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;\n state.output = prev.output;\n state.globstar = true;\n consume(value + advance());\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n // remove single star from output\n state.output = state.output.slice(0, -prev.output.length);\n\n // reset previous token to globstar\n prev.type = 'globstar';\n prev.output = globstar(opts);\n prev.value += value;\n\n // reset output with globstar\n state.output += prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n const token = { type: 'star', value, output: star };\n\n if (opts.bash === true) {\n token.output = '.*?';\n if (prev.type === 'bos' || prev.type === 'slash') {\n token.output = nodot + token.output;\n }\n push(token);\n continue;\n }\n\n if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {\n token.output = value;\n push(token);\n continue;\n }\n\n if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {\n if (prev.type === 'dot') {\n state.output += NO_DOT_SLASH;\n prev.output += NO_DOT_SLASH;\n\n } else if (opts.dot === true) {\n state.output += NO_DOTS_SLASH;\n prev.output += NO_DOTS_SLASH;\n\n } else {\n state.output += nodot;\n prev.output += nodot;\n }\n\n if (peek() !== '*') {\n state.output += ONE_CHAR;\n prev.output += ONE_CHAR;\n }\n }\n\n push(token);\n }\n\n while (state.brackets > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));\n state.output = utils.escapeLast(state.output, '[');\n decrement('brackets');\n }\n\n while (state.parens > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));\n state.output = utils.escapeLast(state.output, '(');\n decrement('parens');\n }\n\n while (state.braces > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));\n state.output = utils.escapeLast(state.output, '{');\n decrement('braces');\n }\n\n if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {\n push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });\n }\n\n // rebuild the output if we had to backtrack at any point\n if (state.backtrack === true) {\n state.output = '';\n\n for (const token of state.tokens) {\n state.output += token.output != null ? token.output : token.value;\n\n if (token.suffix) {\n state.output += token.suffix;\n }\n }\n }\n\n return state;\n};\n\n/**\n * Fast paths for creating regular expressions for common glob patterns.\n * This can significantly speed up processing and has very little downside\n * impact when none of the fast paths match.\n */\n\nparse.fastpaths = (input, options) => {\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n const len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n input = REPLACEMENTS[input] || input;\n const win32 = utils.isWindows(options);\n\n // create constants based on platform, for windows or posix\n const {\n DOT_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOTS_SLASH,\n STAR,\n START_ANCHOR\n } = constants.globChars(win32);\n\n const nodot = opts.dot ? NO_DOTS : NO_DOT;\n const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;\n const capture = opts.capture ? '' : '?:';\n const state = { negated: false, prefix: '' };\n let star = opts.bash === true ? '.*?' : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n const globstar = opts => {\n if (opts.noglobstar === true) return star;\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const create = str => {\n switch (str) {\n case '*':\n return `${nodot}${ONE_CHAR}${star}`;\n\n case '.*':\n return `${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*.*':\n return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*/*':\n return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;\n\n case '**':\n return nodot + globstar(opts);\n\n case '**/*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;\n\n case '**/*.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '**/.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n default: {\n const match = /^(.*?)\\.(\\w+)$/.exec(str);\n if (!match) return;\n\n const source = create(match[1]);\n if (!source) return;\n\n return source + DOT_LITERAL + match[2];\n }\n }\n };\n\n const output = utils.removePrefix(input, state);\n let source = create(output);\n\n if (source && opts.strictSlashes !== true) {\n source += `${SLASH_LITERAL}?`;\n }\n\n return source;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nconst path = require('path');\nconst scan = require('./scan');\nconst parse = require('./parse');\nconst utils = require('./utils');\nconst constants = require('./constants');\nconst isObject = val => val && typeof val === 'object' && !Array.isArray(val);\n\n/**\n * Creates a matcher function from one or more glob patterns. The\n * returned function takes a string to match as its first argument,\n * and returns true if the string is a match. The returned matcher\n * function also takes a boolean as the second argument that, when true,\n * returns an object with additional information.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch(glob[, options]);\n *\n * const isMatch = picomatch('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @name picomatch\n * @param {String|Array} `globs` One or more glob patterns.\n * @param {Object=} `options`\n * @return {Function=} Returns a matcher function.\n * @api public\n */\n\nconst picomatch = (glob, options, returnState = false) => {\n if (Array.isArray(glob)) {\n const fns = glob.map(input => picomatch(input, options, returnState));\n const arrayMatcher = str => {\n for (const isMatch of fns) {\n const state = isMatch(str);\n if (state) return state;\n }\n return false;\n };\n return arrayMatcher;\n }\n\n const isState = isObject(glob) && glob.tokens && glob.input;\n\n if (glob === '' || (typeof glob !== 'string' && !isState)) {\n throw new TypeError('Expected pattern to be a non-empty string');\n }\n\n const opts = options || {};\n const posix = utils.isWindows(options);\n const regex = isState\n ? picomatch.compileRe(glob, options)\n : picomatch.makeRe(glob, options, false, true);\n\n const state = regex.state;\n delete regex.state;\n\n let isIgnored = () => false;\n if (opts.ignore) {\n const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };\n isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);\n }\n\n const matcher = (input, returnObject = false) => {\n const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });\n const result = { glob, state, regex, posix, input, output, match, isMatch };\n\n if (typeof opts.onResult === 'function') {\n opts.onResult(result);\n }\n\n if (isMatch === false) {\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (isIgnored(input)) {\n if (typeof opts.onIgnore === 'function') {\n opts.onIgnore(result);\n }\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (typeof opts.onMatch === 'function') {\n opts.onMatch(result);\n }\n return returnObject ? result : true;\n };\n\n if (returnState) {\n matcher.state = state;\n }\n\n return matcher;\n};\n\n/**\n * Test `input` with the given `regex`. This is used by the main\n * `picomatch()` function to test the input string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.test(input, regex[, options]);\n *\n * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\\/([^/]*?))$/));\n * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp} `regex`\n * @return {Object} Returns an object with matching info.\n * @api public\n */\n\npicomatch.test = (input, regex, options, { glob, posix } = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected input to be a string');\n }\n\n if (input === '') {\n return { isMatch: false, output: '' };\n }\n\n const opts = options || {};\n const format = opts.format || (posix ? utils.toPosixSlashes : null);\n let match = input === glob;\n let output = (match && format) ? format(input) : input;\n\n if (match === false) {\n output = format ? format(input) : input;\n match = output === glob;\n }\n\n if (match === false || opts.capture === true) {\n if (opts.matchBase === true || opts.basename === true) {\n match = picomatch.matchBase(input, regex, options, posix);\n } else {\n match = regex.exec(output);\n }\n }\n\n return { isMatch: Boolean(match), match, output };\n};\n\n/**\n * Match the basename of a filepath.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.matchBase(input, glob[, options]);\n * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).\n * @return {Boolean}\n * @api public\n */\n\npicomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => {\n const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);\n return regex.test(path.basename(input));\n};\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.isMatch(string, patterns[, options]);\n *\n * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String|Array} str The string to test.\n * @param {String|Array} patterns One or more glob patterns to use for matching.\n * @param {Object} [options] See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\npicomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const result = picomatch.parse(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as a regex source string.\n * @api public\n */\n\npicomatch.parse = (pattern, options) => {\n if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));\n return parse(pattern, { ...options, fastpaths: false });\n};\n\n/**\n * Scan a glob pattern to separate the pattern into segments.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.scan(input[, options]);\n *\n * const result = picomatch.scan('!./foo/*.js');\n * console.log(result);\n * { prefix: '!./',\n * input: '!./foo/*.js',\n * start: 3,\n * base: 'foo',\n * glob: '*.js',\n * isBrace: false,\n * isBracket: false,\n * isGlob: true,\n * isExtglob: false,\n * isGlobstar: false,\n * negated: true }\n * ```\n * @param {String} `input` Glob pattern to scan.\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\npicomatch.scan = (input, options) => scan(input, options);\n\n/**\n * Compile a regular expression from the `state` object returned by the\n * [parse()](#parse) method.\n *\n * @param {Object} `state`\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser.\n * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging.\n * @return {RegExp}\n * @api public\n */\n\npicomatch.compileRe = (state, options, returnOutput = false, returnState = false) => {\n if (returnOutput === true) {\n return state.output;\n }\n\n const opts = options || {};\n const prepend = opts.contains ? '' : '^';\n const append = opts.contains ? '' : '$';\n\n let source = `${prepend}(?:${state.output})${append}`;\n if (state && state.negated === true) {\n source = `^(?!${source}).*$`;\n }\n\n const regex = picomatch.toRegex(source, options);\n if (returnState === true) {\n regex.state = state;\n }\n\n return regex;\n};\n\n/**\n * Create a regular expression from a parsed glob pattern.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const state = picomatch.parse('*.js');\n * // picomatch.compileRe(state[, options]);\n *\n * console.log(picomatch.compileRe(state));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `state` The object returned from the `.parse` method.\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result.\n * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression.\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\npicomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => {\n if (!input || typeof input !== 'string') {\n throw new TypeError('Expected a non-empty string');\n }\n\n let parsed = { negated: false, fastpaths: true };\n\n if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {\n parsed.output = parse.fastpaths(input, options);\n }\n\n if (!parsed.output) {\n parsed = parse(input, options);\n }\n\n return picomatch.compileRe(parsed, options, returnOutput, returnState);\n};\n\n/**\n * Create a regular expression from the given regex source string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.toRegex(source[, options]);\n *\n * const { output } = picomatch.parse('*.js');\n * console.log(picomatch.toRegex(output));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `source` Regular expression source string.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\npicomatch.toRegex = (source, options) => {\n try {\n const opts = options || {};\n return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));\n } catch (err) {\n if (options && options.debug === true) throw err;\n return /$^/;\n }\n};\n\n/**\n * Picomatch constants.\n * @return {Object}\n */\n\npicomatch.constants = constants;\n\n/**\n * Expose \"picomatch\"\n */\n\nmodule.exports = picomatch;\n","'use strict';\n\nmodule.exports = require('./lib/picomatch');\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 picomatch from 'picomatch';\n/**\n * Preferred style for file paths to {@link markdownFileExtensions markdown files}.\n */\nexport var PreferredMdPathExtensionStyle;\n(function (PreferredMdPathExtensionStyle) {\n /**\n * Try to maintain the existing of the path.\n */\n PreferredMdPathExtensionStyle[\"auto\"] = \"auto\";\n /**\n * Include the file extension when possible.\n */\n PreferredMdPathExtensionStyle[\"includeExtension\"] = \"includeExtension\";\n /**\n * Drop the file extension when possible.\n */\n PreferredMdPathExtensionStyle[\"removeExtension\"] = \"removeExtension\";\n})(PreferredMdPathExtensionStyle || (PreferredMdPathExtensionStyle = {}));\nexport const defaultMarkdownFileExtension = 'md';\nconst defaultConfig = {\n markdownFileExtensions: [defaultMarkdownFileExtension],\n knownLinkedToFileExtensions: [\n 'jpg',\n 'jpeg',\n 'png',\n 'gif',\n 'webp',\n 'bmp',\n 'tiff',\n ],\n excludePaths: [\n '**/.*',\n '**/node_modules/**',\n ]\n};\nexport function getLsConfiguration(overrides) {\n return new Proxy(Object.create(null), {\n get(_target, p, _receiver) {\n return p in overrides ? overrides[p] : defaultConfig[p];\n },\n });\n}\nexport function isExcludedPath(configuration, uri) {\n return configuration.excludePaths.some(excludePath => picomatch.isMatch(uri.path, excludePath));\n}\n//# sourceMappingURL=config.js.map","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/main.ts\nvar main_exports = {};\n__export(main_exports, {\n config: () => config,\n t: () => t\n});\nmodule.exports = __toCommonJS(main_exports);\n\n// src/node/reader.ts\nvar import_fs = require(\"fs\");\nvar import_promises = require(\"fs/promises\");\nasync function readFileFromUri(uri) {\n if (uri.protocol === \"file:\") {\n return await (0, import_promises.readFile)(uri, \"utf8\");\n }\n if (uri.protocol === \"http:\" || uri.protocol === \"https:\") {\n const res = await fetch(uri.toString(), {\n headers: {\n \"Accept-Encoding\": \"gzip, deflate\",\n \"Accept\": \"application/json\"\n },\n redirect: \"follow\"\n });\n if (!res.ok) {\n let error = `Unexpected ${res.status} response while trying to read ${uri}`;\n try {\n error += `: ${await res.text()}`;\n } catch {\n }\n throw new Error(error);\n }\n const decoded = await res.text();\n return decoded;\n }\n throw new Error(\"Unsupported protocol\");\n}\nfunction readFileFromFsPath(fsPath) {\n return (0, import_fs.readFileSync)(fsPath, \"utf8\");\n}\n\n// src/main.ts\nvar bundle;\nfunction config(config2) {\n if (\"contents\" in config2) {\n if (typeof config2.contents === \"string\") {\n bundle = JSON.parse(config2.contents);\n } else {\n bundle = config2.contents;\n }\n return;\n }\n if (\"fsPath\" in config2) {\n const fileContent = readFileFromFsPath(config2.fsPath);\n const content = JSON.parse(fileContent);\n bundle = isBuiltinExtension(content) ? content.contents.bundle : content;\n return;\n }\n if (config2.uri) {\n let uri = config2.uri;\n if (typeof config2.uri === \"string\") {\n uri = new URL(config2.uri);\n }\n return new Promise((resolve, reject) => {\n readFileFromUri(uri).then((uriContent) => {\n try {\n const content = JSON.parse(uriContent);\n bundle = isBuiltinExtension(content) ? content.contents.bundle : content;\n resolve();\n } catch (err) {\n reject(err);\n }\n }).catch((err) => {\n reject(err);\n });\n });\n }\n}\nfunction t(...args) {\n const firstArg = args[0];\n let key;\n let message;\n let formatArgs;\n if (typeof firstArg === \"string\") {\n key = firstArg;\n message = firstArg;\n args.splice(0, 1);\n formatArgs = !args || typeof args[0] !== \"object\" ? args : args[0];\n } else if (firstArg instanceof Array) {\n const replacements = args.slice(1);\n if (firstArg.length !== replacements.length + 1) {\n throw new Error(\"expected a string as the first argument to l10n.t\");\n }\n let str = firstArg[0];\n for (let i = 1; i < firstArg.length; i++) {\n str += `{${i - 1}}` + firstArg[i];\n }\n return t(str, ...replacements);\n } else {\n message = firstArg.message;\n key = message;\n if (firstArg.comment && firstArg.comment.length > 0) {\n key += `/${Array.isArray(firstArg.comment) ? firstArg.comment.join(\"\") : firstArg.comment}`;\n }\n formatArgs = firstArg.args ?? {};\n }\n const messageFromBundle = bundle?.[key];\n if (!messageFromBundle) {\n return format(message, formatArgs);\n }\n if (typeof messageFromBundle === \"string\") {\n return format(messageFromBundle, formatArgs);\n }\n if (messageFromBundle.comment) {\n return format(messageFromBundle.message, formatArgs);\n }\n return format(message, formatArgs);\n}\nvar _format2Regexp = /{([^}]+)}/g;\nfunction format(template, values) {\n if (Object.keys(values).length === 0) {\n return template;\n }\n return template.replace(_format2Regexp, (match, group) => values[group] ?? match);\n}\nfunction isBuiltinExtension(json) {\n return !!(typeof json?.contents?.bundle === \"object\" && typeof json?.version === \"string\");\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n config,\n t\n});\n","export var HrefKind;\n(function (HrefKind) {\n HrefKind[HrefKind[\"External\"] = 0] = \"External\";\n HrefKind[HrefKind[\"Internal\"] = 1] = \"Internal\";\n HrefKind[HrefKind[\"Reference\"] = 2] = \"Reference\";\n})(HrefKind || (HrefKind = {}));\nexport var MdLinkKind;\n(function (MdLinkKind) {\n /** Standard Markdown link syntax: `[text][ref]` or `[text](http://example.com)` */\n MdLinkKind[MdLinkKind[\"Link\"] = 1] = \"Link\";\n /** Link definition: `[def]: http://example.com` */\n MdLinkKind[MdLinkKind[\"Definition\"] = 2] = \"Definition\";\n /** Auto link: `<http://example.com>` */\n MdLinkKind[MdLinkKind[\"AutoLink\"] = 3] = \"AutoLink\";\n})(MdLinkKind || (MdLinkKind = {}));\n/**\n * A map that lets you look up definitions by reference name.\n */\nexport class LinkDefinitionSet {\n #map = new ReferenceLinkMap();\n constructor(links) {\n for (const link of links) {\n if (link.kind === MdLinkKind.Definition) {\n if (!this.#map.has(link.ref.text)) {\n this.#map.set(link.ref.text, link);\n }\n }\n }\n }\n [Symbol.iterator]() {\n return this.#map[Symbol.iterator]();\n }\n lookup(ref) {\n return this.#map.lookup(ref);\n }\n}\n/**\n * A store of link reference names.\n *\n * Correctly normalizes reference names.\n */\nexport class ReferenceLinkMap {\n #map = new Map();\n set(ref, link) {\n this.#map.set(this.#normalizeRefName(ref), link);\n }\n lookup(ref) {\n return this.#map.get(this.#normalizeRefName(ref));\n }\n has(ref) {\n return this.#map.has(this.#normalizeRefName(ref));\n }\n [Symbol.iterator]() {\n return this.#map.values();\n }\n /**\n * Normalizes a link reference. Link references are case-insensitive, so this lowercases the reference so you can\n * correctly compare two normalized references.\n */\n #normalizeRefName(ref) {\n return ref.normalize().trim().toLowerCase();\n }\n}\n//# sourceMappingURL=documentLink.js.map","/*---------------------------------------------------------------------------------------------\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 function arePositionsEqual(a, b) {\n return a.line === b.line && a.character === b.character;\n}\nexport function translatePosition(pos, change) {\n return {\n line: pos.line + (change.lineDelta ?? 0),\n character: pos.character + (change.characterDelta ?? 0),\n };\n}\nexport function isBefore(pos, other) {\n if (pos.line < other.line) {\n return true;\n }\n if (other.line < pos.line) {\n return false;\n }\n return pos.character < other.character;\n}\nexport function isBeforeOrEqual(pos, other) {\n if (pos.line < other.line) {\n return true;\n }\n if (other.line < pos.line) {\n return false;\n }\n return pos.character <= other.character;\n}\nexport function isAfter(pos, other) {\n return !isBeforeOrEqual(pos, other);\n}\nexport function comparePosition(a, b) {\n if (a.line < b.line) {\n return -1;\n }\n else if (a.line > b.line) {\n return 1;\n }\n else {\n // equal line\n if (a.character < b.character) {\n return -1;\n }\n else if (a.character > b.character) {\n return 1;\n }\n else {\n // equal line and character\n return 0;\n }\n }\n}\n//# sourceMappingURL=position.js.map","/*---------------------------------------------------------------------------------------------\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 { Range } from 'vscode-languageserver-protocol';\nimport { arePositionsEqual, isBefore } from './position.js';\nexport function areRangesEqual(a, b) {\n return arePositionsEqual(a.start, b.start) && arePositionsEqual(a.end, b.end);\n}\nexport function modifyRange(range, start, end) {\n return {\n start: start ?? range.start,\n end: end ?? range.end,\n };\n}\nexport function rangeContains(range, other) {\n if (Range.is(other)) {\n return rangeContains(range, other.start) && rangeContains(range, other.end);\n }\n return !isBefore(other, range.start) && !isBefore(range.end, other);\n}\nexport function rangeIntersects(a, b) {\n if (rangeContains(a, b.start) || rangeContains(a, b.end)) {\n return true;\n }\n // Check case where `a` is entirely contained in `b`\n return rangeContains(b, a.start) || rangeContains(b, a.end);\n}\n//# sourceMappingURL=range.js.map","/*---------------------------------------------------------------------------------------------\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 uri from 'vscode-uri';\nexport const URI = uri.URI;\nexport const Utils = uri.Utils;\n//# sourceMappingURL=vscodeUri.js.map","/*---------------------------------------------------------------------------------------------\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 *--------------------------------------------------------------------------------------------*/\n/**\n * Max number supported by the lsp for positions.\n *\n * https://github.com/microsoft/vscode-languageserver-node/blob/e1345cca06095d61d3c5c0ff961472d55cbcf798/types/src/main.ts#L4841\n */\nexport const maxLspUInt = 2_147_483_647;\n//# sourceMappingURL=number.js.map","/*---------------------------------------------------------------------------------------------\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 lsp from 'vscode-languageserver-protocol';\nimport { URI } from '../util/vscodeUri.js';\nimport { maxLspUInt } from '../util/number.js';\nexport function getLine(doc, line) {\n return doc.getText(lsp.Range.create(line, 0, line, maxLspUInt)).replace(/\\r?\\n$/, '');\n}\nexport function getDocUri(doc) {\n return doc.$uri ?? URI.parse(doc.uri);\n}\n//# sourceMappingURL=textDocument.js.map","/*---------------------------------------------------------------------------------------------\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 lsp from 'vscode-languageserver-protocol';\nexport class WorkspaceEditBuilder {\n #changes = {};\n #documentChanges = [];\n replace(resource, range, newText) {\n this.#addEdit(resource, lsp.TextEdit.replace(range, newText));\n }\n insert(resource, position, newText) {\n this.#addEdit(resource, lsp.TextEdit.insert(position, newText));\n }\n #addEdit(resource, edit) {\n const resourceKey = resource.toString();\n let edits = this.#changes[resourceKey];\n if (!edits) {\n edits = [];\n this.#changes[resourceKey] = edits;\n }\n edits.push(edit);\n }\n getEdit() {\n // We need to convert changes into `documentChanges` or else they get dropped\n const textualChanges = Object.entries(this.#changes).map(([uri, edits]) => {\n return lsp.TextDocumentEdit.create({ uri, version: null }, edits);\n });\n return {\n documentChanges: [...textualChanges, ...this.#documentChanges],\n };\n }\n renameFile(targetUri, resolvedNewFilePath) {\n this.#documentChanges.push(lsp.RenameFile.create(targetUri.toString(), resolvedNewFilePath.toString()));\n }\n}\n//# sourceMappingURL=editBuilder.js.map","/*---------------------------------------------------------------------------------------------\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 const Schemes = Object.freeze({\n file: 'file',\n untitled: 'untitled',\n});\n//# sourceMappingURL=schemes.js.map","/*---------------------------------------------------------------------------------------------\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 path from 'node:path';\nimport { Schemes } from './schemes.js';\nimport { Utils } from './vscodeUri.js';\nexport function isSameResource(a, b) {\n return a.toString() === b.toString();\n}\nexport function isParentDir(parent, maybeChild) {\n if (parent.scheme === maybeChild.scheme && parent.authority === maybeChild.authority) {\n const relative = path.relative(parent.path, maybeChild.path);\n return !relative.startsWith('..');\n }\n return false;\n}\nexport function computeRelativePath(fromDoc, toDoc, preferDotSlash = false) {\n if (fromDoc.scheme === toDoc.scheme && fromDoc.scheme !== Schemes.untitled) {\n const rootDir = Utils.dirname(fromDoc);\n let newLink = path.posix.relative(rootDir.path, toDoc.path);\n if (preferDotSlash && !(newLink.startsWith('../') || newLink.startsWith('..\\\\'))) {\n newLink = './' + newLink;\n }\n return newLink;\n }\n return undefined;\n}\n/**\n * Check if `path` looks like it points to `target`.\n *\n * Handles cases where `path` doesn't have a file extension but `target` does.\n */\nexport function looksLikePathToResource(configuration, path, target) {\n if (path.fsPath === target.fsPath) {\n return true;\n }\n return configuration.markdownFileExtensions.some(ext => path.with({ path: path.path + '.' + ext }).fsPath === target.fsPath);\n}\nexport function looksLikeMarkdownUri(config, resolvedHrefPath) {\n return looksLikeMarkdownExt(config, Utils.extname(resolvedHrefPath));\n}\nexport function looksLikeMarkdownFilePath(config, fileName) {\n return looksLikeMarkdownExt(config, path.extname(fileName));\n}\nfunction looksLikeMarkdownExt(config, rawExt) {\n return config.markdownFileExtensions.includes(rawExt.toLowerCase().replace('.', ''));\n}\n/**\n * Extract position/range info from link fragments.\n *\n * Supported formats:\n * - `#73` / `#L73` — single line\n * - `#73,84` / `#L73,84` — line and column\n * - `#73-83` / `#L73-L83` — line range\n * - `#73,84-83,52` / `#L73,84-L83,52` — full range with columns\n */\nexport function parseLocationInfoFromFragment(fragment) {\n const match = fragment.match(/^L?(?<startLine>\\d+)(?:,(?<startCol>\\d+))?(?:-L?(?<endLine>\\d+)(?:,(?<endCol>\\d+))?)?$/i);\n if (!match?.groups) {\n return undefined;\n }\n const startLine = +match.groups['startLine'] - 1;\n if (isNaN(startLine)) {\n return undefined;\n }\n const startCol = +match.groups['startCol'] - 1;\n const start = { line: startLine, character: isNaN(startCol) ? 0 : startCol };\n if (match.groups['endLine'] !== undefined) {\n const endLine = +match.groups['endLine'] - 1;\n if (isNaN(endLine)) {\n return undefined;\n }\n const endCol = +match.groups['endCol'] - 1;\n const end = { line: endLine, character: isNaN(endCol) ? 0 : endCol };\n return { start, end };\n }\n return { start, end: start };\n}\n//# sourceMappingURL=path.js.map","/*---------------------------------------------------------------------------------------------\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 function isEmptyOrWhitespace(str) {\n return /^\\s*$/.test(str);\n}\nexport const r = String.raw;\n/**\n * Checks if the characters of the provided query string are included in the\n * target string. The characters do not have to be contiguous within the string.\n */\nexport function fuzzyContains(target, query) {\n if (target.length < query.length) {\n return false; // impossible for query to be contained in target\n }\n const queryLen = query.length;\n const targetLower = target.toLowerCase();\n let index = 0;\n let lastIndexOf = -1;\n while (index < queryLen) {\n const indexOf = targetLower.indexOf(query[index], lastIndexOf + 1);\n if (indexOf < 0) {\n return false;\n }\n lastIndexOf = indexOf;\n index++;\n }\n return true;\n}\n//# sourceMappingURL=string.js.map","/*---------------------------------------------------------------------------------------------\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 lsp from 'vscode-languageserver-protocol';\nimport { HrefKind, MdLinkKind } from '../types/documentLink.js';\nimport { getLine } from '../types/textDocument.js';\nimport { maxLspUInt } from '../util/number.js';\nimport { isEmptyOrWhitespace } from '../util/string.js';\nexport class MdOrganizeLinkDefinitionProvider {\n #linkProvider;\n constructor(linkProvider) {\n this.#linkProvider = linkProvider;\n }\n async getOrganizeLinkDefinitionEdits(doc, options, token) {\n const links = await this.#linkProvider.getLinks(doc);\n if (token.isCancellationRequested) {\n return [];\n }\n const definitions = links.links.filter(link => link.kind === MdLinkKind.Definition);\n if (!definitions.length) {\n return [];\n }\n const existingDefBlockRange = getExistingDefinitionBlock(doc, definitions);\n const edits = [];\n // First replace all inline definitions that are not the definition block\n for (const group of this.#getDefinitionBlockGroups(doc, definitions)) {\n if (!existingDefBlockRange || group.startLine < existingDefBlockRange.startLine) {\n // Don't replace trailing newline of last definition in group\n edits.push({\n newText: '',\n range: lsp.Range.create(group.startLine, 0, group.endLine, getLine(doc, group.endLine).length),\n });\n }\n }\n // Then replace the actual block\n const sortedDefs = [...definitions];\n sortedDefs.sort((a, b) => a.ref.text.localeCompare(b.ref.text));\n const newDefs = sortedDefs\n .filter(def => {\n if (!options.removeUnused) {\n return true;\n }\n return links.links.some(link => {\n return link.kind === MdLinkKind.Link && link.href.kind === HrefKind.Reference && link.href.ref === def.ref.text;\n });\n });\n const defBlock = newDefs\n .map((def => `[${def.ref.text}]: ${def.source.hrefText}`))\n .join('\\n');\n if (existingDefBlockRange) {\n // We still may need to insert a newline\n const hasLeadingWhiteSpace = existingDefBlockRange.startLine <= 0\n || isEmptyOrWhitespace(getLine(doc, existingDefBlockRange.startLine - 1));\n // See if we already have the expected definitions in order\n if (!edits.length && newDefs.length === definitions.length && definitions.every((def, i) => def.ref === newDefs[i].ref)) {\n return [];\n }\n edits.push({\n newText: (hasLeadingWhiteSpace ? '' : '\\n') + defBlock,\n range: lsp.Range.create(existingDefBlockRange.startLine, 0, existingDefBlockRange.endLine, getLine(doc, existingDefBlockRange.endLine).length)\n });\n }\n else {\n const line = this.#getLastNonWhitespaceLine(doc, definitions);\n edits.push({\n newText: (line === doc.lineCount - 1 ? '\\n\\n' : '\\n') + defBlock,\n range: lsp.Range.create(line + 1, 0, doc.lineCount, 0),\n });\n }\n return edits;\n }\n *#getDefinitionBlockGroups(doc, definitions) {\n if (!definitions.length) {\n return;\n }\n let i = 0;\n const startDef = definitions[i];\n let endDef = startDef;\n for (; i < definitions.length - 1; ++i) {\n const nextDef = definitions[i + 1];\n if (nextDef.source.range.start.line === endDef.source.range.start.line + 1) {\n endDef = nextDef;\n }\n else {\n break;\n }\n }\n yield { startLine: startDef.source.range.start.line, endLine: endDef.source.range.start.line };\n yield* this.#getDefinitionBlockGroups(doc, definitions.slice(i + 1));\n }\n #getLastNonWhitespaceLine(doc, orderedDefinitions) {\n const lastDef = orderedDefinitions[orderedDefinitions.length - 1];\n const textAfter = doc.getText(lsp.Range.create(lastDef.source.range.end.line + 1, 0, maxLspUInt, 0));\n const lines = textAfter.split(/\\r\\n|\\n/g);\n for (let i = lines.length - 1; i >= 0; --i) {\n if (!isEmptyOrWhitespace(lines[i])) {\n return lastDef.source.range.start.line + 1 + i;\n }\n }\n return lastDef.source.range.start.line;\n }\n}\nexport function getExistingDefinitionBlock(doc, orderedDefinitions) {\n if (!orderedDefinitions.length) {\n return undefined;\n }\n const lastDef = orderedDefinitions[orderedDefinitions.length - 1];\n const textAfter = doc.getText(lsp.Range.create(lastDef.source.range.end.line + 1, 0, maxLspUInt, 0));\n if (isEmptyOrWhitespace(textAfter)) {\n let prevDef = lastDef;\n for (let i = orderedDefinitions.length - 1; i >= 0; --i) {\n const def = orderedDefinitions[i];\n if (def.source.range.start.line < prevDef.source.range.start.line - 1) {\n break;\n }\n prevDef = def;\n }\n return {\n startLine: prevDef.source.range.start.line,\n endLine: lastDef.source.range.start.line\n };\n }\n return undefined;\n}\n//# sourceMappingURL=organizeLinkDefs.js.map","/*---------------------------------------------------------------------------------------------\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 function codeActionKindContains(kindA, kindB) {\n return kindA === kindB || kindB.startsWith(kindA + '.');\n}\n//# sourceMappingURL=util.js.map","/*---------------------------------------------------------------------------------------------\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;\nimport * as l10n from '@vscode/l10n';\nimport * as lsp from 'vscode-languageserver-protocol';\nimport { HrefKind, MdLinkKind } from '../../types/documentLink.js';\nimport { comparePosition, translatePosition } from '../../types/position.js';\nimport { rangeIntersects } from '../../types/range.js';\nimport { getDocUri, getLine } from '../../types/textDocument.js';\nimport { WorkspaceEditBuilder } from '../../util/editBuilder.js';\nimport { isSameResource } from '../../util/path.js';\nimport { getExistingDefinitionBlock } from '../organizeLinkDefs.js';\nimport { codeActionKindContains } from './util.js';\nexport class MdExtractLinkDefinitionCodeActionProvider {\n static genericTitle = l10n.t('Extract to link definition');\n static #kind = lsp.CodeActionKind.RefactorExtract + '.linkDefinition';\n static notOnLinkAction = {\n title: this.genericTitle,\n kind: this.#kind,\n disabled: {\n reason: l10n.t('Not on link'),\n }\n };\n static alreadyRefLinkAction = {\n title: this.genericTitle,\n kind: this.#kind,\n disabled: {\n reason: l10n.t('Link is already a reference'),\n }\n };\n #linkProvider;\n constructor(linkProvider) {\n this.#linkProvider = linkProvider;\n }\n async getActions(doc, range, context, token) {\n if (!this.#isEnabled(context)) {\n return [];\n }\n const linkInfo = await this.#linkProvider.getLinks(doc);\n if (token.isCancellationRequested) {\n return [];\n }\n const linksInRange = linkInfo.links.filter(link => link.kind !== MdLinkKind.Definition && rangeIntersects(range, link.source.range));\n if (!linksInRange.length) {\n return [_a.notOnLinkAction];\n }\n // Sort by range start to get most specific link\n linksInRange.sort((a, b) => comparePosition(b.source.range.start, a.source.range.start));\n // Even though multiple links may be in the selection, we only generate an action for the first link we find.\n // Creating actions for every link is overwhelming when users select all in a file\n const targetLink = linksInRange.find(link => link.href.kind === HrefKind.External || link.href.kind === HrefKind.Internal);\n if (!targetLink) {\n return [_a.alreadyRefLinkAction];\n }\n return [this.#getExtractLinkAction(doc, linkInfo, targetLink)];\n }\n #isEnabled(context) {\n if (typeof context.only === 'undefined') {\n return true;\n }\n return context.only.some(kind => codeActionKindContains(lsp.CodeActionKind.Refactor, kind));\n }\n #getExtractLinkAction(doc, linkInfo, targetLink) {\n const builder = new WorkspaceEditBuilder();\n const resource = getDocUri(doc);\n const placeholder = this.#getPlaceholder(linkInfo.definitions);\n // Rewrite all inline occurrences of the link\n for (const link of linkInfo.links) {\n if (link.kind === MdLinkKind.Link || link.kind === MdLinkKind.AutoLink) {\n if (this.#matchesHref(targetLink.href, link)) {\n const targetRange = link.kind === MdLinkKind.AutoLink ? link.source.range : link.source.targetRange;\n builder.replace(resource, targetRange, `[${placeholder}]`);\n }\n }\n }\n const definitionText = getLinkTargetText(doc, targetLink).trim();\n const definitions = linkInfo.links.filter(link => link.kind === MdLinkKind.Definition);\n const defEdit = createAddDefinitionEdit(doc, definitions, [{ definitionText, placeholder }]);\n builder.insert(resource, defEdit.range.start, defEdit.newText);\n const renamePosition = translatePosition(targetLink.source.targetRange.start, { characterDelta: 1 });\n return {\n title: _a.genericTitle,\n kind: _a.#kind,\n edit: builder.getEdit(),\n command: {\n command: 'vscodeMarkdownLanguageservice.rename',\n title: 'Rename',\n arguments: [getDocUri(doc), renamePosition],\n }\n };\n }\n #getPlaceholder(definitions) {\n const base = 'def';\n for (let i = 1;; ++i) {\n const name = i === 1 ? base : `${base}${i}`;\n if (typeof definitions.lookup(name) === 'undefined') {\n return name;\n }\n }\n }\n #matchesHref(href, link) {\n if (link.href.kind === HrefKind.External && href.kind === HrefKind.External) {\n return isSameResource(link.href.uri, href.uri);\n }\n if (link.href.kind === HrefKind.Internal && href.kind === HrefKind.Internal) {\n return isSameResource(link.href.path, href.path) && link.href.fragment === href.fragment;\n }\n return false;\n }\n}\n_a = MdExtractLinkDefinitionCodeActionProvider;\nexport function createAddDefinitionEdit(doc, existingDefinitions, newDefs) {\n const defBlock = getExistingDefinitionBlock(doc, existingDefinitions);\n const newDefText = newDefs.map(({ definitionText, placeholder }) => `[${placeholder}]: ${definitionText}`).join('\\n');\n if (!defBlock) {\n return lsp.TextEdit.insert({ line: doc.lineCount, character: 0 }, '\\n\\n' + newDefText);\n }\n else {\n const line = getLine(doc, defBlock.endLine);\n return lsp.TextEdit.insert({ line: defBlock.endLine, character: line.length }, '\\n' + newDefText);\n }\n}\nfunction getLinkTargetText(doc, link) {\n const afterHrefRange = link.kind === MdLinkKind.AutoLink\n ? link.source.targetRange\n : lsp.Range.create(translatePosition(link.source.targetRange.start, { characterDelta: 1 }), translatePosition(link.source.targetRange.end, { characterDelta: -1 }));\n return doc.getText(afterHrefRange);\n}\n//# sourceMappingURL=extractLinkDef.js.map","/*---------------------------------------------------------------------------------------------\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 *--------------------------------------------------------------------------------------------*/\n/**\n * The level of verbosity that the language service logs at.\n */\nexport var LogLevel;\n(function (LogLevel) {\n /** Disable logging */\n LogLevel[LogLevel[\"Off\"] = 0] = \"Off\";\n /** Log verbose info about language server operation, such as when references are re-computed for a md file. */\n LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\n /** Log extremely verbose info about language server operation, such as calls into the file system */\n LogLevel[LogLevel[\"Trace\"] = 2] = \"Trace\";\n})(LogLevel || (LogLevel = {}));\n//# sourceMappingURL=logging.js.map","/*---------------------------------------------------------------------------------------------\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 MultiDisposeError extends Error {\n errors;\n constructor(errors) {\n super(`Encountered errors while disposing of store. Errors: [${errors.join(', ')}]`);\n this.errors = errors;\n }\n}\nexport function disposeAll(disposables) {\n const errors = [];\n for (const disposable of disposables) {\n try {\n disposable.dispose();\n }\n catch (e) {\n errors.push(e);\n }\n }\n if (errors.length === 1) {\n throw errors[0];\n }\n else if (errors.length > 1) {\n throw new MultiDisposeError(errors);\n }\n}\nexport class Disposable {\n #isDisposed = false;\n _disposables = [];\n dispose() {\n if (this.#isDisposed) {\n return;\n }\n this.#isDisposed = true;\n disposeAll(this._disposables);\n }\n _register(value) {\n if (this.#isDisposed) {\n value.dispose();\n }\n else {\n this._disposables.push(value);\n }\n return value;\n }\n get isDisposed() {\n return this.#isDisposed;\n }\n}\n//# sourceMappingURL=dispose.js.map","/*---------------------------------------------------------------------------------------------\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 *--------------------------------------------------------------------------------------------*/\n/**\n * A helper to queue N promises and run them all with a max degree of parallelism. The helper\n * ensures that at any time no more than M promises are running at the same time.\n *\n * Taken from 'src/vs/base/common/async.ts'\n */\nexport class Limiter {\n #size = 0;\n #runningPromises;\n #maxDegreeOfParalellism;\n #outstandingPromises;\n constructor(maxDegreeOfParalellism) {\n this.#maxDegreeOfParalellism = maxDegreeOfParalellism;\n this.#outstandingPromises = [];\n this.#runningPromises = 0;\n }\n get size() {\n return this.#size;\n }\n queue(factory) {\n this.#size++;\n return new Promise((c, e) => {\n this.#outstandingPromises.push({ factory, c, e });\n this.#consume();\n });\n }\n #consume() {\n while (this.#outstandingPromises.length && this.#runningPromises < this.#maxDegreeOfParalellism) {\n const iLimitedTask = this.#outstandingPromises.shift();\n this.#runningPromises++;\n const promise = iLimitedTask.factory();\n promise.then(iLimitedTask.c, iLimitedTask.e);\n promise.then(() => this.#consumed(), () => this.#consumed());\n }\n }\n #consumed() {\n this.#size--;\n this.#runningPromises--;\n if (this.#outstandingPromises.length > 0) {\n this.#consume();\n }\n }\n}\n//# sourceMappingURL=limiter.js.map","/*---------------------------------------------------------------------------------------------\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 *--------------------------------------------------------------------------------------------*/\nconst defaultResourceToKey = (resource) => resource.toString();\nexport class ResourceMap {\n #map = new Map();\n #toKey;\n constructor(toKey = defaultResourceToKey) {\n this.#toKey = toKey;\n }\n set(uri, value) {\n this.#map.set(this.#toKey(uri), { uri, value });\n return this;\n }\n get(resource) {\n return this.#map.get(this.#toKey(resource))?.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 *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 [Symbol.iterator]() {\n return this.entries();\n }\n}\n//# sourceMappingURL=resourceMap.js.map","/*---------------------------------------------------------------------------------------------\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 { Utils } from './util/vscodeUri.js';\nimport { defaultMarkdownFileExtension } from './config.js';\nexport function isWorkspaceWithFileWatching(workspace) {\n return 'watchFile' in workspace;\n}\nexport function getWorkspaceFolder(workspace, docUri) {\n if (workspace.workspaceFolders.length === 0) {\n return undefined;\n }\n // Find the longest match\n const possibleWorkspaces = workspace.workspaceFolders\n .filter(folder => folder.scheme === docUri.scheme\n && folder.authority === docUri.authority\n && (docUri.fsPath.startsWith(folder.fsPath + '/') || docUri.fsPath.startsWith(folder.fsPath + '\\\\')))\n .sort((a, b) => b.fsPath.length - a.fsPath.length);\n if (possibleWorkspaces.length) {\n return possibleWorkspaces[0];\n }\n // Default to first workspace\n // TODO: Does this make sense?\n return workspace.workspaceFolders[0];\n}\nexport async function openLinkToMarkdownFile(config, workspace, resource) {\n try {\n const doc = await workspace.openMarkdownDocument(resource);\n if (doc) {\n return doc;\n }\n }\n catch {\n // Noop\n }\n const dotMdResource = tryAppendMarkdownFileExtension(config, resource);\n if (dotMdResource) {\n return workspace.openMarkdownDocument(dotMdResource);\n }\n return undefined;\n}\n/**\n * Check that a link to a file exists.\n *\n * @returns The resolved URI or `undefined` if the file does not exist.\n */\nexport async function statLinkToMarkdownFile(config, workspace, linkUri, out_statCache) {\n const exists = async (uri) => {\n const result = await workspace.stat(uri);\n out_statCache?.set(uri, { exists: !!result });\n return !!result;\n };\n if (await exists(linkUri)) {\n return linkUri;\n }\n // We don't think the file exists. See if we need to append `.md`\n const dotMdResource = tryAppendMarkdownFileExtension(config, linkUri);\n if (dotMdResource && await exists(dotMdResource)) {\n return dotMdResource;\n }\n return undefined;\n}\nexport function tryAppendMarkdownFileExtension(config, linkUri) {\n const ext = Utils.extname(linkUri).toLowerCase().replace(/^\\./, '');\n if (config.markdownFileExtensions.includes(ext)) {\n return linkUri;\n }\n if (ext === '' || !config.knownLinkedToFileExtensions.includes(ext)) {\n return linkUri.with({ path: linkUri.path + '.' + (config.markdownFileExtensions[0] ?? defaultMarkdownFileExtension) });\n }\n return undefined;\n}\n//# sourceMappingURL=workspace.js.map","/*---------------------------------------------------------------------------------------------\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 l10n from '@vscode/l10n';\nimport picomatch from 'picomatch';\nimport * as lsp from 'vscode-languageserver-protocol';\nimport { LogLevel } from '../logging.js';\nimport { HrefKind, MdLinkKind, ReferenceLinkMap } from '../types/documentLink.js';\nimport { translatePosition } from '../types/position.js';\nimport { modifyRange } from '../types/range.js';\nimport { getDocUri } from '../types/textDocument.js';\nimport { Disposable } from '../util/dispose.js';\nimport { Limiter } from '../util/limiter.js';\nimport { isSameResource, looksLikeMarkdownUri, parseLocationInfoFromFragment } from '../util/path.js';\nimport { ResourceMap } from '../util/resourceMap.js';\nimport { statLinkToMarkdownFile } from '../workspace.js';\n/**\n * The severity at which diagnostics are reported\n */\nexport var DiagnosticLevel;\n(function (DiagnosticLevel) {\n /** Don't report this diagnostic. */\n DiagnosticLevel[\"ignore\"] = \"ignore\";\n /**\n * Report the diagnostic at a hint level.\n *\n * Hints will typically not be directly reported by editors, but may show up as unused spans.\n */\n DiagnosticLevel[\"hint\"] = \"hint\";\n /** Report the diagnostic as a warning. */\n DiagnosticLevel[\"warning\"] = \"warning\";\n /** Report the diagnostic as an error. */\n DiagnosticLevel[\"error\"] = \"error\";\n})(DiagnosticLevel || (DiagnosticLevel = {}));\nfunction toSeverity(level) {\n switch (level) {\n case DiagnosticLevel.error: return lsp.DiagnosticSeverity.Error;\n case DiagnosticLevel.warning: return lsp.DiagnosticSeverity.Warning;\n case DiagnosticLevel.hint: return lsp.DiagnosticSeverity.Hint;\n case DiagnosticLevel.ignore: return undefined;\n case undefined: return undefined;\n }\n}\n/**\n * Error codes of Markdown diagnostics\n */\nexport var DiagnosticCode;\n(function (DiagnosticCode) {\n /** The linked to reference does not exist. */\n DiagnosticCode[\"link_noSuchReferences\"] = \"link.no-such-reference\";\n /** The linked to heading does not exist in the current file. */\n DiagnosticCode[\"link_noSuchHeaderInOwnFile\"] = \"link.no-such-header-in-own-file\";\n /** The linked to local file does not exist. */\n DiagnosticCode[\"link_noSuchFile\"] = \"link.no-such-file\";\n /** The linked to heading does not exist in the another file. */\n DiagnosticCode[\"link_noSuchHeaderInFile\"] = \"link.no-such-header-in-file\";\n /** The link definition is not used anywhere. */\n DiagnosticCode[\"link_unusedDefinition\"] = \"link.unused-definition\";\n /** The link definition is not used anywhere. */\n DiagnosticCode[\"link_duplicateDefinition\"] = \"link.duplicate-definition\";\n})(DiagnosticCode || (DiagnosticCode = {}));\n/**\n * Map of file paths to markdown links to that file.\n */\nclass FileLinkMap {\n #filesToLinksMap = new ResourceMap();\n constructor(links) {\n for (const link of links) {\n if (link.href.kind !== HrefKind.Internal) {\n continue;\n }\n const existingFileEntry = this.#filesToLinksMap.get(link.href.path);\n const linkData = { source: link.source, fragment: link.href.fragment };\n if (existingFileEntry) {\n existingFileEntry.outgoingLinks.push(linkData);\n }\n else {\n this.#filesToLinksMap.set(link.href.path, { outgoingLinks: [linkData] });\n }\n }\n }\n get size() {\n return this.#filesToLinksMap.size;\n }\n entries() {\n return this.#filesToLinksMap.entries();\n }\n}\nexport class DiagnosticComputer {\n #configuration;\n #workspace;\n #linkProvider;\n #tocProvider;\n #logger;\n constructor(configuration, workspace, linkProvider, tocProvider, logger) {\n this.#configuration = configuration;\n this.#workspace = workspace;\n this.#linkProvider = linkProvider;\n this.#tocProvider = tocProvider;\n this.#logger = logger;\n }\n async compute(doc, options, token) {\n this.#logger.log(LogLevel.Debug, 'DiagnosticComputer.compute', { document: doc.uri, version: doc.version });\n const { links, definitions } = await this.#linkProvider.getLinks(doc);\n const statCache = new ResourceMap();\n if (token.isCancellationRequested) {\n return { links, diagnostics: [], statCache };\n }\n // Current doc always implicitly exists\n statCache.set(getDocUri(doc), { exists: true });\n const diagnostics = (await Promise.all([\n this.#validateFileLinks(options, links, statCache, token),\n this.#validateFragmentLinks(doc, options, links, token),\n Array.from(this.#validateReferenceLinks(options, links, definitions)),\n Array.from(this.#validateUnusedLinkDefinitions(options, links)),\n Array.from(this.#validateDuplicateLinkDefinitions(options, links)),\n ])).flat();\n this.#logger.log(LogLevel.Trace, 'DiagnosticComputer.compute finished', { document: doc.uri, version: doc.version, diagnostics });\n return {\n links: links,\n statCache,\n diagnostics: diagnostics\n };\n }\n async #validateFragmentLinks(doc, options, links, token) {\n const severity = toSeverity(options.validateFragmentLinks);\n if (typeof severity === 'undefined') {\n return [];\n }\n const toc = await this.#tocProvider.getForDocument(doc, { includeHtmlIds: true });\n if (token.isCancellationRequested) {\n return [];\n }\n const diagnostics = [];\n for (const link of links) {\n if (link.href.kind === HrefKind.Internal\n && link.source.hrefText.startsWith('#')\n && isSameResource(link.href.path, getDocUri(doc))\n && link.href.fragment\n && !toc.lookByLink({ isAngleBracketLink: link.source.isAngleBracketLink, fragment: link.href.fragment })) {\n // Don't validate line number links\n if (parseLocationInfoFromFragment(link.href.fragment)) {\n continue;\n }\n if (!this.#isIgnoredLink(options, link.source.hrefText)) {\n diagnostics.push({\n code: DiagnosticCode.link_noSuchHeaderInOwnFile,\n message: l10n.t('No header found: \\'{0}\\'', link.href.fragment),\n range: link.source.hrefRange,\n severity,\n data: {\n hrefText: link.source.hrefText\n }\n });\n }\n }\n }\n return diagnostics;\n }\n *#validateReferenceLinks(options, links, definitions) {\n const severity = toSeverity(options.validateReferences);\n if (typeof severity === 'undefined') {\n return [];\n }\n for (const link of links) {\n if (link.href.kind === HrefKind.Reference && !definitions.lookup(link.href.ref)) {\n yield {\n code: DiagnosticCode.link_noSuchReferences,\n message: l10n.t('No link definition found: \\'{0}\\'', link.href.ref),\n range: link.source.hrefRange,\n severity,\n data: {\n ref: link.href.ref,\n },\n };\n }\n }\n }\n *#validateUnusedLinkDefinitions(options, links) {\n const errorSeverity = toSeverity(options.validateUnusedLinkDefinitions);\n if (typeof errorSeverity === 'undefined') {\n return;\n }\n const usedRefs = new ReferenceLinkMap();\n for (const link of links) {\n if (link.kind === MdLinkKind.Link && link.href.kind === HrefKind.Reference) {\n usedRefs.set(link.href.ref, true);\n }\n }\n for (const link of links) {\n if (link.kind === MdLinkKind.Definition && !usedRefs.lookup(link.ref.text)) {\n yield {\n code: DiagnosticCode.link_unusedDefinition,\n message: l10n.t('Link definition is unused'),\n range: link.source.range,\n severity: errorSeverity,\n tags: [\n lsp.DiagnosticTag.Unnecessary,\n ],\n data: link\n };\n }\n }\n }\n *#validateDuplicateLinkDefinitions(options, links) {\n const errorSeverity = toSeverity(options.validateDuplicateLinkDefinitions);\n if (typeof errorSeverity === 'undefined') {\n return;\n }\n const definitionMultiMap = new Map();\n for (const link of links) {\n if (link.kind === MdLinkKind.Definition) {\n const existing = definitionMultiMap.get(link.ref.text);\n if (existing) {\n existing.push(link);\n }\n else {\n definitionMultiMap.set(link.ref.text, [link]);\n }\n }\n }\n for (const [ref, defs] of definitionMultiMap) {\n if (defs.length <= 1) {\n continue;\n }\n for (const duplicateDef of defs) {\n yield {\n code: DiagnosticCode.link_duplicateDefinition,\n message: l10n.t('Link definition for \\'{0}\\' already exists', ref),\n range: duplicateDef.ref.range,\n severity: errorSeverity,\n relatedInformation: defs\n .filter(x => x !== duplicateDef)\n .map(def => lsp.DiagnosticRelatedInformation.create({ uri: def.source.resource.toString(), range: def.ref.range }, l10n.t('Link is also defined here'))),\n data: duplicateDef\n };\n }\n }\n }\n async #validateFileLinks(options, links, statCache, token) {\n const pathErrorSeverity = toSeverity(options.validateFileLinks);\n if (typeof pathErrorSeverity === 'undefined') {\n return [];\n }\n const fragmentErrorSeverity = toSeverity(typeof options.validateMarkdownFileLinkFragments === 'undefined' ? options.validateFragmentLinks : options.validateMarkdownFileLinkFragments);\n // We've already validated our own fragment links in `validateOwnHeaderLinks`\n const linkSet = new FileLinkMap(links.filter(link => !link.source.hrefText.startsWith('#')));\n if (linkSet.size === 0) {\n return [];\n }\n const limiter = new Limiter(10);\n const diagnostics = [];\n await Promise.all(Array.from(linkSet.entries()).map(([path, { outgoingLinks: links }]) => {\n return limiter.queue(async () => {\n if (token.isCancellationRequested) {\n return;\n }\n const resolvedHrefPath = await statLinkToMarkdownFile(this.#configuration, this.#workspace, path, statCache);\n if (token.isCancellationRequested) {\n return;\n }\n if (!resolvedHrefPath) {\n for (const link of links) {\n if (!this.#isIgnoredLink(options, link.source.hrefPathText)) {\n diagnostics.push({\n code: DiagnosticCode.link_noSuchFile,\n message: l10n.t('File does not exist at path: {0}', path.fsPath),\n range: link.source.hrefRange,\n severity: pathErrorSeverity,\n data: {\n fsPath: path.fsPath,\n hrefText: link.source.hrefPathText,\n }\n });\n }\n }\n }\n else if (typeof fragmentErrorSeverity !== 'undefined' && this.#isMarkdownPath(resolvedHrefPath)) {\n // Validate each of the links to headers in the file\n const fragmentLinks = links.filter(x => x.fragment);\n if (fragmentLinks.length) {\n const toc = await this.#tocProvider.get(resolvedHrefPath, { includeHtmlIds: true });\n if (token.isCancellationRequested) {\n return;\n }\n for (const link of fragmentLinks) {\n // Don't validate line number links\n if (parseLocationInfoFromFragment(link.fragment)) {\n continue;\n }\n if (!(toc && toc.lookByLink({ isAngleBracketLink: link.source.isAngleBracketLink, fragment: link.fragment })) && !this.#isIgnoredLink(options, link.source.hrefPathText) && !this.#isIgnoredLink(options, link.source.hrefText)) {\n const range = (link.source.hrefFragmentRange && modifyRange(link.source.hrefFragmentRange, translatePosition(link.source.hrefFragmentRange.start, { characterDelta: -1 }), undefined)) ?? link.source.hrefRange;\n diagnostics.push({\n code: DiagnosticCode.link_noSuchHeaderInFile,\n message: l10n.t('Header does not exist in file: {0}', link.fragment),\n range: range,\n severity: fragmentErrorSeverity,\n data: {\n fragment: link.fragment,\n hrefText: link.source.hrefText\n },\n });\n }\n }\n }\n }\n });\n }));\n return diagnostics;\n }\n #isMarkdownPath(resolvedHrefPath) {\n return this.#workspace.hasMarkdownDocument(resolvedHrefPath) || looksLikeMarkdownUri(this.#configuration, resolvedHrefPath);\n }\n #isIgnoredLink(options, link) {\n return options.ignoreLinks.some(glob => picomatch.isMatch(link, glob));\n }\n}\nclass FileLinkState extends Disposable {\n #onDidChangeLinkedToFile = this._register(new lsp.Emitter);\n /**\n * Event fired with a list of document uri when one of the links in the document changes\n */\n onDidChangeLinkedToFile = this.#onDidChangeLinkedToFile.event;\n #linkedToFile = new ResourceMap();\n #workspace;\n #logger;\n constructor(workspace, logger) {\n super();\n this.#workspace = workspace;\n this.#logger = logger;\n }\n dispose() {\n super.dispose();\n for (const entry of this.#linkedToFile.values()) {\n entry.watcher.dispose();\n }\n this.#linkedToFile.clear();\n }\n /**\n * Set the known links in a markdown document, adding and removing file watchers as needed\n */\n updateLinksForDocument(document, links, statCache) {\n const linkedToResource = new Set(links\n .filter(link => link.href.kind === HrefKind.Internal)\n .map(link => ({ path: link.href.path, exists: !!(statCache.get(link.href.path)?.exists) })));\n // First decrement watcher counter for previous document state\n for (const entry of this.#linkedToFile.values()) {\n entry.documents.delete(document);\n }\n // Then create/update watchers for new document state\n for (const { path, exists } of linkedToResource) {\n let entry = this.#linkedToFile.get(path);\n if (!entry) {\n entry = {\n watcher: this.#startWatching(path),\n documents: new ResourceMap(),\n exists\n };\n this.#linkedToFile.set(path, entry);\n }\n entry.documents.set(document, document);\n }\n // Finally clean up watchers for links that are no longer are referenced anywhere\n for (const [key, value] of this.#linkedToFile) {\n if (value.documents.size === 0) {\n value.watcher.dispose();\n this.#linkedToFile.delete(key);\n }\n }\n }\n deleteDocument(resource) {\n this.updateLinksForDocument(resource, [], new ResourceMap());\n }\n tryStatFileLink(link) {\n const entry = this.#linkedToFile.get(link);\n if (!entry) {\n return undefined;\n }\n return { exists: entry.exists };\n }\n #startWatching(path) {\n const watcher = this.#workspace.watchFile(path, { ignoreChange: true });\n const deleteReg = watcher.onDidDelete((resource) => this.#onLinkedResourceChanged(resource, false));\n const createReg = watcher.onDidCreate((resource) => this.#onLinkedResourceChanged(resource, true));\n return {\n dispose: () => {\n watcher.dispose();\n deleteReg.dispose();\n createReg.dispose();\n }\n };\n }\n #onLinkedResourceChanged(resource, exists) {\n this.#logger.log(LogLevel.Trace, 'FileLinkState.onLinkedResourceChanged', { resource, exists });\n const entry = this.#linkedToFile.get(resource);\n if (entry) {\n entry.exists = exists;\n this.#onDidChangeLinkedToFile.fire({\n changedResource: resource,\n linkingFiles: entry.documents.values(),\n exists,\n });\n }\n }\n}\nexport class DiagnosticsManager extends Disposable {\n #computer;\n #linkWatcher;\n #onLinkedToFileChanged = this._register(new lsp.Emitter());\n onLinkedToFileChanged = this.#onLinkedToFileChanged.event;\n constructor(configuration, workspace, linkProvider, tocProvider, logger) {\n super();\n const linkWatcher = new FileLinkState(workspace, logger);\n this.#linkWatcher = this._register(linkWatcher);\n this._register(this.#linkWatcher.onDidChangeLinkedToFile(e => {\n logger.log(LogLevel.Trace, 'DiagnosticsManager.onDidChangeLinkedToFile', { resource: e.changedResource });\n this.#onLinkedToFileChanged.fire({\n changedResource: e.changedResource,\n linkingResources: Array.from(e.linkingFiles),\n });\n }));\n const stateCachedWorkspace = new Proxy(workspace, {\n get(target, p, receiver) {\n if (p !== 'stat') {\n const value = Reflect.get(target, p, receiver);\n return typeof value === 'function' ? value.bind(workspace) : value;\n }\n return async function (resource) {\n const stat = linkWatcher.tryStatFileLink(resource);\n if (stat) {\n if (stat.exists) {\n return { isDirectory: false };\n }\n else {\n return undefined;\n }\n }\n return workspace.stat.call(this === receiver ? target : this, resource);\n };\n },\n });\n this.#computer = new DiagnosticComputer(configuration, stateCachedWorkspace, linkProvider, tocProvider, logger);\n this._register(workspace.onDidDeleteMarkdownDocument(uri => {\n this.#linkWatcher.deleteDocument(uri);\n }));\n }\n async computeDiagnostics(doc, options, token) {\n const results = await this.#computer.compute(doc, options, token);\n if (token.isCancellationRequested) {\n return [];\n }\n this.#linkWatcher.updateLinksForDocument(getDocUri(doc), results.links, results.statCache);\n return results.diagnostics;\n }\n disposeDocumentResources(uri) {\n this.#linkWatcher.deleteDocument(uri);\n }\n}\n//# sourceMappingURL=diagnostics.js.map","/*---------------------------------------------------------------------------------------------\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 l10n from '@vscode/l10n';\nimport * as lsp from 'vscode-languageserver-protocol';\nimport { rangeIntersects } from '../../types/range.js';\nimport { getDocUri } from '../../types/textDocument.js';\nimport { WorkspaceEditBuilder } from '../../util/editBuilder.js';\nimport { DiagnosticCode } from '../diagnostics.js';\nimport { codeActionKindContains } from './util.js';\nexport class MdRemoveLinkDefinitionCodeActionProvider {\n static #removeUnusedDefTitle = l10n.t('Remove unused link definition');\n static #removeDuplicateDefTitle = l10n.t('Remove duplicate link definition');\n *getActions(doc, range, context) {\n if (!this.#isEnabled(context)) {\n return;\n }\n const unusedDiagnosticLines = new Set();\n for (const diag of context.diagnostics) {\n if (diag.code === DiagnosticCode.link_unusedDefinition && diag.data && rangeIntersects(diag.range, range)) {\n const link = diag.data;\n yield this.#getRemoveDefinitionAction(doc, link, MdRemoveLinkDefinitionCodeActionProvider.#removeUnusedDefTitle);\n unusedDiagnosticLines.add(link.source.range.start.line);\n }\n }\n for (const diag of context.diagnostics) {\n if (diag.code === DiagnosticCode.link_duplicateDefinition && diag.data && rangeIntersects(diag.range, range)) {\n const link = diag.data;\n if (!unusedDiagnosticLines.has(link.source.range.start.line)) {\n yield this.#getRemoveDefinitionAction(doc, link, MdRemoveLinkDefinitionCodeActionProvider.#removeDuplicateDefTitle);\n }\n }\n }\n }\n #isEnabled(context) {\n if (typeof context.only === 'undefined') {\n return true;\n }\n return context.only.some(kind => codeActionKindContains(lsp.CodeActionKind.QuickFix, kind));\n }\n #getRemoveDefinitionAction(doc, definition, title) {\n const builder = new WorkspaceEditBuilder();\n const range = definition.source.range;\n builder.replace(getDocUri(doc), lsp.Range.create(range.start.line, 0, range.start.line + 1, 0), '');\n return { title, kind: lsp.CodeActionKind.QuickFix, edit: builder.getEdit() };\n }\n}\n//# sourceMappingURL=removeLinkDefinition.js.map","import { HrefKind, LinkDefinitionSet, MdLinkKind } from '../types/documentLink.js';\nimport { rangeContains } from '../types/range.js';\nimport { statLinkToMarkdownFile } from '../workspace.js';\nexport class MdDefinitionProvider {\n #configuration;\n #workspace;\n #tocProvider;\n #linkCache;\n constructor(configuration, workspace, tocProvider, linkCache) {\n this.#configuration = configuration;\n this.#workspace = workspace;\n this.#tocProvider = tocProvider;\n this.#linkCache = linkCache;\n }\n async provideDefinition(document, position, token) {\n const toc = await this.#tocProvider.getForDocument(document);\n if (token.isCancellationRequested) {\n return [];\n }\n const entryAtPosition = toc.entries.find(entry => rangeContains(entry.declarationLocation.range, position));\n if (entryAtPosition) {\n return entryAtPosition.declarationLocation;\n }\n return this.#getDefinitionOfLinkAtPosition(document, position, token);\n }\n async #getDefinitionOfLinkAtPosition(document, position, token) {\n const docLinks = (await this.#linkCache.getForDocs([document]))[0];\n for (const link of docLinks) {\n if (link.kind === MdLinkKind.Definition && rangeContains(link.ref.range, position)) {\n return this.#getDefinitionOfRef(link.ref.text, docLinks);\n }\n if (rangeContains(link.source.hrefRange, position)) {\n return this.#getDefinitionOfLink(link, docLinks, token);\n }\n }\n return undefined;\n }\n async #getDefinitionOfLink(sourceLink, allLinksInFile, token) {\n if (sourceLink.href.kind === HrefKind.Reference) {\n return this.#getDefinitionOfRef(sourceLink.href.ref, allLinksInFile);\n }\n if (sourceLink.href.kind === HrefKind.External || !sourceLink.href.fragment) {\n return undefined;\n }\n const resolvedResource = await statLinkToMarkdownFile(this.#configuration, this.#workspace, sourceLink.href.path);\n if (!resolvedResource || token.isCancellationRequested) {\n return undefined;\n }\n const toc = await this.#tocProvider.get(resolvedResource);\n return toc?.lookupByFragment(sourceLink.href.fragment)?.declarationLocation;\n }\n #getDefinitionOfRef(ref, allLinksInFile) {\n const allDefinitions = new LinkDefinitionSet(allLinksInFile);\n const def = allDefinitions.lookup(ref);\n return def ? { range: def.source.range, uri: def.source.resource.toString() } : undefined;\n }\n}\n//# sourceMappingURL=definitions.js.map","/*! https://mths.be/he v1.2.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code,\n\t// and use it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t// All astral symbols.\n\tvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\t// All ASCII symbols (not just printable ASCII) except those listed in the\n\t// first column of the overrides table.\n\t// https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides\n\tvar regexAsciiWhitelist = /[\\x01-\\x7F]/g;\n\t// All BMP symbols that are not ASCII newlines, printable ASCII symbols, or\n\t// code points listed in the first column of the overrides table on\n\t// https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides.\n\tvar regexBmpWhitelist = /[\\x01-\\t\\x0B\\f\\x0E-\\x1F\\x7F\\x81\\x8D\\x8F\\x90\\x9D\\xA0-\\uFFFF]/g;\n\n\tvar regexEncodeNonAscii = /<\\u20D2|=\\u20E5|>\\u20D2|\\u205F\\u200A|\\u219D\\u0338|\\u2202\\u0338|\\u2220\\u20D2|\\u2229\\uFE00|\\u222A\\uFE00|\\u223C\\u20D2|\\u223D\\u0331|\\u223E\\u0333|\\u2242\\u0338|\\u224B\\u0338|\\u224D\\u20D2|\\u224E\\u0338|\\u224F\\u0338|\\u2250\\u0338|\\u2261\\u20E5|\\u2264\\u20D2|\\u2265\\u20D2|\\u2266\\u0338|\\u2267\\u0338|\\u2268\\uFE00|\\u2269\\uFE00|\\u226A\\u0338|\\u226A\\u20D2|\\u226B\\u0338|\\u226B\\u20D2|\\u227F\\u0338|\\u2282\\u20D2|\\u2283\\u20D2|\\u228A\\uFE00|\\u228B\\uFE00|\\u228F\\u0338|\\u2290\\u0338|\\u2293\\uFE00|\\u2294\\uFE00|\\u22B4\\u20D2|\\u22B5\\u20D2|\\u22D8\\u0338|\\u22D9\\u0338|\\u22DA\\uFE00|\\u22DB\\uFE00|\\u22F5\\u0338|\\u22F9\\u0338|\\u2933\\u0338|\\u29CF\\u0338|\\u29D0\\u0338|\\u2A6D\\u0338|\\u2A70\\u0338|\\u2A7D\\u0338|\\u2A7E\\u0338|\\u2AA1\\u0338|\\u2AA2\\u0338|\\u2AAC\\uFE00|\\u2AAD\\uFE00|\\u2AAF\\u0338|\\u2AB0\\u0338|\\u2AC5\\u0338|\\u2AC6\\u0338|\\u2ACB\\uFE00|\\u2ACC\\uFE00|\\u2AFD\\u20E5|[\\xA0-\\u0113\\u0116-\\u0122\\u0124-\\u012B\\u012E-\\u014D\\u0150-\\u017E\\u0192\\u01B5\\u01F5\\u0237\\u02C6\\u02C7\\u02D8-\\u02DD\\u0311\\u0391-\\u03A1\\u03A3-\\u03A9\\u03B1-\\u03C9\\u03D1\\u03D2\\u03D5\\u03D6\\u03DC\\u03DD\\u03F0\\u03F1\\u03F5\\u03F6\\u0401-\\u040C\\u040E-\\u044F\\u0451-\\u045C\\u045E\\u045F\\u2002-\\u2005\\u2007-\\u2010\\u2013-\\u2016\\u2018-\\u201A\\u201C-\\u201E\\u2020-\\u2022\\u2025\\u2026\\u2030-\\u2035\\u2039\\u203A\\u203E\\u2041\\u2043\\u2044\\u204F\\u2057\\u205F-\\u2063\\u20AC\\u20DB\\u20DC\\u2102\\u2105\\u210A-\\u2113\\u2115-\\u211E\\u2122\\u2124\\u2127-\\u2129\\u212C\\u212D\\u212F-\\u2131\\u2133-\\u2138\\u2145-\\u2148\\u2153-\\u215E\\u2190-\\u219B\\u219D-\\u21A7\\u21A9-\\u21AE\\u21B0-\\u21B3\\u21B5-\\u21B7\\u21BA-\\u21DB\\u21DD\\u21E4\\u21E5\\u21F5\\u21FD-\\u2205\\u2207-\\u2209\\u220B\\u220C\\u220F-\\u2214\\u2216-\\u2218\\u221A\\u221D-\\u2238\\u223A-\\u2257\\u2259\\u225A\\u225C\\u225F-\\u2262\\u2264-\\u228B\\u228D-\\u229B\\u229D-\\u22A5\\u22A7-\\u22B0\\u22B2-\\u22BB\\u22BD-\\u22DB\\u22DE-\\u22E3\\u22E6-\\u22F7\\u22F9-\\u22FE\\u2305\\u2306\\u2308-\\u2310\\u2312\\u2313\\u2315\\u2316\\u231C-\\u231F\\u2322\\u2323\\u232D\\u232E\\u2336\\u233D\\u233F\\u237C\\u23B0\\u23B1\\u23B4-\\u23B6\\u23DC-\\u23DF\\u23E2\\u23E7\\u2423\\u24C8\\u2500\\u2502\\u250C\\u2510\\u2514\\u2518\\u251C\\u2524\\u252C\\u2534\\u253C\\u2550-\\u256C\\u2580\\u2584\\u2588\\u2591-\\u2593\\u25A1\\u25AA\\u25AB\\u25AD\\u25AE\\u25B1\\u25B3-\\u25B5\\u25B8\\u25B9\\u25BD-\\u25BF\\u25C2\\u25C3\\u25CA\\u25CB\\u25EC\\u25EF\\u25F8-\\u25FC\\u2605\\u2606\\u260E\\u2640\\u2642\\u2660\\u2663\\u2665\\u2666\\u266A\\u266D-\\u266F\\u2713\\u2717\\u2720\\u2736\\u2758\\u2772\\u2773\\u27C8\\u27C9\\u27E6-\\u27ED\\u27F5-\\u27FA\\u27FC\\u27FF\\u2902-\\u2905\\u290C-\\u2913\\u2916\\u2919-\\u2920\\u2923-\\u292A\\u2933\\u2935-\\u2939\\u293C\\u293D\\u2945\\u2948-\\u294B\\u294E-\\u2976\\u2978\\u2979\\u297B-\\u297F\\u2985\\u2986\\u298B-\\u2996\\u299A\\u299C\\u299D\\u29A4-\\u29B7\\u29B9\\u29BB\\u29BC\\u29BE-\\u29C5\\u29C9\\u29CD-\\u29D0\\u29DC-\\u29DE\\u29E3-\\u29E5\\u29EB\\u29F4\\u29F6\\u2A00-\\u2A02\\u2A04\\u2A06\\u2A0C\\u2A0D\\u2A10-\\u2A17\\u2A22-\\u2A27\\u2A29\\u2A2A\\u2A2D-\\u2A31\\u2A33-\\u2A3C\\u2A3F\\u2A40\\u2A42-\\u2A4D\\u2A50\\u2A53-\\u2A58\\u2A5A-\\u2A5D\\u2A5F\\u2A66\\u2A6A\\u2A6D-\\u2A75\\u2A77-\\u2A9A\\u2A9D-\\u2AA2\\u2AA4-\\u2AB0\\u2AB3-\\u2AC8\\u2ACB\\u2ACC\\u2ACF-\\u2ADB\\u2AE4\\u2AE6-\\u2AE9\\u2AEB-\\u2AF3\\u2AFD\\uFB00-\\uFB04]|\\uD835[\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDCCF\\uDD04\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDD6B]/g;\n\tvar encodeMap = {'\\xAD':'shy','\\u200C':'zwnj','\\u200D':'zwj','\\u200E':'lrm','\\u2063':'ic','\\u2062':'it','\\u2061':'af','\\u200F':'rlm','\\u200B':'ZeroWidthSpace','\\u2060':'NoBreak','\\u0311':'DownBreve','\\u20DB':'tdot','\\u20DC':'DotDot','\\t':'Tab','\\n':'NewLine','\\u2008':'puncsp','\\u205F':'MediumSpace','\\u2009':'thinsp','\\u200A':'hairsp','\\u2004':'emsp13','\\u2002':'ensp','\\u2005':'emsp14','\\u2003':'emsp','\\u2007':'numsp','\\xA0':'nbsp','\\u205F\\u200A':'ThickSpace','\\u203E':'oline','_':'lowbar','\\u2010':'dash','\\u2013':'ndash','\\u2014':'mdash','\\u2015':'horbar',',':'comma',';':'semi','\\u204F':'bsemi',':':'colon','\\u2A74':'Colone','!':'excl','\\xA1':'iexcl','?':'quest','\\xBF':'iquest','.':'period','\\u2025':'nldr','\\u2026':'mldr','\\xB7':'middot','\\'':'apos','\\u2018':'lsquo','\\u2019':'rsquo','\\u201A':'sbquo','\\u2039':'lsaquo','\\u203A':'rsaquo','\"':'quot','\\u201C':'ldquo','\\u201D':'rdquo','\\u201E':'bdquo','\\xAB':'laquo','\\xBB':'raquo','(':'lpar',')':'rpar','[':'lsqb',']':'rsqb','{':'lcub','}':'rcub','\\u2308':'lceil','\\u2309':'rceil','\\u230A':'lfloor','\\u230B':'rfloor','\\u2985':'lopar','\\u2986':'ropar','\\u298B':'lbrke','\\u298C':'rbrke','\\u298D':'lbrkslu','\\u298E':'rbrksld','\\u298F':'lbrksld','\\u2990':'rbrkslu','\\u2991':'langd','\\u2992':'rangd','\\u2993':'lparlt','\\u2994':'rpargt','\\u2995':'gtlPar','\\u2996':'ltrPar','\\u27E6':'lobrk','\\u27E7':'robrk','\\u27E8':'lang','\\u27E9':'rang','\\u27EA':'Lang','\\u27EB':'Rang','\\u27EC':'loang','\\u27ED':'roang','\\u2772':'lbbrk','\\u2773':'rbbrk','\\u2016':'Vert','\\xA7':'sect','\\xB6':'para','@':'commat','*':'ast','/':'sol','undefined':null,'&':'amp','#':'num','%':'percnt','\\u2030':'permil','\\u2031':'pertenk','\\u2020':'dagger','\\u2021':'Dagger','\\u2022':'bull','\\u2043':'hybull','\\u2032':'prime','\\u2033':'Prime','\\u2034':'tprime','\\u2057':'qprime','\\u2035':'bprime','\\u2041':'caret','`':'grave','\\xB4':'acute','\\u02DC':'tilde','^':'Hat','\\xAF':'macr','\\u02D8':'breve','\\u02D9':'dot','\\xA8':'die','\\u02DA':'ring','\\u02DD':'dblac','\\xB8':'cedil','\\u02DB':'ogon','\\u02C6':'circ','\\u02C7':'caron','\\xB0':'deg','\\xA9':'copy','\\xAE':'reg','\\u2117':'copysr','\\u2118':'wp','\\u211E':'rx','\\u2127':'mho','\\u2129':'iiota','\\u2190':'larr','\\u219A':'nlarr','\\u2192':'rarr','\\u219B':'nrarr','\\u2191':'uarr','\\u2193':'darr','\\u2194':'harr','\\u21AE':'nharr','\\u2195':'varr','\\u2196':'nwarr','\\u2197':'nearr','\\u2198':'searr','\\u2199':'swarr','\\u219D':'rarrw','\\u219D\\u0338':'nrarrw','\\u219E':'Larr','\\u219F':'Uarr','\\u21A0':'Rarr','\\u21A1':'Darr','\\u21A2':'larrtl','\\u21A3':'rarrtl','\\u21A4':'mapstoleft','\\u21A5':'mapstoup','\\u21A6':'map','\\u21A7':'mapstodown','\\u21A9':'larrhk','\\u21AA':'rarrhk','\\u21AB':'larrlp','\\u21AC':'rarrlp','\\u21AD':'harrw','\\u21B0':'lsh','\\u21B1':'rsh','\\u21B2':'ldsh','\\u21B3':'rdsh','\\u21B5':'crarr','\\u21B6':'cularr','\\u21B7':'curarr','\\u21BA':'olarr','\\u21BB':'orarr','\\u21BC':'lharu','\\u21BD':'lhard','\\u21BE':'uharr','\\u21BF':'uharl','\\u21C0':'rharu','\\u21C1':'rhard','\\u21C2':'dharr','\\u21C3':'dharl','\\u21C4':'rlarr','\\u21C5':'udarr','\\u21C6':'lrarr','\\u21C7':'llarr','\\u21C8':'uuarr','\\u21C9':'rrarr','\\u21CA':'ddarr','\\u21CB':'lrhar','\\u21CC':'rlhar','\\u21D0':'lArr','\\u21CD':'nlArr','\\u21D1':'uArr','\\u21D2':'rArr','\\u21CF':'nrArr','\\u21D3':'dArr','\\u21D4':'iff','\\u21CE':'nhArr','\\u21D5':'vArr','\\u21D6':'nwArr','\\u21D7':'neArr','\\u21D8':'seArr','\\u21D9':'swArr','\\u21DA':'lAarr','\\u21DB':'rAarr','\\u21DD':'zigrarr','\\u21E4':'larrb','\\u21E5':'rarrb','\\u21F5':'duarr','\\u21FD':'loarr','\\u21FE':'roarr','\\u21FF':'hoarr','\\u2200':'forall','\\u2201':'comp','\\u2202':'part','\\u2202\\u0338':'npart','\\u2203':'exist','\\u2204':'nexist','\\u2205':'empty','\\u2207':'Del','\\u2208':'in','\\u2209':'notin','\\u220B':'ni','\\u220C':'notni','\\u03F6':'bepsi','\\u220F':'prod','\\u2210':'coprod','\\u2211':'sum','+':'plus','\\xB1':'pm','\\xF7':'div','\\xD7':'times','<':'lt','\\u226E':'nlt','<\\u20D2':'nvlt','=':'equals','\\u2260':'ne','=\\u20E5':'bne','\\u2A75':'Equal','>':'gt','\\u226F':'ngt','>\\u20D2':'nvgt','\\xAC':'not','|':'vert','\\xA6':'brvbar','\\u2212':'minus','\\u2213':'mp','\\u2214':'plusdo','\\u2044':'frasl','\\u2216':'setmn','\\u2217':'lowast','\\u2218':'compfn','\\u221A':'Sqrt','\\u221D':'prop','\\u221E':'infin','\\u221F':'angrt','\\u2220':'ang','\\u2220\\u20D2':'nang','\\u2221':'angmsd','\\u2222':'angsph','\\u2223':'mid','\\u2224':'nmid','\\u2225':'par','\\u2226':'npar','\\u2227':'and','\\u2228':'or','\\u2229':'cap','\\u2229\\uFE00':'caps','\\u222A':'cup','\\u222A\\uFE00':'cups','\\u222B':'int','\\u222C':'Int','\\u222D':'tint','\\u2A0C':'qint','\\u222E':'oint','\\u222F':'Conint','\\u2230':'Cconint','\\u2231':'cwint','\\u2232':'cwconint','\\u2233':'awconint','\\u2234':'there4','\\u2235':'becaus','\\u2236':'ratio','\\u2237':'Colon','\\u2238':'minusd','\\u223A':'mDDot','\\u223B':'homtht','\\u223C':'sim','\\u2241':'nsim','\\u223C\\u20D2':'nvsim','\\u223D':'bsim','\\u223D\\u0331':'race','\\u223E':'ac','\\u223E\\u0333':'acE','\\u223F':'acd','\\u2240':'wr','\\u2242':'esim','\\u2242\\u0338':'nesim','\\u2243':'sime','\\u2244':'nsime','\\u2245':'cong','\\u2247':'ncong','\\u2246':'simne','\\u2248':'ap','\\u2249':'nap','\\u224A':'ape','\\u224B':'apid','\\u224B\\u0338':'napid','\\u224C':'bcong','\\u224D':'CupCap','\\u226D':'NotCupCap','\\u224D\\u20D2':'nvap','\\u224E':'bump','\\u224E\\u0338':'nbump','\\u224F':'bumpe','\\u224F\\u0338':'nbumpe','\\u2250':'doteq','\\u2250\\u0338':'nedot','\\u2251':'eDot','\\u2252':'efDot','\\u2253':'erDot','\\u2254':'colone','\\u2255':'ecolon','\\u2256':'ecir','\\u2257':'cire','\\u2259':'wedgeq','\\u225A':'veeeq','\\u225C':'trie','\\u225F':'equest','\\u2261':'equiv','\\u2262':'nequiv','\\u2261\\u20E5':'bnequiv','\\u2264':'le','\\u2270':'nle','\\u2264\\u20D2':'nvle','\\u2265':'ge','\\u2271':'nge','\\u2265\\u20D2':'nvge','\\u2266':'lE','\\u2266\\u0338':'nlE','\\u2267':'gE','\\u2267\\u0338':'ngE','\\u2268\\uFE00':'lvnE','\\u2268':'lnE','\\u2269':'gnE','\\u2269\\uFE00':'gvnE','\\u226A':'ll','\\u226A\\u0338':'nLtv','\\u226A\\u20D2':'nLt','\\u226B':'gg','\\u226B\\u0338':'nGtv','\\u226B\\u20D2':'nGt','\\u226C':'twixt','\\u2272':'lsim','\\u2274':'nlsim','\\u2273':'gsim','\\u2275':'ngsim','\\u2276':'lg','\\u2278':'ntlg','\\u2277':'gl','\\u2279':'ntgl','\\u227A':'pr','\\u2280':'npr','\\u227B':'sc','\\u2281':'nsc','\\u227C':'prcue','\\u22E0':'nprcue','\\u227D':'sccue','\\u22E1':'nsccue','\\u227E':'prsim','\\u227F':'scsim','\\u227F\\u0338':'NotSucceedsTilde','\\u2282':'sub','\\u2284':'nsub','\\u2282\\u20D2':'vnsub','\\u2283':'sup','\\u2285':'nsup','\\u2283\\u20D2':'vnsup','\\u2286':'sube','\\u2288':'nsube','\\u2287':'supe','\\u2289':'nsupe','\\u228A\\uFE00':'vsubne','\\u228A':'subne','\\u228B\\uFE00':'vsupne','\\u228B':'supne','\\u228D':'cupdot','\\u228E':'uplus','\\u228F':'sqsub','\\u228F\\u0338':'NotSquareSubset','\\u2290':'sqsup','\\u2290\\u0338':'NotSquareSuperset','\\u2291':'sqsube','\\u22E2':'nsqsube','\\u2292':'sqsupe','\\u22E3':'nsqsupe','\\u2293':'sqcap','\\u2293\\uFE00':'sqcaps','\\u2294':'sqcup','\\u2294\\uFE00':'sqcups','\\u2295':'oplus','\\u2296':'ominus','\\u2297':'otimes','\\u2298':'osol','\\u2299':'odot','\\u229A':'ocir','\\u229B':'oast','\\u229D':'odash','\\u229E':'plusb','\\u229F':'minusb','\\u22A0':'timesb','\\u22A1':'sdotb','\\u22A2':'vdash','\\u22AC':'nvdash','\\u22A3':'dashv','\\u22A4':'top','\\u22A5':'bot','\\u22A7':'models','\\u22A8':'vDash','\\u22AD':'nvDash','\\u22A9':'Vdash','\\u22AE':'nVdash','\\u22AA':'Vvdash','\\u22AB':'VDash','\\u22AF':'nVDash','\\u22B0':'prurel','\\u22B2':'vltri','\\u22EA':'nltri','\\u22B3':'vrtri','\\u22EB':'nrtri','\\u22B4':'ltrie','\\u22EC':'nltrie','\\u22B4\\u20D2':'nvltrie','\\u22B5':'rtrie','\\u22ED':'nrtrie','\\u22B5\\u20D2':'nvrtrie','\\u22B6':'origof','\\u22B7':'imof','\\u22B8':'mumap','\\u22B9':'hercon','\\u22BA':'intcal','\\u22BB':'veebar','\\u22BD':'barvee','\\u22BE':'angrtvb','\\u22BF':'lrtri','\\u22C0':'Wedge','\\u22C1':'Vee','\\u22C2':'xcap','\\u22C3':'xcup','\\u22C4':'diam','\\u22C5':'sdot','\\u22C6':'Star','\\u22C7':'divonx','\\u22C8':'bowtie','\\u22C9':'ltimes','\\u22CA':'rtimes','\\u22CB':'lthree','\\u22CC':'rthree','\\u22CD':'bsime','\\u22CE':'cuvee','\\u22CF':'cuwed','\\u22D0':'Sub','\\u22D1':'Sup','\\u22D2':'Cap','\\u22D3':'Cup','\\u22D4':'fork','\\u22D5':'epar','\\u22D6':'ltdot','\\u22D7':'gtdot','\\u22D8':'Ll','\\u22D8\\u0338':'nLl','\\u22D9':'Gg','\\u22D9\\u0338':'nGg','\\u22DA\\uFE00':'lesg','\\u22DA':'leg','\\u22DB':'gel','\\u22DB\\uFE00':'gesl','\\u22DE':'cuepr','\\u22DF':'cuesc','\\u22E6':'lnsim','\\u22E7':'gnsim','\\u22E8':'prnsim','\\u22E9':'scnsim','\\u22EE':'vellip','\\u22EF':'ctdot','\\u22F0':'utdot','\\u22F1':'dtdot','\\u22F2':'disin','\\u22F3':'isinsv','\\u22F4':'isins','\\u22F5':'isindot','\\u22F5\\u0338':'notindot','\\u22F6':'notinvc','\\u22F7':'notinvb','\\u22F9':'isinE','\\u22F9\\u0338':'notinE','\\u22FA':'nisd','\\u22FB':'xnis','\\u22FC':'nis','\\u22FD':'notnivc','\\u22FE':'notnivb','\\u2305':'barwed','\\u2306':'Barwed','\\u230C':'drcrop','\\u230D':'dlcrop','\\u230E':'urcrop','\\u230F':'ulcrop','\\u2310':'bnot','\\u2312':'profline','\\u2313':'profsurf','\\u2315':'telrec','\\u2316':'target','\\u231C':'ulcorn','\\u231D':'urcorn','\\u231E':'dlcorn','\\u231F':'drcorn','\\u2322':'frown','\\u2323':'smile','\\u232D':'cylcty','\\u232E':'profalar','\\u2336':'topbot','\\u233D':'ovbar','\\u233F':'solbar','\\u237C':'angzarr','\\u23B0':'lmoust','\\u23B1':'rmoust','\\u23B4':'tbrk','\\u23B5':'bbrk','\\u23B6':'bbrktbrk','\\u23DC':'OverParenthesis','\\u23DD':'UnderParenthesis','\\u23DE':'OverBrace','\\u23DF':'UnderBrace','\\u23E2':'trpezium','\\u23E7':'elinters','\\u2423':'blank','\\u2500':'boxh','\\u2502':'boxv','\\u250C':'boxdr','\\u2510':'boxdl','\\u2514':'boxur','\\u2518':'boxul','\\u251C':'boxvr','\\u2524':'boxvl','\\u252C':'boxhd','\\u2534':'boxhu','\\u253C':'boxvh','\\u2550':'boxH','\\u2551':'boxV','\\u2552':'boxdR','\\u2553':'boxDr','\\u2554':'boxDR','\\u2555':'boxdL','\\u2556':'boxDl','\\u2557':'boxDL','\\u2558':'boxuR','\\u2559':'boxUr','\\u255A':'boxUR','\\u255B':'boxuL','\\u255C':'boxUl','\\u255D':'boxUL','\\u255E':'boxvR','\\u255F':'boxVr','\\u2560':'boxVR','\\u2561':'boxvL','\\u2562':'boxVl','\\u2563':'boxVL','\\u2564':'boxHd','\\u2565':'boxhD','\\u2566':'boxHD','\\u2567':'boxHu','\\u2568':'boxhU','\\u2569':'boxHU','\\u256A':'boxvH','\\u256B':'boxVh','\\u256C':'boxVH','\\u2580':'uhblk','\\u2584':'lhblk','\\u2588':'block','\\u2591':'blk14','\\u2592':'blk12','\\u2593':'blk34','\\u25A1':'squ','\\u25AA':'squf','\\u25AB':'EmptyVerySmallSquare','\\u25AD':'rect','\\u25AE':'marker','\\u25B1':'fltns','\\u25B3':'xutri','\\u25B4':'utrif','\\u25B5':'utri','\\u25B8':'rtrif','\\u25B9':'rtri','\\u25BD':'xdtri','\\u25BE':'dtrif','\\u25BF':'dtri','\\u25C2':'ltrif','\\u25C3':'ltri','\\u25CA':'loz','\\u25CB':'cir','\\u25EC':'tridot','\\u25EF':'xcirc','\\u25F8':'ultri','\\u25F9':'urtri','\\u25FA':'lltri','\\u25FB':'EmptySmallSquare','\\u25FC':'FilledSmallSquare','\\u2605':'starf','\\u2606':'star','\\u260E':'phone','\\u2640':'female','\\u2642':'male','\\u2660':'spades','\\u2663':'clubs','\\u2665':'hearts','\\u2666':'diams','\\u266A':'sung','\\u2713':'check','\\u2717':'cross','\\u2720':'malt','\\u2736':'sext','\\u2758':'VerticalSeparator','\\u27C8':'bsolhsub','\\u27C9':'suphsol','\\u27F5':'xlarr','\\u27F6':'xrarr','\\u27F7':'xharr','\\u27F8':'xlArr','\\u27F9':'xrArr','\\u27FA':'xhArr','\\u27FC':'xmap','\\u27FF':'dzigrarr','\\u2902':'nvlArr','\\u2903':'nvrArr','\\u2904':'nvHarr','\\u2905':'Map','\\u290C':'lbarr','\\u290D':'rbarr','\\u290E':'lBarr','\\u290F':'rBarr','\\u2910':'RBarr','\\u2911':'DDotrahd','\\u2912':'UpArrowBar','\\u2913':'DownArrowBar','\\u2916':'Rarrtl','\\u2919':'latail','\\u291A':'ratail','\\u291B':'lAtail','\\u291C':'rAtail','\\u291D':'larrfs','\\u291E':'rarrfs','\\u291F':'larrbfs','\\u2920':'rarrbfs','\\u2923':'nwarhk','\\u2924':'nearhk','\\u2925':'searhk','\\u2926':'swarhk','\\u2927':'nwnear','\\u2928':'toea','\\u2929':'tosa','\\u292A':'swnwar','\\u2933':'rarrc','\\u2933\\u0338':'nrarrc','\\u2935':'cudarrr','\\u2936':'ldca','\\u2937':'rdca','\\u2938':'cudarrl','\\u2939':'larrpl','\\u293C':'curarrm','\\u293D':'cularrp','\\u2945':'rarrpl','\\u2948':'harrcir','\\u2949':'Uarrocir','\\u294A':'lurdshar','\\u294B':'ldrushar','\\u294E':'LeftRightVector','\\u294F':'RightUpDownVector','\\u2950':'DownLeftRightVector','\\u2951':'LeftUpDownVector','\\u2952':'LeftVectorBar','\\u2953':'RightVectorBar','\\u2954':'RightUpVectorBar','\\u2955':'RightDownVectorBar','\\u2956':'DownLeftVectorBar','\\u2957':'DownRightVectorBar','\\u2958':'LeftUpVectorBar','\\u2959':'LeftDownVectorBar','\\u295A':'LeftTeeVector','\\u295B':'RightTeeVector','\\u295C':'RightUpTeeVector','\\u295D':'RightDownTeeVector','\\u295E':'DownLeftTeeVector','\\u295F':'DownRightTeeVector','\\u2960':'LeftUpTeeVector','\\u2961':'LeftDownTeeVector','\\u2962':'lHar','\\u2963':'uHar','\\u2964':'rHar','\\u2965':'dHar','\\u2966':'luruhar','\\u2967':'ldrdhar','\\u2968':'ruluhar','\\u2969':'rdldhar','\\u296A':'lharul','\\u296B':'llhard','\\u296C':'rharul','\\u296D':'lrhard','\\u296E':'udhar','\\u296F':'duhar','\\u2970':'RoundImplies','\\u2971':'erarr','\\u2972':'simrarr','\\u2973':'larrsim','\\u2974':'rarrsim','\\u2975':'rarrap','\\u2976':'ltlarr','\\u2978':'gtrarr','\\u2979':'subrarr','\\u297B':'suplarr','\\u297C':'lfisht','\\u297D':'rfisht','\\u297E':'ufisht','\\u297F':'dfisht','\\u299A':'vzigzag','\\u299C':'vangrt','\\u299D':'angrtvbd','\\u29A4':'ange','\\u29A5':'range','\\u29A6':'dwangle','\\u29A7':'uwangle','\\u29A8':'angmsdaa','\\u29A9':'angmsdab','\\u29AA':'angmsdac','\\u29AB':'angmsdad','\\u29AC':'angmsdae','\\u29AD':'angmsdaf','\\u29AE':'angmsdag','\\u29AF':'angmsdah','\\u29B0':'bemptyv','\\u29B1':'demptyv','\\u29B2':'cemptyv','\\u29B3':'raemptyv','\\u29B4':'laemptyv','\\u29B5':'ohbar','\\u29B6':'omid','\\u29B7':'opar','\\u29B9':'operp','\\u29BB':'olcross','\\u29BC':'odsold','\\u29BE':'olcir','\\u29BF':'ofcir','\\u29C0':'olt','\\u29C1':'ogt','\\u29C2':'cirscir','\\u29C3':'cirE','\\u29C4':'solb','\\u29C5':'bsolb','\\u29C9':'boxbox','\\u29CD':'trisb','\\u29CE':'rtriltri','\\u29CF':'LeftTriangleBar','\\u29CF\\u0338':'NotLeftTriangleBar','\\u29D0':'RightTriangleBar','\\u29D0\\u0338':'NotRightTriangleBar','\\u29DC':'iinfin','\\u29DD':'infintie','\\u29DE':'nvinfin','\\u29E3':'eparsl','\\u29E4':'smeparsl','\\u29E5':'eqvparsl','\\u29EB':'lozf','\\u29F4':'RuleDelayed','\\u29F6':'dsol','\\u2A00':'xodot','\\u2A01':'xoplus','\\u2A02':'xotime','\\u2A04':'xuplus','\\u2A06':'xsqcup','\\u2A0D':'fpartint','\\u2A10':'cirfnint','\\u2A11':'awint','\\u2A12':'rppolint','\\u2A13':'scpolint','\\u2A14':'npolint','\\u2A15':'pointint','\\u2A16':'quatint','\\u2A17':'intlarhk','\\u2A22':'pluscir','\\u2A23':'plusacir','\\u2A24':'simplus','\\u2A25':'plusdu','\\u2A26':'plussim','\\u2A27':'plustwo','\\u2A29':'mcomma','\\u2A2A':'minusdu','\\u2A2D':'loplus','\\u2A2E':'roplus','\\u2A2F':'Cross','\\u2A30':'timesd','\\u2A31':'timesbar','\\u2A33':'smashp','\\u2A34':'lotimes','\\u2A35':'rotimes','\\u2A36':'otimesas','\\u2A37':'Otimes','\\u2A38':'odiv','\\u2A39':'triplus','\\u2A3A':'triminus','\\u2A3B':'tritime','\\u2A3C':'iprod','\\u2A3F':'amalg','\\u2A40':'capdot','\\u2A42':'ncup','\\u2A43':'ncap','\\u2A44':'capand','\\u2A45':'cupor','\\u2A46':'cupcap','\\u2A47':'capcup','\\u2A48':'cupbrcap','\\u2A49':'capbrcup','\\u2A4A':'cupcup','\\u2A4B':'capcap','\\u2A4C':'ccups','\\u2A4D':'ccaps','\\u2A50':'ccupssm','\\u2A53':'And','\\u2A54':'Or','\\u2A55':'andand','\\u2A56':'oror','\\u2A57':'orslope','\\u2A58':'andslope','\\u2A5A':'andv','\\u2A5B':'orv','\\u2A5C':'andd','\\u2A5D':'ord','\\u2A5F':'wedbar','\\u2A66':'sdote','\\u2A6A':'simdot','\\u2A6D':'congdot','\\u2A6D\\u0338':'ncongdot','\\u2A6E':'easter','\\u2A6F':'apacir','\\u2A70':'apE','\\u2A70\\u0338':'napE','\\u2A71':'eplus','\\u2A72':'pluse','\\u2A73':'Esim','\\u2A77':'eDDot','\\u2A78':'equivDD','\\u2A79':'ltcir','\\u2A7A':'gtcir','\\u2A7B':'ltquest','\\u2A7C':'gtquest','\\u2A7D':'les','\\u2A7D\\u0338':'nles','\\u2A7E':'ges','\\u2A7E\\u0338':'nges','\\u2A7F':'lesdot','\\u2A80':'gesdot','\\u2A81':'lesdoto','\\u2A82':'gesdoto','\\u2A83':'lesdotor','\\u2A84':'gesdotol','\\u2A85':'lap','\\u2A86':'gap','\\u2A87':'lne','\\u2A88':'gne','\\u2A89':'lnap','\\u2A8A':'gnap','\\u2A8B':'lEg','\\u2A8C':'gEl','\\u2A8D':'lsime','\\u2A8E':'gsime','\\u2A8F':'lsimg','\\u2A90':'gsiml','\\u2A91':'lgE','\\u2A92':'glE','\\u2A93':'lesges','\\u2A94':'gesles','\\u2A95':'els','\\u2A96':'egs','\\u2A97':'elsdot','\\u2A98':'egsdot','\\u2A99':'el','\\u2A9A':'eg','\\u2A9D':'siml','\\u2A9E':'simg','\\u2A9F':'simlE','\\u2AA0':'simgE','\\u2AA1':'LessLess','\\u2AA1\\u0338':'NotNestedLessLess','\\u2AA2':'GreaterGreater','\\u2AA2\\u0338':'NotNestedGreaterGreater','\\u2AA4':'glj','\\u2AA5':'gla','\\u2AA6':'ltcc','\\u2AA7':'gtcc','\\u2AA8':'lescc','\\u2AA9':'gescc','\\u2AAA':'smt','\\u2AAB':'lat','\\u2AAC':'smte','\\u2AAC\\uFE00':'smtes','\\u2AAD':'late','\\u2AAD\\uFE00':'lates','\\u2AAE':'bumpE','\\u2AAF':'pre','\\u2AAF\\u0338':'npre','\\u2AB0':'sce','\\u2AB0\\u0338':'nsce','\\u2AB3':'prE','\\u2AB4':'scE','\\u2AB5':'prnE','\\u2AB6':'scnE','\\u2AB7':'prap','\\u2AB8':'scap','\\u2AB9':'prnap','\\u2ABA':'scnap','\\u2ABB':'Pr','\\u2ABC':'Sc','\\u2ABD':'subdot','\\u2ABE':'supdot','\\u2ABF':'subplus','\\u2AC0':'supplus','\\u2AC1':'submult','\\u2AC2':'supmult','\\u2AC3':'subedot','\\u2AC4':'supedot','\\u2AC5':'subE','\\u2AC5\\u0338':'nsubE','\\u2AC6':'supE','\\u2AC6\\u0338':'nsupE','\\u2AC7':'subsim','\\u2AC8':'supsim','\\u2ACB\\uFE00':'vsubnE','\\u2ACB':'subnE','\\u2ACC\\uFE00':'vsupnE','\\u2ACC':'supnE','\\u2ACF':'csub','\\u2AD0':'csup','\\u2AD1':'csube','\\u2AD2':'csupe','\\u2AD3':'subsup','\\u2AD4':'supsub','\\u2AD5':'subsub','\\u2AD6':'supsup','\\u2AD7':'suphsub','\\u2AD8':'supdsub','\\u2AD9':'forkv','\\u2ADA':'topfork','\\u2ADB':'mlcp','\\u2AE4':'Dashv','\\u2AE6':'Vdashl','\\u2AE7':'Barv','\\u2AE8':'vBar','\\u2AE9':'vBarv','\\u2AEB':'Vbar','\\u2AEC':'Not','\\u2AED':'bNot','\\u2AEE':'rnmid','\\u2AEF':'cirmid','\\u2AF0':'midcir','\\u2AF1':'topcir','\\u2AF2':'nhpar','\\u2AF3':'parsim','\\u2AFD':'parsl','\\u2AFD\\u20E5':'nparsl','\\u266D':'flat','\\u266E':'natur','\\u266F':'sharp','\\xA4':'curren','\\xA2':'cent','$':'dollar','\\xA3':'pound','\\xA5':'yen','\\u20AC':'euro','\\xB9':'sup1','\\xBD':'half','\\u2153':'frac13','\\xBC':'frac14','\\u2155':'frac15','\\u2159':'frac16','\\u215B':'frac18','\\xB2':'sup2','\\u2154':'frac23','\\u2156':'frac25','\\xB3':'sup3','\\xBE':'frac34','\\u2157':'frac35','\\u215C':'frac38','\\u2158':'frac45','\\u215A':'frac56','\\u215D':'frac58','\\u215E':'frac78','\\uD835\\uDCB6':'ascr','\\uD835\\uDD52':'aopf','\\uD835\\uDD1E':'afr','\\uD835\\uDD38':'Aopf','\\uD835\\uDD04':'Afr','\\uD835\\uDC9C':'Ascr','\\xAA':'ordf','\\xE1':'aacute','\\xC1':'Aacute','\\xE0':'agrave','\\xC0':'Agrave','\\u0103':'abreve','\\u0102':'Abreve','\\xE2':'acirc','\\xC2':'Acirc','\\xE5':'aring','\\xC5':'angst','\\xE4':'auml','\\xC4':'Auml','\\xE3':'atilde','\\xC3':'Atilde','\\u0105':'aogon','\\u0104':'Aogon','\\u0101':'amacr','\\u0100':'Amacr','\\xE6':'aelig','\\xC6':'AElig','\\uD835\\uDCB7':'bscr','\\uD835\\uDD53':'bopf','\\uD835\\uDD1F':'bfr','\\uD835\\uDD39':'Bopf','\\u212C':'Bscr','\\uD835\\uDD05':'Bfr','\\uD835\\uDD20':'cfr','\\uD835\\uDCB8':'cscr','\\uD835\\uDD54':'copf','\\u212D':'Cfr','\\uD835\\uDC9E':'Cscr','\\u2102':'Copf','\\u0107':'cacute','\\u0106':'Cacute','\\u0109':'ccirc','\\u0108':'Ccirc','\\u010D':'ccaron','\\u010C':'Ccaron','\\u010B':'cdot','\\u010A':'Cdot','\\xE7':'ccedil','\\xC7':'Ccedil','\\u2105':'incare','\\uD835\\uDD21':'dfr','\\u2146':'dd','\\uD835\\uDD55':'dopf','\\uD835\\uDCB9':'dscr','\\uD835\\uDC9F':'Dscr','\\uD835\\uDD07':'Dfr','\\u2145':'DD','\\uD835\\uDD3B':'Dopf','\\u010F':'dcaron','\\u010E':'Dcaron','\\u0111':'dstrok','\\u0110':'Dstrok','\\xF0':'eth','\\xD0':'ETH','\\u2147':'ee','\\u212F':'escr','\\uD835\\uDD22':'efr','\\uD835\\uDD56':'eopf','\\u2130':'Escr','\\uD835\\uDD08':'Efr','\\uD835\\uDD3C':'Eopf','\\xE9':'eacute','\\xC9':'Eacute','\\xE8':'egrave','\\xC8':'Egrave','\\xEA':'ecirc','\\xCA':'Ecirc','\\u011B':'ecaron','\\u011A':'Ecaron','\\xEB':'euml','\\xCB':'Euml','\\u0117':'edot','\\u0116':'Edot','\\u0119':'eogon','\\u0118':'Eogon','\\u0113':'emacr','\\u0112':'Emacr','\\uD835\\uDD23':'ffr','\\uD835\\uDD57':'fopf','\\uD835\\uDCBB':'fscr','\\uD835\\uDD09':'Ffr','\\uD835\\uDD3D':'Fopf','\\u2131':'Fscr','\\uFB00':'fflig','\\uFB03':'ffilig','\\uFB04':'ffllig','\\uFB01':'filig','fj':'fjlig','\\uFB02':'fllig','\\u0192':'fnof','\\u210A':'gscr','\\uD835\\uDD58':'gopf','\\uD835\\uDD24':'gfr','\\uD835\\uDCA2':'Gscr','\\uD835\\uDD3E':'Gopf','\\uD835\\uDD0A':'Gfr','\\u01F5':'gacute','\\u011F':'gbreve','\\u011E':'Gbreve','\\u011D':'gcirc','\\u011C':'Gcirc','\\u0121':'gdot','\\u0120':'Gdot','\\u0122':'Gcedil','\\uD835\\uDD25':'hfr','\\u210E':'planckh','\\uD835\\uDCBD':'hscr','\\uD835\\uDD59':'hopf','\\u210B':'Hscr','\\u210C':'Hfr','\\u210D':'Hopf','\\u0125':'hcirc','\\u0124':'Hcirc','\\u210F':'hbar','\\u0127':'hstrok','\\u0126':'Hstrok','\\uD835\\uDD5A':'iopf','\\uD835\\uDD26':'ifr','\\uD835\\uDCBE':'iscr','\\u2148':'ii','\\uD835\\uDD40':'Iopf','\\u2110':'Iscr','\\u2111':'Im','\\xED':'iacute','\\xCD':'Iacute','\\xEC':'igrave','\\xCC':'Igrave','\\xEE':'icirc','\\xCE':'Icirc','\\xEF':'iuml','\\xCF':'Iuml','\\u0129':'itilde','\\u0128':'Itilde','\\u0130':'Idot','\\u012F':'iogon','\\u012E':'Iogon','\\u012B':'imacr','\\u012A':'Imacr','\\u0133':'ijlig','\\u0132':'IJlig','\\u0131':'imath','\\uD835\\uDCBF':'jscr','\\uD835\\uDD5B':'jopf','\\uD835\\uDD27':'jfr','\\uD835\\uDCA5':'Jscr','\\uD835\\uDD0D':'Jfr','\\uD835\\uDD41':'Jopf','\\u0135':'jcirc','\\u0134':'Jcirc','\\u0237':'jmath','\\uD835\\uDD5C':'kopf','\\uD835\\uDCC0':'kscr','\\uD835\\uDD28':'kfr','\\uD835\\uDCA6':'Kscr','\\uD835\\uDD42':'Kopf','\\uD835\\uDD0E':'Kfr','\\u0137':'kcedil','\\u0136':'Kcedil','\\uD835\\uDD29':'lfr','\\uD835\\uDCC1':'lscr','\\u2113':'ell','\\uD835\\uDD5D':'lopf','\\u2112':'Lscr','\\uD835\\uDD0F':'Lfr','\\uD835\\uDD43':'Lopf','\\u013A':'lacute','\\u0139':'Lacute','\\u013E':'lcaron','\\u013D':'Lcaron','\\u013C':'lcedil','\\u013B':'Lcedil','\\u0142':'lstrok','\\u0141':'Lstrok','\\u0140':'lmidot','\\u013F':'Lmidot','\\uD835\\uDD2A':'mfr','\\uD835\\uDD5E':'mopf','\\uD835\\uDCC2':'mscr','\\uD835\\uDD10':'Mfr','\\uD835\\uDD44':'Mopf','\\u2133':'Mscr','\\uD835\\uDD2B':'nfr','\\uD835\\uDD5F':'nopf','\\uD835\\uDCC3':'nscr','\\u2115':'Nopf','\\uD835\\uDCA9':'Nscr','\\uD835\\uDD11':'Nfr','\\u0144':'nacute','\\u0143':'Nacute','\\u0148':'ncaron','\\u0147':'Ncaron','\\xF1':'ntilde','\\xD1':'Ntilde','\\u0146':'ncedil','\\u0145':'Ncedil','\\u2116':'numero','\\u014B':'eng','\\u014A':'ENG','\\uD835\\uDD60':'oopf','\\uD835\\uDD2C':'ofr','\\u2134':'oscr','\\uD835\\uDCAA':'Oscr','\\uD835\\uDD12':'Ofr','\\uD835\\uDD46':'Oopf','\\xBA':'ordm','\\xF3':'oacute','\\xD3':'Oacute','\\xF2':'ograve','\\xD2':'Ograve','\\xF4':'ocirc','\\xD4':'Ocirc','\\xF6':'ouml','\\xD6':'Ouml','\\u0151':'odblac','\\u0150':'Odblac','\\xF5':'otilde','\\xD5':'Otilde','\\xF8':'oslash','\\xD8':'Oslash','\\u014D':'omacr','\\u014C':'Omacr','\\u0153':'oelig','\\u0152':'OElig','\\uD835\\uDD2D':'pfr','\\uD835\\uDCC5':'pscr','\\uD835\\uDD61':'popf','\\u2119':'Popf','\\uD835\\uDD13':'Pfr','\\uD835\\uDCAB':'Pscr','\\uD835\\uDD62':'qopf','\\uD835\\uDD2E':'qfr','\\uD835\\uDCC6':'qscr','\\uD835\\uDCAC':'Qscr','\\uD835\\uDD14':'Qfr','\\u211A':'Qopf','\\u0138':'kgreen','\\uD835\\uDD2F':'rfr','\\uD835\\uDD63':'ropf','\\uD835\\uDCC7':'rscr','\\u211B':'Rscr','\\u211C':'Re','\\u211D':'Ropf','\\u0155':'racute','\\u0154':'Racute','\\u0159':'rcaron','\\u0158':'Rcaron','\\u0157':'rcedil','\\u0156':'Rcedil','\\uD835\\uDD64':'sopf','\\uD835\\uDCC8':'sscr','\\uD835\\uDD30':'sfr','\\uD835\\uDD4A':'Sopf','\\uD835\\uDD16':'Sfr','\\uD835\\uDCAE':'Sscr','\\u24C8':'oS','\\u015B':'sacute','\\u015A':'Sacute','\\u015D':'scirc','\\u015C':'Scirc','\\u0161':'scaron','\\u0160':'Scaron','\\u015F':'scedil','\\u015E':'Scedil','\\xDF':'szlig','\\uD835\\uDD31':'tfr','\\uD835\\uDCC9':'tscr','\\uD835\\uDD65':'topf','\\uD835\\uDCAF':'Tscr','\\uD835\\uDD17':'Tfr','\\uD835\\uDD4B':'Topf','\\u0165':'tcaron','\\u0164':'Tcaron','\\u0163':'tcedil','\\u0162':'Tcedil','\\u2122':'trade','\\u0167':'tstrok','\\u0166':'Tstrok','\\uD835\\uDCCA':'uscr','\\uD835\\uDD66':'uopf','\\uD835\\uDD32':'ufr','\\uD835\\uDD4C':'Uopf','\\uD835\\uDD18':'Ufr','\\uD835\\uDCB0':'Uscr','\\xFA':'uacute','\\xDA':'Uacute','\\xF9':'ugrave','\\xD9':'Ugrave','\\u016D':'ubreve','\\u016C':'Ubreve','\\xFB':'ucirc','\\xDB':'Ucirc','\\u016F':'uring','\\u016E':'Uring','\\xFC':'uuml','\\xDC':'Uuml','\\u0171':'udblac','\\u0170':'Udblac','\\u0169':'utilde','\\u0168':'Utilde','\\u0173':'uogon','\\u0172':'Uogon','\\u016B':'umacr','\\u016A':'Umacr','\\uD835\\uDD33':'vfr','\\uD835\\uDD67':'vopf','\\uD835\\uDCCB':'vscr','\\uD835\\uDD19':'Vfr','\\uD835\\uDD4D':'Vopf','\\uD835\\uDCB1':'Vscr','\\uD835\\uDD68':'wopf','\\uD835\\uDCCC':'wscr','\\uD835\\uDD34':'wfr','\\uD835\\uDCB2':'Wscr','\\uD835\\uDD4E':'Wopf','\\uD835\\uDD1A':'Wfr','\\u0175':'wcirc','\\u0174':'Wcirc','\\uD835\\uDD35':'xfr','\\uD835\\uDCCD':'xscr','\\uD835\\uDD69':'xopf','\\uD835\\uDD4F':'Xopf','\\uD835\\uDD1B':'Xfr','\\uD835\\uDCB3':'Xscr','\\uD835\\uDD36':'yfr','\\uD835\\uDCCE':'yscr','\\uD835\\uDD6A':'yopf','\\uD835\\uDCB4':'Yscr','\\uD835\\uDD1C':'Yfr','\\uD835\\uDD50':'Yopf','\\xFD':'yacute','\\xDD':'Yacute','\\u0177':'ycirc','\\u0176':'Ycirc','\\xFF':'yuml','\\u0178':'Yuml','\\uD835\\uDCCF':'zscr','\\uD835\\uDD37':'zfr','\\uD835\\uDD6B':'zopf','\\u2128':'Zfr','\\u2124':'Zopf','\\uD835\\uDCB5':'Zscr','\\u017A':'zacute','\\u0179':'Zacute','\\u017E':'zcaron','\\u017D':'Zcaron','\\u017C':'zdot','\\u017B':'Zdot','\\u01B5':'imped','\\xFE':'thorn','\\xDE':'THORN','\\u0149':'napos','\\u03B1':'alpha','\\u0391':'Alpha','\\u03B2':'beta','\\u0392':'Beta','\\u03B3':'gamma','\\u0393':'Gamma','\\u03B4':'delta','\\u0394':'Delta','\\u03B5':'epsi','\\u03F5':'epsiv','\\u0395':'Epsilon','\\u03DD':'gammad','\\u03DC':'Gammad','\\u03B6':'zeta','\\u0396':'Zeta','\\u03B7':'eta','\\u0397':'Eta','\\u03B8':'theta','\\u03D1':'thetav','\\u0398':'Theta','\\u03B9':'iota','\\u0399':'Iota','\\u03BA':'kappa','\\u03F0':'kappav','\\u039A':'Kappa','\\u03BB':'lambda','\\u039B':'Lambda','\\u03BC':'mu','\\xB5':'micro','\\u039C':'Mu','\\u03BD':'nu','\\u039D':'Nu','\\u03BE':'xi','\\u039E':'Xi','\\u03BF':'omicron','\\u039F':'Omicron','\\u03C0':'pi','\\u03D6':'piv','\\u03A0':'Pi','\\u03C1':'rho','\\u03F1':'rhov','\\u03A1':'Rho','\\u03C3':'sigma','\\u03A3':'Sigma','\\u03C2':'sigmaf','\\u03C4':'tau','\\u03A4':'Tau','\\u03C5':'upsi','\\u03A5':'Upsilon','\\u03D2':'Upsi','\\u03C6':'phi','\\u03D5':'phiv','\\u03A6':'Phi','\\u03C7':'chi','\\u03A7':'Chi','\\u03C8':'psi','\\u03A8':'Psi','\\u03C9':'omega','\\u03A9':'ohm','\\u0430':'acy','\\u0410':'Acy','\\u0431':'bcy','\\u0411':'Bcy','\\u0432':'vcy','\\u0412':'Vcy','\\u0433':'gcy','\\u0413':'Gcy','\\u0453':'gjcy','\\u0403':'GJcy','\\u0434':'dcy','\\u0414':'Dcy','\\u0452':'djcy','\\u0402':'DJcy','\\u0435':'iecy','\\u0415':'IEcy','\\u0451':'iocy','\\u0401':'IOcy','\\u0454':'jukcy','\\u0404':'Jukcy','\\u0436':'zhcy','\\u0416':'ZHcy','\\u0437':'zcy','\\u0417':'Zcy','\\u0455':'dscy','\\u0405':'DScy','\\u0438':'icy','\\u0418':'Icy','\\u0456':'iukcy','\\u0406':'Iukcy','\\u0457':'yicy','\\u0407':'YIcy','\\u0439':'jcy','\\u0419':'Jcy','\\u0458':'jsercy','\\u0408':'Jsercy','\\u043A':'kcy','\\u041A':'Kcy','\\u045C':'kjcy','\\u040C':'KJcy','\\u043B':'lcy','\\u041B':'Lcy','\\u0459':'ljcy','\\u0409':'LJcy','\\u043C':'mcy','\\u041C':'Mcy','\\u043D':'ncy','\\u041D':'Ncy','\\u045A':'njcy','\\u040A':'NJcy','\\u043E':'ocy','\\u041E':'Ocy','\\u043F':'pcy','\\u041F':'Pcy','\\u0440':'rcy','\\u0420':'Rcy','\\u0441':'scy','\\u0421':'Scy','\\u0442':'tcy','\\u0422':'Tcy','\\u045B':'tshcy','\\u040B':'TSHcy','\\u0443':'ucy','\\u0423':'Ucy','\\u045E':'ubrcy','\\u040E':'Ubrcy','\\u0444':'fcy','\\u0424':'Fcy','\\u0445':'khcy','\\u0425':'KHcy','\\u0446':'tscy','\\u0426':'TScy','\\u0447':'chcy','\\u0427':'CHcy','\\u045F':'dzcy','\\u040F':'DZcy','\\u0448':'shcy','\\u0428':'SHcy','\\u0449':'shchcy','\\u0429':'SHCHcy','\\u044A':'hardcy','\\u042A':'HARDcy','\\u044B':'ycy','\\u042B':'Ycy','\\u044C':'softcy','\\u042C':'SOFTcy','\\u044D':'ecy','\\u042D':'Ecy','\\u044E':'yucy','\\u042E':'YUcy','\\u044F':'yacy','\\u042F':'YAcy','\\u2135':'aleph','\\u2136':'beth','\\u2137':'gimel','\\u2138':'daleth'};\n\n\tvar regexEscape = /[\"&'<>`]/g;\n\tvar escapeMap = {\n\t\t'\"': '"',\n\t\t'&': '&',\n\t\t'\\'': ''',\n\t\t'<': '<',\n\t\t// See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the\n\t\t// following is not strictly necessary unless it’s part of a tag or an\n\t\t// unquoted attribute value. We’re only escaping it to support those\n\t\t// situations, and for XML support.\n\t\t'>': '>',\n\t\t// In Internet Explorer ≤ 8, the backtick character can be used\n\t\t// to break out of (un)quoted attribute values or HTML comments.\n\t\t// See http://html5sec.org/#102, http://html5sec.org/#108, and\n\t\t// http://html5sec.org/#133.\n\t\t'`': '`'\n\t};\n\n\tvar regexInvalidEntity = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/;\n\tvar regexInvalidRawCodePoint = /[\\0-\\x08\\x0B\\x0E-\\x1F\\x7F-\\x9F\\uFDD0-\\uFDEF\\uFFFE\\uFFFF]|[\\uD83F\\uD87F\\uD8BF\\uD8FF\\uD93F\\uD97F\\uD9BF\\uD9FF\\uDA3F\\uDA7F\\uDABF\\uDAFF\\uDB3F\\uDB7F\\uDBBF\\uDBFF][\\uDFFE\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n\tvar regexDecode = /&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g;\n\tvar decodeMap = {'aacute':'\\xE1','Aacute':'\\xC1','abreve':'\\u0103','Abreve':'\\u0102','ac':'\\u223E','acd':'\\u223F','acE':'\\u223E\\u0333','acirc':'\\xE2','Acirc':'\\xC2','acute':'\\xB4','acy':'\\u0430','Acy':'\\u0410','aelig':'\\xE6','AElig':'\\xC6','af':'\\u2061','afr':'\\uD835\\uDD1E','Afr':'\\uD835\\uDD04','agrave':'\\xE0','Agrave':'\\xC0','alefsym':'\\u2135','aleph':'\\u2135','alpha':'\\u03B1','Alpha':'\\u0391','amacr':'\\u0101','Amacr':'\\u0100','amalg':'\\u2A3F','amp':'&','AMP':'&','and':'\\u2227','And':'\\u2A53','andand':'\\u2A55','andd':'\\u2A5C','andslope':'\\u2A58','andv':'\\u2A5A','ang':'\\u2220','ange':'\\u29A4','angle':'\\u2220','angmsd':'\\u2221','angmsdaa':'\\u29A8','angmsdab':'\\u29A9','angmsdac':'\\u29AA','angmsdad':'\\u29AB','angmsdae':'\\u29AC','angmsdaf':'\\u29AD','angmsdag':'\\u29AE','angmsdah':'\\u29AF','angrt':'\\u221F','angrtvb':'\\u22BE','angrtvbd':'\\u299D','angsph':'\\u2222','angst':'\\xC5','angzarr':'\\u237C','aogon':'\\u0105','Aogon':'\\u0104','aopf':'\\uD835\\uDD52','Aopf':'\\uD835\\uDD38','ap':'\\u2248','apacir':'\\u2A6F','ape':'\\u224A','apE':'\\u2A70','apid':'\\u224B','apos':'\\'','ApplyFunction':'\\u2061','approx':'\\u2248','approxeq':'\\u224A','aring':'\\xE5','Aring':'\\xC5','ascr':'\\uD835\\uDCB6','Ascr':'\\uD835\\uDC9C','Assign':'\\u2254','ast':'*','asymp':'\\u2248','asympeq':'\\u224D','atilde':'\\xE3','Atilde':'\\xC3','auml':'\\xE4','Auml':'\\xC4','awconint':'\\u2233','awint':'\\u2A11','backcong':'\\u224C','backepsilon':'\\u03F6','backprime':'\\u2035','backsim':'\\u223D','backsimeq':'\\u22CD','Backslash':'\\u2216','Barv':'\\u2AE7','barvee':'\\u22BD','barwed':'\\u2305','Barwed':'\\u2306','barwedge':'\\u2305','bbrk':'\\u23B5','bbrktbrk':'\\u23B6','bcong':'\\u224C','bcy':'\\u0431','Bcy':'\\u0411','bdquo':'\\u201E','becaus':'\\u2235','because':'\\u2235','Because':'\\u2235','bemptyv':'\\u29B0','bepsi':'\\u03F6','bernou':'\\u212C','Bernoullis':'\\u212C','beta':'\\u03B2','Beta':'\\u0392','beth':'\\u2136','between':'\\u226C','bfr':'\\uD835\\uDD1F','Bfr':'\\uD835\\uDD05','bigcap':'\\u22C2','bigcirc':'\\u25EF','bigcup':'\\u22C3','bigodot':'\\u2A00','bigoplus':'\\u2A01','bigotimes':'\\u2A02','bigsqcup':'\\u2A06','bigstar':'\\u2605','bigtriangledown':'\\u25BD','bigtriangleup':'\\u25B3','biguplus':'\\u2A04','bigvee':'\\u22C1','bigwedge':'\\u22C0','bkarow':'\\u290D','blacklozenge':'\\u29EB','blacksquare':'\\u25AA','blacktriangle':'\\u25B4','blacktriangledown':'\\u25BE','blacktriangleleft':'\\u25C2','blacktriangleright':'\\u25B8','blank':'\\u2423','blk12':'\\u2592','blk14':'\\u2591','blk34':'\\u2593','block':'\\u2588','bne':'=\\u20E5','bnequiv':'\\u2261\\u20E5','bnot':'\\u2310','bNot':'\\u2AED','bopf':'\\uD835\\uDD53','Bopf':'\\uD835\\uDD39','bot':'\\u22A5','bottom':'\\u22A5','bowtie':'\\u22C8','boxbox':'\\u29C9','boxdl':'\\u2510','boxdL':'\\u2555','boxDl':'\\u2556','boxDL':'\\u2557','boxdr':'\\u250C','boxdR':'\\u2552','boxDr':'\\u2553','boxDR':'\\u2554','boxh':'\\u2500','boxH':'\\u2550','boxhd':'\\u252C','boxhD':'\\u2565','boxHd':'\\u2564','boxHD':'\\u2566','boxhu':'\\u2534','boxhU':'\\u2568','boxHu':'\\u2567','boxHU':'\\u2569','boxminus':'\\u229F','boxplus':'\\u229E','boxtimes':'\\u22A0','boxul':'\\u2518','boxuL':'\\u255B','boxUl':'\\u255C','boxUL':'\\u255D','boxur':'\\u2514','boxuR':'\\u2558','boxUr':'\\u2559','boxUR':'\\u255A','boxv':'\\u2502','boxV':'\\u2551','boxvh':'\\u253C','boxvH':'\\u256A','boxVh':'\\u256B','boxVH':'\\u256C','boxvl':'\\u2524','boxvL':'\\u2561','boxVl':'\\u2562','boxVL':'\\u2563','boxvr':'\\u251C','boxvR':'\\u255E','boxVr':'\\u255F','boxVR':'\\u2560','bprime':'\\u2035','breve':'\\u02D8','Breve':'\\u02D8','brvbar':'\\xA6','bscr':'\\uD835\\uDCB7','Bscr':'\\u212C','bsemi':'\\u204F','bsim':'\\u223D','bsime':'\\u22CD','bsol':'\\\\','bsolb':'\\u29C5','bsolhsub':'\\u27C8','bull':'\\u2022','bullet':'\\u2022','bump':'\\u224E','bumpe':'\\u224F','bumpE':'\\u2AAE','bumpeq':'\\u224F','Bumpeq':'\\u224E','cacute':'\\u0107','Cacute':'\\u0106','cap':'\\u2229','Cap':'\\u22D2','capand':'\\u2A44','capbrcup':'\\u2A49','capcap':'\\u2A4B','capcup':'\\u2A47','capdot':'\\u2A40','CapitalDifferentialD':'\\u2145','caps':'\\u2229\\uFE00','caret':'\\u2041','caron':'\\u02C7','Cayleys':'\\u212D','ccaps':'\\u2A4D','ccaron':'\\u010D','Ccaron':'\\u010C','ccedil':'\\xE7','Ccedil':'\\xC7','ccirc':'\\u0109','Ccirc':'\\u0108','Cconint':'\\u2230','ccups':'\\u2A4C','ccupssm':'\\u2A50','cdot':'\\u010B','Cdot':'\\u010A','cedil':'\\xB8','Cedilla':'\\xB8','cemptyv':'\\u29B2','cent':'\\xA2','centerdot':'\\xB7','CenterDot':'\\xB7','cfr':'\\uD835\\uDD20','Cfr':'\\u212D','chcy':'\\u0447','CHcy':'\\u0427','check':'\\u2713','checkmark':'\\u2713','chi':'\\u03C7','Chi':'\\u03A7','cir':'\\u25CB','circ':'\\u02C6','circeq':'\\u2257','circlearrowleft':'\\u21BA','circlearrowright':'\\u21BB','circledast':'\\u229B','circledcirc':'\\u229A','circleddash':'\\u229D','CircleDot':'\\u2299','circledR':'\\xAE','circledS':'\\u24C8','CircleMinus':'\\u2296','CirclePlus':'\\u2295','CircleTimes':'\\u2297','cire':'\\u2257','cirE':'\\u29C3','cirfnint':'\\u2A10','cirmid':'\\u2AEF','cirscir':'\\u29C2','ClockwiseContourIntegral':'\\u2232','CloseCurlyDoubleQuote':'\\u201D','CloseCurlyQuote':'\\u2019','clubs':'\\u2663','clubsuit':'\\u2663','colon':':','Colon':'\\u2237','colone':'\\u2254','Colone':'\\u2A74','coloneq':'\\u2254','comma':',','commat':'@','comp':'\\u2201','compfn':'\\u2218','complement':'\\u2201','complexes':'\\u2102','cong':'\\u2245','congdot':'\\u2A6D','Congruent':'\\u2261','conint':'\\u222E','Conint':'\\u222F','ContourIntegral':'\\u222E','copf':'\\uD835\\uDD54','Copf':'\\u2102','coprod':'\\u2210','Coproduct':'\\u2210','copy':'\\xA9','COPY':'\\xA9','copysr':'\\u2117','CounterClockwiseContourIntegral':'\\u2233','crarr':'\\u21B5','cross':'\\u2717','Cross':'\\u2A2F','cscr':'\\uD835\\uDCB8','Cscr':'\\uD835\\uDC9E','csub':'\\u2ACF','csube':'\\u2AD1','csup':'\\u2AD0','csupe':'\\u2AD2','ctdot':'\\u22EF','cudarrl':'\\u2938','cudarrr':'\\u2935','cuepr':'\\u22DE','cuesc':'\\u22DF','cularr':'\\u21B6','cularrp':'\\u293D','cup':'\\u222A','Cup':'\\u22D3','cupbrcap':'\\u2A48','cupcap':'\\u2A46','CupCap':'\\u224D','cupcup':'\\u2A4A','cupdot':'\\u228D','cupor':'\\u2A45','cups':'\\u222A\\uFE00','curarr':'\\u21B7','curarrm':'\\u293C','curlyeqprec':'\\u22DE','curlyeqsucc':'\\u22DF','curlyvee':'\\u22CE','curlywedge':'\\u22CF','curren':'\\xA4','curvearrowleft':'\\u21B6','curvearrowright':'\\u21B7','cuvee':'\\u22CE','cuwed':'\\u22CF','cwconint':'\\u2232','cwint':'\\u2231','cylcty':'\\u232D','dagger':'\\u2020','Dagger':'\\u2021','daleth':'\\u2138','darr':'\\u2193','dArr':'\\u21D3','Darr':'\\u21A1','dash':'\\u2010','dashv':'\\u22A3','Dashv':'\\u2AE4','dbkarow':'\\u290F','dblac':'\\u02DD','dcaron':'\\u010F','Dcaron':'\\u010E','dcy':'\\u0434','Dcy':'\\u0414','dd':'\\u2146','DD':'\\u2145','ddagger':'\\u2021','ddarr':'\\u21CA','DDotrahd':'\\u2911','ddotseq':'\\u2A77','deg':'\\xB0','Del':'\\u2207','delta':'\\u03B4','Delta':'\\u0394','demptyv':'\\u29B1','dfisht':'\\u297F','dfr':'\\uD835\\uDD21','Dfr':'\\uD835\\uDD07','dHar':'\\u2965','dharl':'\\u21C3','dharr':'\\u21C2','DiacriticalAcute':'\\xB4','DiacriticalDot':'\\u02D9','DiacriticalDoubleAcute':'\\u02DD','DiacriticalGrave':'`','DiacriticalTilde':'\\u02DC','diam':'\\u22C4','diamond':'\\u22C4','Diamond':'\\u22C4','diamondsuit':'\\u2666','diams':'\\u2666','die':'\\xA8','DifferentialD':'\\u2146','digamma':'\\u03DD','disin':'\\u22F2','div':'\\xF7','divide':'\\xF7','divideontimes':'\\u22C7','divonx':'\\u22C7','djcy':'\\u0452','DJcy':'\\u0402','dlcorn':'\\u231E','dlcrop':'\\u230D','dollar':'$','dopf':'\\uD835\\uDD55','Dopf':'\\uD835\\uDD3B','dot':'\\u02D9','Dot':'\\xA8','DotDot':'\\u20DC','doteq':'\\u2250','doteqdot':'\\u2251','DotEqual':'\\u2250','dotminus':'\\u2238','dotplus':'\\u2214','dotsquare':'\\u22A1','doublebarwedge':'\\u2306','DoubleContourIntegral':'\\u222F','DoubleDot':'\\xA8','DoubleDownArrow':'\\u21D3','DoubleLeftArrow':'\\u21D0','DoubleLeftRightArrow':'\\u21D4','DoubleLeftTee':'\\u2AE4','DoubleLongLeftArrow':'\\u27F8','DoubleLongLeftRightArrow':'\\u27FA','DoubleLongRightArrow':'\\u27F9','DoubleRightArrow':'\\u21D2','DoubleRightTee':'\\u22A8','DoubleUpArrow':'\\u21D1','DoubleUpDownArrow':'\\u21D5','DoubleVerticalBar':'\\u2225','downarrow':'\\u2193','Downarrow':'\\u21D3','DownArrow':'\\u2193','DownArrowBar':'\\u2913','DownArrowUpArrow':'\\u21F5','DownBreve':'\\u0311','downdownarrows':'\\u21CA','downharpoonleft':'\\u21C3','downharpoonright':'\\u21C2','DownLeftRightVector':'\\u2950','DownLeftTeeVector':'\\u295E','DownLeftVector':'\\u21BD','DownLeftVectorBar':'\\u2956','DownRightTeeVector':'\\u295F','DownRightVector':'\\u21C1','DownRightVectorBar':'\\u2957','DownTee':'\\u22A4','DownTeeArrow':'\\u21A7','drbkarow':'\\u2910','drcorn':'\\u231F','drcrop':'\\u230C','dscr':'\\uD835\\uDCB9','Dscr':'\\uD835\\uDC9F','dscy':'\\u0455','DScy':'\\u0405','dsol':'\\u29F6','dstrok':'\\u0111','Dstrok':'\\u0110','dtdot':'\\u22F1','dtri':'\\u25BF','dtrif':'\\u25BE','duarr':'\\u21F5','duhar':'\\u296F','dwangle':'\\u29A6','dzcy':'\\u045F','DZcy':'\\u040F','dzigrarr':'\\u27FF','eacute':'\\xE9','Eacute':'\\xC9','easter':'\\u2A6E','ecaron':'\\u011B','Ecaron':'\\u011A','ecir':'\\u2256','ecirc':'\\xEA','Ecirc':'\\xCA','ecolon':'\\u2255','ecy':'\\u044D','Ecy':'\\u042D','eDDot':'\\u2A77','edot':'\\u0117','eDot':'\\u2251','Edot':'\\u0116','ee':'\\u2147','efDot':'\\u2252','efr':'\\uD835\\uDD22','Efr':'\\uD835\\uDD08','eg':'\\u2A9A','egrave':'\\xE8','Egrave':'\\xC8','egs':'\\u2A96','egsdot':'\\u2A98','el':'\\u2A99','Element':'\\u2208','elinters':'\\u23E7','ell':'\\u2113','els':'\\u2A95','elsdot':'\\u2A97','emacr':'\\u0113','Emacr':'\\u0112','empty':'\\u2205','emptyset':'\\u2205','EmptySmallSquare':'\\u25FB','emptyv':'\\u2205','EmptyVerySmallSquare':'\\u25AB','emsp':'\\u2003','emsp13':'\\u2004','emsp14':'\\u2005','eng':'\\u014B','ENG':'\\u014A','ensp':'\\u2002','eogon':'\\u0119','Eogon':'\\u0118','eopf':'\\uD835\\uDD56','Eopf':'\\uD835\\uDD3C','epar':'\\u22D5','eparsl':'\\u29E3','eplus':'\\u2A71','epsi':'\\u03B5','epsilon':'\\u03B5','Epsilon':'\\u0395','epsiv':'\\u03F5','eqcirc':'\\u2256','eqcolon':'\\u2255','eqsim':'\\u2242','eqslantgtr':'\\u2A96','eqslantless':'\\u2A95','Equal':'\\u2A75','equals':'=','EqualTilde':'\\u2242','equest':'\\u225F','Equilibrium':'\\u21CC','equiv':'\\u2261','equivDD':'\\u2A78','eqvparsl':'\\u29E5','erarr':'\\u2971','erDot':'\\u2253','escr':'\\u212F','Escr':'\\u2130','esdot':'\\u2250','esim':'\\u2242','Esim':'\\u2A73','eta':'\\u03B7','Eta':'\\u0397','eth':'\\xF0','ETH':'\\xD0','euml':'\\xEB','Euml':'\\xCB','euro':'\\u20AC','excl':'!','exist':'\\u2203','Exists':'\\u2203','expectation':'\\u2130','exponentiale':'\\u2147','ExponentialE':'\\u2147','fallingdotseq':'\\u2252','fcy':'\\u0444','Fcy':'\\u0424','female':'\\u2640','ffilig':'\\uFB03','fflig':'\\uFB00','ffllig':'\\uFB04','ffr':'\\uD835\\uDD23','Ffr':'\\uD835\\uDD09','filig':'\\uFB01','FilledSmallSquare':'\\u25FC','FilledVerySmallSquare':'\\u25AA','fjlig':'fj','flat':'\\u266D','fllig':'\\uFB02','fltns':'\\u25B1','fnof':'\\u0192','fopf':'\\uD835\\uDD57','Fopf':'\\uD835\\uDD3D','forall':'\\u2200','ForAll':'\\u2200','fork':'\\u22D4','forkv':'\\u2AD9','Fouriertrf':'\\u2131','fpartint':'\\u2A0D','frac12':'\\xBD','frac13':'\\u2153','frac14':'\\xBC','frac15':'\\u2155','frac16':'\\u2159','frac18':'\\u215B','frac23':'\\u2154','frac25':'\\u2156','frac34':'\\xBE','frac35':'\\u2157','frac38':'\\u215C','frac45':'\\u2158','frac56':'\\u215A','frac58':'\\u215D','frac78':'\\u215E','frasl':'\\u2044','frown':'\\u2322','fscr':'\\uD835\\uDCBB','Fscr':'\\u2131','gacute':'\\u01F5','gamma':'\\u03B3','Gamma':'\\u0393','gammad':'\\u03DD','Gammad':'\\u03DC','gap':'\\u2A86','gbreve':'\\u011F','Gbreve':'\\u011E','Gcedil':'\\u0122','gcirc':'\\u011D','Gcirc':'\\u011C','gcy':'\\u0433','Gcy':'\\u0413','gdot':'\\u0121','Gdot':'\\u0120','ge':'\\u2265','gE':'\\u2267','gel':'\\u22DB','gEl':'\\u2A8C','geq':'\\u2265','geqq':'\\u2267','geqslant':'\\u2A7E','ges':'\\u2A7E','gescc':'\\u2AA9','gesdot':'\\u2A80','gesdoto':'\\u2A82','gesdotol':'\\u2A84','gesl':'\\u22DB\\uFE00','gesles':'\\u2A94','gfr':'\\uD835\\uDD24','Gfr':'\\uD835\\uDD0A','gg':'\\u226B','Gg':'\\u22D9','ggg':'\\u22D9','gimel':'\\u2137','gjcy':'\\u0453','GJcy':'\\u0403','gl':'\\u2277','gla':'\\u2AA5','glE':'\\u2A92','glj':'\\u2AA4','gnap':'\\u2A8A','gnapprox':'\\u2A8A','gne':'\\u2A88','gnE':'\\u2269','gneq':'\\u2A88','gneqq':'\\u2269','gnsim':'\\u22E7','gopf':'\\uD835\\uDD58','Gopf':'\\uD835\\uDD3E','grave':'`','GreaterEqual':'\\u2265','GreaterEqualLess':'\\u22DB','GreaterFullEqual':'\\u2267','GreaterGreater':'\\u2AA2','GreaterLess':'\\u2277','GreaterSlantEqual':'\\u2A7E','GreaterTilde':'\\u2273','gscr':'\\u210A','Gscr':'\\uD835\\uDCA2','gsim':'\\u2273','gsime':'\\u2A8E','gsiml':'\\u2A90','gt':'>','Gt':'\\u226B','GT':'>','gtcc':'\\u2AA7','gtcir':'\\u2A7A','gtdot':'\\u22D7','gtlPar':'\\u2995','gtquest':'\\u2A7C','gtrapprox':'\\u2A86','gtrarr':'\\u2978','gtrdot':'\\u22D7','gtreqless':'\\u22DB','gtreqqless':'\\u2A8C','gtrless':'\\u2277','gtrsim':'\\u2273','gvertneqq':'\\u2269\\uFE00','gvnE':'\\u2269\\uFE00','Hacek':'\\u02C7','hairsp':'\\u200A','half':'\\xBD','hamilt':'\\u210B','hardcy':'\\u044A','HARDcy':'\\u042A','harr':'\\u2194','hArr':'\\u21D4','harrcir':'\\u2948','harrw':'\\u21AD','Hat':'^','hbar':'\\u210F','hcirc':'\\u0125','Hcirc':'\\u0124','hearts':'\\u2665','heartsuit':'\\u2665','hellip':'\\u2026','hercon':'\\u22B9','hfr':'\\uD835\\uDD25','Hfr':'\\u210C','HilbertSpace':'\\u210B','hksearow':'\\u2925','hkswarow':'\\u2926','hoarr':'\\u21FF','homtht':'\\u223B','hookleftarrow':'\\u21A9','hookrightarrow':'\\u21AA','hopf':'\\uD835\\uDD59','Hopf':'\\u210D','horbar':'\\u2015','HorizontalLine':'\\u2500','hscr':'\\uD835\\uDCBD','Hscr':'\\u210B','hslash':'\\u210F','hstrok':'\\u0127','Hstrok':'\\u0126','HumpDownHump':'\\u224E','HumpEqual':'\\u224F','hybull':'\\u2043','hyphen':'\\u2010','iacute':'\\xED','Iacute':'\\xCD','ic':'\\u2063','icirc':'\\xEE','Icirc':'\\xCE','icy':'\\u0438','Icy':'\\u0418','Idot':'\\u0130','iecy':'\\u0435','IEcy':'\\u0415','iexcl':'\\xA1','iff':'\\u21D4','ifr':'\\uD835\\uDD26','Ifr':'\\u2111','igrave':'\\xEC','Igrave':'\\xCC','ii':'\\u2148','iiiint':'\\u2A0C','iiint':'\\u222D','iinfin':'\\u29DC','iiota':'\\u2129','ijlig':'\\u0133','IJlig':'\\u0132','Im':'\\u2111','imacr':'\\u012B','Imacr':'\\u012A','image':'\\u2111','ImaginaryI':'\\u2148','imagline':'\\u2110','imagpart':'\\u2111','imath':'\\u0131','imof':'\\u22B7','imped':'\\u01B5','Implies':'\\u21D2','in':'\\u2208','incare':'\\u2105','infin':'\\u221E','infintie':'\\u29DD','inodot':'\\u0131','int':'\\u222B','Int':'\\u222C','intcal':'\\u22BA','integers':'\\u2124','Integral':'\\u222B','intercal':'\\u22BA','Intersection':'\\u22C2','intlarhk':'\\u2A17','intprod':'\\u2A3C','InvisibleComma':'\\u2063','InvisibleTimes':'\\u2062','iocy':'\\u0451','IOcy':'\\u0401','iogon':'\\u012F','Iogon':'\\u012E','iopf':'\\uD835\\uDD5A','Iopf':'\\uD835\\uDD40','iota':'\\u03B9','Iota':'\\u0399','iprod':'\\u2A3C','iquest':'\\xBF','iscr':'\\uD835\\uDCBE','Iscr':'\\u2110','isin':'\\u2208','isindot':'\\u22F5','isinE':'\\u22F9','isins':'\\u22F4','isinsv':'\\u22F3','isinv':'\\u2208','it':'\\u2062','itilde':'\\u0129','Itilde':'\\u0128','iukcy':'\\u0456','Iukcy':'\\u0406','iuml':'\\xEF','Iuml':'\\xCF','jcirc':'\\u0135','Jcirc':'\\u0134','jcy':'\\u0439','Jcy':'\\u0419','jfr':'\\uD835\\uDD27','Jfr':'\\uD835\\uDD0D','jmath':'\\u0237','jopf':'\\uD835\\uDD5B','Jopf':'\\uD835\\uDD41','jscr':'\\uD835\\uDCBF','Jscr':'\\uD835\\uDCA5','jsercy':'\\u0458','Jsercy':'\\u0408','jukcy':'\\u0454','Jukcy':'\\u0404','kappa':'\\u03BA','Kappa':'\\u039A','kappav':'\\u03F0','kcedil':'\\u0137','Kcedil':'\\u0136','kcy':'\\u043A','Kcy':'\\u041A','kfr':'\\uD835\\uDD28','Kfr':'\\uD835\\uDD0E','kgreen':'\\u0138','khcy':'\\u0445','KHcy':'\\u0425','kjcy':'\\u045C','KJcy':'\\u040C','kopf':'\\uD835\\uDD5C','Kopf':'\\uD835\\uDD42','kscr':'\\uD835\\uDCC0','Kscr':'\\uD835\\uDCA6','lAarr':'\\u21DA','lacute':'\\u013A','Lacute':'\\u0139','laemptyv':'\\u29B4','lagran':'\\u2112','lambda':'\\u03BB','Lambda':'\\u039B','lang':'\\u27E8','Lang':'\\u27EA','langd':'\\u2991','langle':'\\u27E8','lap':'\\u2A85','Laplacetrf':'\\u2112','laquo':'\\xAB','larr':'\\u2190','lArr':'\\u21D0','Larr':'\\u219E','larrb':'\\u21E4','larrbfs':'\\u291F','larrfs':'\\u291D','larrhk':'\\u21A9','larrlp':'\\u21AB','larrpl':'\\u2939','larrsim':'\\u2973','larrtl':'\\u21A2','lat':'\\u2AAB','latail':'\\u2919','lAtail':'\\u291B','late':'\\u2AAD','lates':'\\u2AAD\\uFE00','lbarr':'\\u290C','lBarr':'\\u290E','lbbrk':'\\u2772','lbrace':'{','lbrack':'[','lbrke':'\\u298B','lbrksld':'\\u298F','lbrkslu':'\\u298D','lcaron':'\\u013E','Lcaron':'\\u013D','lcedil':'\\u013C','Lcedil':'\\u013B','lceil':'\\u2308','lcub':'{','lcy':'\\u043B','Lcy':'\\u041B','ldca':'\\u2936','ldquo':'\\u201C','ldquor':'\\u201E','ldrdhar':'\\u2967','ldrushar':'\\u294B','ldsh':'\\u21B2','le':'\\u2264','lE':'\\u2266','LeftAngleBracket':'\\u27E8','leftarrow':'\\u2190','Leftarrow':'\\u21D0','LeftArrow':'\\u2190','LeftArrowBar':'\\u21E4','LeftArrowRightArrow':'\\u21C6','leftarrowtail':'\\u21A2','LeftCeiling':'\\u2308','LeftDoubleBracket':'\\u27E6','LeftDownTeeVector':'\\u2961','LeftDownVector':'\\u21C3','LeftDownVectorBar':'\\u2959','LeftFloor':'\\u230A','leftharpoondown':'\\u21BD','leftharpoonup':'\\u21BC','leftleftarrows':'\\u21C7','leftrightarrow':'\\u2194','Leftrightarrow':'\\u21D4','LeftRightArrow':'\\u2194','leftrightarrows':'\\u21C6','leftrightharpoons':'\\u21CB','leftrightsquigarrow':'\\u21AD','LeftRightVector':'\\u294E','LeftTee':'\\u22A3','LeftTeeArrow':'\\u21A4','LeftTeeVector':'\\u295A','leftthreetimes':'\\u22CB','LeftTriangle':'\\u22B2','LeftTriangleBar':'\\u29CF','LeftTriangleEqual':'\\u22B4','LeftUpDownVector':'\\u2951','LeftUpTeeVector':'\\u2960','LeftUpVector':'\\u21BF','LeftUpVectorBar':'\\u2958','LeftVector':'\\u21BC','LeftVectorBar':'\\u2952','leg':'\\u22DA','lEg':'\\u2A8B','leq':'\\u2264','leqq':'\\u2266','leqslant':'\\u2A7D','les':'\\u2A7D','lescc':'\\u2AA8','lesdot':'\\u2A7F','lesdoto':'\\u2A81','lesdotor':'\\u2A83','lesg':'\\u22DA\\uFE00','lesges':'\\u2A93','lessapprox':'\\u2A85','lessdot':'\\u22D6','lesseqgtr':'\\u22DA','lesseqqgtr':'\\u2A8B','LessEqualGreater':'\\u22DA','LessFullEqual':'\\u2266','LessGreater':'\\u2276','lessgtr':'\\u2276','LessLess':'\\u2AA1','lesssim':'\\u2272','LessSlantEqual':'\\u2A7D','LessTilde':'\\u2272','lfisht':'\\u297C','lfloor':'\\u230A','lfr':'\\uD835\\uDD29','Lfr':'\\uD835\\uDD0F','lg':'\\u2276','lgE':'\\u2A91','lHar':'\\u2962','lhard':'\\u21BD','lharu':'\\u21BC','lharul':'\\u296A','lhblk':'\\u2584','ljcy':'\\u0459','LJcy':'\\u0409','ll':'\\u226A','Ll':'\\u22D8','llarr':'\\u21C7','llcorner':'\\u231E','Lleftarrow':'\\u21DA','llhard':'\\u296B','lltri':'\\u25FA','lmidot':'\\u0140','Lmidot':'\\u013F','lmoust':'\\u23B0','lmoustache':'\\u23B0','lnap':'\\u2A89','lnapprox':'\\u2A89','lne':'\\u2A87','lnE':'\\u2268','lneq':'\\u2A87','lneqq':'\\u2268','lnsim':'\\u22E6','loang':'\\u27EC','loarr':'\\u21FD','lobrk':'\\u27E6','longleftarrow':'\\u27F5','Longleftarrow':'\\u27F8','LongLeftArrow':'\\u27F5','longleftrightarrow':'\\u27F7','Longleftrightarrow':'\\u27FA','LongLeftRightArrow':'\\u27F7','longmapsto':'\\u27FC','longrightarrow':'\\u27F6','Longrightarrow':'\\u27F9','LongRightArrow':'\\u27F6','looparrowleft':'\\u21AB','looparrowright':'\\u21AC','lopar':'\\u2985','lopf':'\\uD835\\uDD5D','Lopf':'\\uD835\\uDD43','loplus':'\\u2A2D','lotimes':'\\u2A34','lowast':'\\u2217','lowbar':'_','LowerLeftArrow':'\\u2199','LowerRightArrow':'\\u2198','loz':'\\u25CA','lozenge':'\\u25CA','lozf':'\\u29EB','lpar':'(','lparlt':'\\u2993','lrarr':'\\u21C6','lrcorner':'\\u231F','lrhar':'\\u21CB','lrhard':'\\u296D','lrm':'\\u200E','lrtri':'\\u22BF','lsaquo':'\\u2039','lscr':'\\uD835\\uDCC1','Lscr':'\\u2112','lsh':'\\u21B0','Lsh':'\\u21B0','lsim':'\\u2272','lsime':'\\u2A8D','lsimg':'\\u2A8F','lsqb':'[','lsquo':'\\u2018','lsquor':'\\u201A','lstrok':'\\u0142','Lstrok':'\\u0141','lt':'<','Lt':'\\u226A','LT':'<','ltcc':'\\u2AA6','ltcir':'\\u2A79','ltdot':'\\u22D6','lthree':'\\u22CB','ltimes':'\\u22C9','ltlarr':'\\u2976','ltquest':'\\u2A7B','ltri':'\\u25C3','ltrie':'\\u22B4','ltrif':'\\u25C2','ltrPar':'\\u2996','lurdshar':'\\u294A','luruhar':'\\u2966','lvertneqq':'\\u2268\\uFE00','lvnE':'\\u2268\\uFE00','macr':'\\xAF','male':'\\u2642','malt':'\\u2720','maltese':'\\u2720','map':'\\u21A6','Map':'\\u2905','mapsto':'\\u21A6','mapstodown':'\\u21A7','mapstoleft':'\\u21A4','mapstoup':'\\u21A5','marker':'\\u25AE','mcomma':'\\u2A29','mcy':'\\u043C','Mcy':'\\u041C','mdash':'\\u2014','mDDot':'\\u223A','measuredangle':'\\u2221','MediumSpace':'\\u205F','Mellintrf':'\\u2133','mfr':'\\uD835\\uDD2A','Mfr':'\\uD835\\uDD10','mho':'\\u2127','micro':'\\xB5','mid':'\\u2223','midast':'*','midcir':'\\u2AF0','middot':'\\xB7','minus':'\\u2212','minusb':'\\u229F','minusd':'\\u2238','minusdu':'\\u2A2A','MinusPlus':'\\u2213','mlcp':'\\u2ADB','mldr':'\\u2026','mnplus':'\\u2213','models':'\\u22A7','mopf':'\\uD835\\uDD5E','Mopf':'\\uD835\\uDD44','mp':'\\u2213','mscr':'\\uD835\\uDCC2','Mscr':'\\u2133','mstpos':'\\u223E','mu':'\\u03BC','Mu':'\\u039C','multimap':'\\u22B8','mumap':'\\u22B8','nabla':'\\u2207','nacute':'\\u0144','Nacute':'\\u0143','nang':'\\u2220\\u20D2','nap':'\\u2249','napE':'\\u2A70\\u0338','napid':'\\u224B\\u0338','napos':'\\u0149','napprox':'\\u2249','natur':'\\u266E','natural':'\\u266E','naturals':'\\u2115','nbsp':'\\xA0','nbump':'\\u224E\\u0338','nbumpe':'\\u224F\\u0338','ncap':'\\u2A43','ncaron':'\\u0148','Ncaron':'\\u0147','ncedil':'\\u0146','Ncedil':'\\u0145','ncong':'\\u2247','ncongdot':'\\u2A6D\\u0338','ncup':'\\u2A42','ncy':'\\u043D','Ncy':'\\u041D','ndash':'\\u2013','ne':'\\u2260','nearhk':'\\u2924','nearr':'\\u2197','neArr':'\\u21D7','nearrow':'\\u2197','nedot':'\\u2250\\u0338','NegativeMediumSpace':'\\u200B','NegativeThickSpace':'\\u200B','NegativeThinSpace':'\\u200B','NegativeVeryThinSpace':'\\u200B','nequiv':'\\u2262','nesear':'\\u2928','nesim':'\\u2242\\u0338','NestedGreaterGreater':'\\u226B','NestedLessLess':'\\u226A','NewLine':'\\n','nexist':'\\u2204','nexists':'\\u2204','nfr':'\\uD835\\uDD2B','Nfr':'\\uD835\\uDD11','nge':'\\u2271','ngE':'\\u2267\\u0338','ngeq':'\\u2271','ngeqq':'\\u2267\\u0338','ngeqslant':'\\u2A7E\\u0338','nges':'\\u2A7E\\u0338','nGg':'\\u22D9\\u0338','ngsim':'\\u2275','ngt':'\\u226F','nGt':'\\u226B\\u20D2','ngtr':'\\u226F','nGtv':'\\u226B\\u0338','nharr':'\\u21AE','nhArr':'\\u21CE','nhpar':'\\u2AF2','ni':'\\u220B','nis':'\\u22FC','nisd':'\\u22FA','niv':'\\u220B','njcy':'\\u045A','NJcy':'\\u040A','nlarr':'\\u219A','nlArr':'\\u21CD','nldr':'\\u2025','nle':'\\u2270','nlE':'\\u2266\\u0338','nleftarrow':'\\u219A','nLeftarrow':'\\u21CD','nleftrightarrow':'\\u21AE','nLeftrightarrow':'\\u21CE','nleq':'\\u2270','nleqq':'\\u2266\\u0338','nleqslant':'\\u2A7D\\u0338','nles':'\\u2A7D\\u0338','nless':'\\u226E','nLl':'\\u22D8\\u0338','nlsim':'\\u2274','nlt':'\\u226E','nLt':'\\u226A\\u20D2','nltri':'\\u22EA','nltrie':'\\u22EC','nLtv':'\\u226A\\u0338','nmid':'\\u2224','NoBreak':'\\u2060','NonBreakingSpace':'\\xA0','nopf':'\\uD835\\uDD5F','Nopf':'\\u2115','not':'\\xAC','Not':'\\u2AEC','NotCongruent':'\\u2262','NotCupCap':'\\u226D','NotDoubleVerticalBar':'\\u2226','NotElement':'\\u2209','NotEqual':'\\u2260','NotEqualTilde':'\\u2242\\u0338','NotExists':'\\u2204','NotGreater':'\\u226F','NotGreaterEqual':'\\u2271','NotGreaterFullEqual':'\\u2267\\u0338','NotGreaterGreater':'\\u226B\\u0338','NotGreaterLess':'\\u2279','NotGreaterSlantEqual':'\\u2A7E\\u0338','NotGreaterTilde':'\\u2275','NotHumpDownHump':'\\u224E\\u0338','NotHumpEqual':'\\u224F\\u0338','notin':'\\u2209','notindot':'\\u22F5\\u0338','notinE':'\\u22F9\\u0338','notinva':'\\u2209','notinvb':'\\u22F7','notinvc':'\\u22F6','NotLeftTriangle':'\\u22EA','NotLeftTriangleBar':'\\u29CF\\u0338','NotLeftTriangleEqual':'\\u22EC','NotLess':'\\u226E','NotLessEqual':'\\u2270','NotLessGreater':'\\u2278','NotLessLess':'\\u226A\\u0338','NotLessSlantEqual':'\\u2A7D\\u0338','NotLessTilde':'\\u2274','NotNestedGreaterGreater':'\\u2AA2\\u0338','NotNestedLessLess':'\\u2AA1\\u0338','notni':'\\u220C','notniva':'\\u220C','notnivb':'\\u22FE','notnivc':'\\u22FD','NotPrecedes':'\\u2280','NotPrecedesEqual':'\\u2AAF\\u0338','NotPrecedesSlantEqual':'\\u22E0','NotReverseElement':'\\u220C','NotRightTriangle':'\\u22EB','NotRightTriangleBar':'\\u29D0\\u0338','NotRightTriangleEqual':'\\u22ED','NotSquareSubset':'\\u228F\\u0338','NotSquareSubsetEqual':'\\u22E2','NotSquareSuperset':'\\u2290\\u0338','NotSquareSupersetEqual':'\\u22E3','NotSubset':'\\u2282\\u20D2','NotSubsetEqual':'\\u2288','NotSucceeds':'\\u2281','NotSucceedsEqual':'\\u2AB0\\u0338','NotSucceedsSlantEqual':'\\u22E1','NotSucceedsTilde':'\\u227F\\u0338','NotSuperset':'\\u2283\\u20D2','NotSupersetEqual':'\\u2289','NotTilde':'\\u2241','NotTildeEqual':'\\u2244','NotTildeFullEqual':'\\u2247','NotTildeTilde':'\\u2249','NotVerticalBar':'\\u2224','npar':'\\u2226','nparallel':'\\u2226','nparsl':'\\u2AFD\\u20E5','npart':'\\u2202\\u0338','npolint':'\\u2A14','npr':'\\u2280','nprcue':'\\u22E0','npre':'\\u2AAF\\u0338','nprec':'\\u2280','npreceq':'\\u2AAF\\u0338','nrarr':'\\u219B','nrArr':'\\u21CF','nrarrc':'\\u2933\\u0338','nrarrw':'\\u219D\\u0338','nrightarrow':'\\u219B','nRightarrow':'\\u21CF','nrtri':'\\u22EB','nrtrie':'\\u22ED','nsc':'\\u2281','nsccue':'\\u22E1','nsce':'\\u2AB0\\u0338','nscr':'\\uD835\\uDCC3','Nscr':'\\uD835\\uDCA9','nshortmid':'\\u2224','nshortparallel':'\\u2226','nsim':'\\u2241','nsime':'\\u2244','nsimeq':'\\u2244','nsmid':'\\u2224','nspar':'\\u2226','nsqsube':'\\u22E2','nsqsupe':'\\u22E3','nsub':'\\u2284','nsube':'\\u2288','nsubE':'\\u2AC5\\u0338','nsubset':'\\u2282\\u20D2','nsubseteq':'\\u2288','nsubseteqq':'\\u2AC5\\u0338','nsucc':'\\u2281','nsucceq':'\\u2AB0\\u0338','nsup':'\\u2285','nsupe':'\\u2289','nsupE':'\\u2AC6\\u0338','nsupset':'\\u2283\\u20D2','nsupseteq':'\\u2289','nsupseteqq':'\\u2AC6\\u0338','ntgl':'\\u2279','ntilde':'\\xF1','Ntilde':'\\xD1','ntlg':'\\u2278','ntriangleleft':'\\u22EA','ntrianglelefteq':'\\u22EC','ntriangleright':'\\u22EB','ntrianglerighteq':'\\u22ED','nu':'\\u03BD','Nu':'\\u039D','num':'#','numero':'\\u2116','numsp':'\\u2007','nvap':'\\u224D\\u20D2','nvdash':'\\u22AC','nvDash':'\\u22AD','nVdash':'\\u22AE','nVDash':'\\u22AF','nvge':'\\u2265\\u20D2','nvgt':'>\\u20D2','nvHarr':'\\u2904','nvinfin':'\\u29DE','nvlArr':'\\u2902','nvle':'\\u2264\\u20D2','nvlt':'<\\u20D2','nvltrie':'\\u22B4\\u20D2','nvrArr':'\\u2903','nvrtrie':'\\u22B5\\u20D2','nvsim':'\\u223C\\u20D2','nwarhk':'\\u2923','nwarr':'\\u2196','nwArr':'\\u21D6','nwarrow':'\\u2196','nwnear':'\\u2927','oacute':'\\xF3','Oacute':'\\xD3','oast':'\\u229B','ocir':'\\u229A','ocirc':'\\xF4','Ocirc':'\\xD4','ocy':'\\u043E','Ocy':'\\u041E','odash':'\\u229D','odblac':'\\u0151','Odblac':'\\u0150','odiv':'\\u2A38','odot':'\\u2299','odsold':'\\u29BC','oelig':'\\u0153','OElig':'\\u0152','ofcir':'\\u29BF','ofr':'\\uD835\\uDD2C','Ofr':'\\uD835\\uDD12','ogon':'\\u02DB','ograve':'\\xF2','Ograve':'\\xD2','ogt':'\\u29C1','ohbar':'\\u29B5','ohm':'\\u03A9','oint':'\\u222E','olarr':'\\u21BA','olcir':'\\u29BE','olcross':'\\u29BB','oline':'\\u203E','olt':'\\u29C0','omacr':'\\u014D','Omacr':'\\u014C','omega':'\\u03C9','Omega':'\\u03A9','omicron':'\\u03BF','Omicron':'\\u039F','omid':'\\u29B6','ominus':'\\u2296','oopf':'\\uD835\\uDD60','Oopf':'\\uD835\\uDD46','opar':'\\u29B7','OpenCurlyDoubleQuote':'\\u201C','OpenCurlyQuote':'\\u2018','operp':'\\u29B9','oplus':'\\u2295','or':'\\u2228','Or':'\\u2A54','orarr':'\\u21BB','ord':'\\u2A5D','order':'\\u2134','orderof':'\\u2134','ordf':'\\xAA','ordm':'\\xBA','origof':'\\u22B6','oror':'\\u2A56','orslope':'\\u2A57','orv':'\\u2A5B','oS':'\\u24C8','oscr':'\\u2134','Oscr':'\\uD835\\uDCAA','oslash':'\\xF8','Oslash':'\\xD8','osol':'\\u2298','otilde':'\\xF5','Otilde':'\\xD5','otimes':'\\u2297','Otimes':'\\u2A37','otimesas':'\\u2A36','ouml':'\\xF6','Ouml':'\\xD6','ovbar':'\\u233D','OverBar':'\\u203E','OverBrace':'\\u23DE','OverBracket':'\\u23B4','OverParenthesis':'\\u23DC','par':'\\u2225','para':'\\xB6','parallel':'\\u2225','parsim':'\\u2AF3','parsl':'\\u2AFD','part':'\\u2202','PartialD':'\\u2202','pcy':'\\u043F','Pcy':'\\u041F','percnt':'%','period':'.','permil':'\\u2030','perp':'\\u22A5','pertenk':'\\u2031','pfr':'\\uD835\\uDD2D','Pfr':'\\uD835\\uDD13','phi':'\\u03C6','Phi':'\\u03A6','phiv':'\\u03D5','phmmat':'\\u2133','phone':'\\u260E','pi':'\\u03C0','Pi':'\\u03A0','pitchfork':'\\u22D4','piv':'\\u03D6','planck':'\\u210F','planckh':'\\u210E','plankv':'\\u210F','plus':'+','plusacir':'\\u2A23','plusb':'\\u229E','pluscir':'\\u2A22','plusdo':'\\u2214','plusdu':'\\u2A25','pluse':'\\u2A72','PlusMinus':'\\xB1','plusmn':'\\xB1','plussim':'\\u2A26','plustwo':'\\u2A27','pm':'\\xB1','Poincareplane':'\\u210C','pointint':'\\u2A15','popf':'\\uD835\\uDD61','Popf':'\\u2119','pound':'\\xA3','pr':'\\u227A','Pr':'\\u2ABB','prap':'\\u2AB7','prcue':'\\u227C','pre':'\\u2AAF','prE':'\\u2AB3','prec':'\\u227A','precapprox':'\\u2AB7','preccurlyeq':'\\u227C','Precedes':'\\u227A','PrecedesEqual':'\\u2AAF','PrecedesSlantEqual':'\\u227C','PrecedesTilde':'\\u227E','preceq':'\\u2AAF','precnapprox':'\\u2AB9','precneqq':'\\u2AB5','precnsim':'\\u22E8','precsim':'\\u227E','prime':'\\u2032','Prime':'\\u2033','primes':'\\u2119','prnap':'\\u2AB9','prnE':'\\u2AB5','prnsim':'\\u22E8','prod':'\\u220F','Product':'\\u220F','profalar':'\\u232E','profline':'\\u2312','profsurf':'\\u2313','prop':'\\u221D','Proportion':'\\u2237','Proportional':'\\u221D','propto':'\\u221D','prsim':'\\u227E','prurel':'\\u22B0','pscr':'\\uD835\\uDCC5','Pscr':'\\uD835\\uDCAB','psi':'\\u03C8','Psi':'\\u03A8','puncsp':'\\u2008','qfr':'\\uD835\\uDD2E','Qfr':'\\uD835\\uDD14','qint':'\\u2A0C','qopf':'\\uD835\\uDD62','Qopf':'\\u211A','qprime':'\\u2057','qscr':'\\uD835\\uDCC6','Qscr':'\\uD835\\uDCAC','quaternions':'\\u210D','quatint':'\\u2A16','quest':'?','questeq':'\\u225F','quot':'\"','QUOT':'\"','rAarr':'\\u21DB','race':'\\u223D\\u0331','racute':'\\u0155','Racute':'\\u0154','radic':'\\u221A','raemptyv':'\\u29B3','rang':'\\u27E9','Rang':'\\u27EB','rangd':'\\u2992','range':'\\u29A5','rangle':'\\u27E9','raquo':'\\xBB','rarr':'\\u2192','rArr':'\\u21D2','Rarr':'\\u21A0','rarrap':'\\u2975','rarrb':'\\u21E5','rarrbfs':'\\u2920','rarrc':'\\u2933','rarrfs':'\\u291E','rarrhk':'\\u21AA','rarrlp':'\\u21AC','rarrpl':'\\u2945','rarrsim':'\\u2974','rarrtl':'\\u21A3','Rarrtl':'\\u2916','rarrw':'\\u219D','ratail':'\\u291A','rAtail':'\\u291C','ratio':'\\u2236','rationals':'\\u211A','rbarr':'\\u290D','rBarr':'\\u290F','RBarr':'\\u2910','rbbrk':'\\u2773','rbrace':'}','rbrack':']','rbrke':'\\u298C','rbrksld':'\\u298E','rbrkslu':'\\u2990','rcaron':'\\u0159','Rcaron':'\\u0158','rcedil':'\\u0157','Rcedil':'\\u0156','rceil':'\\u2309','rcub':'}','rcy':'\\u0440','Rcy':'\\u0420','rdca':'\\u2937','rdldhar':'\\u2969','rdquo':'\\u201D','rdquor':'\\u201D','rdsh':'\\u21B3','Re':'\\u211C','real':'\\u211C','realine':'\\u211B','realpart':'\\u211C','reals':'\\u211D','rect':'\\u25AD','reg':'\\xAE','REG':'\\xAE','ReverseElement':'\\u220B','ReverseEquilibrium':'\\u21CB','ReverseUpEquilibrium':'\\u296F','rfisht':'\\u297D','rfloor':'\\u230B','rfr':'\\uD835\\uDD2F','Rfr':'\\u211C','rHar':'\\u2964','rhard':'\\u21C1','rharu':'\\u21C0','rharul':'\\u296C','rho':'\\u03C1','Rho':'\\u03A1','rhov':'\\u03F1','RightAngleBracket':'\\u27E9','rightarrow':'\\u2192','Rightarrow':'\\u21D2','RightArrow':'\\u2192','RightArrowBar':'\\u21E5','RightArrowLeftArrow':'\\u21C4','rightarrowtail':'\\u21A3','RightCeiling':'\\u2309','RightDoubleBracket':'\\u27E7','RightDownTeeVector':'\\u295D','RightDownVector':'\\u21C2','RightDownVectorBar':'\\u2955','RightFloor':'\\u230B','rightharpoondown':'\\u21C1','rightharpoonup':'\\u21C0','rightleftarrows':'\\u21C4','rightleftharpoons':'\\u21CC','rightrightarrows':'\\u21C9','rightsquigarrow':'\\u219D','RightTee':'\\u22A2','RightTeeArrow':'\\u21A6','RightTeeVector':'\\u295B','rightthreetimes':'\\u22CC','RightTriangle':'\\u22B3','RightTriangleBar':'\\u29D0','RightTriangleEqual':'\\u22B5','RightUpDownVector':'\\u294F','RightUpTeeVector':'\\u295C','RightUpVector':'\\u21BE','RightUpVectorBar':'\\u2954','RightVector':'\\u21C0','RightVectorBar':'\\u2953','ring':'\\u02DA','risingdotseq':'\\u2253','rlarr':'\\u21C4','rlhar':'\\u21CC','rlm':'\\u200F','rmoust':'\\u23B1','rmoustache':'\\u23B1','rnmid':'\\u2AEE','roang':'\\u27ED','roarr':'\\u21FE','robrk':'\\u27E7','ropar':'\\u2986','ropf':'\\uD835\\uDD63','Ropf':'\\u211D','roplus':'\\u2A2E','rotimes':'\\u2A35','RoundImplies':'\\u2970','rpar':')','rpargt':'\\u2994','rppolint':'\\u2A12','rrarr':'\\u21C9','Rrightarrow':'\\u21DB','rsaquo':'\\u203A','rscr':'\\uD835\\uDCC7','Rscr':'\\u211B','rsh':'\\u21B1','Rsh':'\\u21B1','rsqb':']','rsquo':'\\u2019','rsquor':'\\u2019','rthree':'\\u22CC','rtimes':'\\u22CA','rtri':'\\u25B9','rtrie':'\\u22B5','rtrif':'\\u25B8','rtriltri':'\\u29CE','RuleDelayed':'\\u29F4','ruluhar':'\\u2968','rx':'\\u211E','sacute':'\\u015B','Sacute':'\\u015A','sbquo':'\\u201A','sc':'\\u227B','Sc':'\\u2ABC','scap':'\\u2AB8','scaron':'\\u0161','Scaron':'\\u0160','sccue':'\\u227D','sce':'\\u2AB0','scE':'\\u2AB4','scedil':'\\u015F','Scedil':'\\u015E','scirc':'\\u015D','Scirc':'\\u015C','scnap':'\\u2ABA','scnE':'\\u2AB6','scnsim':'\\u22E9','scpolint':'\\u2A13','scsim':'\\u227F','scy':'\\u0441','Scy':'\\u0421','sdot':'\\u22C5','sdotb':'\\u22A1','sdote':'\\u2A66','searhk':'\\u2925','searr':'\\u2198','seArr':'\\u21D8','searrow':'\\u2198','sect':'\\xA7','semi':';','seswar':'\\u2929','setminus':'\\u2216','setmn':'\\u2216','sext':'\\u2736','sfr':'\\uD835\\uDD30','Sfr':'\\uD835\\uDD16','sfrown':'\\u2322','sharp':'\\u266F','shchcy':'\\u0449','SHCHcy':'\\u0429','shcy':'\\u0448','SHcy':'\\u0428','ShortDownArrow':'\\u2193','ShortLeftArrow':'\\u2190','shortmid':'\\u2223','shortparallel':'\\u2225','ShortRightArrow':'\\u2192','ShortUpArrow':'\\u2191','shy':'\\xAD','sigma':'\\u03C3','Sigma':'\\u03A3','sigmaf':'\\u03C2','sigmav':'\\u03C2','sim':'\\u223C','simdot':'\\u2A6A','sime':'\\u2243','simeq':'\\u2243','simg':'\\u2A9E','simgE':'\\u2AA0','siml':'\\u2A9D','simlE':'\\u2A9F','simne':'\\u2246','simplus':'\\u2A24','simrarr':'\\u2972','slarr':'\\u2190','SmallCircle':'\\u2218','smallsetminus':'\\u2216','smashp':'\\u2A33','smeparsl':'\\u29E4','smid':'\\u2223','smile':'\\u2323','smt':'\\u2AAA','smte':'\\u2AAC','smtes':'\\u2AAC\\uFE00','softcy':'\\u044C','SOFTcy':'\\u042C','sol':'/','solb':'\\u29C4','solbar':'\\u233F','sopf':'\\uD835\\uDD64','Sopf':'\\uD835\\uDD4A','spades':'\\u2660','spadesuit':'\\u2660','spar':'\\u2225','sqcap':'\\u2293','sqcaps':'\\u2293\\uFE00','sqcup':'\\u2294','sqcups':'\\u2294\\uFE00','Sqrt':'\\u221A','sqsub':'\\u228F','sqsube':'\\u2291','sqsubset':'\\u228F','sqsubseteq':'\\u2291','sqsup':'\\u2290','sqsupe':'\\u2292','sqsupset':'\\u2290','sqsupseteq':'\\u2292','squ':'\\u25A1','square':'\\u25A1','Square':'\\u25A1','SquareIntersection':'\\u2293','SquareSubset':'\\u228F','SquareSubsetEqual':'\\u2291','SquareSuperset':'\\u2290','SquareSupersetEqual':'\\u2292','SquareUnion':'\\u2294','squarf':'\\u25AA','squf':'\\u25AA','srarr':'\\u2192','sscr':'\\uD835\\uDCC8','Sscr':'\\uD835\\uDCAE','ssetmn':'\\u2216','ssmile':'\\u2323','sstarf':'\\u22C6','star':'\\u2606','Star':'\\u22C6','starf':'\\u2605','straightepsilon':'\\u03F5','straightphi':'\\u03D5','strns':'\\xAF','sub':'\\u2282','Sub':'\\u22D0','subdot':'\\u2ABD','sube':'\\u2286','subE':'\\u2AC5','subedot':'\\u2AC3','submult':'\\u2AC1','subne':'\\u228A','subnE':'\\u2ACB','subplus':'\\u2ABF','subrarr':'\\u2979','subset':'\\u2282','Subset':'\\u22D0','subseteq':'\\u2286','subseteqq':'\\u2AC5','SubsetEqual':'\\u2286','subsetneq':'\\u228A','subsetneqq':'\\u2ACB','subsim':'\\u2AC7','subsub':'\\u2AD5','subsup':'\\u2AD3','succ':'\\u227B','succapprox':'\\u2AB8','succcurlyeq':'\\u227D','Succeeds':'\\u227B','SucceedsEqual':'\\u2AB0','SucceedsSlantEqual':'\\u227D','SucceedsTilde':'\\u227F','succeq':'\\u2AB0','succnapprox':'\\u2ABA','succneqq':'\\u2AB6','succnsim':'\\u22E9','succsim':'\\u227F','SuchThat':'\\u220B','sum':'\\u2211','Sum':'\\u2211','sung':'\\u266A','sup':'\\u2283','Sup':'\\u22D1','sup1':'\\xB9','sup2':'\\xB2','sup3':'\\xB3','supdot':'\\u2ABE','supdsub':'\\u2AD8','supe':'\\u2287','supE':'\\u2AC6','supedot':'\\u2AC4','Superset':'\\u2283','SupersetEqual':'\\u2287','suphsol':'\\u27C9','suphsub':'\\u2AD7','suplarr':'\\u297B','supmult':'\\u2AC2','supne':'\\u228B','supnE':'\\u2ACC','supplus':'\\u2AC0','supset':'\\u2283','Supset':'\\u22D1','supseteq':'\\u2287','supseteqq':'\\u2AC6','supsetneq':'\\u228B','supsetneqq':'\\u2ACC','supsim':'\\u2AC8','supsub':'\\u2AD4','supsup':'\\u2AD6','swarhk':'\\u2926','swarr':'\\u2199','swArr':'\\u21D9','swarrow':'\\u2199','swnwar':'\\u292A','szlig':'\\xDF','Tab':'\\t','target':'\\u2316','tau':'\\u03C4','Tau':'\\u03A4','tbrk':'\\u23B4','tcaron':'\\u0165','Tcaron':'\\u0164','tcedil':'\\u0163','Tcedil':'\\u0162','tcy':'\\u0442','Tcy':'\\u0422','tdot':'\\u20DB','telrec':'\\u2315','tfr':'\\uD835\\uDD31','Tfr':'\\uD835\\uDD17','there4':'\\u2234','therefore':'\\u2234','Therefore':'\\u2234','theta':'\\u03B8','Theta':'\\u0398','thetasym':'\\u03D1','thetav':'\\u03D1','thickapprox':'\\u2248','thicksim':'\\u223C','ThickSpace':'\\u205F\\u200A','thinsp':'\\u2009','ThinSpace':'\\u2009','thkap':'\\u2248','thksim':'\\u223C','thorn':'\\xFE','THORN':'\\xDE','tilde':'\\u02DC','Tilde':'\\u223C','TildeEqual':'\\u2243','TildeFullEqual':'\\u2245','TildeTilde':'\\u2248','times':'\\xD7','timesb':'\\u22A0','timesbar':'\\u2A31','timesd':'\\u2A30','tint':'\\u222D','toea':'\\u2928','top':'\\u22A4','topbot':'\\u2336','topcir':'\\u2AF1','topf':'\\uD835\\uDD65','Topf':'\\uD835\\uDD4B','topfork':'\\u2ADA','tosa':'\\u2929','tprime':'\\u2034','trade':'\\u2122','TRADE':'\\u2122','triangle':'\\u25B5','triangledown':'\\u25BF','triangleleft':'\\u25C3','trianglelefteq':'\\u22B4','triangleq':'\\u225C','triangleright':'\\u25B9','trianglerighteq':'\\u22B5','tridot':'\\u25EC','trie':'\\u225C','triminus':'\\u2A3A','TripleDot':'\\u20DB','triplus':'\\u2A39','trisb':'\\u29CD','tritime':'\\u2A3B','trpezium':'\\u23E2','tscr':'\\uD835\\uDCC9','Tscr':'\\uD835\\uDCAF','tscy':'\\u0446','TScy':'\\u0426','tshcy':'\\u045B','TSHcy':'\\u040B','tstrok':'\\u0167','Tstrok':'\\u0166','twixt':'\\u226C','twoheadleftarrow':'\\u219E','twoheadrightarrow':'\\u21A0','uacute':'\\xFA','Uacute':'\\xDA','uarr':'\\u2191','uArr':'\\u21D1','Uarr':'\\u219F','Uarrocir':'\\u2949','ubrcy':'\\u045E','Ubrcy':'\\u040E','ubreve':'\\u016D','Ubreve':'\\u016C','ucirc':'\\xFB','Ucirc':'\\xDB','ucy':'\\u0443','Ucy':'\\u0423','udarr':'\\u21C5','udblac':'\\u0171','Udblac':'\\u0170','udhar':'\\u296E','ufisht':'\\u297E','ufr':'\\uD835\\uDD32','Ufr':'\\uD835\\uDD18','ugrave':'\\xF9','Ugrave':'\\xD9','uHar':'\\u2963','uharl':'\\u21BF','uharr':'\\u21BE','uhblk':'\\u2580','ulcorn':'\\u231C','ulcorner':'\\u231C','ulcrop':'\\u230F','ultri':'\\u25F8','umacr':'\\u016B','Umacr':'\\u016A','uml':'\\xA8','UnderBar':'_','UnderBrace':'\\u23DF','UnderBracket':'\\u23B5','UnderParenthesis':'\\u23DD','Union':'\\u22C3','UnionPlus':'\\u228E','uogon':'\\u0173','Uogon':'\\u0172','uopf':'\\uD835\\uDD66','Uopf':'\\uD835\\uDD4C','uparrow':'\\u2191','Uparrow':'\\u21D1','UpArrow':'\\u2191','UpArrowBar':'\\u2912','UpArrowDownArrow':'\\u21C5','updownarrow':'\\u2195','Updownarrow':'\\u21D5','UpDownArrow':'\\u2195','UpEquilibrium':'\\u296E','upharpoonleft':'\\u21BF','upharpoonright':'\\u21BE','uplus':'\\u228E','UpperLeftArrow':'\\u2196','UpperRightArrow':'\\u2197','upsi':'\\u03C5','Upsi':'\\u03D2','upsih':'\\u03D2','upsilon':'\\u03C5','Upsilon':'\\u03A5','UpTee':'\\u22A5','UpTeeArrow':'\\u21A5','upuparrows':'\\u21C8','urcorn':'\\u231D','urcorner':'\\u231D','urcrop':'\\u230E','uring':'\\u016F','Uring':'\\u016E','urtri':'\\u25F9','uscr':'\\uD835\\uDCCA','Uscr':'\\uD835\\uDCB0','utdot':'\\u22F0','utilde':'\\u0169','Utilde':'\\u0168','utri':'\\u25B5','utrif':'\\u25B4','uuarr':'\\u21C8','uuml':'\\xFC','Uuml':'\\xDC','uwangle':'\\u29A7','vangrt':'\\u299C','varepsilon':'\\u03F5','varkappa':'\\u03F0','varnothing':'\\u2205','varphi':'\\u03D5','varpi':'\\u03D6','varpropto':'\\u221D','varr':'\\u2195','vArr':'\\u21D5','varrho':'\\u03F1','varsigma':'\\u03C2','varsubsetneq':'\\u228A\\uFE00','varsubsetneqq':'\\u2ACB\\uFE00','varsupsetneq':'\\u228B\\uFE00','varsupsetneqq':'\\u2ACC\\uFE00','vartheta':'\\u03D1','vartriangleleft':'\\u22B2','vartriangleright':'\\u22B3','vBar':'\\u2AE8','Vbar':'\\u2AEB','vBarv':'\\u2AE9','vcy':'\\u0432','Vcy':'\\u0412','vdash':'\\u22A2','vDash':'\\u22A8','Vdash':'\\u22A9','VDash':'\\u22AB','Vdashl':'\\u2AE6','vee':'\\u2228','Vee':'\\u22C1','veebar':'\\u22BB','veeeq':'\\u225A','vellip':'\\u22EE','verbar':'|','Verbar':'\\u2016','vert':'|','Vert':'\\u2016','VerticalBar':'\\u2223','VerticalLine':'|','VerticalSeparator':'\\u2758','VerticalTilde':'\\u2240','VeryThinSpace':'\\u200A','vfr':'\\uD835\\uDD33','Vfr':'\\uD835\\uDD19','vltri':'\\u22B2','vnsub':'\\u2282\\u20D2','vnsup':'\\u2283\\u20D2','vopf':'\\uD835\\uDD67','Vopf':'\\uD835\\uDD4D','vprop':'\\u221D','vrtri':'\\u22B3','vscr':'\\uD835\\uDCCB','Vscr':'\\uD835\\uDCB1','vsubne':'\\u228A\\uFE00','vsubnE':'\\u2ACB\\uFE00','vsupne':'\\u228B\\uFE00','vsupnE':'\\u2ACC\\uFE00','Vvdash':'\\u22AA','vzigzag':'\\u299A','wcirc':'\\u0175','Wcirc':'\\u0174','wedbar':'\\u2A5F','wedge':'\\u2227','Wedge':'\\u22C0','wedgeq':'\\u2259','weierp':'\\u2118','wfr':'\\uD835\\uDD34','Wfr':'\\uD835\\uDD1A','wopf':'\\uD835\\uDD68','Wopf':'\\uD835\\uDD4E','wp':'\\u2118','wr':'\\u2240','wreath':'\\u2240','wscr':'\\uD835\\uDCCC','Wscr':'\\uD835\\uDCB2','xcap':'\\u22C2','xcirc':'\\u25EF','xcup':'\\u22C3','xdtri':'\\u25BD','xfr':'\\uD835\\uDD35','Xfr':'\\uD835\\uDD1B','xharr':'\\u27F7','xhArr':'\\u27FA','xi':'\\u03BE','Xi':'\\u039E','xlarr':'\\u27F5','xlArr':'\\u27F8','xmap':'\\u27FC','xnis':'\\u22FB','xodot':'\\u2A00','xopf':'\\uD835\\uDD69','Xopf':'\\uD835\\uDD4F','xoplus':'\\u2A01','xotime':'\\u2A02','xrarr':'\\u27F6','xrArr':'\\u27F9','xscr':'\\uD835\\uDCCD','Xscr':'\\uD835\\uDCB3','xsqcup':'\\u2A06','xuplus':'\\u2A04','xutri':'\\u25B3','xvee':'\\u22C1','xwedge':'\\u22C0','yacute':'\\xFD','Yacute':'\\xDD','yacy':'\\u044F','YAcy':'\\u042F','ycirc':'\\u0177','Ycirc':'\\u0176','ycy':'\\u044B','Ycy':'\\u042B','yen':'\\xA5','yfr':'\\uD835\\uDD36','Yfr':'\\uD835\\uDD1C','yicy':'\\u0457','YIcy':'\\u0407','yopf':'\\uD835\\uDD6A','Yopf':'\\uD835\\uDD50','yscr':'\\uD835\\uDCCE','Yscr':'\\uD835\\uDCB4','yucy':'\\u044E','YUcy':'\\u042E','yuml':'\\xFF','Yuml':'\\u0178','zacute':'\\u017A','Zacute':'\\u0179','zcaron':'\\u017E','Zcaron':'\\u017D','zcy':'\\u0437','Zcy':'\\u0417','zdot':'\\u017C','Zdot':'\\u017B','zeetrf':'\\u2128','ZeroWidthSpace':'\\u200B','zeta':'\\u03B6','Zeta':'\\u0396','zfr':'\\uD835\\uDD37','Zfr':'\\u2128','zhcy':'\\u0436','ZHcy':'\\u0416','zigrarr':'\\u21DD','zopf':'\\uD835\\uDD6B','Zopf':'\\u2124','zscr':'\\uD835\\uDCCF','Zscr':'\\uD835\\uDCB5','zwj':'\\u200D','zwnj':'\\u200C'};\n\tvar decodeMapLegacy = {'aacute':'\\xE1','Aacute':'\\xC1','acirc':'\\xE2','Acirc':'\\xC2','acute':'\\xB4','aelig':'\\xE6','AElig':'\\xC6','agrave':'\\xE0','Agrave':'\\xC0','amp':'&','AMP':'&','aring':'\\xE5','Aring':'\\xC5','atilde':'\\xE3','Atilde':'\\xC3','auml':'\\xE4','Auml':'\\xC4','brvbar':'\\xA6','ccedil':'\\xE7','Ccedil':'\\xC7','cedil':'\\xB8','cent':'\\xA2','copy':'\\xA9','COPY':'\\xA9','curren':'\\xA4','deg':'\\xB0','divide':'\\xF7','eacute':'\\xE9','Eacute':'\\xC9','ecirc':'\\xEA','Ecirc':'\\xCA','egrave':'\\xE8','Egrave':'\\xC8','eth':'\\xF0','ETH':'\\xD0','euml':'\\xEB','Euml':'\\xCB','frac12':'\\xBD','frac14':'\\xBC','frac34':'\\xBE','gt':'>','GT':'>','iacute':'\\xED','Iacute':'\\xCD','icirc':'\\xEE','Icirc':'\\xCE','iexcl':'\\xA1','igrave':'\\xEC','Igrave':'\\xCC','iquest':'\\xBF','iuml':'\\xEF','Iuml':'\\xCF','laquo':'\\xAB','lt':'<','LT':'<','macr':'\\xAF','micro':'\\xB5','middot':'\\xB7','nbsp':'\\xA0','not':'\\xAC','ntilde':'\\xF1','Ntilde':'\\xD1','oacute':'\\xF3','Oacute':'\\xD3','ocirc':'\\xF4','Ocirc':'\\xD4','ograve':'\\xF2','Ograve':'\\xD2','ordf':'\\xAA','ordm':'\\xBA','oslash':'\\xF8','Oslash':'\\xD8','otilde':'\\xF5','Otilde':'\\xD5','ouml':'\\xF6','Ouml':'\\xD6','para':'\\xB6','plusmn':'\\xB1','pound':'\\xA3','quot':'\"','QUOT':'\"','raquo':'\\xBB','reg':'\\xAE','REG':'\\xAE','sect':'\\xA7','shy':'\\xAD','sup1':'\\xB9','sup2':'\\xB2','sup3':'\\xB3','szlig':'\\xDF','thorn':'\\xFE','THORN':'\\xDE','times':'\\xD7','uacute':'\\xFA','Uacute':'\\xDA','ucirc':'\\xFB','Ucirc':'\\xDB','ugrave':'\\xF9','Ugrave':'\\xD9','uml':'\\xA8','uuml':'\\xFC','Uuml':'\\xDC','yacute':'\\xFD','Yacute':'\\xDD','yen':'\\xA5','yuml':'\\xFF'};\n\tvar decodeMapNumeric = {'0':'\\uFFFD','128':'\\u20AC','130':'\\u201A','131':'\\u0192','132':'\\u201E','133':'\\u2026','134':'\\u2020','135':'\\u2021','136':'\\u02C6','137':'\\u2030','138':'\\u0160','139':'\\u2039','140':'\\u0152','142':'\\u017D','145':'\\u2018','146':'\\u2019','147':'\\u201C','148':'\\u201D','149':'\\u2022','150':'\\u2013','151':'\\u2014','152':'\\u02DC','153':'\\u2122','154':'\\u0161','155':'\\u203A','156':'\\u0153','158':'\\u017E','159':'\\u0178'};\n\tvar invalidReferenceCodePoints = [1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65000,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111];\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\tvar object = {};\n\tvar hasOwnProperty = object.hasOwnProperty;\n\tvar has = function(object, propertyName) {\n\t\treturn hasOwnProperty.call(object, propertyName);\n\t};\n\n\tvar contains = function(array, value) {\n\t\tvar index = -1;\n\t\tvar length = array.length;\n\t\twhile (++index < length) {\n\t\t\tif (array[index] == value) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\n\tvar merge = function(options, defaults) {\n\t\tif (!options) {\n\t\t\treturn defaults;\n\t\t}\n\t\tvar result = {};\n\t\tvar key;\n\t\tfor (key in defaults) {\n\t\t\t// A `hasOwnProperty` check is not needed here, since only recognized\n\t\t\t// option names are used anyway. Any others are ignored.\n\t\t\tresult[key] = has(options, key) ? options[key] : defaults[key];\n\t\t}\n\t\treturn result;\n\t};\n\n\t// Modified version of `ucs2encode`; see https://mths.be/punycode.\n\tvar codePointToSymbol = function(codePoint, strict) {\n\t\tvar output = '';\n\t\tif ((codePoint >= 0xD800 && codePoint <= 0xDFFF) || codePoint > 0x10FFFF) {\n\t\t\t// See issue #4:\n\t\t\t// “Otherwise, if the number is in the range 0xD800 to 0xDFFF or is\n\t\t\t// greater than 0x10FFFF, then this is a parse error. Return a U+FFFD\n\t\t\t// REPLACEMENT CHARACTER.”\n\t\t\tif (strict) {\n\t\t\t\tparseError('character reference outside the permissible Unicode range');\n\t\t\t}\n\t\t\treturn '\\uFFFD';\n\t\t}\n\t\tif (has(decodeMapNumeric, codePoint)) {\n\t\t\tif (strict) {\n\t\t\t\tparseError('disallowed character reference');\n\t\t\t}\n\t\t\treturn decodeMapNumeric[codePoint];\n\t\t}\n\t\tif (strict && contains(invalidReferenceCodePoints, codePoint)) {\n\t\t\tparseError('disallowed character reference');\n\t\t}\n\t\tif (codePoint > 0xFFFF) {\n\t\t\tcodePoint -= 0x10000;\n\t\t\toutput += stringFromCharCode(codePoint >>> 10 & 0x3FF | 0xD800);\n\t\t\tcodePoint = 0xDC00 | codePoint & 0x3FF;\n\t\t}\n\t\toutput += stringFromCharCode(codePoint);\n\t\treturn output;\n\t};\n\n\tvar hexEscape = function(codePoint) {\n\t\treturn '&#x' + codePoint.toString(16).toUpperCase() + ';';\n\t};\n\n\tvar decEscape = function(codePoint) {\n\t\treturn '&#' + codePoint + ';';\n\t};\n\n\tvar parseError = function(message) {\n\t\tthrow Error('Parse error: ' + message);\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar encode = function(string, options) {\n\t\toptions = merge(options, encode.options);\n\t\tvar strict = options.strict;\n\t\tif (strict && regexInvalidRawCodePoint.test(string)) {\n\t\t\tparseError('forbidden code point');\n\t\t}\n\t\tvar encodeEverything = options.encodeEverything;\n\t\tvar useNamedReferences = options.useNamedReferences;\n\t\tvar allowUnsafeSymbols = options.allowUnsafeSymbols;\n\t\tvar escapeCodePoint = options.decimal ? decEscape : hexEscape;\n\n\t\tvar escapeBmpSymbol = function(symbol) {\n\t\t\treturn escapeCodePoint(symbol.charCodeAt(0));\n\t\t};\n\n\t\tif (encodeEverything) {\n\t\t\t// Encode ASCII symbols.\n\t\t\tstring = string.replace(regexAsciiWhitelist, function(symbol) {\n\t\t\t\t// Use named references if requested & possible.\n\t\t\t\tif (useNamedReferences && has(encodeMap, symbol)) {\n\t\t\t\t\treturn '&' + encodeMap[symbol] + ';';\n\t\t\t\t}\n\t\t\t\treturn escapeBmpSymbol(symbol);\n\t\t\t});\n\t\t\t// Shorten a few escapes that represent two symbols, of which at least one\n\t\t\t// is within the ASCII range.\n\t\t\tif (useNamedReferences) {\n\t\t\t\tstring = string\n\t\t\t\t\t.replace(/>\\u20D2/g, '>⃒')\n\t\t\t\t\t.replace(/<\\u20D2/g, '<⃒')\n\t\t\t\t\t.replace(/fj/g, 'fj');\n\t\t\t}\n\t\t\t// Encode non-ASCII symbols.\n\t\t\tif (useNamedReferences) {\n\t\t\t\t// Encode non-ASCII symbols that can be replaced with a named reference.\n\t\t\t\tstring = string.replace(regexEncodeNonAscii, function(string) {\n\t\t\t\t\t// Note: there is no need to check `has(encodeMap, string)` here.\n\t\t\t\t\treturn '&' + encodeMap[string] + ';';\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Note: any remaining non-ASCII symbols are handled outside of the `if`.\n\t\t} else if (useNamedReferences) {\n\t\t\t// Apply named character references.\n\t\t\t// Encode `<>\"'&` using named character references.\n\t\t\tif (!allowUnsafeSymbols) {\n\t\t\t\tstring = string.replace(regexEscape, function(string) {\n\t\t\t\t\treturn '&' + encodeMap[string] + ';'; // no need to check `has()` here\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Shorten escapes that represent two symbols, of which at least one is\n\t\t\t// `<>\"'&`.\n\t\t\tstring = string\n\t\t\t\t.replace(/>\\u20D2/g, '>⃒')\n\t\t\t\t.replace(/<\\u20D2/g, '<⃒');\n\t\t\t// Encode non-ASCII symbols that can be replaced with a named reference.\n\t\t\tstring = string.replace(regexEncodeNonAscii, function(string) {\n\t\t\t\t// Note: there is no need to check `has(encodeMap, string)` here.\n\t\t\t\treturn '&' + encodeMap[string] + ';';\n\t\t\t});\n\t\t} else if (!allowUnsafeSymbols) {\n\t\t\t// Encode `<>\"'&` using hexadecimal escapes, now that they’re not handled\n\t\t\t// using named character references.\n\t\t\tstring = string.replace(regexEscape, escapeBmpSymbol);\n\t\t}\n\t\treturn string\n\t\t\t// Encode astral symbols.\n\t\t\t.replace(regexAstralSymbols, function($0) {\n\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\tvar high = $0.charCodeAt(0);\n\t\t\t\tvar low = $0.charCodeAt(1);\n\t\t\t\tvar codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000;\n\t\t\t\treturn escapeCodePoint(codePoint);\n\t\t\t})\n\t\t\t// Encode any remaining BMP symbols that are not printable ASCII symbols\n\t\t\t// using a hexadecimal escape.\n\t\t\t.replace(regexBmpWhitelist, escapeBmpSymbol);\n\t};\n\t// Expose default options (so they can be overridden globally).\n\tencode.options = {\n\t\t'allowUnsafeSymbols': false,\n\t\t'encodeEverything': false,\n\t\t'strict': false,\n\t\t'useNamedReferences': false,\n\t\t'decimal' : false\n\t};\n\n\tvar decode = function(html, options) {\n\t\toptions = merge(options, decode.options);\n\t\tvar strict = options.strict;\n\t\tif (strict && regexInvalidEntity.test(html)) {\n\t\t\tparseError('malformed character reference');\n\t\t}\n\t\treturn html.replace(regexDecode, function($0, $1, $2, $3, $4, $5, $6, $7, $8) {\n\t\t\tvar codePoint;\n\t\t\tvar semicolon;\n\t\t\tvar decDigits;\n\t\t\tvar hexDigits;\n\t\t\tvar reference;\n\t\t\tvar next;\n\n\t\t\tif ($1) {\n\t\t\t\treference = $1;\n\t\t\t\t// Note: there is no need to check `has(decodeMap, reference)`.\n\t\t\t\treturn decodeMap[reference];\n\t\t\t}\n\n\t\t\tif ($2) {\n\t\t\t\t// Decode named character references without trailing `;`, e.g. `&`.\n\t\t\t\t// This is only a parse error if it gets converted to `&`, or if it is\n\t\t\t\t// followed by `=` in an attribute context.\n\t\t\t\treference = $2;\n\t\t\t\tnext = $3;\n\t\t\t\tif (next && options.isAttributeValue) {\n\t\t\t\t\tif (strict && next == '=') {\n\t\t\t\t\t\tparseError('`&` did not start a character reference');\n\t\t\t\t\t}\n\t\t\t\t\treturn $0;\n\t\t\t\t} else {\n\t\t\t\t\tif (strict) {\n\t\t\t\t\t\tparseError(\n\t\t\t\t\t\t\t'named character reference was not terminated by a semicolon'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t// Note: there is no need to check `has(decodeMapLegacy, reference)`.\n\t\t\t\t\treturn decodeMapLegacy[reference] + (next || '');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ($4) {\n\t\t\t\t// Decode decimal escapes, e.g. `𝌆`.\n\t\t\t\tdecDigits = $4;\n\t\t\t\tsemicolon = $5;\n\t\t\t\tif (strict && !semicolon) {\n\t\t\t\t\tparseError('character reference was not terminated by a semicolon');\n\t\t\t\t}\n\t\t\t\tcodePoint = parseInt(decDigits, 10);\n\t\t\t\treturn codePointToSymbol(codePoint, strict);\n\t\t\t}\n\n\t\t\tif ($6) {\n\t\t\t\t// Decode hexadecimal escapes, e.g. `𝌆`.\n\t\t\t\thexDigits = $6;\n\t\t\t\tsemicolon = $7;\n\t\t\t\tif (strict && !semicolon) {\n\t\t\t\t\tparseError('character reference was not terminated by a semicolon');\n\t\t\t\t}\n\t\t\t\tcodePoint = parseInt(hexDigits, 16);\n\t\t\t\treturn codePointToSymbol(codePoint, strict);\n\t\t\t}\n\n\t\t\t// If we’re still here, `if ($7)` is implied; it’s an ambiguous\n\t\t\t// ampersand for sure. https://mths.be/notes/ambiguous-ampersands\n\t\t\tif (strict) {\n\t\t\t\tparseError(\n\t\t\t\t\t'named character reference was not terminated by a semicolon'\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn $0;\n\t\t});\n\t};\n\t// Expose default options (so they can be overridden globally).\n\tdecode.options = {\n\t\t'isAttributeValue': false,\n\t\t'strict': false\n\t};\n\n\tvar escape = function(string) {\n\t\treturn string.replace(regexEscape, function($0) {\n\t\t\t// Note: there is no need to check `has(escapeMap, $0)` here.\n\t\t\treturn escapeMap[$0];\n\t\t});\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar he = {\n\t\t'version': '1.2.0',\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'escape': escape,\n\t\t'unescape': decode\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn he;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = he;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in he) {\n\t\t\t\thas(he, key) && (freeExports[key] = he[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.he = he;\n\t}\n\n}(this));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar he_1 = require(\"he\");\n/**\n * Node Class as base class for TextNode and HTMLElement.\n */\nvar Node = /** @class */ (function () {\n function Node(parentNode, range) {\n if (parentNode === void 0) { parentNode = null; }\n this.parentNode = parentNode;\n this.childNodes = [];\n Object.defineProperty(this, 'range', {\n enumerable: false,\n writable: true,\n configurable: true,\n value: range !== null && range !== void 0 ? range : [-1, -1]\n });\n }\n /**\n * Remove current node\n */\n Node.prototype.remove = function () {\n var _this = this;\n if (this.parentNode) {\n var children = this.parentNode.childNodes;\n this.parentNode.childNodes = children.filter(function (child) {\n return _this !== child;\n });\n this.parentNode = null;\n }\n return this;\n };\n Object.defineProperty(Node.prototype, \"innerText\", {\n get: function () {\n return this.rawText;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"textContent\", {\n get: function () {\n return (0, he_1.decode)(this.rawText);\n },\n set: function (val) {\n this.rawText = (0, he_1.encode)(val);\n },\n enumerable: false,\n configurable: true\n });\n return Node;\n}());\nexports.default = Node;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar NodeType;\n(function (NodeType) {\n NodeType[NodeType[\"ELEMENT_NODE\"] = 1] = \"ELEMENT_NODE\";\n NodeType[NodeType[\"TEXT_NODE\"] = 3] = \"TEXT_NODE\";\n NodeType[NodeType[\"COMMENT_NODE\"] = 8] = \"COMMENT_NODE\";\n})(NodeType || (NodeType = {}));\nexports.default = NodeType;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar node_1 = __importDefault(require(\"./node\"));\nvar type_1 = __importDefault(require(\"./type\"));\nvar CommentNode = /** @class */ (function (_super) {\n __extends(CommentNode, _super);\n function CommentNode(rawText, parentNode, range, rawTagName) {\n if (parentNode === void 0) { parentNode = null; }\n if (rawTagName === void 0) { rawTagName = '!--'; }\n var _this = _super.call(this, parentNode, range) || this;\n _this.rawText = rawText;\n _this.rawTagName = rawTagName;\n /**\n * Node Type declaration.\n * @type {Number}\n */\n _this.nodeType = type_1.default.COMMENT_NODE;\n return _this;\n }\n CommentNode.prototype.clone = function () {\n return new CommentNode(this.rawText, null, undefined, this.rawTagName);\n };\n Object.defineProperty(CommentNode.prototype, \"text\", {\n /**\n * Get unescaped text value of current node and its children.\n * @return {string} text content\n */\n get: function () {\n return this.rawText;\n },\n enumerable: false,\n configurable: true\n });\n CommentNode.prototype.toString = function () {\n return \"<!--\".concat(this.rawText, \"-->\");\n };\n return CommentNode;\n}(node_1.default));\nexports.default = CommentNode;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Doctype = exports.CDATA = exports.Tag = exports.Style = exports.Script = exports.Comment = exports.Directive = exports.Text = exports.Root = exports.isTag = exports.ElementType = void 0;\n/** Types of elements found in htmlparser2's DOM */\nvar ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for <? ... ?> */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for <!-- ... --> */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for <script> tags */\n ElementType[\"Script\"] = \"script\";\n /** Type for <style> tags */\n ElementType[\"Style\"] = \"style\";\n /** Type for Any tag */\n ElementType[\"Tag\"] = \"tag\";\n /** Type for <![CDATA[ ... ]]> */\n ElementType[\"CDATA\"] = \"cdata\";\n /** Type for <!doctype ...> */\n ElementType[\"Doctype\"] = \"doctype\";\n})(ElementType = exports.ElementType || (exports.ElementType = {}));\n/**\n * Tests whether an element is a tag or not.\n *\n * @param elem Element to test\n */\nfunction isTag(elem) {\n return (elem.type === ElementType.Tag ||\n elem.type === ElementType.Script ||\n elem.type === ElementType.Style);\n}\nexports.isTag = isTag;\n// Exports for backwards compatibility\n/** Type for the root element of a document */\nexports.Root = ElementType.Root;\n/** Type for Text */\nexports.Text = ElementType.Text;\n/** Type for <? ... ?> */\nexports.Directive = ElementType.Directive;\n/** Type for <!-- ... --> */\nexports.Comment = ElementType.Comment;\n/** Type for <script> tags */\nexports.Script = ElementType.Script;\n/** Type for <style> tags */\nexports.Style = ElementType.Style;\n/** Type for Any tag */\nexports.Tag = ElementType.Tag;\n/** Type for <![CDATA[ ... ]]> */\nexports.CDATA = ElementType.CDATA;\n/** Type for <!doctype ...> */\nexports.Doctype = ElementType.Doctype;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cloneNode = exports.hasChildren = exports.isDocument = exports.isDirective = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = exports.Element = exports.Document = exports.CDATA = exports.NodeWithChildren = exports.ProcessingInstruction = exports.Comment = exports.Text = exports.DataNode = exports.Node = void 0;\nvar domelementtype_1 = require(\"domelementtype\");\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nvar Node = /** @class */ (function () {\n function Node() {\n /** Parent of the node */\n this.parent = null;\n /** Previous sibling */\n this.prev = null;\n /** Next sibling */\n this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n this.endIndex = null;\n }\n Object.defineProperty(Node.prototype, \"parentNode\", {\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.parent;\n },\n set: function (parent) {\n this.parent = parent;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"previousSibling\", {\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.prev;\n },\n set: function (prev) {\n this.prev = prev;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"nextSibling\", {\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.next;\n },\n set: function (next) {\n this.next = next;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\n Node.prototype.cloneNode = function (recursive) {\n if (recursive === void 0) { recursive = false; }\n return cloneNode(this, recursive);\n };\n return Node;\n}());\nexports.Node = Node;\n/**\n * A node that contains some data.\n */\nvar DataNode = /** @class */ (function (_super) {\n __extends(DataNode, _super);\n /**\n * @param data The content of the data node\n */\n function DataNode(data) {\n var _this = _super.call(this) || this;\n _this.data = data;\n return _this;\n }\n Object.defineProperty(DataNode.prototype, \"nodeValue\", {\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.data;\n },\n set: function (data) {\n this.data = data;\n },\n enumerable: false,\n configurable: true\n });\n return DataNode;\n}(Node));\nexports.DataNode = DataNode;\n/**\n * Text within the document.\n */\nvar Text = /** @class */ (function (_super) {\n __extends(Text, _super);\n function Text() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = domelementtype_1.ElementType.Text;\n return _this;\n }\n Object.defineProperty(Text.prototype, \"nodeType\", {\n get: function () {\n return 3;\n },\n enumerable: false,\n configurable: true\n });\n return Text;\n}(DataNode));\nexports.Text = Text;\n/**\n * Comments within the document.\n */\nvar Comment = /** @class */ (function (_super) {\n __extends(Comment, _super);\n function Comment() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = domelementtype_1.ElementType.Comment;\n return _this;\n }\n Object.defineProperty(Comment.prototype, \"nodeType\", {\n get: function () {\n return 8;\n },\n enumerable: false,\n configurable: true\n });\n return Comment;\n}(DataNode));\nexports.Comment = Comment;\n/**\n * Processing instructions, including doc types.\n */\nvar ProcessingInstruction = /** @class */ (function (_super) {\n __extends(ProcessingInstruction, _super);\n function ProcessingInstruction(name, data) {\n var _this = _super.call(this, data) || this;\n _this.name = name;\n _this.type = domelementtype_1.ElementType.Directive;\n return _this;\n }\n Object.defineProperty(ProcessingInstruction.prototype, \"nodeType\", {\n get: function () {\n return 1;\n },\n enumerable: false,\n configurable: true\n });\n return ProcessingInstruction;\n}(DataNode));\nexports.ProcessingInstruction = ProcessingInstruction;\n/**\n * A `Node` that can have children.\n */\nvar NodeWithChildren = /** @class */ (function (_super) {\n __extends(NodeWithChildren, _super);\n /**\n * @param children Children of the node. Only certain node types can have children.\n */\n function NodeWithChildren(children) {\n var _this = _super.call(this) || this;\n _this.children = children;\n return _this;\n }\n Object.defineProperty(NodeWithChildren.prototype, \"firstChild\", {\n // Aliases\n /** First child of the node. */\n get: function () {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NodeWithChildren.prototype, \"lastChild\", {\n /** Last child of the node. */\n get: function () {\n return this.children.length > 0\n ? this.children[this.children.length - 1]\n : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NodeWithChildren.prototype, \"childNodes\", {\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.children;\n },\n set: function (children) {\n this.children = children;\n },\n enumerable: false,\n configurable: true\n });\n return NodeWithChildren;\n}(Node));\nexports.NodeWithChildren = NodeWithChildren;\nvar CDATA = /** @class */ (function (_super) {\n __extends(CDATA, _super);\n function CDATA() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = domelementtype_1.ElementType.CDATA;\n return _this;\n }\n Object.defineProperty(CDATA.prototype, \"nodeType\", {\n get: function () {\n return 4;\n },\n enumerable: false,\n configurable: true\n });\n return CDATA;\n}(NodeWithChildren));\nexports.CDATA = CDATA;\n/**\n * The root node of the document.\n */\nvar Document = /** @class */ (function (_super) {\n __extends(Document, _super);\n function Document() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = domelementtype_1.ElementType.Root;\n return _this;\n }\n Object.defineProperty(Document.prototype, \"nodeType\", {\n get: function () {\n return 9;\n },\n enumerable: false,\n configurable: true\n });\n return Document;\n}(NodeWithChildren));\nexports.Document = Document;\n/**\n * An element within the DOM.\n */\nvar Element = /** @class */ (function (_super) {\n __extends(Element, _super);\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */\n function Element(name, attribs, children, type) {\n if (children === void 0) { children = []; }\n if (type === void 0) { type = name === \"script\"\n ? domelementtype_1.ElementType.Script\n : name === \"style\"\n ? domelementtype_1.ElementType.Style\n : domelementtype_1.ElementType.Tag; }\n var _this = _super.call(this, children) || this;\n _this.name = name;\n _this.attribs = attribs;\n _this.type = type;\n return _this;\n }\n Object.defineProperty(Element.prototype, \"nodeType\", {\n get: function () {\n return 1;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"tagName\", {\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.name;\n },\n set: function (name) {\n this.name = name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"attributes\", {\n get: function () {\n var _this = this;\n return Object.keys(this.attribs).map(function (name) {\n var _a, _b;\n return ({\n name: name,\n value: _this.attribs[name],\n namespace: (_a = _this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = _this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n });\n });\n },\n enumerable: false,\n configurable: true\n });\n return Element;\n}(NodeWithChildren));\nexports.Element = Element;\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nfunction isTag(node) {\n return (0, domelementtype_1.isTag)(node);\n}\nexports.isTag = isTag;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nfunction isCDATA(node) {\n return node.type === domelementtype_1.ElementType.CDATA;\n}\nexports.isCDATA = isCDATA;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nfunction isText(node) {\n return node.type === domelementtype_1.ElementType.Text;\n}\nexports.isText = isText;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nfunction isComment(node) {\n return node.type === domelementtype_1.ElementType.Comment;\n}\nexports.isComment = isComment;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nfunction isDirective(node) {\n return node.type === domelementtype_1.ElementType.Directive;\n}\nexports.isDirective = isDirective;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nfunction isDocument(node) {\n return node.type === domelementtype_1.ElementType.Root;\n}\nexports.isDocument = isDocument;\n/**\n * @param node Node to check.\n * @returns `true` if the node has children, `false` otherwise.\n */\nfunction hasChildren(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\nexports.hasChildren = hasChildren;\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nfunction cloneNode(node, recursive) {\n if (recursive === void 0) { recursive = false; }\n var result;\n if (isText(node)) {\n result = new Text(node.data);\n }\n else if (isComment(node)) {\n result = new Comment(node.data);\n }\n else if (isTag(node)) {\n var children = recursive ? cloneChildren(node.children) : [];\n var clone_1 = new Element(node.name, __assign({}, node.attribs), children);\n children.forEach(function (child) { return (child.parent = clone_1); });\n if (node.namespace != null) {\n clone_1.namespace = node.namespace;\n }\n if (node[\"x-attribsNamespace\"]) {\n clone_1[\"x-attribsNamespace\"] = __assign({}, node[\"x-attribsNamespace\"]);\n }\n if (node[\"x-attribsPrefix\"]) {\n clone_1[\"x-attribsPrefix\"] = __assign({}, node[\"x-attribsPrefix\"]);\n }\n result = clone_1;\n }\n else if (isCDATA(node)) {\n var children = recursive ? cloneChildren(node.children) : [];\n var clone_2 = new CDATA(children);\n children.forEach(function (child) { return (child.parent = clone_2); });\n result = clone_2;\n }\n else if (isDocument(node)) {\n var children = recursive ? cloneChildren(node.children) : [];\n var clone_3 = new Document(children);\n children.forEach(function (child) { return (child.parent = clone_3); });\n if (node[\"x-mode\"]) {\n clone_3[\"x-mode\"] = node[\"x-mode\"];\n }\n result = clone_3;\n }\n else if (isDirective(node)) {\n var instruction = new ProcessingInstruction(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n }\n else {\n throw new Error(\"Not implemented yet: \".concat(node.type));\n }\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) {\n result.sourceCodeLocation = node.sourceCodeLocation;\n }\n return result;\n}\nexports.cloneNode = cloneNode;\nfunction cloneChildren(childs) {\n var children = childs.map(function (child) { return cloneNode(child, true); });\n for (var i = 1; i < children.length; i++) {\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DomHandler = void 0;\nvar domelementtype_1 = require(\"domelementtype\");\nvar node_js_1 = require(\"./node.js\");\n__exportStar(require(\"./node.js\"), exports);\n// Default options\nvar defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nvar DomHandler = /** @class */ (function () {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n function DomHandler(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new node_js_1.Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n DomHandler.prototype.onparserinit = function (parser) {\n this.parser = parser;\n };\n // Resets the handler back to starting state\n DomHandler.prototype.onreset = function () {\n this.dom = [];\n this.root = new node_js_1.Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n };\n // Signals the handler that parsing is done\n DomHandler.prototype.onend = function () {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n };\n DomHandler.prototype.onerror = function (error) {\n this.handleCallback(error);\n };\n DomHandler.prototype.onclosetag = function () {\n this.lastNode = null;\n var elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n };\n DomHandler.prototype.onopentag = function (name, attribs) {\n var type = this.options.xmlMode ? domelementtype_1.ElementType.Tag : undefined;\n var element = new node_js_1.Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n };\n DomHandler.prototype.ontext = function (data) {\n var lastNode = this.lastNode;\n if (lastNode && lastNode.type === domelementtype_1.ElementType.Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n var node = new node_js_1.Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n };\n DomHandler.prototype.oncomment = function (data) {\n if (this.lastNode && this.lastNode.type === domelementtype_1.ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n var node = new node_js_1.Comment(data);\n this.addNode(node);\n this.lastNode = node;\n };\n DomHandler.prototype.oncommentend = function () {\n this.lastNode = null;\n };\n DomHandler.prototype.oncdatastart = function () {\n var text = new node_js_1.Text(\"\");\n var node = new node_js_1.CDATA([text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n };\n DomHandler.prototype.oncdataend = function () {\n this.lastNode = null;\n };\n DomHandler.prototype.onprocessinginstruction = function (name, data) {\n var node = new node_js_1.ProcessingInstruction(name, data);\n this.addNode(node);\n };\n DomHandler.prototype.handleCallback = function (error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n };\n DomHandler.prototype.addNode = function (node) {\n var parent = this.tagStack[this.tagStack.length - 1];\n var previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n };\n return DomHandler;\n}());\nexports.DomHandler = DomHandler;\nexports.default = DomHandler;\n","\"use strict\";\n// Generated using scripts/write-decode-map.ts\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = new Uint16Array(\n// prettier-ignore\n\"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map(function (c) { return c.charCodeAt(0); }));\n//# sourceMappingURL=decode-data-html.js.map","\"use strict\";\n// Generated using scripts/write-decode-map.ts\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = new Uint16Array(\n// prettier-ignore\n\"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map(function (c) { return c.charCodeAt(0); }));\n//# sourceMappingURL=decode-data-xml.js.map","\"use strict\";\n// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.replaceCodePoint = exports.fromCodePoint = void 0;\nvar decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexports.fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n var output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nfunction replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return 0xfffd;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\nexports.replaceCodePoint = replaceCodePoint;\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nfunction decodeCodePoint(codePoint) {\n return (0, exports.fromCodePoint)(replaceCodePoint(codePoint));\n}\nexports.default = decodeCodePoint;\n//# sourceMappingURL=decode_codepoint.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeXML = exports.decodeHTMLStrict = exports.decodeHTMLAttribute = exports.decodeHTML = exports.determineBranch = exports.EntityDecoder = exports.DecodingMode = exports.BinTrieFlags = exports.fromCodePoint = exports.replaceCodePoint = exports.decodeCodePoint = exports.xmlDecodeTree = exports.htmlDecodeTree = void 0;\nvar decode_data_html_js_1 = __importDefault(require(\"./generated/decode-data-html.js\"));\nexports.htmlDecodeTree = decode_data_html_js_1.default;\nvar decode_data_xml_js_1 = __importDefault(require(\"./generated/decode-data-xml.js\"));\nexports.xmlDecodeTree = decode_data_xml_js_1.default;\nvar decode_codepoint_js_1 = __importStar(require(\"./decode_codepoint.js\"));\nexports.decodeCodePoint = decode_codepoint_js_1.default;\nvar decode_codepoint_js_2 = require(\"./decode_codepoint.js\");\nObject.defineProperty(exports, \"replaceCodePoint\", { enumerable: true, get: function () { return decode_codepoint_js_2.replaceCodePoint; } });\nObject.defineProperty(exports, \"fromCodePoint\", { enumerable: true, get: function () { return decode_codepoint_js_2.fromCodePoint; } });\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nvar TO_LOWER_BIT = 32;\nvar BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags = exports.BinTrieFlags || (exports.BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nvar DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode = exports.DecodingMode || (exports.DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nvar EntityDecoder = /** @class */ (function () {\n function EntityDecoder(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n EntityDecoder.prototype.startEntity = function (decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n };\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.write = function (str, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (str.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(str, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(str, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(str, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(str, offset);\n }\n }\n };\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.stateNumericStart = function (str, offset) {\n if (offset >= str.length) {\n return -1;\n }\n if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n };\n EntityDecoder.prototype.addToNumericResult = function (str, start, end, base) {\n if (start !== end) {\n var digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n };\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.stateNumericHex = function (str, offset) {\n var startIdx = offset;\n while (offset < str.length) {\n var char = str.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n };\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.stateNumericDecimal = function (str, offset) {\n var startIdx = offset;\n while (offset < str.length) {\n var char = str.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n };\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n EntityDecoder.prototype.emitNumericEntity = function (lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint((0, decode_codepoint_js_1.replaceCodePoint)(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n };\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.stateNamedEntity = function (str, offset) {\n var decodeTree = this.decodeTree;\n var current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n var valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < str.length; offset++, this.excess++) {\n var char = str.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n };\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n EntityDecoder.prototype.emitNotTerminatedNamedEntity = function () {\n var _a;\n var _b = this, result = _b.result, decodeTree = _b.decodeTree;\n var valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n };\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n EntityDecoder.prototype.emitNamedEntityData = function (result, valueLength, consumed) {\n var decodeTree = this.decodeTree;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n };\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n EntityDecoder.prototype.end = function () {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n };\n return EntityDecoder;\n}());\nexports.EntityDecoder = EntityDecoder;\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n var ret = \"\";\n var decoder = new EntityDecoder(decodeTree, function (str) { return (ret += (0, decode_codepoint_js_1.fromCodePoint)(str)); });\n return function decodeWithTrie(str, decodeMode) {\n var lastIndex = 0;\n var offset = 0;\n while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n var len = decoder.write(str, \n // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n var result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nfunction determineBranch(decodeTree, current, nodeIdx, char) {\n var branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n var jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n var value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n var lo = nodeIdx;\n var hi = lo + branchCount - 1;\n while (lo <= hi) {\n var mid = (lo + hi) >>> 1;\n var midVal = decodeTree[mid];\n if (midVal < char) {\n lo = mid + 1;\n }\n else if (midVal > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nexports.determineBranch = determineBranch;\nvar htmlDecoder = getDecoder(decode_data_html_js_1.default);\nvar xmlDecoder = getDecoder(decode_data_xml_js_1.default);\n/**\n * Decodes an HTML string.\n *\n * @param str The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nfunction decodeHTML(str, mode) {\n if (mode === void 0) { mode = DecodingMode.Legacy; }\n return htmlDecoder(str, mode);\n}\nexports.decodeHTML = decodeHTML;\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nfunction decodeHTMLAttribute(str) {\n return htmlDecoder(str, DecodingMode.Attribute);\n}\nexports.decodeHTMLAttribute = decodeHTMLAttribute;\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nfunction decodeHTMLStrict(str) {\n return htmlDecoder(str, DecodingMode.Strict);\n}\nexports.decodeHTMLStrict = decodeHTMLStrict;\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nfunction decodeXML(str) {\n return xmlDecoder(str, DecodingMode.Strict);\n}\nexports.decodeXML = decodeXML;\n//# sourceMappingURL=decode.js.map","\"use strict\";\n// Generated using scripts/write-encode-map.ts\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction restoreDiff(arr) {\n for (var i = 1; i < arr.length; i++) {\n arr[i][0] += arr[i - 1][0] + 1;\n }\n return arr;\n}\n// prettier-ignore\nexports.default = new Map(/* #__PURE__ */ restoreDiff([[9, \"	\"], [0, \"
\"], [22, \"!\"], [0, \""\"], [0, \"#\"], [0, \"$\"], [0, \"%\"], [0, \"&\"], [0, \"'\"], [0, \"(\"], [0, \")\"], [0, \"*\"], [0, \"+\"], [0, \",\"], [1, \".\"], [0, \"/\"], [10, \":\"], [0, \";\"], [0, { v: \"<\", n: 8402, o: \"<⃒\" }], [0, { v: \"=\", n: 8421, o: \"=⃥\" }], [0, { v: \">\", n: 8402, o: \">⃒\" }], [0, \"?\"], [0, \"@\"], [26, \"[\"], [0, \"\\"], [0, \"]\"], [0, \"^\"], [0, \"_\"], [0, \"`\"], [5, { n: 106, o: \"fj\" }], [20, \"{\"], [0, \"|\"], [0, \"}\"], [34, \" \"], [0, \"¡\"], [0, \"¢\"], [0, \"£\"], [0, \"¤\"], [0, \"¥\"], [0, \"¦\"], [0, \"§\"], [0, \"¨\"], [0, \"©\"], [0, \"ª\"], [0, \"«\"], [0, \"¬\"], [0, \"­\"], [0, \"®\"], [0, \"¯\"], [0, \"°\"], [0, \"±\"], [0, \"²\"], [0, \"³\"], [0, \"´\"], [0, \"µ\"], [0, \"¶\"], [0, \"·\"], [0, \"¸\"], [0, \"¹\"], [0, \"º\"], [0, \"»\"], [0, \"¼\"], [0, \"½\"], [0, \"¾\"], [0, \"¿\"], [0, \"À\"], [0, \"Á\"], [0, \"Â\"], [0, \"Ã\"], [0, \"Ä\"], [0, \"Å\"], [0, \"Æ\"], [0, \"Ç\"], [0, \"È\"], [0, \"É\"], [0, \"Ê\"], [0, \"Ë\"], [0, \"Ì\"], [0, \"Í\"], [0, \"Î\"], [0, \"Ï\"], [0, \"Ð\"], [0, \"Ñ\"], [0, \"Ò\"], [0, \"Ó\"], [0, \"Ô\"], [0, \"Õ\"], [0, \"Ö\"], [0, \"×\"], [0, \"Ø\"], [0, \"Ù\"], [0, \"Ú\"], [0, \"Û\"], [0, \"Ü\"], [0, \"Ý\"], [0, \"Þ\"], [0, \"ß\"], [0, \"à\"], [0, \"á\"], [0, \"â\"], [0, \"ã\"], [0, \"ä\"], [0, \"å\"], [0, \"æ\"], [0, \"ç\"], [0, \"è\"], [0, \"é\"], [0, \"ê\"], [0, \"ë\"], [0, \"ì\"], [0, \"í\"], [0, \"î\"], [0, \"ï\"], [0, \"ð\"], [0, \"ñ\"], [0, \"ò\"], [0, \"ó\"], [0, \"ô\"], [0, \"õ\"], [0, \"ö\"], [0, \"÷\"], [0, \"ø\"], [0, \"ù\"], [0, \"ú\"], [0, \"û\"], [0, \"ü\"], [0, \"ý\"], [0, \"þ\"], [0, \"ÿ\"], [0, \"Ā\"], [0, \"ā\"], [0, \"Ă\"], [0, \"ă\"], [0, \"Ą\"], [0, \"ą\"], [0, \"Ć\"], [0, \"ć\"], [0, \"Ĉ\"], [0, \"ĉ\"], [0, \"Ċ\"], [0, \"ċ\"], [0, \"Č\"], [0, \"č\"], [0, \"Ď\"], [0, \"ď\"], [0, \"Đ\"], [0, \"đ\"], [0, \"Ē\"], [0, \"ē\"], [2, \"Ė\"], [0, \"ė\"], [0, \"Ę\"], [0, \"ę\"], [0, \"Ě\"], [0, \"ě\"], [0, \"Ĝ\"], [0, \"ĝ\"], [0, \"Ğ\"], [0, \"ğ\"], [0, \"Ġ\"], [0, \"ġ\"], [0, \"Ģ\"], [1, \"Ĥ\"], [0, \"ĥ\"], [0, \"Ħ\"], [0, \"ħ\"], [0, \"Ĩ\"], [0, \"ĩ\"], [0, \"Ī\"], [0, \"ī\"], [2, \"Į\"], [0, \"į\"], [0, \"İ\"], [0, \"ı\"], [0, \"IJ\"], [0, \"ij\"], [0, \"Ĵ\"], [0, \"ĵ\"], [0, \"Ķ\"], [0, \"ķ\"], [0, \"ĸ\"], [0, \"Ĺ\"], [0, \"ĺ\"], [0, \"Ļ\"], [0, \"ļ\"], [0, \"Ľ\"], [0, \"ľ\"], [0, \"Ŀ\"], [0, \"ŀ\"], [0, \"Ł\"], [0, \"ł\"], [0, \"Ń\"], [0, \"ń\"], [0, \"Ņ\"], [0, \"ņ\"], [0, \"Ň\"], [0, \"ň\"], [0, \"ʼn\"], [0, \"Ŋ\"], [0, \"ŋ\"], [0, \"Ō\"], [0, \"ō\"], [2, \"Ő\"], [0, \"ő\"], [0, \"Œ\"], [0, \"œ\"], [0, \"Ŕ\"], [0, \"ŕ\"], [0, \"Ŗ\"], [0, \"ŗ\"], [0, \"Ř\"], [0, \"ř\"], [0, \"Ś\"], [0, \"ś\"], [0, \"Ŝ\"], [0, \"ŝ\"], [0, \"Ş\"], [0, \"ş\"], [0, \"Š\"], [0, \"š\"], [0, \"Ţ\"], [0, \"ţ\"], [0, \"Ť\"], [0, \"ť\"], [0, \"Ŧ\"], [0, \"ŧ\"], [0, \"Ũ\"], [0, \"ũ\"], [0, \"Ū\"], [0, \"ū\"], [0, \"Ŭ\"], [0, \"ŭ\"], [0, \"Ů\"], [0, \"ů\"], [0, \"Ű\"], [0, \"ű\"], [0, \"Ų\"], [0, \"ų\"], [0, \"Ŵ\"], [0, \"ŵ\"], [0, \"Ŷ\"], [0, \"ŷ\"], [0, \"Ÿ\"], [0, \"Ź\"], [0, \"ź\"], [0, \"Ż\"], [0, \"ż\"], [0, \"Ž\"], [0, \"ž\"], [19, \"ƒ\"], [34, \"Ƶ\"], [63, \"ǵ\"], [65, \"ȷ\"], [142, \"ˆ\"], [0, \"ˇ\"], [16, \"˘\"], [0, \"˙\"], [0, \"˚\"], [0, \"˛\"], [0, \"˜\"], [0, \"˝\"], [51, \"̑\"], [127, \"Α\"], [0, \"Β\"], [0, \"Γ\"], [0, \"Δ\"], [0, \"Ε\"], [0, \"Ζ\"], [0, \"Η\"], [0, \"Θ\"], [0, \"Ι\"], [0, \"Κ\"], [0, \"Λ\"], [0, \"Μ\"], [0, \"Ν\"], [0, \"Ξ\"], [0, \"Ο\"], [0, \"Π\"], [0, \"Ρ\"], [1, \"Σ\"], [0, \"Τ\"], [0, \"Υ\"], [0, \"Φ\"], [0, \"Χ\"], [0, \"Ψ\"], [0, \"Ω\"], [7, \"α\"], [0, \"β\"], [0, \"γ\"], [0, \"δ\"], [0, \"ε\"], [0, \"ζ\"], [0, \"η\"], [0, \"θ\"], [0, \"ι\"], [0, \"κ\"], [0, \"λ\"], [0, \"μ\"], [0, \"ν\"], [0, \"ξ\"], [0, \"ο\"], [0, \"π\"], [0, \"ρ\"], [0, \"ς\"], [0, \"σ\"], [0, \"τ\"], [0, \"υ\"], [0, \"φ\"], [0, \"χ\"], [0, \"ψ\"], [0, \"ω\"], [7, \"ϑ\"], [0, \"ϒ\"], [2, \"ϕ\"], [0, \"ϖ\"], [5, \"Ϝ\"], [0, \"ϝ\"], [18, \"ϰ\"], [0, \"ϱ\"], [3, \"ϵ\"], [0, \"϶\"], [10, \"Ё\"], [0, \"Ђ\"], [0, \"Ѓ\"], [0, \"Є\"], [0, \"Ѕ\"], [0, \"І\"], [0, \"Ї\"], [0, \"Ј\"], [0, \"Љ\"], [0, \"Њ\"], [0, \"Ћ\"], [0, \"Ќ\"], [1, \"Ў\"], [0, \"Џ\"], [0, \"А\"], [0, \"Б\"], [0, \"В\"], [0, \"Г\"], [0, \"Д\"], [0, \"Е\"], [0, \"Ж\"], [0, \"З\"], [0, \"И\"], [0, \"Й\"], [0, \"К\"], [0, \"Л\"], [0, \"М\"], [0, \"Н\"], [0, \"О\"], [0, \"П\"], [0, \"Р\"], [0, \"С\"], [0, \"Т\"], [0, \"У\"], [0, \"Ф\"], [0, \"Х\"], [0, \"Ц\"], [0, \"Ч\"], [0, \"Ш\"], [0, \"Щ\"], [0, \"Ъ\"], [0, \"Ы\"], [0, \"Ь\"], [0, \"Э\"], [0, \"Ю\"], [0, \"Я\"], [0, \"а\"], [0, \"б\"], [0, \"в\"], [0, \"г\"], [0, \"д\"], [0, \"е\"], [0, \"ж\"], [0, \"з\"], [0, \"и\"], [0, \"й\"], [0, \"к\"], [0, \"л\"], [0, \"м\"], [0, \"н\"], [0, \"о\"], [0, \"п\"], [0, \"р\"], [0, \"с\"], [0, \"т\"], [0, \"у\"], [0, \"ф\"], [0, \"х\"], [0, \"ц\"], [0, \"ч\"], [0, \"ш\"], [0, \"щ\"], [0, \"ъ\"], [0, \"ы\"], [0, \"ь\"], [0, \"э\"], [0, \"ю\"], [0, \"я\"], [1, \"ё\"], [0, \"ђ\"], [0, \"ѓ\"], [0, \"є\"], [0, \"ѕ\"], [0, \"і\"], [0, \"ї\"], [0, \"ј\"], [0, \"љ\"], [0, \"њ\"], [0, \"ћ\"], [0, \"ќ\"], [1, \"ў\"], [0, \"џ\"], [7074, \" \"], [0, \" \"], [0, \" \"], [0, \" \"], [1, \" \"], [0, \" \"], [0, \" \"], [0, \" \"], [0, \"​\"], [0, \"‌\"], [0, \"‍\"], [0, \"‎\"], [0, \"‏\"], [0, \"‐\"], [2, \"–\"], [0, \"—\"], [0, \"―\"], [0, \"‖\"], [1, \"‘\"], [0, \"’\"], [0, \"‚\"], [1, \"“\"], [0, \"”\"], [0, \"„\"], [1, \"†\"], [0, \"‡\"], [0, \"•\"], [2, \"‥\"], [0, \"…\"], [9, \"‰\"], [0, \"‱\"], [0, \"′\"], [0, \"″\"], [0, \"‴\"], [0, \"‵\"], [3, \"‹\"], [0, \"›\"], [3, \"‾\"], [2, \"⁁\"], [1, \"⁃\"], [0, \"⁄\"], [10, \"⁏\"], [7, \"⁗\"], [7, { v: \" \", n: 8202, o: \"  \" }], [0, \"⁠\"], [0, \"⁡\"], [0, \"⁢\"], [0, \"⁣\"], [72, \"€\"], [46, \"⃛\"], [0, \"⃜\"], [37, \"ℂ\"], [2, \"℅\"], [4, \"ℊ\"], [0, \"ℋ\"], [0, \"ℌ\"], [0, \"ℍ\"], [0, \"ℎ\"], [0, \"ℏ\"], [0, \"ℐ\"], [0, \"ℑ\"], [0, \"ℒ\"], [0, \"ℓ\"], [1, \"ℕ\"], [0, \"№\"], [0, \"℗\"], [0, \"℘\"], [0, \"ℙ\"], [0, \"ℚ\"], [0, \"ℛ\"], [0, \"ℜ\"], [0, \"ℝ\"], [0, \"℞\"], [3, \"™\"], [1, \"ℤ\"], [2, \"℧\"], [0, \"ℨ\"], [0, \"℩\"], [2, \"ℬ\"], [0, \"ℭ\"], [1, \"ℯ\"], [0, \"ℰ\"], [0, \"ℱ\"], [1, \"ℳ\"], [0, \"ℴ\"], [0, \"ℵ\"], [0, \"ℶ\"], [0, \"ℷ\"], [0, \"ℸ\"], [12, \"ⅅ\"], [0, \"ⅆ\"], [0, \"ⅇ\"], [0, \"ⅈ\"], [10, \"⅓\"], [0, \"⅔\"], [0, \"⅕\"], [0, \"⅖\"], [0, \"⅗\"], [0, \"⅘\"], [0, \"⅙\"], [0, \"⅚\"], [0, \"⅛\"], [0, \"⅜\"], [0, \"⅝\"], [0, \"⅞\"], [49, \"←\"], [0, \"↑\"], [0, \"→\"], [0, \"↓\"], [0, \"↔\"], [0, \"↕\"], [0, \"↖\"], [0, \"↗\"], [0, \"↘\"], [0, \"↙\"], [0, \"↚\"], [0, \"↛\"], [1, { v: \"↝\", n: 824, o: \"↝̸\" }], [0, \"↞\"], [0, \"↟\"], [0, \"↠\"], [0, \"↡\"], [0, \"↢\"], [0, \"↣\"], [0, \"↤\"], [0, \"↥\"], [0, \"↦\"], [0, \"↧\"], [1, \"↩\"], [0, \"↪\"], [0, \"↫\"], [0, \"↬\"], [0, \"↭\"], [0, \"↮\"], [1, \"↰\"], [0, \"↱\"], [0, \"↲\"], [0, \"↳\"], [1, \"↵\"], [0, \"↶\"], [0, \"↷\"], [2, \"↺\"], [0, \"↻\"], [0, \"↼\"], [0, \"↽\"], [0, \"↾\"], [0, \"↿\"], [0, \"⇀\"], [0, \"⇁\"], [0, \"⇂\"], [0, \"⇃\"], [0, \"⇄\"], [0, \"⇅\"], [0, \"⇆\"], [0, \"⇇\"], [0, \"⇈\"], [0, \"⇉\"], [0, \"⇊\"], [0, \"⇋\"], [0, \"⇌\"], [0, \"⇍\"], [0, \"⇎\"], [0, \"⇏\"], [0, \"⇐\"], [0, \"⇑\"], [0, \"⇒\"], [0, \"⇓\"], [0, \"⇔\"], [0, \"⇕\"], [0, \"⇖\"], [0, \"⇗\"], [0, \"⇘\"], [0, \"⇙\"], [0, \"⇚\"], [0, \"⇛\"], [1, \"⇝\"], [6, \"⇤\"], [0, \"⇥\"], [15, \"⇵\"], [7, \"⇽\"], [0, \"⇾\"], [0, \"⇿\"], [0, \"∀\"], [0, \"∁\"], [0, { v: \"∂\", n: 824, o: \"∂̸\" }], [0, \"∃\"], [0, \"∄\"], [0, \"∅\"], [1, \"∇\"], [0, \"∈\"], [0, \"∉\"], [1, \"∋\"], [0, \"∌\"], [2, \"∏\"], [0, \"∐\"], [0, \"∑\"], [0, \"−\"], [0, \"∓\"], [0, \"∔\"], [1, \"∖\"], [0, \"∗\"], [0, \"∘\"], [1, \"√\"], [2, \"∝\"], [0, \"∞\"], [0, \"∟\"], [0, { v: \"∠\", n: 8402, o: \"∠⃒\" }], [0, \"∡\"], [0, \"∢\"], [0, \"∣\"], [0, \"∤\"], [0, \"∥\"], [0, \"∦\"], [0, \"∧\"], [0, \"∨\"], [0, { v: \"∩\", n: 65024, o: \"∩︀\" }], [0, { v: \"∪\", n: 65024, o: \"∪︀\" }], [0, \"∫\"], [0, \"∬\"], [0, \"∭\"], [0, \"∮\"], [0, \"∯\"], [0, \"∰\"], [0, \"∱\"], [0, \"∲\"], [0, \"∳\"], [0, \"∴\"], [0, \"∵\"], [0, \"∶\"], [0, \"∷\"], [0, \"∸\"], [1, \"∺\"], [0, \"∻\"], [0, { v: \"∼\", n: 8402, o: \"∼⃒\" }], [0, { v: \"∽\", n: 817, o: \"∽̱\" }], [0, { v: \"∾\", n: 819, o: \"∾̳\" }], [0, \"∿\"], [0, \"≀\"], [0, \"≁\"], [0, { v: \"≂\", n: 824, o: \"≂̸\" }], [0, \"≃\"], [0, \"≄\"], [0, \"≅\"], [0, \"≆\"], [0, \"≇\"], [0, \"≈\"], [0, \"≉\"], [0, \"≊\"], [0, { v: \"≋\", n: 824, o: \"≋̸\" }], [0, \"≌\"], [0, { v: \"≍\", n: 8402, o: \"≍⃒\" }], [0, { v: \"≎\", n: 824, o: \"≎̸\" }], [0, { v: \"≏\", n: 824, o: \"≏̸\" }], [0, { v: \"≐\", n: 824, o: \"≐̸\" }], [0, \"≑\"], [0, \"≒\"], [0, \"≓\"], [0, \"≔\"], [0, \"≕\"], [0, \"≖\"], [0, \"≗\"], [1, \"≙\"], [0, \"≚\"], [1, \"≜\"], [2, \"≟\"], [0, \"≠\"], [0, { v: \"≡\", n: 8421, o: \"≡⃥\" }], [0, \"≢\"], [1, { v: \"≤\", n: 8402, o: \"≤⃒\" }], [0, { v: \"≥\", n: 8402, o: \"≥⃒\" }], [0, { v: \"≦\", n: 824, o: \"≦̸\" }], [0, { v: \"≧\", n: 824, o: \"≧̸\" }], [0, { v: \"≨\", n: 65024, o: \"≨︀\" }], [0, { v: \"≩\", n: 65024, o: \"≩︀\" }], [0, { v: \"≪\", n: new Map(/* #__PURE__ */ restoreDiff([[824, \"≪̸\"], [7577, \"≪⃒\"]])) }], [0, { v: \"≫\", n: new Map(/* #__PURE__ */ restoreDiff([[824, \"≫̸\"], [7577, \"≫⃒\"]])) }], [0, \"≬\"], [0, \"≭\"], [0, \"≮\"], [0, \"≯\"], [0, \"≰\"], [0, \"≱\"], [0, \"≲\"], [0, \"≳\"], [0, \"≴\"], [0, \"≵\"], [0, \"≶\"], [0, \"≷\"], [0, \"≸\"], [0, \"≹\"], [0, \"≺\"], [0, \"≻\"], [0, \"≼\"], [0, \"≽\"], [0, \"≾\"], [0, { v: \"≿\", n: 824, o: \"≿̸\" }], [0, \"⊀\"], [0, \"⊁\"], [0, { v: \"⊂\", n: 8402, o: \"⊂⃒\" }], [0, { v: \"⊃\", n: 8402, o: \"⊃⃒\" }], [0, \"⊄\"], [0, \"⊅\"], [0, \"⊆\"], [0, \"⊇\"], [0, \"⊈\"], [0, \"⊉\"], [0, { v: \"⊊\", n: 65024, o: \"⊊︀\" }], [0, { v: \"⊋\", n: 65024, o: \"⊋︀\" }], [1, \"⊍\"], [0, \"⊎\"], [0, { v: \"⊏\", n: 824, o: \"⊏̸\" }], [0, { v: \"⊐\", n: 824, o: \"⊐̸\" }], [0, \"⊑\"], [0, \"⊒\"], [0, { v: \"⊓\", n: 65024, o: \"⊓︀\" }], [0, { v: \"⊔\", n: 65024, o: \"⊔︀\" }], [0, \"⊕\"], [0, \"⊖\"], [0, \"⊗\"], [0, \"⊘\"], [0, \"⊙\"], [0, \"⊚\"], [0, \"⊛\"], [1, \"⊝\"], [0, \"⊞\"], [0, \"⊟\"], [0, \"⊠\"], [0, \"⊡\"], [0, \"⊢\"], [0, \"⊣\"], [0, \"⊤\"], [0, \"⊥\"], [1, \"⊧\"], [0, \"⊨\"], [0, \"⊩\"], [0, \"⊪\"], [0, \"⊫\"], [0, \"⊬\"], [0, \"⊭\"], [0, \"⊮\"], [0, \"⊯\"], [0, \"⊰\"], [1, \"⊲\"], [0, \"⊳\"], [0, { v: \"⊴\", n: 8402, o: \"⊴⃒\" }], [0, { v: \"⊵\", n: 8402, o: \"⊵⃒\" }], [0, \"⊶\"], [0, \"⊷\"], [0, \"⊸\"], [0, \"⊹\"], [0, \"⊺\"], [0, \"⊻\"], [1, \"⊽\"], [0, \"⊾\"], [0, \"⊿\"], [0, \"⋀\"], [0, \"⋁\"], [0, \"⋂\"], [0, \"⋃\"], [0, \"⋄\"], [0, \"⋅\"], [0, \"⋆\"], [0, \"⋇\"], [0, \"⋈\"], [0, \"⋉\"], [0, \"⋊\"], [0, \"⋋\"], [0, \"⋌\"], [0, \"⋍\"], [0, \"⋎\"], [0, \"⋏\"], [0, \"⋐\"], [0, \"⋑\"], [0, \"⋒\"], [0, \"⋓\"], [0, \"⋔\"], [0, \"⋕\"], [0, \"⋖\"], [0, \"⋗\"], [0, { v: \"⋘\", n: 824, o: \"⋘̸\" }], [0, { v: \"⋙\", n: 824, o: \"⋙̸\" }], [0, { v: \"⋚\", n: 65024, o: \"⋚︀\" }], [0, { v: \"⋛\", n: 65024, o: \"⋛︀\" }], [2, \"⋞\"], [0, \"⋟\"], [0, \"⋠\"], [0, \"⋡\"], [0, \"⋢\"], [0, \"⋣\"], [2, \"⋦\"], [0, \"⋧\"], [0, \"⋨\"], [0, \"⋩\"], [0, \"⋪\"], [0, \"⋫\"], [0, \"⋬\"], [0, \"⋭\"], [0, \"⋮\"], [0, \"⋯\"], [0, \"⋰\"], [0, \"⋱\"], [0, \"⋲\"], [0, \"⋳\"], [0, \"⋴\"], [0, { v: \"⋵\", n: 824, o: \"⋵̸\" }], [0, \"⋶\"], [0, \"⋷\"], [1, { v: \"⋹\", n: 824, o: \"⋹̸\" }], [0, \"⋺\"], [0, \"⋻\"], [0, \"⋼\"], [0, \"⋽\"], [0, \"⋾\"], [6, \"⌅\"], [0, \"⌆\"], [1, \"⌈\"], [0, \"⌉\"], [0, \"⌊\"], [0, \"⌋\"], [0, \"⌌\"], [0, \"⌍\"], [0, \"⌎\"], [0, \"⌏\"], [0, \"⌐\"], [1, \"⌒\"], [0, \"⌓\"], [1, \"⌕\"], [0, \"⌖\"], [5, \"⌜\"], [0, \"⌝\"], [0, \"⌞\"], [0, \"⌟\"], [2, \"⌢\"], [0, \"⌣\"], [9, \"⌭\"], [0, \"⌮\"], [7, \"⌶\"], [6, \"⌽\"], [1, \"⌿\"], [60, \"⍼\"], [51, \"⎰\"], [0, \"⎱\"], [2, \"⎴\"], [0, \"⎵\"], [0, \"⎶\"], [37, \"⏜\"], [0, \"⏝\"], [0, \"⏞\"], [0, \"⏟\"], [2, \"⏢\"], [4, \"⏧\"], [59, \"␣\"], [164, \"Ⓢ\"], [55, \"─\"], [1, \"│\"], [9, \"┌\"], [3, \"┐\"], [3, \"└\"], [3, \"┘\"], [3, \"├\"], [7, \"┤\"], [7, \"┬\"], [7, \"┴\"], [7, \"┼\"], [19, \"═\"], [0, \"║\"], [0, \"╒\"], [0, \"╓\"], [0, \"╔\"], [0, \"╕\"], [0, \"╖\"], [0, \"╗\"], [0, \"╘\"], [0, \"╙\"], [0, \"╚\"], [0, \"╛\"], [0, \"╜\"], [0, \"╝\"], [0, \"╞\"], [0, \"╟\"], [0, \"╠\"], [0, \"╡\"], [0, \"╢\"], [0, \"╣\"], [0, \"╤\"], [0, \"╥\"], [0, \"╦\"], [0, \"╧\"], [0, \"╨\"], [0, \"╩\"], [0, \"╪\"], [0, \"╫\"], [0, \"╬\"], [19, \"▀\"], [3, \"▄\"], [3, \"█\"], [8, \"░\"], [0, \"▒\"], [0, \"▓\"], [13, \"□\"], [8, \"▪\"], [0, \"▫\"], [1, \"▭\"], [0, \"▮\"], [2, \"▱\"], [1, \"△\"], [0, \"▴\"], [0, \"▵\"], [2, \"▸\"], [0, \"▹\"], [3, \"▽\"], [0, \"▾\"], [0, \"▿\"], [2, \"◂\"], [0, \"◃\"], [6, \"◊\"], [0, \"○\"], [32, \"◬\"], [2, \"◯\"], [8, \"◸\"], [0, \"◹\"], [0, \"◺\"], [0, \"◻\"], [0, \"◼\"], [8, \"★\"], [0, \"☆\"], [7, \"☎\"], [49, \"♀\"], [1, \"♂\"], [29, \"♠\"], [2, \"♣\"], [1, \"♥\"], [0, \"♦\"], [3, \"♪\"], [2, \"♭\"], [0, \"♮\"], [0, \"♯\"], [163, \"✓\"], [3, \"✗\"], [8, \"✠\"], [21, \"✶\"], [33, \"❘\"], [25, \"❲\"], [0, \"❳\"], [84, \"⟈\"], [0, \"⟉\"], [28, \"⟦\"], [0, \"⟧\"], [0, \"⟨\"], [0, \"⟩\"], [0, \"⟪\"], [0, \"⟫\"], [0, \"⟬\"], [0, \"⟭\"], [7, \"⟵\"], [0, \"⟶\"], [0, \"⟷\"], [0, \"⟸\"], [0, \"⟹\"], [0, \"⟺\"], [1, \"⟼\"], [2, \"⟿\"], [258, \"⤂\"], [0, \"⤃\"], [0, \"⤄\"], [0, \"⤅\"], [6, \"⤌\"], [0, \"⤍\"], [0, \"⤎\"], [0, \"⤏\"], [0, \"⤐\"], [0, \"⤑\"], [0, \"⤒\"], [0, \"⤓\"], [2, \"⤖\"], [2, \"⤙\"], [0, \"⤚\"], [0, \"⤛\"], [0, \"⤜\"], [0, \"⤝\"], [0, \"⤞\"], [0, \"⤟\"], [0, \"⤠\"], [2, \"⤣\"], [0, \"⤤\"], [0, \"⤥\"], [0, \"⤦\"], [0, \"⤧\"], [0, \"⤨\"], [0, \"⤩\"], [0, \"⤪\"], [8, { v: \"⤳\", n: 824, o: \"⤳̸\" }], [1, \"⤵\"], [0, \"⤶\"], [0, \"⤷\"], [0, \"⤸\"], [0, \"⤹\"], [2, \"⤼\"], [0, \"⤽\"], [7, \"⥅\"], [2, \"⥈\"], [0, \"⥉\"], [0, \"⥊\"], [0, \"⥋\"], [2, \"⥎\"], [0, \"⥏\"], [0, \"⥐\"], [0, \"⥑\"], [0, \"⥒\"], [0, \"⥓\"], [0, \"⥔\"], [0, \"⥕\"], [0, \"⥖\"], [0, \"⥗\"], [0, \"⥘\"], [0, \"⥙\"], [0, \"⥚\"], [0, \"⥛\"], [0, \"⥜\"], [0, \"⥝\"], [0, \"⥞\"], [0, \"⥟\"], [0, \"⥠\"], [0, \"⥡\"], [0, \"⥢\"], [0, \"⥣\"], [0, \"⥤\"], [0, \"⥥\"], [0, \"⥦\"], [0, \"⥧\"], [0, \"⥨\"], [0, \"⥩\"], [0, \"⥪\"], [0, \"⥫\"], [0, \"⥬\"], [0, \"⥭\"], [0, \"⥮\"], [0, \"⥯\"], [0, \"⥰\"], [0, \"⥱\"], [0, \"⥲\"], [0, \"⥳\"], [0, \"⥴\"], [0, \"⥵\"], [0, \"⥶\"], [1, \"⥸\"], [0, \"⥹\"], [1, \"⥻\"], [0, \"⥼\"], [0, \"⥽\"], [0, \"⥾\"], [0, \"⥿\"], [5, \"⦅\"], [0, \"⦆\"], [4, \"⦋\"], [0, \"⦌\"], [0, \"⦍\"], [0, \"⦎\"], [0, \"⦏\"], [0, \"⦐\"], [0, \"⦑\"], [0, \"⦒\"], [0, \"⦓\"], [0, \"⦔\"], [0, \"⦕\"], [0, \"⦖\"], [3, \"⦚\"], [1, \"⦜\"], [0, \"⦝\"], [6, \"⦤\"], [0, \"⦥\"], [0, \"⦦\"], [0, \"⦧\"], [0, \"⦨\"], [0, \"⦩\"], [0, \"⦪\"], [0, \"⦫\"], [0, \"⦬\"], [0, \"⦭\"], [0, \"⦮\"], [0, \"⦯\"], [0, \"⦰\"], [0, \"⦱\"], [0, \"⦲\"], [0, \"⦳\"], [0, \"⦴\"], [0, \"⦵\"], [0, \"⦶\"], [0, \"⦷\"], [1, \"⦹\"], [1, \"⦻\"], [0, \"⦼\"], [1, \"⦾\"], [0, \"⦿\"], [0, \"⧀\"], [0, \"⧁\"], [0, \"⧂\"], [0, \"⧃\"], [0, \"⧄\"], [0, \"⧅\"], [3, \"⧉\"], [3, \"⧍\"], [0, \"⧎\"], [0, { v: \"⧏\", n: 824, o: \"⧏̸\" }], [0, { v: \"⧐\", n: 824, o: \"⧐̸\" }], [11, \"⧜\"], [0, \"⧝\"], [0, \"⧞\"], [4, \"⧣\"], [0, \"⧤\"], [0, \"⧥\"], [5, \"⧫\"], [8, \"⧴\"], [1, \"⧶\"], [9, \"⨀\"], [0, \"⨁\"], [0, \"⨂\"], [1, \"⨄\"], [1, \"⨆\"], [5, \"⨌\"], [0, \"⨍\"], [2, \"⨐\"], [0, \"⨑\"], [0, \"⨒\"], [0, \"⨓\"], [0, \"⨔\"], [0, \"⨕\"], [0, \"⨖\"], [0, \"⨗\"], [10, \"⨢\"], [0, \"⨣\"], [0, \"⨤\"], [0, \"⨥\"], [0, \"⨦\"], [0, \"⨧\"], [1, \"⨩\"], [0, \"⨪\"], [2, \"⨭\"], [0, \"⨮\"], [0, \"⨯\"], [0, \"⨰\"], [0, \"⨱\"], [1, \"⨳\"], [0, \"⨴\"], [0, \"⨵\"], [0, \"⨶\"], [0, \"⨷\"], [0, \"⨸\"], [0, \"⨹\"], [0, \"⨺\"], [0, \"⨻\"], [0, \"⨼\"], [2, \"⨿\"], [0, \"⩀\"], [1, \"⩂\"], [0, \"⩃\"], [0, \"⩄\"], [0, \"⩅\"], [0, \"⩆\"], [0, \"⩇\"], [0, \"⩈\"], [0, \"⩉\"], [0, \"⩊\"], [0, \"⩋\"], [0, \"⩌\"], [0, \"⩍\"], [2, \"⩐\"], [2, \"⩓\"], [0, \"⩔\"], [0, \"⩕\"], [0, \"⩖\"], [0, \"⩗\"], [0, \"⩘\"], [1, \"⩚\"], [0, \"⩛\"], [0, \"⩜\"], [0, \"⩝\"], [1, \"⩟\"], [6, \"⩦\"], [3, \"⩪\"], [2, { v: \"⩭\", n: 824, o: \"⩭̸\" }], [0, \"⩮\"], [0, \"⩯\"], [0, { v: \"⩰\", n: 824, o: \"⩰̸\" }], [0, \"⩱\"], [0, \"⩲\"], [0, \"⩳\"], [0, \"⩴\"], [0, \"⩵\"], [1, \"⩷\"], [0, \"⩸\"], [0, \"⩹\"], [0, \"⩺\"], [0, \"⩻\"], [0, \"⩼\"], [0, { v: \"⩽\", n: 824, o: \"⩽̸\" }], [0, { v: \"⩾\", n: 824, o: \"⩾̸\" }], [0, \"⩿\"], [0, \"⪀\"], [0, \"⪁\"], [0, \"⪂\"], [0, \"⪃\"], [0, \"⪄\"], [0, \"⪅\"], [0, \"⪆\"], [0, \"⪇\"], [0, \"⪈\"], [0, \"⪉\"], [0, \"⪊\"], [0, \"⪋\"], [0, \"⪌\"], [0, \"⪍\"], [0, \"⪎\"], [0, \"⪏\"], [0, \"⪐\"], [0, \"⪑\"], [0, \"⪒\"], [0, \"⪓\"], [0, \"⪔\"], [0, \"⪕\"], [0, \"⪖\"], [0, \"⪗\"], [0, \"⪘\"], [0, \"⪙\"], [0, \"⪚\"], [2, \"⪝\"], [0, \"⪞\"], [0, \"⪟\"], [0, \"⪠\"], [0, { v: \"⪡\", n: 824, o: \"⪡̸\" }], [0, { v: \"⪢\", n: 824, o: \"⪢̸\" }], [1, \"⪤\"], [0, \"⪥\"], [0, \"⪦\"], [0, \"⪧\"], [0, \"⪨\"], [0, \"⪩\"], [0, \"⪪\"], [0, \"⪫\"], [0, { v: \"⪬\", n: 65024, o: \"⪬︀\" }], [0, { v: \"⪭\", n: 65024, o: \"⪭︀\" }], [0, \"⪮\"], [0, { v: \"⪯\", n: 824, o: \"⪯̸\" }], [0, { v: \"⪰\", n: 824, o: \"⪰̸\" }], [2, \"⪳\"], [0, \"⪴\"], [0, \"⪵\"], [0, \"⪶\"], [0, \"⪷\"], [0, \"⪸\"], [0, \"⪹\"], [0, \"⪺\"], [0, \"⪻\"], [0, \"⪼\"], [0, \"⪽\"], [0, \"⪾\"], [0, \"⪿\"], [0, \"⫀\"], [0, \"⫁\"], [0, \"⫂\"], [0, \"⫃\"], [0, \"⫄\"], [0, { v: \"⫅\", n: 824, o: \"⫅̸\" }], [0, { v: \"⫆\", n: 824, o: \"⫆̸\" }], [0, \"⫇\"], [0, \"⫈\"], [2, { v: \"⫋\", n: 65024, o: \"⫋︀\" }], [0, { v: \"⫌\", n: 65024, o: \"⫌︀\" }], [2, \"⫏\"], [0, \"⫐\"], [0, \"⫑\"], [0, \"⫒\"], [0, \"⫓\"], [0, \"⫔\"], [0, \"⫕\"], [0, \"⫖\"], [0, \"⫗\"], [0, \"⫘\"], [0, \"⫙\"], [0, \"⫚\"], [0, \"⫛\"], [8, \"⫤\"], [1, \"⫦\"], [0, \"⫧\"], [0, \"⫨\"], [0, \"⫩\"], [1, \"⫫\"], [0, \"⫬\"], [0, \"⫭\"], [0, \"⫮\"], [0, \"⫯\"], [0, \"⫰\"], [0, \"⫱\"], [0, \"⫲\"], [0, \"⫳\"], [9, { v: \"⫽\", n: 8421, o: \"⫽⃥\" }], [44343, { n: new Map(/* #__PURE__ */ restoreDiff([[56476, \"𝒜\"], [1, \"𝒞\"], [0, \"𝒟\"], [2, \"𝒢\"], [2, \"𝒥\"], [0, \"𝒦\"], [2, \"𝒩\"], [0, \"𝒪\"], [0, \"𝒫\"], [0, \"𝒬\"], [1, \"𝒮\"], [0, \"𝒯\"], [0, \"𝒰\"], [0, \"𝒱\"], [0, \"𝒲\"], [0, \"𝒳\"], [0, \"𝒴\"], [0, \"𝒵\"], [0, \"𝒶\"], [0, \"𝒷\"], [0, \"𝒸\"], [0, \"𝒹\"], [1, \"𝒻\"], [1, \"𝒽\"], [0, \"𝒾\"], [0, \"𝒿\"], [0, \"𝓀\"], [0, \"𝓁\"], [0, \"𝓂\"], [0, \"𝓃\"], [1, \"𝓅\"], [0, \"𝓆\"], [0, \"𝓇\"], [0, \"𝓈\"], [0, \"𝓉\"], [0, \"𝓊\"], [0, \"𝓋\"], [0, \"𝓌\"], [0, \"𝓍\"], [0, \"𝓎\"], [0, \"𝓏\"], [52, \"𝔄\"], [0, \"𝔅\"], [1, \"𝔇\"], [0, \"𝔈\"], [0, \"𝔉\"], [0, \"𝔊\"], [2, \"𝔍\"], [0, \"𝔎\"], [0, \"𝔏\"], [0, \"𝔐\"], [0, \"𝔑\"], [0, \"𝔒\"], [0, \"𝔓\"], [0, \"𝔔\"], [1, \"𝔖\"], [0, \"𝔗\"], [0, \"𝔘\"], [0, \"𝔙\"], [0, \"𝔚\"], [0, \"𝔛\"], [0, \"𝔜\"], [1, \"𝔞\"], [0, \"𝔟\"], [0, \"𝔠\"], [0, \"𝔡\"], [0, \"𝔢\"], [0, \"𝔣\"], [0, \"𝔤\"], [0, \"𝔥\"], [0, \"𝔦\"], [0, \"𝔧\"], [0, \"𝔨\"], [0, \"𝔩\"], [0, \"𝔪\"], [0, \"𝔫\"], [0, \"𝔬\"], [0, \"𝔭\"], [0, \"𝔮\"], [0, \"𝔯\"], [0, \"𝔰\"], [0, \"𝔱\"], [0, \"𝔲\"], [0, \"𝔳\"], [0, \"𝔴\"], [0, \"𝔵\"], [0, \"𝔶\"], [0, \"𝔷\"], [0, \"𝔸\"], [0, \"𝔹\"], [1, \"𝔻\"], [0, \"𝔼\"], [0, \"𝔽\"], [0, \"𝔾\"], [1, \"𝕀\"], [0, \"𝕁\"], [0, \"𝕂\"], [0, \"𝕃\"], [0, \"𝕄\"], [1, \"𝕆\"], [3, \"𝕊\"], [0, \"𝕋\"], [0, \"𝕌\"], [0, \"𝕍\"], [0, \"𝕎\"], [0, \"𝕏\"], [0, \"𝕐\"], [1, \"𝕒\"], [0, \"𝕓\"], [0, \"𝕔\"], [0, \"𝕕\"], [0, \"𝕖\"], [0, \"𝕗\"], [0, \"𝕘\"], [0, \"𝕙\"], [0, \"𝕚\"], [0, \"𝕛\"], [0, \"𝕜\"], [0, \"𝕝\"], [0, \"𝕞\"], [0, \"𝕟\"], [0, \"𝕠\"], [0, \"𝕡\"], [0, \"𝕢\"], [0, \"𝕣\"], [0, \"𝕤\"], [0, \"𝕥\"], [0, \"𝕦\"], [0, \"𝕧\"], [0, \"𝕨\"], [0, \"𝕩\"], [0, \"𝕪\"], [0, \"𝕫\"]])) }], [8906, \"ff\"], [0, \"fi\"], [0, \"fl\"], [0, \"ffi\"], [0, \"ffl\"]]));\n//# sourceMappingURL=encode-html.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.escapeText = exports.escapeAttribute = exports.escapeUTF8 = exports.escape = exports.encodeXML = exports.getCodePoint = exports.xmlReplacer = void 0;\nexports.xmlReplacer = /[\"&'<>$\\x80-\\uFFFF]/g;\nvar xmlCodeMap = new Map([\n [34, \""\"],\n [38, \"&\"],\n [39, \"'\"],\n [60, \"<\"],\n [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexports.getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? function (str, index) { return str.codePointAt(index); }\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n function (c, index) {\n return (c.charCodeAt(index) & 0xfc00) === 0xd800\n ? (c.charCodeAt(index) - 0xd800) * 0x400 +\n c.charCodeAt(index + 1) -\n 0xdc00 +\n 0x10000\n : c.charCodeAt(index);\n };\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nfunction encodeXML(str) {\n var ret = \"\";\n var lastIdx = 0;\n var match;\n while ((match = exports.xmlReplacer.exec(str)) !== null) {\n var i = match.index;\n var char = str.charCodeAt(i);\n var next = xmlCodeMap.get(char);\n if (next !== undefined) {\n ret += str.substring(lastIdx, i) + next;\n lastIdx = i + 1;\n }\n else {\n ret += \"\".concat(str.substring(lastIdx, i), \"&#x\").concat((0, exports.getCodePoint)(str, i).toString(16), \";\");\n // Increase by 1 if we have a surrogate pair\n lastIdx = exports.xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);\n }\n }\n return ret + str.substr(lastIdx);\n}\nexports.encodeXML = encodeXML;\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexports.escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n return function escape(data) {\n var match;\n var lastIdx = 0;\n var result = \"\";\n while ((match = regex.exec(data))) {\n if (lastIdx !== match.index) {\n result += data.substring(lastIdx, match.index);\n }\n // We know that this character will be in the map.\n result += map.get(match[0].charCodeAt(0));\n // Every match will be of length 1\n lastIdx = match.index + 1;\n }\n return result + data.substring(lastIdx);\n };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexports.escapeUTF8 = getEscaper(/[&<>'\"]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexports.escapeAttribute = getEscaper(/[\"&\\u00A0]/g, new Map([\n [34, \""\"],\n [38, \"&\"],\n [160, \" \"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexports.escapeText = getEscaper(/[&<>\\u00A0]/g, new Map([\n [38, \"&\"],\n [60, \"<\"],\n [62, \">\"],\n [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.encodeNonAsciiHTML = exports.encodeHTML = void 0;\nvar encode_html_js_1 = __importDefault(require(\"./generated/encode-html.js\"));\nvar escape_js_1 = require(\"./escape.js\");\nvar htmlReplacer = /[\\t\\n!-,./:-@[-`\\f{-}$\\x80-\\uFFFF]/g;\n/**\n * Encodes all characters in the input using HTML entities. This includes\n * characters that are valid ASCII characters in HTML documents, such as `#`.\n *\n * To get a more compact output, consider using the `encodeNonAsciiHTML`\n * function, which will only encode characters that are not valid in HTML\n * documents, as well as non-ASCII characters.\n *\n * If a character has no equivalent entity, a numeric hexadecimal reference\n * (eg. `ü`) will be used.\n */\nfunction encodeHTML(data) {\n return encodeHTMLTrieRe(htmlReplacer, data);\n}\nexports.encodeHTML = encodeHTML;\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in HTML\n * documents using HTML entities. This function will not encode characters that\n * are valid in HTML documents, such as `#`.\n *\n * If a character has no equivalent entity, a numeric hexadecimal reference\n * (eg. `ü`) will be used.\n */\nfunction encodeNonAsciiHTML(data) {\n return encodeHTMLTrieRe(escape_js_1.xmlReplacer, data);\n}\nexports.encodeNonAsciiHTML = encodeNonAsciiHTML;\nfunction encodeHTMLTrieRe(regExp, str) {\n var ret = \"\";\n var lastIdx = 0;\n var match;\n while ((match = regExp.exec(str)) !== null) {\n var i = match.index;\n ret += str.substring(lastIdx, i);\n var char = str.charCodeAt(i);\n var next = encode_html_js_1.default.get(char);\n if (typeof next === \"object\") {\n // We are in a branch. Try to match the next char.\n if (i + 1 < str.length) {\n var nextChar = str.charCodeAt(i + 1);\n var value = typeof next.n === \"number\"\n ? next.n === nextChar\n ? next.o\n : undefined\n : next.n.get(nextChar);\n if (value !== undefined) {\n ret += value;\n lastIdx = regExp.lastIndex += 1;\n continue;\n }\n }\n next = next.v;\n }\n // We might have a tree node without a value; skip and use a numeric entity.\n if (next !== undefined) {\n ret += next;\n lastIdx = i + 1;\n }\n else {\n var cp = (0, escape_js_1.getCodePoint)(str, i);\n ret += \"&#x\".concat(cp.toString(16), \";\");\n // Increase by 1 if we have a surrogate pair\n lastIdx = regExp.lastIndex += Number(cp !== char);\n }\n }\n return ret + str.substr(lastIdx);\n}\n//# sourceMappingURL=encode.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeXMLStrict = exports.decodeHTML5Strict = exports.decodeHTML4Strict = exports.decodeHTML5 = exports.decodeHTML4 = exports.decodeHTMLAttribute = exports.decodeHTMLStrict = exports.decodeHTML = exports.decodeXML = exports.DecodingMode = exports.EntityDecoder = exports.encodeHTML5 = exports.encodeHTML4 = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.escapeText = exports.escapeAttribute = exports.escapeUTF8 = exports.escape = exports.encodeXML = exports.encode = exports.decodeStrict = exports.decode = exports.EncodingMode = exports.EntityLevel = void 0;\nvar decode_js_1 = require(\"./decode.js\");\nvar encode_js_1 = require(\"./encode.js\");\nvar escape_js_1 = require(\"./escape.js\");\n/** The level of entities to support. */\nvar EntityLevel;\n(function (EntityLevel) {\n /** Support only XML entities. */\n EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n /** Support HTML entities, which are a superset of XML entities. */\n EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})(EntityLevel = exports.EntityLevel || (exports.EntityLevel = {}));\nvar EncodingMode;\n(function (EncodingMode) {\n /**\n * The output is UTF-8 encoded. Only characters that need escaping within\n * XML will be escaped.\n */\n EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n /**\n * The output consists only of ASCII characters. Characters that need\n * escaping within HTML, and characters that aren't ASCII characters will\n * be escaped.\n */\n EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n /**\n * Encode all characters that have an equivalent entity, as well as all\n * characters that are not ASCII characters.\n */\n EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n /**\n * Encode all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n /**\n * Encode all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})(EncodingMode = exports.EncodingMode || (exports.EncodingMode = {}));\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n */\nfunction decode(data, options) {\n if (options === void 0) { options = EntityLevel.XML; }\n var level = typeof options === \"number\" ? options : options.level;\n if (level === EntityLevel.HTML) {\n var mode = typeof options === \"object\" ? options.mode : undefined;\n return (0, decode_js_1.decodeHTML)(data, mode);\n }\n return (0, decode_js_1.decodeXML)(data);\n}\nexports.decode = decode;\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n * @deprecated Use `decode` with the `mode` set to `Strict`.\n */\nfunction decodeStrict(data, options) {\n var _a;\n if (options === void 0) { options = EntityLevel.XML; }\n var opts = typeof options === \"number\" ? { level: options } : options;\n (_a = opts.mode) !== null && _a !== void 0 ? _a : (opts.mode = decode_js_1.DecodingMode.Strict);\n return decode(data, opts);\n}\nexports.decodeStrict = decodeStrict;\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param options Encoding options.\n */\nfunction encode(data, options) {\n if (options === void 0) { options = EntityLevel.XML; }\n var opts = typeof options === \"number\" ? { level: options } : options;\n // Mode `UTF8` just escapes XML entities\n if (opts.mode === EncodingMode.UTF8)\n return (0, escape_js_1.escapeUTF8)(data);\n if (opts.mode === EncodingMode.Attribute)\n return (0, escape_js_1.escapeAttribute)(data);\n if (opts.mode === EncodingMode.Text)\n return (0, escape_js_1.escapeText)(data);\n if (opts.level === EntityLevel.HTML) {\n if (opts.mode === EncodingMode.ASCII) {\n return (0, encode_js_1.encodeNonAsciiHTML)(data);\n }\n return (0, encode_js_1.encodeHTML)(data);\n }\n // ASCII and Extensive are equivalent\n return (0, escape_js_1.encodeXML)(data);\n}\nexports.encode = encode;\nvar escape_js_2 = require(\"./escape.js\");\nObject.defineProperty(exports, \"encodeXML\", { enumerable: true, get: function () { return escape_js_2.encodeXML; } });\nObject.defineProperty(exports, \"escape\", { enumerable: true, get: function () { return escape_js_2.escape; } });\nObject.defineProperty(exports, \"escapeUTF8\", { enumerable: true, get: function () { return escape_js_2.escapeUTF8; } });\nObject.defineProperty(exports, \"escapeAttribute\", { enumerable: true, get: function () { return escape_js_2.escapeAttribute; } });\nObject.defineProperty(exports, \"escapeText\", { enumerable: true, get: function () { return escape_js_2.escapeText; } });\nvar encode_js_2 = require(\"./encode.js\");\nObject.defineProperty(exports, \"encodeHTML\", { enumerable: true, get: function () { return encode_js_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeNonAsciiHTML\", { enumerable: true, get: function () { return encode_js_2.encodeNonAsciiHTML; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"encodeHTML4\", { enumerable: true, get: function () { return encode_js_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeHTML5\", { enumerable: true, get: function () { return encode_js_2.encodeHTML; } });\nvar decode_js_2 = require(\"./decode.js\");\nObject.defineProperty(exports, \"EntityDecoder\", { enumerable: true, get: function () { return decode_js_2.EntityDecoder; } });\nObject.defineProperty(exports, \"DecodingMode\", { enumerable: true, get: function () { return decode_js_2.DecodingMode; } });\nObject.defineProperty(exports, \"decodeXML\", { enumerable: true, get: function () { return decode_js_2.decodeXML; } });\nObject.defineProperty(exports, \"decodeHTML\", { enumerable: true, get: function () { return decode_js_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTMLStrict\", { enumerable: true, get: function () { return decode_js_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeHTMLAttribute\", { enumerable: true, get: function () { return decode_js_2.decodeHTMLAttribute; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"decodeHTML4\", { enumerable: true, get: function () { return decode_js_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML5\", { enumerable: true, get: function () { return decode_js_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML4Strict\", { enumerable: true, get: function () { return decode_js_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeHTML5Strict\", { enumerable: true, get: function () { return decode_js_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeXMLStrict\", { enumerable: true, get: function () { return decode_js_2.decodeXML; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.attributeNames = exports.elementNames = void 0;\nexports.elementNames = new Map([\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"clipPath\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"foreignObject\",\n \"glyphRef\",\n \"linearGradient\",\n \"radialGradient\",\n \"textPath\",\n].map(function (val) { return [val.toLowerCase(), val]; }));\nexports.attributeNames = new Map([\n \"definitionURL\",\n \"attributeName\",\n \"attributeType\",\n \"baseFrequency\",\n \"baseProfile\",\n \"calcMode\",\n \"clipPathUnits\",\n \"diffuseConstant\",\n \"edgeMode\",\n \"filterUnits\",\n \"glyphRef\",\n \"gradientTransform\",\n \"gradientUnits\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keyPoints\",\n \"keySplines\",\n \"keyTimes\",\n \"lengthAdjust\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerUnits\",\n \"markerWidth\",\n \"maskContentUnits\",\n \"maskUnits\",\n \"numOctaves\",\n \"pathLength\",\n \"patternContentUnits\",\n \"patternTransform\",\n \"patternUnits\",\n \"pointsAtX\",\n \"pointsAtY\",\n \"pointsAtZ\",\n \"preserveAlpha\",\n \"preserveAspectRatio\",\n \"primitiveUnits\",\n \"refX\",\n \"refY\",\n \"repeatCount\",\n \"repeatDur\",\n \"requiredExtensions\",\n \"requiredFeatures\",\n \"specularConstant\",\n \"specularExponent\",\n \"spreadMethod\",\n \"startOffset\",\n \"stdDeviation\",\n \"stitchTiles\",\n \"surfaceScale\",\n \"systemLanguage\",\n \"tableValues\",\n \"targetX\",\n \"targetY\",\n \"textLength\",\n \"viewBox\",\n \"viewTarget\",\n \"xChannelSelector\",\n \"yChannelSelector\",\n \"zoomAndPan\",\n].map(function (val) { return [val.toLowerCase(), val]; }));\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.render = void 0;\n/*\n * Module dependencies\n */\nvar ElementType = __importStar(require(\"domelementtype\"));\nvar entities_1 = require(\"entities\");\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nvar foreignNames_js_1 = require(\"./foreignNames.js\");\nvar unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\",\n]);\nfunction replaceQuotes(value) {\n return value.replace(/\"/g, \""\");\n}\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n var _a;\n if (!attributes)\n return;\n var encode = ((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) === false\n ? replaceQuotes\n : opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? entities_1.encodeXML\n : entities_1.escapeAttribute;\n return Object.keys(attributes)\n .map(function (key) {\n var _a, _b;\n var value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case attribute names */\n key = (_b = foreignNames_js_1.attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n }\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n return key;\n }\n return \"\".concat(key, \"=\\\"\").concat(encode(value), \"\\\"\");\n })\n .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nvar singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nfunction render(node, options) {\n if (options === void 0) { options = {}; }\n var nodes = \"length\" in node ? node : [node];\n var output = \"\";\n for (var i = 0; i < nodes.length; i++) {\n output += renderNode(nodes[i], options);\n }\n return output;\n}\nexports.render = render;\nexports.default = render;\nfunction renderNode(node, options) {\n switch (node.type) {\n case ElementType.Root:\n return render(node.children, options);\n // @ts-expect-error We don't use `Doctype` yet\n case ElementType.Doctype:\n case ElementType.Directive:\n return renderDirective(node);\n case ElementType.Comment:\n return renderComment(node);\n case ElementType.CDATA:\n return renderCdata(node);\n case ElementType.Script:\n case ElementType.Style:\n case ElementType.Tag:\n return renderTag(node, options);\n case ElementType.Text:\n return renderText(node, options);\n }\n}\nvar foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nvar foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */\n elem.name = (_a = foreignNames_js_1.elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */\n if (elem.parent &&\n foreignModeIntegrationPoints.has(elem.parent.name)) {\n opts = __assign(__assign({}, opts), { xmlMode: false });\n }\n }\n if (!opts.xmlMode && foreignElements.has(elem.name)) {\n opts = __assign(__assign({}, opts), { xmlMode: \"foreign\" });\n }\n var tag = \"<\".concat(elem.name);\n var attribs = formatAttributes(elem.attribs, opts);\n if (attribs) {\n tag += \" \".concat(attribs);\n }\n if (elem.children.length === 0 &&\n (opts.xmlMode\n ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n opts.selfClosingTags !== false\n : // User explicitly asked for self-closing tags, even in HTML mode\n opts.selfClosingTags && singleTag.has(elem.name))) {\n if (!opts.xmlMode)\n tag += \" \";\n tag += \"/>\";\n }\n else {\n tag += \">\";\n if (elem.children.length > 0) {\n tag += render(elem.children, opts);\n }\n if (opts.xmlMode || !singleTag.has(elem.name)) {\n tag += \"</\".concat(elem.name, \">\");\n }\n }\n return tag;\n}\nfunction renderDirective(elem) {\n return \"<\".concat(elem.data, \">\");\n}\nfunction renderText(elem, opts) {\n var _a;\n var data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) !== false &&\n !(!opts.xmlMode &&\n elem.parent &&\n unencodedElements.has(elem.parent.name))) {\n data =\n opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? (0, entities_1.encodeXML)(data)\n : (0, entities_1.escapeText)(data);\n }\n return data;\n}\nfunction renderCdata(elem) {\n return \"<![CDATA[\".concat(elem.children[0].data, \"]]>\");\n}\nfunction renderComment(elem) {\n return \"<!--\".concat(elem.data, \"-->\");\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOuterHTML = getOuterHTML;\nexports.getInnerHTML = getInnerHTML;\nexports.getText = getText;\nexports.textContent = textContent;\nexports.innerText = innerText;\nvar domhandler_1 = require(\"domhandler\");\nvar dom_serializer_1 = __importDefault(require(\"dom-serializer\"));\nvar domelementtype_1 = require(\"domelementtype\");\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the outer HTML of.\n * @param options Options for serialization.\n * @returns `node`'s outer HTML.\n */\nfunction getOuterHTML(node, options) {\n return (0, dom_serializer_1.default)(node, options);\n}\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the inner HTML of.\n * @param options Options for serialization.\n * @returns `node`'s inner HTML.\n */\nfunction getInnerHTML(node, options) {\n return (0, domhandler_1.hasChildren)(node)\n ? node.children.map(function (node) { return getOuterHTML(node, options); }).join(\"\")\n : \"\";\n}\n/**\n * Get a node's inner text. Same as `textContent`, but inserts newlines for `<br>` tags. Ignores comments.\n *\n * @category Stringify\n * @deprecated Use `textContent` instead.\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n */\nfunction getText(node) {\n if (Array.isArray(node))\n return node.map(getText).join(\"\");\n if ((0, domhandler_1.isTag)(node))\n return node.name === \"br\" ? \"\\n\" : getText(node.children);\n if ((0, domhandler_1.isCDATA)(node))\n return getText(node.children);\n if ((0, domhandler_1.isText)(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's text content. Ignores comments.\n *\n * @category Stringify\n * @param node Node to get the text content of.\n * @returns `node`'s text content.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent}\n */\nfunction textContent(node) {\n if (Array.isArray(node))\n return node.map(textContent).join(\"\");\n if ((0, domhandler_1.hasChildren)(node) && !(0, domhandler_1.isComment)(node)) {\n return textContent(node.children);\n }\n if ((0, domhandler_1.isText)(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's inner text, ignoring `<script>` and `<style>` tags. Ignores comments.\n *\n * @category Stringify\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText}\n */\nfunction innerText(node) {\n if (Array.isArray(node))\n return node.map(innerText).join(\"\");\n if ((0, domhandler_1.hasChildren)(node) && (node.type === domelementtype_1.ElementType.Tag || (0, domhandler_1.isCDATA)(node))) {\n return innerText(node.children);\n }\n if ((0, domhandler_1.isText)(node))\n return node.data;\n return \"\";\n}\n//# sourceMappingURL=stringify.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getChildren = getChildren;\nexports.getParent = getParent;\nexports.getSiblings = getSiblings;\nexports.getAttributeValue = getAttributeValue;\nexports.hasAttrib = hasAttrib;\nexports.getName = getName;\nexports.nextElementSibling = nextElementSibling;\nexports.prevElementSibling = prevElementSibling;\nvar domhandler_1 = require(\"domhandler\");\n/**\n * Get a node's children.\n *\n * @category Traversal\n * @param elem Node to get the children of.\n * @returns `elem`'s children, or an empty array.\n */\nfunction getChildren(elem) {\n return (0, domhandler_1.hasChildren)(elem) ? elem.children : [];\n}\n/**\n * Get a node's parent.\n *\n * @category Traversal\n * @param elem Node to get the parent of.\n * @returns `elem`'s parent node, or `null` if `elem` is a root node.\n */\nfunction getParent(elem) {\n return elem.parent || null;\n}\n/**\n * Gets an elements siblings, including the element itself.\n *\n * Attempts to get the children through the element's parent first. If we don't\n * have a parent (the element is a root node), we walk the element's `prev` &\n * `next` to get all remaining nodes.\n *\n * @category Traversal\n * @param elem Element to get the siblings of.\n * @returns `elem`'s siblings, including `elem`.\n */\nfunction getSiblings(elem) {\n var _a, _b;\n var parent = getParent(elem);\n if (parent != null)\n return getChildren(parent);\n var siblings = [elem];\n var prev = elem.prev, next = elem.next;\n while (prev != null) {\n siblings.unshift(prev);\n (_a = prev, prev = _a.prev);\n }\n while (next != null) {\n siblings.push(next);\n (_b = next, next = _b.next);\n }\n return siblings;\n}\n/**\n * Gets an attribute from an element.\n *\n * @category Traversal\n * @param elem Element to check.\n * @param name Attribute name to retrieve.\n * @returns The element's attribute value, or `undefined`.\n */\nfunction getAttributeValue(elem, name) {\n var _a;\n return (_a = elem.attribs) === null || _a === void 0 ? void 0 : _a[name];\n}\n/**\n * Checks whether an element has an attribute.\n *\n * @category Traversal\n * @param elem Element to check.\n * @param name Attribute name to look for.\n * @returns Returns whether `elem` has the attribute `name`.\n */\nfunction hasAttrib(elem, name) {\n return (elem.attribs != null &&\n Object.prototype.hasOwnProperty.call(elem.attribs, name) &&\n elem.attribs[name] != null);\n}\n/**\n * Get the tag name of an element.\n *\n * @category Traversal\n * @param elem The element to get the name for.\n * @returns The tag name of `elem`.\n */\nfunction getName(elem) {\n return elem.name;\n}\n/**\n * Returns the next element sibling of a node.\n *\n * @category Traversal\n * @param elem The element to get the next sibling of.\n * @returns `elem`'s next sibling that is a tag, or `null` if there is no next\n * sibling.\n */\nfunction nextElementSibling(elem) {\n var _a;\n var next = elem.next;\n while (next !== null && !(0, domhandler_1.isTag)(next))\n (_a = next, next = _a.next);\n return next;\n}\n/**\n * Returns the previous element sibling of a node.\n *\n * @category Traversal\n * @param elem The element to get the previous sibling of.\n * @returns `elem`'s previous sibling that is a tag, or `null` if there is no\n * previous sibling.\n */\nfunction prevElementSibling(elem) {\n var _a;\n var prev = elem.prev;\n while (prev !== null && !(0, domhandler_1.isTag)(prev))\n (_a = prev, prev = _a.prev);\n return prev;\n}\n//# sourceMappingURL=traversal.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.removeElement = removeElement;\nexports.replaceElement = replaceElement;\nexports.appendChild = appendChild;\nexports.append = append;\nexports.prependChild = prependChild;\nexports.prepend = prepend;\n/**\n * Remove an element from the dom\n *\n * @category Manipulation\n * @param elem The element to be removed\n */\nfunction removeElement(elem) {\n if (elem.prev)\n elem.prev.next = elem.next;\n if (elem.next)\n elem.next.prev = elem.prev;\n if (elem.parent) {\n var childs = elem.parent.children;\n var childsIndex = childs.lastIndexOf(elem);\n if (childsIndex >= 0) {\n childs.splice(childsIndex, 1);\n }\n }\n elem.next = null;\n elem.prev = null;\n elem.parent = null;\n}\n/**\n * Replace an element in the dom\n *\n * @category Manipulation\n * @param elem The element to be replaced\n * @param replacement The element to be added\n */\nfunction replaceElement(elem, replacement) {\n var prev = (replacement.prev = elem.prev);\n if (prev) {\n prev.next = replacement;\n }\n var next = (replacement.next = elem.next);\n if (next) {\n next.prev = replacement;\n }\n var parent = (replacement.parent = elem.parent);\n if (parent) {\n var childs = parent.children;\n childs[childs.lastIndexOf(elem)] = replacement;\n elem.parent = null;\n }\n}\n/**\n * Append a child to an element.\n *\n * @category Manipulation\n * @param parent The element to append to.\n * @param child The element to be added as a child.\n */\nfunction appendChild(parent, child) {\n removeElement(child);\n child.next = null;\n child.parent = parent;\n if (parent.children.push(child) > 1) {\n var sibling = parent.children[parent.children.length - 2];\n sibling.next = child;\n child.prev = sibling;\n }\n else {\n child.prev = null;\n }\n}\n/**\n * Append an element after another.\n *\n * @category Manipulation\n * @param elem The element to append after.\n * @param next The element be added.\n */\nfunction append(elem, next) {\n removeElement(next);\n var parent = elem.parent;\n var currNext = elem.next;\n next.next = currNext;\n next.prev = elem;\n elem.next = next;\n next.parent = parent;\n if (currNext) {\n currNext.prev = next;\n if (parent) {\n var childs = parent.children;\n childs.splice(childs.lastIndexOf(currNext), 0, next);\n }\n }\n else if (parent) {\n parent.children.push(next);\n }\n}\n/**\n * Prepend a child to an element.\n *\n * @category Manipulation\n * @param parent The element to prepend before.\n * @param child The element to be added as a child.\n */\nfunction prependChild(parent, child) {\n removeElement(child);\n child.parent = parent;\n child.prev = null;\n if (parent.children.unshift(child) !== 1) {\n var sibling = parent.children[1];\n sibling.prev = child;\n child.next = sibling;\n }\n else {\n child.next = null;\n }\n}\n/**\n * Prepend an element before another.\n *\n * @category Manipulation\n * @param elem The element to prepend before.\n * @param prev The element be added.\n */\nfunction prepend(elem, prev) {\n removeElement(prev);\n var parent = elem.parent;\n if (parent) {\n var childs = parent.children;\n childs.splice(childs.indexOf(elem), 0, prev);\n }\n if (elem.prev) {\n elem.prev.next = prev;\n }\n prev.parent = parent;\n prev.prev = elem.prev;\n prev.next = elem;\n elem.prev = prev;\n}\n//# sourceMappingURL=manipulation.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.filter = filter;\nexports.find = find;\nexports.findOneChild = findOneChild;\nexports.findOne = findOne;\nexports.existsOne = existsOne;\nexports.findAll = findAll;\nvar domhandler_1 = require(\"domhandler\");\n/**\n * Search a node and its children for nodes passing a test function. If `node` is not an array, it will be wrapped in one.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param node Node to search. Will be included in the result set if it matches.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes passing `test`.\n */\nfunction filter(test, node, recurse, limit) {\n if (recurse === void 0) { recurse = true; }\n if (limit === void 0) { limit = Infinity; }\n return find(test, Array.isArray(node) ? node : [node], recurse, limit);\n}\n/**\n * Search an array of nodes and their children for nodes passing a test function.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes passing `test`.\n */\nfunction find(test, nodes, recurse, limit) {\n var result = [];\n /** Stack of the arrays we are looking at. */\n var nodeStack = [Array.isArray(nodes) ? nodes : [nodes]];\n /** Stack of the indices within the arrays. */\n var indexStack = [0];\n for (;;) {\n // First, check if the current array has any more elements to look at.\n if (indexStack[0] >= nodeStack[0].length) {\n // If we have no more arrays to look at, we are done.\n if (indexStack.length === 1) {\n return result;\n }\n // Otherwise, remove the current array from the stack.\n nodeStack.shift();\n indexStack.shift();\n // Loop back to the start to continue with the next array.\n continue;\n }\n var elem = nodeStack[0][indexStack[0]++];\n if (test(elem)) {\n result.push(elem);\n if (--limit <= 0)\n return result;\n }\n if (recurse && (0, domhandler_1.hasChildren)(elem) && elem.children.length > 0) {\n /*\n * Add the children to the stack. We are depth-first, so this is\n * the next array we look at.\n */\n indexStack.unshift(0);\n nodeStack.unshift(elem.children);\n }\n }\n}\n/**\n * Finds the first element inside of an array that matches a test function. This is an alias for `Array.prototype.find`.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns The first node in the array that passes `test`.\n * @deprecated Use `Array.prototype.find` directly.\n */\nfunction findOneChild(test, nodes) {\n return nodes.find(test);\n}\n/**\n * Finds one element in a tree that passes a test.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Node or array of nodes to search.\n * @param recurse Also consider child nodes.\n * @returns The first node that passes `test`.\n */\nfunction findOne(test, nodes, recurse) {\n if (recurse === void 0) { recurse = true; }\n var searchedNodes = Array.isArray(nodes) ? nodes : [nodes];\n for (var i = 0; i < searchedNodes.length; i++) {\n var node = searchedNodes[i];\n if ((0, domhandler_1.isTag)(node) && test(node)) {\n return node;\n }\n if (recurse && (0, domhandler_1.hasChildren)(node) && node.children.length > 0) {\n var found = findOne(test, node.children, true);\n if (found)\n return found;\n }\n }\n return null;\n}\n/**\n * Checks if a tree of nodes contains at least one node passing a test.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns Whether a tree of nodes contains at least one node passing the test.\n */\nfunction existsOne(test, nodes) {\n return (Array.isArray(nodes) ? nodes : [nodes]).some(function (node) {\n return ((0, domhandler_1.isTag)(node) && test(node)) ||\n ((0, domhandler_1.hasChildren)(node) && existsOne(test, node.children));\n });\n}\n/**\n * Search an array of nodes and their children for elements passing a test function.\n *\n * Same as `find`, but limited to elements and with less options, leading to reduced complexity.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns All nodes passing `test`.\n */\nfunction findAll(test, nodes) {\n var result = [];\n var nodeStack = [Array.isArray(nodes) ? nodes : [nodes]];\n var indexStack = [0];\n for (;;) {\n if (indexStack[0] >= nodeStack[0].length) {\n if (nodeStack.length === 1) {\n return result;\n }\n // Otherwise, remove the current array from the stack.\n nodeStack.shift();\n indexStack.shift();\n // Loop back to the start to continue with the next array.\n continue;\n }\n var elem = nodeStack[0][indexStack[0]++];\n if ((0, domhandler_1.isTag)(elem) && test(elem))\n result.push(elem);\n if ((0, domhandler_1.hasChildren)(elem) && elem.children.length > 0) {\n indexStack.unshift(0);\n nodeStack.unshift(elem.children);\n }\n }\n}\n//# sourceMappingURL=querying.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.testElement = testElement;\nexports.getElements = getElements;\nexports.getElementById = getElementById;\nexports.getElementsByTagName = getElementsByTagName;\nexports.getElementsByClassName = getElementsByClassName;\nexports.getElementsByTagType = getElementsByTagType;\nvar domhandler_1 = require(\"domhandler\");\nvar querying_js_1 = require(\"./querying.js\");\n/**\n * A map of functions to check nodes against.\n */\nvar Checks = {\n tag_name: function (name) {\n if (typeof name === \"function\") {\n return function (elem) { return (0, domhandler_1.isTag)(elem) && name(elem.name); };\n }\n else if (name === \"*\") {\n return domhandler_1.isTag;\n }\n return function (elem) { return (0, domhandler_1.isTag)(elem) && elem.name === name; };\n },\n tag_type: function (type) {\n if (typeof type === \"function\") {\n return function (elem) { return type(elem.type); };\n }\n return function (elem) { return elem.type === type; };\n },\n tag_contains: function (data) {\n if (typeof data === \"function\") {\n return function (elem) { return (0, domhandler_1.isText)(elem) && data(elem.data); };\n }\n return function (elem) { return (0, domhandler_1.isText)(elem) && elem.data === data; };\n },\n};\n/**\n * Returns a function to check whether a node has an attribute with a particular\n * value.\n *\n * @param attrib Attribute to check.\n * @param value Attribute value to look for.\n * @returns A function to check whether the a node has an attribute with a\n * particular value.\n */\nfunction getAttribCheck(attrib, value) {\n if (typeof value === \"function\") {\n return function (elem) { return (0, domhandler_1.isTag)(elem) && value(elem.attribs[attrib]); };\n }\n return function (elem) { return (0, domhandler_1.isTag)(elem) && elem.attribs[attrib] === value; };\n}\n/**\n * Returns a function that returns `true` if either of the input functions\n * returns `true` for a node.\n *\n * @param a First function to combine.\n * @param b Second function to combine.\n * @returns A function taking a node and returning `true` if either of the input\n * functions returns `true` for the node.\n */\nfunction combineFuncs(a, b) {\n return function (elem) { return a(elem) || b(elem); };\n}\n/**\n * Returns a function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n *\n * @param options An object describing nodes to look for.\n * @returns A function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n */\nfunction compileTest(options) {\n var funcs = Object.keys(options).map(function (key) {\n var value = options[key];\n return Object.prototype.hasOwnProperty.call(Checks, key)\n ? Checks[key](value)\n : getAttribCheck(key, value);\n });\n return funcs.length === 0 ? null : funcs.reduce(combineFuncs);\n}\n/**\n * Checks whether a node matches the description in `options`.\n *\n * @category Legacy Query Functions\n * @param options An object describing nodes to look for.\n * @param node The element to test.\n * @returns Whether the element matches the description in `options`.\n */\nfunction testElement(options, node) {\n var test = compileTest(options);\n return test ? test(node) : true;\n}\n/**\n * Returns all nodes that match `options`.\n *\n * @category Legacy Query Functions\n * @param options An object describing nodes to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes that match `options`.\n */\nfunction getElements(options, nodes, recurse, limit) {\n if (limit === void 0) { limit = Infinity; }\n var test = compileTest(options);\n return test ? (0, querying_js_1.filter)(test, nodes, recurse, limit) : [];\n}\n/**\n * Returns the node with the supplied ID.\n *\n * @category Legacy Query Functions\n * @param id The unique ID attribute value to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @returns The node with the supplied ID.\n */\nfunction getElementById(id, nodes, recurse) {\n if (recurse === void 0) { recurse = true; }\n if (!Array.isArray(nodes))\n nodes = [nodes];\n return (0, querying_js_1.findOne)(getAttribCheck(\"id\", id), nodes, recurse);\n}\n/**\n * Returns all nodes with the supplied `tagName`.\n *\n * @category Legacy Query Functions\n * @param tagName Tag name to search for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `tagName`.\n */\nfunction getElementsByTagName(tagName, nodes, recurse, limit) {\n if (recurse === void 0) { recurse = true; }\n if (limit === void 0) { limit = Infinity; }\n return (0, querying_js_1.filter)(Checks[\"tag_name\"](tagName), nodes, recurse, limit);\n}\n/**\n * Returns all nodes with the supplied `className`.\n *\n * @category Legacy Query Functions\n * @param className Class name to search for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `className`.\n */\nfunction getElementsByClassName(className, nodes, recurse, limit) {\n if (recurse === void 0) { recurse = true; }\n if (limit === void 0) { limit = Infinity; }\n return (0, querying_js_1.filter)(getAttribCheck(\"class\", className), nodes, recurse, limit);\n}\n/**\n * Returns all nodes with the supplied `type`.\n *\n * @category Legacy Query Functions\n * @param type Element type to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `type`.\n */\nfunction getElementsByTagType(type, nodes, recurse, limit) {\n if (recurse === void 0) { recurse = true; }\n if (limit === void 0) { limit = Infinity; }\n return (0, querying_js_1.filter)(Checks[\"tag_type\"](type), nodes, recurse, limit);\n}\n//# sourceMappingURL=legacy.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DocumentPosition = void 0;\nexports.removeSubsets = removeSubsets;\nexports.compareDocumentPosition = compareDocumentPosition;\nexports.uniqueSort = uniqueSort;\nvar domhandler_1 = require(\"domhandler\");\n/**\n * Given an array of nodes, remove any member that is contained by another\n * member.\n *\n * @category Helpers\n * @param nodes Nodes to filter.\n * @returns Remaining nodes that aren't contained by other nodes.\n */\nfunction removeSubsets(nodes) {\n var idx = nodes.length;\n /*\n * Check if each node (or one of its ancestors) is already contained in the\n * array.\n */\n while (--idx >= 0) {\n var node = nodes[idx];\n /*\n * Remove the node if it is not unique.\n * We are going through the array from the end, so we only\n * have to check nodes that preceed the node under consideration in the array.\n */\n if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) {\n nodes.splice(idx, 1);\n continue;\n }\n for (var ancestor = node.parent; ancestor; ancestor = ancestor.parent) {\n if (nodes.includes(ancestor)) {\n nodes.splice(idx, 1);\n break;\n }\n }\n }\n return nodes;\n}\n/**\n * @category Helpers\n * @see {@link http://dom.spec.whatwg.org/#dom-node-comparedocumentposition}\n */\nvar DocumentPosition;\n(function (DocumentPosition) {\n DocumentPosition[DocumentPosition[\"DISCONNECTED\"] = 1] = \"DISCONNECTED\";\n DocumentPosition[DocumentPosition[\"PRECEDING\"] = 2] = \"PRECEDING\";\n DocumentPosition[DocumentPosition[\"FOLLOWING\"] = 4] = \"FOLLOWING\";\n DocumentPosition[DocumentPosition[\"CONTAINS\"] = 8] = \"CONTAINS\";\n DocumentPosition[DocumentPosition[\"CONTAINED_BY\"] = 16] = \"CONTAINED_BY\";\n})(DocumentPosition || (exports.DocumentPosition = DocumentPosition = {}));\n/**\n * Compare the position of one node against another node in any other document,\n * returning a bitmask with the values from {@link DocumentPosition}.\n *\n * Document order:\n * > There is an ordering, document order, defined on all the nodes in the\n * > document corresponding to the order in which the first character of the\n * > XML representation of each node occurs in the XML representation of the\n * > document after expansion of general entities. Thus, the document element\n * > node will be the first node. Element nodes occur before their children.\n * > Thus, document order orders element nodes in order of the occurrence of\n * > their start-tag in the XML (after expansion of entities). The attribute\n * > nodes of an element occur after the element and before its children. The\n * > relative order of attribute nodes is implementation-dependent.\n *\n * Source:\n * http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order\n *\n * @category Helpers\n * @param nodeA The first node to use in the comparison\n * @param nodeB The second node to use in the comparison\n * @returns A bitmask describing the input nodes' relative position.\n *\n * See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for\n * a description of these values.\n */\nfunction compareDocumentPosition(nodeA, nodeB) {\n var aParents = [];\n var bParents = [];\n if (nodeA === nodeB) {\n return 0;\n }\n var current = (0, domhandler_1.hasChildren)(nodeA) ? nodeA : nodeA.parent;\n while (current) {\n aParents.unshift(current);\n current = current.parent;\n }\n current = (0, domhandler_1.hasChildren)(nodeB) ? nodeB : nodeB.parent;\n while (current) {\n bParents.unshift(current);\n current = current.parent;\n }\n var maxIdx = Math.min(aParents.length, bParents.length);\n var idx = 0;\n while (idx < maxIdx && aParents[idx] === bParents[idx]) {\n idx++;\n }\n if (idx === 0) {\n return DocumentPosition.DISCONNECTED;\n }\n var sharedParent = aParents[idx - 1];\n var siblings = sharedParent.children;\n var aSibling = aParents[idx];\n var bSibling = bParents[idx];\n if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {\n if (sharedParent === nodeB) {\n return DocumentPosition.FOLLOWING | DocumentPosition.CONTAINED_BY;\n }\n return DocumentPosition.FOLLOWING;\n }\n if (sharedParent === nodeA) {\n return DocumentPosition.PRECEDING | DocumentPosition.CONTAINS;\n }\n return DocumentPosition.PRECEDING;\n}\n/**\n * Sort an array of nodes based on their relative position in the document,\n * removing any duplicate nodes. If the array contains nodes that do not belong\n * to the same document, sort order is unspecified.\n *\n * @category Helpers\n * @param nodes Array of DOM nodes.\n * @returns Collection of unique nodes, sorted in document order.\n */\nfunction uniqueSort(nodes) {\n nodes = nodes.filter(function (node, i, arr) { return !arr.includes(node, i + 1); });\n nodes.sort(function (a, b) {\n var relative = compareDocumentPosition(a, b);\n if (relative & DocumentPosition.PRECEDING) {\n return -1;\n }\n else if (relative & DocumentPosition.FOLLOWING) {\n return 1;\n }\n return 0;\n });\n return nodes;\n}\n//# sourceMappingURL=helpers.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getFeed = getFeed;\nvar stringify_js_1 = require(\"./stringify.js\");\nvar legacy_js_1 = require(\"./legacy.js\");\n/**\n * Get the feed object from the root of a DOM tree.\n *\n * @category Feeds\n * @param doc - The DOM to to extract the feed from.\n * @returns The feed.\n */\nfunction getFeed(doc) {\n var feedRoot = getOneElement(isValidFeed, doc);\n return !feedRoot\n ? null\n : feedRoot.name === \"feed\"\n ? getAtomFeed(feedRoot)\n : getRssFeed(feedRoot);\n}\n/**\n * Parse an Atom feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getAtomFeed(feedRoot) {\n var _a;\n var childs = feedRoot.children;\n var feed = {\n type: \"atom\",\n items: (0, legacy_js_1.getElementsByTagName)(\"entry\", childs).map(function (item) {\n var _a;\n var children = item.children;\n var entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"id\", children);\n addConditionally(entry, \"title\", \"title\", children);\n var href = (_a = getOneElement(\"link\", children)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) {\n entry.link = href;\n }\n var description = fetch(\"summary\", children) || fetch(\"content\", children);\n if (description) {\n entry.description = description;\n }\n var pubDate = fetch(\"updated\", children);\n if (pubDate) {\n entry.pubDate = new Date(pubDate);\n }\n return entry;\n }),\n };\n addConditionally(feed, \"id\", \"id\", childs);\n addConditionally(feed, \"title\", \"title\", childs);\n var href = (_a = getOneElement(\"link\", childs)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) {\n feed.link = href;\n }\n addConditionally(feed, \"description\", \"subtitle\", childs);\n var updated = fetch(\"updated\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"email\", childs, true);\n return feed;\n}\n/**\n * Parse a RSS feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getRssFeed(feedRoot) {\n var _a, _b;\n var childs = (_b = (_a = getOneElement(\"channel\", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : [];\n var feed = {\n type: feedRoot.name.substr(0, 3),\n id: \"\",\n items: (0, legacy_js_1.getElementsByTagName)(\"item\", feedRoot.children).map(function (item) {\n var children = item.children;\n var entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"guid\", children);\n addConditionally(entry, \"title\", \"title\", children);\n addConditionally(entry, \"link\", \"link\", children);\n addConditionally(entry, \"description\", \"description\", children);\n var pubDate = fetch(\"pubDate\", children) || fetch(\"dc:date\", children);\n if (pubDate)\n entry.pubDate = new Date(pubDate);\n return entry;\n }),\n };\n addConditionally(feed, \"title\", \"title\", childs);\n addConditionally(feed, \"link\", \"link\", childs);\n addConditionally(feed, \"description\", \"description\", childs);\n var updated = fetch(\"lastBuildDate\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"managingEditor\", childs, true);\n return feed;\n}\nvar MEDIA_KEYS_STRING = [\"url\", \"type\", \"lang\"];\nvar MEDIA_KEYS_INT = [\n \"fileSize\",\n \"bitrate\",\n \"framerate\",\n \"samplingrate\",\n \"channels\",\n \"duration\",\n \"height\",\n \"width\",\n];\n/**\n * Get all media elements of a feed item.\n *\n * @param where Nodes to search in.\n * @returns Media elements.\n */\nfunction getMediaElements(where) {\n return (0, legacy_js_1.getElementsByTagName)(\"media:content\", where).map(function (elem) {\n var attribs = elem.attribs;\n var media = {\n medium: attribs[\"medium\"],\n isDefault: !!attribs[\"isDefault\"],\n };\n for (var _i = 0, MEDIA_KEYS_STRING_1 = MEDIA_KEYS_STRING; _i < MEDIA_KEYS_STRING_1.length; _i++) {\n var attrib = MEDIA_KEYS_STRING_1[_i];\n if (attribs[attrib]) {\n media[attrib] = attribs[attrib];\n }\n }\n for (var _a = 0, MEDIA_KEYS_INT_1 = MEDIA_KEYS_INT; _a < MEDIA_KEYS_INT_1.length; _a++) {\n var attrib = MEDIA_KEYS_INT_1[_a];\n if (attribs[attrib]) {\n media[attrib] = parseInt(attribs[attrib], 10);\n }\n }\n if (attribs[\"expression\"]) {\n media.expression = attribs[\"expression\"];\n }\n return media;\n });\n}\n/**\n * Get one element by tag name.\n *\n * @param tagName Tag name to look for\n * @param node Node to search in\n * @returns The element or null\n */\nfunction getOneElement(tagName, node) {\n return (0, legacy_js_1.getElementsByTagName)(tagName, node, true, 1)[0];\n}\n/**\n * Get the text content of an element with a certain tag name.\n *\n * @param tagName Tag name to look for.\n * @param where Node to search in.\n * @param recurse Whether to recurse into child nodes.\n * @returns The text content of the element.\n */\nfunction fetch(tagName, where, recurse) {\n if (recurse === void 0) { recurse = false; }\n return (0, stringify_js_1.textContent)((0, legacy_js_1.getElementsByTagName)(tagName, where, recurse, 1)).trim();\n}\n/**\n * Adds a property to an object if it has a value.\n *\n * @param obj Object to be extended\n * @param prop Property name\n * @param tagName Tag name that contains the conditionally added property\n * @param where Element to search for the property\n * @param recurse Whether to recurse into child nodes.\n */\nfunction addConditionally(obj, prop, tagName, where, recurse) {\n if (recurse === void 0) { recurse = false; }\n var val = fetch(tagName, where, recurse);\n if (val)\n obj[prop] = val;\n}\n/**\n * Checks if an element is a feed root node.\n *\n * @param value The name of the element to check.\n * @returns Whether an element is a feed root node.\n */\nfunction isValidFeed(value) {\n return value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n}\n//# sourceMappingURL=feeds.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hasChildren = exports.isDocument = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = void 0;\n__exportStar(require(\"./stringify.js\"), exports);\n__exportStar(require(\"./traversal.js\"), exports);\n__exportStar(require(\"./manipulation.js\"), exports);\n__exportStar(require(\"./querying.js\"), exports);\n__exportStar(require(\"./legacy.js\"), exports);\n__exportStar(require(\"./helpers.js\"), exports);\n__exportStar(require(\"./feeds.js\"), exports);\n/** @deprecated Use these methods from `domhandler` directly. */\nvar domhandler_1 = require(\"domhandler\");\nObject.defineProperty(exports, \"isTag\", { enumerable: true, get: function () { return domhandler_1.isTag; } });\nObject.defineProperty(exports, \"isCDATA\", { enumerable: true, get: function () { return domhandler_1.isCDATA; } });\nObject.defineProperty(exports, \"isText\", { enumerable: true, get: function () { return domhandler_1.isText; } });\nObject.defineProperty(exports, \"isComment\", { enumerable: true, get: function () { return domhandler_1.isComment; } });\nObject.defineProperty(exports, \"isDocument\", { enumerable: true, get: function () { return domhandler_1.isDocument; } });\nObject.defineProperty(exports, \"hasChildren\", { enumerable: true, get: function () { return domhandler_1.hasChildren; } });\n//# sourceMappingURL=index.js.map","module.exports = {\n\ttrueFunc: function trueFunc(){\n\t\treturn true;\n\t},\n\tfalseFunc: function falseFunc(){\n\t\treturn false;\n\t}\n};","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AttributeAction = exports.IgnoreCaseMode = exports.SelectorType = void 0;\nvar SelectorType;\n(function (SelectorType) {\n SelectorType[\"Attribute\"] = \"attribute\";\n SelectorType[\"Pseudo\"] = \"pseudo\";\n SelectorType[\"PseudoElement\"] = \"pseudo-element\";\n SelectorType[\"Tag\"] = \"tag\";\n SelectorType[\"Universal\"] = \"universal\";\n // Traversals\n SelectorType[\"Adjacent\"] = \"adjacent\";\n SelectorType[\"Child\"] = \"child\";\n SelectorType[\"Descendant\"] = \"descendant\";\n SelectorType[\"Parent\"] = \"parent\";\n SelectorType[\"Sibling\"] = \"sibling\";\n SelectorType[\"ColumnCombinator\"] = \"column-combinator\";\n})(SelectorType = exports.SelectorType || (exports.SelectorType = {}));\n/**\n * Modes for ignore case.\n *\n * This could be updated to an enum, and the object is\n * the current stand-in that will allow code to be updated\n * without big changes.\n */\nexports.IgnoreCaseMode = {\n Unknown: null,\n QuirksMode: \"quirks\",\n IgnoreCase: true,\n CaseSensitive: false,\n};\nvar AttributeAction;\n(function (AttributeAction) {\n AttributeAction[\"Any\"] = \"any\";\n AttributeAction[\"Element\"] = \"element\";\n AttributeAction[\"End\"] = \"end\";\n AttributeAction[\"Equals\"] = \"equals\";\n AttributeAction[\"Exists\"] = \"exists\";\n AttributeAction[\"Hyphen\"] = \"hyphen\";\n AttributeAction[\"Not\"] = \"not\";\n AttributeAction[\"Start\"] = \"start\";\n})(AttributeAction = exports.AttributeAction || (exports.AttributeAction = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parse = exports.isTraversal = void 0;\nvar types_1 = require(\"./types\");\nvar reName = /^[^\\\\#]?(?:\\\\(?:[\\da-f]{1,6}\\s?|.)|[\\w\\-\\u00b0-\\uFFFF])+/;\nvar reEscape = /\\\\([\\da-f]{1,6}\\s?|(\\s)|.)/gi;\nvar actionTypes = new Map([\n [126 /* Tilde */, types_1.AttributeAction.Element],\n [94 /* Circumflex */, types_1.AttributeAction.Start],\n [36 /* Dollar */, types_1.AttributeAction.End],\n [42 /* Asterisk */, types_1.AttributeAction.Any],\n [33 /* ExclamationMark */, types_1.AttributeAction.Not],\n [124 /* Pipe */, types_1.AttributeAction.Hyphen],\n]);\n// Pseudos, whose data property is parsed as well.\nvar unpackPseudos = new Set([\n \"has\",\n \"not\",\n \"matches\",\n \"is\",\n \"where\",\n \"host\",\n \"host-context\",\n]);\n/**\n * Checks whether a specific selector is a traversal.\n * This is useful eg. in swapping the order of elements that\n * are not traversals.\n *\n * @param selector Selector to check.\n */\nfunction isTraversal(selector) {\n switch (selector.type) {\n case types_1.SelectorType.Adjacent:\n case types_1.SelectorType.Child:\n case types_1.SelectorType.Descendant:\n case types_1.SelectorType.Parent:\n case types_1.SelectorType.Sibling:\n case types_1.SelectorType.ColumnCombinator:\n return true;\n default:\n return false;\n }\n}\nexports.isTraversal = isTraversal;\nvar stripQuotesFromPseudos = new Set([\"contains\", \"icontains\"]);\n// Unescape function taken from https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L152\nfunction funescape(_, escaped, escapedWhitespace) {\n var high = parseInt(escaped, 16) - 0x10000;\n // NaN means non-codepoint\n return high !== high || escapedWhitespace\n ? escaped\n : high < 0\n ? // BMP codepoint\n String.fromCharCode(high + 0x10000)\n : // Supplemental Plane codepoint (surrogate pair)\n String.fromCharCode((high >> 10) | 0xd800, (high & 0x3ff) | 0xdc00);\n}\nfunction unescapeCSS(str) {\n return str.replace(reEscape, funescape);\n}\nfunction isQuote(c) {\n return c === 39 /* SingleQuote */ || c === 34 /* DoubleQuote */;\n}\nfunction isWhitespace(c) {\n return (c === 32 /* Space */ ||\n c === 9 /* Tab */ ||\n c === 10 /* NewLine */ ||\n c === 12 /* FormFeed */ ||\n c === 13 /* CarriageReturn */);\n}\n/**\n * Parses `selector`, optionally with the passed `options`.\n *\n * @param selector Selector to parse.\n * @param options Options for parsing.\n * @returns Returns a two-dimensional array.\n * The first dimension represents selectors separated by commas (eg. `sub1, sub2`),\n * the second contains the relevant tokens for that selector.\n */\nfunction parse(selector) {\n var subselects = [];\n var endIndex = parseSelector(subselects, \"\".concat(selector), 0);\n if (endIndex < selector.length) {\n throw new Error(\"Unmatched selector: \".concat(selector.slice(endIndex)));\n }\n return subselects;\n}\nexports.parse = parse;\nfunction parseSelector(subselects, selector, selectorIndex) {\n var tokens = [];\n function getName(offset) {\n var match = selector.slice(selectorIndex + offset).match(reName);\n if (!match) {\n throw new Error(\"Expected name, found \".concat(selector.slice(selectorIndex)));\n }\n var name = match[0];\n selectorIndex += offset + name.length;\n return unescapeCSS(name);\n }\n function stripWhitespace(offset) {\n selectorIndex += offset;\n while (selectorIndex < selector.length &&\n isWhitespace(selector.charCodeAt(selectorIndex))) {\n selectorIndex++;\n }\n }\n function readValueWithParenthesis() {\n selectorIndex += 1;\n var start = selectorIndex;\n var counter = 1;\n for (; counter > 0 && selectorIndex < selector.length; selectorIndex++) {\n if (selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */ &&\n !isEscaped(selectorIndex)) {\n counter++;\n }\n else if (selector.charCodeAt(selectorIndex) ===\n 41 /* RightParenthesis */ &&\n !isEscaped(selectorIndex)) {\n counter--;\n }\n }\n if (counter) {\n throw new Error(\"Parenthesis not matched\");\n }\n return unescapeCSS(selector.slice(start, selectorIndex - 1));\n }\n function isEscaped(pos) {\n var slashCount = 0;\n while (selector.charCodeAt(--pos) === 92 /* BackSlash */)\n slashCount++;\n return (slashCount & 1) === 1;\n }\n function ensureNotTraversal() {\n if (tokens.length > 0 && isTraversal(tokens[tokens.length - 1])) {\n throw new Error(\"Did not expect successive traversals.\");\n }\n }\n function addTraversal(type) {\n if (tokens.length > 0 &&\n tokens[tokens.length - 1].type === types_1.SelectorType.Descendant) {\n tokens[tokens.length - 1].type = type;\n return;\n }\n ensureNotTraversal();\n tokens.push({ type: type });\n }\n function addSpecialAttribute(name, action) {\n tokens.push({\n type: types_1.SelectorType.Attribute,\n name: name,\n action: action,\n value: getName(1),\n namespace: null,\n ignoreCase: \"quirks\",\n });\n }\n /**\n * We have finished parsing the current part of the selector.\n *\n * Remove descendant tokens at the end if they exist,\n * and return the last index, so that parsing can be\n * picked up from here.\n */\n function finalizeSubselector() {\n if (tokens.length &&\n tokens[tokens.length - 1].type === types_1.SelectorType.Descendant) {\n tokens.pop();\n }\n if (tokens.length === 0) {\n throw new Error(\"Empty sub-selector\");\n }\n subselects.push(tokens);\n }\n stripWhitespace(0);\n if (selector.length === selectorIndex) {\n return selectorIndex;\n }\n loop: while (selectorIndex < selector.length) {\n var firstChar = selector.charCodeAt(selectorIndex);\n switch (firstChar) {\n // Whitespace\n case 32 /* Space */:\n case 9 /* Tab */:\n case 10 /* NewLine */:\n case 12 /* FormFeed */:\n case 13 /* CarriageReturn */: {\n if (tokens.length === 0 ||\n tokens[0].type !== types_1.SelectorType.Descendant) {\n ensureNotTraversal();\n tokens.push({ type: types_1.SelectorType.Descendant });\n }\n stripWhitespace(1);\n break;\n }\n // Traversals\n case 62 /* GreaterThan */: {\n addTraversal(types_1.SelectorType.Child);\n stripWhitespace(1);\n break;\n }\n case 60 /* LessThan */: {\n addTraversal(types_1.SelectorType.Parent);\n stripWhitespace(1);\n break;\n }\n case 126 /* Tilde */: {\n addTraversal(types_1.SelectorType.Sibling);\n stripWhitespace(1);\n break;\n }\n case 43 /* Plus */: {\n addTraversal(types_1.SelectorType.Adjacent);\n stripWhitespace(1);\n break;\n }\n // Special attribute selectors: .class, #id\n case 46 /* Period */: {\n addSpecialAttribute(\"class\", types_1.AttributeAction.Element);\n break;\n }\n case 35 /* Hash */: {\n addSpecialAttribute(\"id\", types_1.AttributeAction.Equals);\n break;\n }\n case 91 /* LeftSquareBracket */: {\n stripWhitespace(1);\n // Determine attribute name and namespace\n var name_1 = void 0;\n var namespace = null;\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */) {\n // Equivalent to no namespace\n name_1 = getName(1);\n }\n else if (selector.startsWith(\"*|\", selectorIndex)) {\n namespace = \"*\";\n name_1 = getName(2);\n }\n else {\n name_1 = getName(0);\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ &&\n selector.charCodeAt(selectorIndex + 1) !==\n 61 /* Equal */) {\n namespace = name_1;\n name_1 = getName(1);\n }\n }\n stripWhitespace(0);\n // Determine comparison operation\n var action = types_1.AttributeAction.Exists;\n var possibleAction = actionTypes.get(selector.charCodeAt(selectorIndex));\n if (possibleAction) {\n action = possibleAction;\n if (selector.charCodeAt(selectorIndex + 1) !==\n 61 /* Equal */) {\n throw new Error(\"Expected `=`\");\n }\n stripWhitespace(2);\n }\n else if (selector.charCodeAt(selectorIndex) === 61 /* Equal */) {\n action = types_1.AttributeAction.Equals;\n stripWhitespace(1);\n }\n // Determine value\n var value = \"\";\n var ignoreCase = null;\n if (action !== \"exists\") {\n if (isQuote(selector.charCodeAt(selectorIndex))) {\n var quote = selector.charCodeAt(selectorIndex);\n var sectionEnd = selectorIndex + 1;\n while (sectionEnd < selector.length &&\n (selector.charCodeAt(sectionEnd) !== quote ||\n isEscaped(sectionEnd))) {\n sectionEnd += 1;\n }\n if (selector.charCodeAt(sectionEnd) !== quote) {\n throw new Error(\"Attribute value didn't end\");\n }\n value = unescapeCSS(selector.slice(selectorIndex + 1, sectionEnd));\n selectorIndex = sectionEnd + 1;\n }\n else {\n var valueStart = selectorIndex;\n while (selectorIndex < selector.length &&\n ((!isWhitespace(selector.charCodeAt(selectorIndex)) &&\n selector.charCodeAt(selectorIndex) !==\n 93 /* RightSquareBracket */) ||\n isEscaped(selectorIndex))) {\n selectorIndex += 1;\n }\n value = unescapeCSS(selector.slice(valueStart, selectorIndex));\n }\n stripWhitespace(0);\n // See if we have a force ignore flag\n var forceIgnore = selector.charCodeAt(selectorIndex) | 0x20;\n // If the forceIgnore flag is set (either `i` or `s`), use that value\n if (forceIgnore === 115 /* LowerS */) {\n ignoreCase = false;\n stripWhitespace(1);\n }\n else if (forceIgnore === 105 /* LowerI */) {\n ignoreCase = true;\n stripWhitespace(1);\n }\n }\n if (selector.charCodeAt(selectorIndex) !==\n 93 /* RightSquareBracket */) {\n throw new Error(\"Attribute selector didn't terminate\");\n }\n selectorIndex += 1;\n var attributeSelector = {\n type: types_1.SelectorType.Attribute,\n name: name_1,\n action: action,\n value: value,\n namespace: namespace,\n ignoreCase: ignoreCase,\n };\n tokens.push(attributeSelector);\n break;\n }\n case 58 /* Colon */: {\n if (selector.charCodeAt(selectorIndex + 1) === 58 /* Colon */) {\n tokens.push({\n type: types_1.SelectorType.PseudoElement,\n name: getName(2).toLowerCase(),\n data: selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */\n ? readValueWithParenthesis()\n : null,\n });\n continue;\n }\n var name_2 = getName(1).toLowerCase();\n var data = null;\n if (selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */) {\n if (unpackPseudos.has(name_2)) {\n if (isQuote(selector.charCodeAt(selectorIndex + 1))) {\n throw new Error(\"Pseudo-selector \".concat(name_2, \" cannot be quoted\"));\n }\n data = [];\n selectorIndex = parseSelector(data, selector, selectorIndex + 1);\n if (selector.charCodeAt(selectorIndex) !==\n 41 /* RightParenthesis */) {\n throw new Error(\"Missing closing parenthesis in :\".concat(name_2, \" (\").concat(selector, \")\"));\n }\n selectorIndex += 1;\n }\n else {\n data = readValueWithParenthesis();\n if (stripQuotesFromPseudos.has(name_2)) {\n var quot = data.charCodeAt(0);\n if (quot === data.charCodeAt(data.length - 1) &&\n isQuote(quot)) {\n data = data.slice(1, -1);\n }\n }\n data = unescapeCSS(data);\n }\n }\n tokens.push({ type: types_1.SelectorType.Pseudo, name: name_2, data: data });\n break;\n }\n case 44 /* Comma */: {\n finalizeSubselector();\n tokens = [];\n stripWhitespace(1);\n break;\n }\n default: {\n if (selector.startsWith(\"/*\", selectorIndex)) {\n var endIndex = selector.indexOf(\"*/\", selectorIndex + 2);\n if (endIndex < 0) {\n throw new Error(\"Comment was not terminated\");\n }\n selectorIndex = endIndex + 2;\n // Remove leading whitespace\n if (tokens.length === 0) {\n stripWhitespace(0);\n }\n break;\n }\n var namespace = null;\n var name_3 = void 0;\n if (firstChar === 42 /* Asterisk */) {\n selectorIndex += 1;\n name_3 = \"*\";\n }\n else if (firstChar === 124 /* Pipe */) {\n name_3 = \"\";\n if (selector.charCodeAt(selectorIndex + 1) === 124 /* Pipe */) {\n addTraversal(types_1.SelectorType.ColumnCombinator);\n stripWhitespace(2);\n break;\n }\n }\n else if (reName.test(selector.slice(selectorIndex))) {\n name_3 = getName(0);\n }\n else {\n break loop;\n }\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ &&\n selector.charCodeAt(selectorIndex + 1) !== 124 /* Pipe */) {\n namespace = name_3;\n if (selector.charCodeAt(selectorIndex + 1) ===\n 42 /* Asterisk */) {\n name_3 = \"*\";\n selectorIndex += 2;\n }\n else {\n name_3 = getName(1);\n }\n }\n tokens.push(name_3 === \"*\"\n ? { type: types_1.SelectorType.Universal, namespace: namespace }\n : { type: types_1.SelectorType.Tag, name: name_3, namespace: namespace });\n }\n }\n }\n finalizeSubselector();\n return selectorIndex;\n}\n","\"use strict\";\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringify = void 0;\nvar types_1 = require(\"./types\");\nvar attribValChars = [\"\\\\\", '\"'];\nvar pseudoValChars = __spreadArray(__spreadArray([], attribValChars, true), [\"(\", \")\"], false);\nvar charsToEscapeInAttributeValue = new Set(attribValChars.map(function (c) { return c.charCodeAt(0); }));\nvar charsToEscapeInPseudoValue = new Set(pseudoValChars.map(function (c) { return c.charCodeAt(0); }));\nvar charsToEscapeInName = new Set(__spreadArray(__spreadArray([], pseudoValChars, true), [\n \"~\",\n \"^\",\n \"$\",\n \"*\",\n \"+\",\n \"!\",\n \"|\",\n \":\",\n \"[\",\n \"]\",\n \" \",\n \".\",\n], false).map(function (c) { return c.charCodeAt(0); }));\n/**\n * Turns `selector` back into a string.\n *\n * @param selector Selector to stringify.\n */\nfunction stringify(selector) {\n return selector\n .map(function (token) { return token.map(stringifyToken).join(\"\"); })\n .join(\", \");\n}\nexports.stringify = stringify;\nfunction stringifyToken(token, index, arr) {\n switch (token.type) {\n // Simple types\n case types_1.SelectorType.Child:\n return index === 0 ? \"> \" : \" > \";\n case types_1.SelectorType.Parent:\n return index === 0 ? \"< \" : \" < \";\n case types_1.SelectorType.Sibling:\n return index === 0 ? \"~ \" : \" ~ \";\n case types_1.SelectorType.Adjacent:\n return index === 0 ? \"+ \" : \" + \";\n case types_1.SelectorType.Descendant:\n return \" \";\n case types_1.SelectorType.ColumnCombinator:\n return index === 0 ? \"|| \" : \" || \";\n case types_1.SelectorType.Universal:\n // Return an empty string if the selector isn't needed.\n return token.namespace === \"*\" &&\n index + 1 < arr.length &&\n \"name\" in arr[index + 1]\n ? \"\"\n : \"\".concat(getNamespace(token.namespace), \"*\");\n case types_1.SelectorType.Tag:\n return getNamespacedName(token);\n case types_1.SelectorType.PseudoElement:\n return \"::\".concat(escapeName(token.name, charsToEscapeInName)).concat(token.data === null\n ? \"\"\n : \"(\".concat(escapeName(token.data, charsToEscapeInPseudoValue), \")\"));\n case types_1.SelectorType.Pseudo:\n return \":\".concat(escapeName(token.name, charsToEscapeInName)).concat(token.data === null\n ? \"\"\n : \"(\".concat(typeof token.data === \"string\"\n ? escapeName(token.data, charsToEscapeInPseudoValue)\n : stringify(token.data), \")\"));\n case types_1.SelectorType.Attribute: {\n if (token.name === \"id\" &&\n token.action === types_1.AttributeAction.Equals &&\n token.ignoreCase === \"quirks\" &&\n !token.namespace) {\n return \"#\".concat(escapeName(token.value, charsToEscapeInName));\n }\n if (token.name === \"class\" &&\n token.action === types_1.AttributeAction.Element &&\n token.ignoreCase === \"quirks\" &&\n !token.namespace) {\n return \".\".concat(escapeName(token.value, charsToEscapeInName));\n }\n var name_1 = getNamespacedName(token);\n if (token.action === types_1.AttributeAction.Exists) {\n return \"[\".concat(name_1, \"]\");\n }\n return \"[\".concat(name_1).concat(getActionValue(token.action), \"=\\\"\").concat(escapeName(token.value, charsToEscapeInAttributeValue), \"\\\"\").concat(token.ignoreCase === null ? \"\" : token.ignoreCase ? \" i\" : \" s\", \"]\");\n }\n }\n}\nfunction getActionValue(action) {\n switch (action) {\n case types_1.AttributeAction.Equals:\n return \"\";\n case types_1.AttributeAction.Element:\n return \"~\";\n case types_1.AttributeAction.Start:\n return \"^\";\n case types_1.AttributeAction.End:\n return \"$\";\n case types_1.AttributeAction.Any:\n return \"*\";\n case types_1.AttributeAction.Not:\n return \"!\";\n case types_1.AttributeAction.Hyphen:\n return \"|\";\n case types_1.AttributeAction.Exists:\n throw new Error(\"Shouldn't be here\");\n }\n}\nfunction getNamespacedName(token) {\n return \"\".concat(getNamespace(token.namespace)).concat(escapeName(token.name, charsToEscapeInName));\n}\nfunction getNamespace(namespace) {\n return namespace !== null\n ? \"\".concat(namespace === \"*\"\n ? \"*\"\n : escapeName(namespace, charsToEscapeInName), \"|\")\n : \"\";\n}\nfunction escapeName(str, charsToEscape) {\n var lastIdx = 0;\n var ret = \"\";\n for (var i = 0; i < str.length; i++) {\n if (charsToEscape.has(str.charCodeAt(i))) {\n ret += \"\".concat(str.slice(lastIdx, i), \"\\\\\").concat(str.charAt(i));\n lastIdx = i + 1;\n }\n }\n return ret.length > 0 ? ret + str.slice(lastIdx) : str;\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringify = exports.parse = exports.isTraversal = void 0;\n__exportStar(require(\"./types\"), exports);\nvar parse_1 = require(\"./parse\");\nObject.defineProperty(exports, \"isTraversal\", { enumerable: true, get: function () { return parse_1.isTraversal; } });\nObject.defineProperty(exports, \"parse\", { enumerable: true, get: function () { return parse_1.parse; } });\nvar stringify_1 = require(\"./stringify\");\nObject.defineProperty(exports, \"stringify\", { enumerable: true, get: function () { return stringify_1.stringify; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isTraversal = void 0;\nvar css_what_1 = require(\"css-what\");\nvar procedure = new Map([\n [css_what_1.SelectorType.Universal, 50],\n [css_what_1.SelectorType.Tag, 30],\n [css_what_1.SelectorType.Attribute, 1],\n [css_what_1.SelectorType.Pseudo, 0],\n]);\nfunction isTraversal(token) {\n return !procedure.has(token.type);\n}\nexports.isTraversal = isTraversal;\nvar attributes = new Map([\n [css_what_1.AttributeAction.Exists, 10],\n [css_what_1.AttributeAction.Equals, 8],\n [css_what_1.AttributeAction.Not, 7],\n [css_what_1.AttributeAction.Start, 6],\n [css_what_1.AttributeAction.End, 6],\n [css_what_1.AttributeAction.Any, 5],\n]);\n/**\n * Sort the parts of the passed selector,\n * as there is potential for optimization\n * (some types of selectors are faster than others)\n *\n * @param arr Selector to sort\n */\nfunction sortByProcedure(arr) {\n var procs = arr.map(getProcedure);\n for (var i = 1; i < arr.length; i++) {\n var procNew = procs[i];\n if (procNew < 0)\n continue;\n for (var j = i - 1; j >= 0 && procNew < procs[j]; j--) {\n var token = arr[j + 1];\n arr[j + 1] = arr[j];\n arr[j] = token;\n procs[j + 1] = procs[j];\n procs[j] = procNew;\n }\n }\n}\nexports.default = sortByProcedure;\nfunction getProcedure(token) {\n var _a, _b;\n var proc = (_a = procedure.get(token.type)) !== null && _a !== void 0 ? _a : -1;\n if (token.type === css_what_1.SelectorType.Attribute) {\n proc = (_b = attributes.get(token.action)) !== null && _b !== void 0 ? _b : 4;\n if (token.action === css_what_1.AttributeAction.Equals && token.name === \"id\") {\n // Prefer ID selectors (eg. #ID)\n proc = 9;\n }\n if (token.ignoreCase) {\n /*\n * IgnoreCase adds some overhead, prefer \"normal\" token\n * this is a binary operation, to ensure it's still an int\n */\n proc >>= 1;\n }\n }\n else if (token.type === css_what_1.SelectorType.Pseudo) {\n if (!token.data) {\n proc = 3;\n }\n else if (token.name === \"has\" || token.name === \"contains\") {\n proc = 0; // Expensive in any case\n }\n else if (Array.isArray(token.data)) {\n // Eg. :matches, :not\n proc = Math.min.apply(Math, token.data.map(function (d) { return Math.min.apply(Math, d.map(getProcedure)); }));\n // If we have traversals, try to avoid executing this selector\n if (proc < 0) {\n proc = 0;\n }\n }\n else {\n proc = 2;\n }\n }\n return proc;\n}\n//# sourceMappingURL=sort.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.attributeRules = void 0;\nvar boolbase_1 = __importDefault(require(\"boolbase\"));\n/**\n * All reserved characters in a regex, used for escaping.\n *\n * Taken from XRegExp, (c) 2007-2020 Steven Levithan under the MIT license\n * https://github.com/slevithan/xregexp/blob/95eeebeb8fac8754d54eafe2b4743661ac1cf028/src/xregexp.js#L794\n */\nvar reChars = /[-[\\]{}()*+?.,\\\\^$|#\\s]/g;\nfunction escapeRegex(value) {\n return value.replace(reChars, \"\\\\$&\");\n}\n/**\n * Attributes that are case-insensitive in HTML.\n *\n * @private\n * @see https://html.spec.whatwg.org/multipage/semantics-other.html#case-sensitivity-of-selectors\n */\nvar caseInsensitiveAttributes = new Set([\n \"accept\",\n \"accept-charset\",\n \"align\",\n \"alink\",\n \"axis\",\n \"bgcolor\",\n \"charset\",\n \"checked\",\n \"clear\",\n \"codetype\",\n \"color\",\n \"compact\",\n \"declare\",\n \"defer\",\n \"dir\",\n \"direction\",\n \"disabled\",\n \"enctype\",\n \"face\",\n \"frame\",\n \"hreflang\",\n \"http-equiv\",\n \"lang\",\n \"language\",\n \"link\",\n \"media\",\n \"method\",\n \"multiple\",\n \"nohref\",\n \"noresize\",\n \"noshade\",\n \"nowrap\",\n \"readonly\",\n \"rel\",\n \"rev\",\n \"rules\",\n \"scope\",\n \"scrolling\",\n \"selected\",\n \"shape\",\n \"target\",\n \"text\",\n \"type\",\n \"valign\",\n \"valuetype\",\n \"vlink\",\n]);\nfunction shouldIgnoreCase(selector, options) {\n return typeof selector.ignoreCase === \"boolean\"\n ? selector.ignoreCase\n : selector.ignoreCase === \"quirks\"\n ? !!options.quirksMode\n : !options.xmlMode && caseInsensitiveAttributes.has(selector.name);\n}\n/**\n * Attribute selectors\n */\nexports.attributeRules = {\n equals: function (next, data, options) {\n var adapter = options.adapter;\n var name = data.name;\n var value = data.value;\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return function (elem) {\n var attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length === value.length &&\n attr.toLowerCase() === value &&\n next(elem));\n };\n }\n return function (elem) {\n return adapter.getAttributeValue(elem, name) === value && next(elem);\n };\n },\n hyphen: function (next, data, options) {\n var adapter = options.adapter;\n var name = data.name;\n var value = data.value;\n var len = value.length;\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return function hyphenIC(elem) {\n var attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n (attr.length === len || attr.charAt(len) === \"-\") &&\n attr.substr(0, len).toLowerCase() === value &&\n next(elem));\n };\n }\n return function hyphen(elem) {\n var attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n (attr.length === len || attr.charAt(len) === \"-\") &&\n attr.substr(0, len) === value &&\n next(elem));\n };\n },\n element: function (next, data, options) {\n var adapter = options.adapter;\n var name = data.name, value = data.value;\n if (/\\s/.test(value)) {\n return boolbase_1.default.falseFunc;\n }\n var regex = new RegExp(\"(?:^|\\\\s)\".concat(escapeRegex(value), \"(?:$|\\\\s)\"), shouldIgnoreCase(data, options) ? \"i\" : \"\");\n return function element(elem) {\n var attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= value.length &&\n regex.test(attr) &&\n next(elem));\n };\n },\n exists: function (next, _a, _b) {\n var name = _a.name;\n var adapter = _b.adapter;\n return function (elem) { return adapter.hasAttrib(elem, name) && next(elem); };\n },\n start: function (next, data, options) {\n var adapter = options.adapter;\n var name = data.name;\n var value = data.value;\n var len = value.length;\n if (len === 0) {\n return boolbase_1.default.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return function (elem) {\n var attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= len &&\n attr.substr(0, len).toLowerCase() === value &&\n next(elem));\n };\n }\n return function (elem) {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.startsWith(value)) &&\n next(elem);\n };\n },\n end: function (next, data, options) {\n var adapter = options.adapter;\n var name = data.name;\n var value = data.value;\n var len = -value.length;\n if (len === 0) {\n return boolbase_1.default.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return function (elem) {\n var _a;\n return ((_a = adapter\n .getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.substr(len).toLowerCase()) === value && next(elem);\n };\n }\n return function (elem) {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.endsWith(value)) &&\n next(elem);\n };\n },\n any: function (next, data, options) {\n var adapter = options.adapter;\n var name = data.name, value = data.value;\n if (value === \"\") {\n return boolbase_1.default.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n var regex_1 = new RegExp(escapeRegex(value), \"i\");\n return function anyIC(elem) {\n var attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= value.length &&\n regex_1.test(attr) &&\n next(elem));\n };\n }\n return function (elem) {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.includes(value)) &&\n next(elem);\n };\n },\n not: function (next, data, options) {\n var adapter = options.adapter;\n var name = data.name;\n var value = data.value;\n if (value === \"\") {\n return function (elem) {\n return !!adapter.getAttributeValue(elem, name) && next(elem);\n };\n }\n else if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return function (elem) {\n var attr = adapter.getAttributeValue(elem, name);\n return ((attr == null ||\n attr.length !== value.length ||\n attr.toLowerCase() !== value) &&\n next(elem));\n };\n }\n return function (elem) {\n return adapter.getAttributeValue(elem, name) !== value && next(elem);\n };\n },\n};\n//# sourceMappingURL=attributes.js.map","\"use strict\";\n// Following http://www.w3.org/TR/css3-selectors/#nth-child-pseudo\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parse = void 0;\n// Whitespace as per https://www.w3.org/TR/selectors-3/#lex is \" \\t\\r\\n\\f\"\nvar whitespace = new Set([9, 10, 12, 13, 32]);\nvar ZERO = \"0\".charCodeAt(0);\nvar NINE = \"9\".charCodeAt(0);\n/**\n * Parses an expression.\n *\n * @throws An `Error` if parsing fails.\n * @returns An array containing the integer step size and the integer offset of the nth rule.\n * @example nthCheck.parse(\"2n+3\"); // returns [2, 3]\n */\nfunction parse(formula) {\n formula = formula.trim().toLowerCase();\n if (formula === \"even\") {\n return [2, 0];\n }\n else if (formula === \"odd\") {\n return [2, 1];\n }\n // Parse [ ['-'|'+']? INTEGER? {N} [ S* ['-'|'+'] S* INTEGER ]?\n var idx = 0;\n var a = 0;\n var sign = readSign();\n var number = readNumber();\n if (idx < formula.length && formula.charAt(idx) === \"n\") {\n idx++;\n a = sign * (number !== null && number !== void 0 ? number : 1);\n skipWhitespace();\n if (idx < formula.length) {\n sign = readSign();\n skipWhitespace();\n number = readNumber();\n }\n else {\n sign = number = 0;\n }\n }\n // Throw if there is anything else\n if (number === null || idx < formula.length) {\n throw new Error(\"n-th rule couldn't be parsed ('\".concat(formula, \"')\"));\n }\n return [a, sign * number];\n function readSign() {\n if (formula.charAt(idx) === \"-\") {\n idx++;\n return -1;\n }\n if (formula.charAt(idx) === \"+\") {\n idx++;\n }\n return 1;\n }\n function readNumber() {\n var start = idx;\n var value = 0;\n while (idx < formula.length &&\n formula.charCodeAt(idx) >= ZERO &&\n formula.charCodeAt(idx) <= NINE) {\n value = value * 10 + (formula.charCodeAt(idx) - ZERO);\n idx++;\n }\n // Return `null` if we didn't read anything.\n return idx === start ? null : value;\n }\n function skipWhitespace() {\n while (idx < formula.length &&\n whitespace.has(formula.charCodeAt(idx))) {\n idx++;\n }\n }\n}\nexports.parse = parse;\n//# sourceMappingURL=parse.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generate = exports.compile = void 0;\nvar boolbase_1 = __importDefault(require(\"boolbase\"));\n/**\n * Returns a function that checks if an elements index matches the given rule\n * highly optimized to return the fastest solution.\n *\n * @param parsed A tuple [a, b], as returned by `parse`.\n * @returns A highly optimized function that returns whether an index matches the nth-check.\n * @example\n *\n * ```js\n * const check = nthCheck.compile([2, 3]);\n *\n * check(0); // `false`\n * check(1); // `false`\n * check(2); // `true`\n * check(3); // `false`\n * check(4); // `true`\n * check(5); // `false`\n * check(6); // `true`\n * ```\n */\nfunction compile(parsed) {\n var a = parsed[0];\n // Subtract 1 from `b`, to convert from one- to zero-indexed.\n var b = parsed[1] - 1;\n /*\n * When `b <= 0`, `a * n` won't be lead to any matches for `a < 0`.\n * Besides, the specification states that no elements are\n * matched when `a` and `b` are 0.\n *\n * `b < 0` here as we subtracted 1 from `b` above.\n */\n if (b < 0 && a <= 0)\n return boolbase_1.default.falseFunc;\n // When `a` is in the range -1..1, it matches any element (so only `b` is checked).\n if (a === -1)\n return function (index) { return index <= b; };\n if (a === 0)\n return function (index) { return index === b; };\n // When `b <= 0` and `a === 1`, they match any element.\n if (a === 1)\n return b < 0 ? boolbase_1.default.trueFunc : function (index) { return index >= b; };\n /*\n * Otherwise, modulo can be used to check if there is a match.\n *\n * Modulo doesn't care about the sign, so let's use `a`s absolute value.\n */\n var absA = Math.abs(a);\n // Get `b mod a`, + a if this is negative.\n var bMod = ((b % absA) + absA) % absA;\n return a > 1\n ? function (index) { return index >= b && index % absA === bMod; }\n : function (index) { return index <= b && index % absA === bMod; };\n}\nexports.compile = compile;\n/**\n * Returns a function that produces a monotonously increasing sequence of indices.\n *\n * If the sequence has an end, the returned function will return `null` after\n * the last index in the sequence.\n *\n * @param parsed A tuple [a, b], as returned by `parse`.\n * @returns A function that produces a sequence of indices.\n * @example <caption>Always increasing (2n+3)</caption>\n *\n * ```js\n * const gen = nthCheck.generate([2, 3])\n *\n * gen() // `1`\n * gen() // `3`\n * gen() // `5`\n * gen() // `8`\n * gen() // `11`\n * ```\n *\n * @example <caption>With end value (-2n+10)</caption>\n *\n * ```js\n *\n * const gen = nthCheck.generate([-2, 5]);\n *\n * gen() // 0\n * gen() // 2\n * gen() // 4\n * gen() // null\n * ```\n */\nfunction generate(parsed) {\n var a = parsed[0];\n // Subtract 1 from `b`, to convert from one- to zero-indexed.\n var b = parsed[1] - 1;\n var n = 0;\n // Make sure to always return an increasing sequence\n if (a < 0) {\n var aPos_1 = -a;\n // Get `b mod a`\n var minValue_1 = ((b % aPos_1) + aPos_1) % aPos_1;\n return function () {\n var val = minValue_1 + aPos_1 * n++;\n return val > b ? null : val;\n };\n }\n if (a === 0)\n return b < 0\n ? // There are no result — always return `null`\n function () { return null; }\n : // Return `b` exactly once\n function () { return (n++ === 0 ? b : null); };\n if (b < 0) {\n b += a * Math.ceil(-b / a);\n }\n return function () { return a * n++ + b; };\n}\nexports.generate = generate;\n//# sourceMappingURL=compile.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sequence = exports.generate = exports.compile = exports.parse = void 0;\nvar parse_js_1 = require(\"./parse.js\");\nObject.defineProperty(exports, \"parse\", { enumerable: true, get: function () { return parse_js_1.parse; } });\nvar compile_js_1 = require(\"./compile.js\");\nObject.defineProperty(exports, \"compile\", { enumerable: true, get: function () { return compile_js_1.compile; } });\nObject.defineProperty(exports, \"generate\", { enumerable: true, get: function () { return compile_js_1.generate; } });\n/**\n * Parses and compiles a formula to a highly optimized function.\n * Combination of {@link parse} and {@link compile}.\n *\n * If the formula doesn't match any elements,\n * it returns [`boolbase`](https://github.com/fb55/boolbase)'s `falseFunc`.\n * Otherwise, a function accepting an _index_ is returned, which returns\n * whether or not the passed _index_ matches the formula.\n *\n * Note: The nth-rule starts counting at `1`, the returned function at `0`.\n *\n * @param formula The formula to compile.\n * @example\n * const check = nthCheck(\"2n+3\");\n *\n * check(0); // `false`\n * check(1); // `false`\n * check(2); // `true`\n * check(3); // `false`\n * check(4); // `true`\n * check(5); // `false`\n * check(6); // `true`\n */\nfunction nthCheck(formula) {\n return (0, compile_js_1.compile)((0, parse_js_1.parse)(formula));\n}\nexports.default = nthCheck;\n/**\n * Parses and compiles a formula to a generator that produces a sequence of indices.\n * Combination of {@link parse} and {@link generate}.\n *\n * @param formula The formula to compile.\n * @returns A function that produces a sequence of indices.\n * @example <caption>Always increasing</caption>\n *\n * ```js\n * const gen = nthCheck.sequence('2n+3')\n *\n * gen() // `1`\n * gen() // `3`\n * gen() // `5`\n * gen() // `8`\n * gen() // `11`\n * ```\n *\n * @example <caption>With end value</caption>\n *\n * ```js\n *\n * const gen = nthCheck.sequence('-2n+5');\n *\n * gen() // 0\n * gen() // 2\n * gen() // 4\n * gen() // null\n * ```\n */\nfunction sequence(formula) {\n return (0, compile_js_1.generate)((0, parse_js_1.parse)(formula));\n}\nexports.sequence = sequence;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.filters = void 0;\nvar nth_check_1 = __importDefault(require(\"nth-check\"));\nvar boolbase_1 = __importDefault(require(\"boolbase\"));\nfunction getChildFunc(next, adapter) {\n return function (elem) {\n var parent = adapter.getParent(elem);\n return parent != null && adapter.isTag(parent) && next(elem);\n };\n}\nexports.filters = {\n contains: function (next, text, _a) {\n var adapter = _a.adapter;\n return function contains(elem) {\n return next(elem) && adapter.getText(elem).includes(text);\n };\n },\n icontains: function (next, text, _a) {\n var adapter = _a.adapter;\n var itext = text.toLowerCase();\n return function icontains(elem) {\n return (next(elem) &&\n adapter.getText(elem).toLowerCase().includes(itext));\n };\n },\n // Location specific methods\n \"nth-child\": function (next, rule, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var func = (0, nth_check_1.default)(rule);\n if (func === boolbase_1.default.falseFunc)\n return boolbase_1.default.falseFunc;\n if (func === boolbase_1.default.trueFunc)\n return getChildFunc(next, adapter);\n return function nthChild(elem) {\n var siblings = adapter.getSiblings(elem);\n var pos = 0;\n for (var i = 0; i < siblings.length; i++) {\n if (equals(elem, siblings[i]))\n break;\n if (adapter.isTag(siblings[i])) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-last-child\": function (next, rule, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var func = (0, nth_check_1.default)(rule);\n if (func === boolbase_1.default.falseFunc)\n return boolbase_1.default.falseFunc;\n if (func === boolbase_1.default.trueFunc)\n return getChildFunc(next, adapter);\n return function nthLastChild(elem) {\n var siblings = adapter.getSiblings(elem);\n var pos = 0;\n for (var i = siblings.length - 1; i >= 0; i--) {\n if (equals(elem, siblings[i]))\n break;\n if (adapter.isTag(siblings[i])) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-of-type\": function (next, rule, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var func = (0, nth_check_1.default)(rule);\n if (func === boolbase_1.default.falseFunc)\n return boolbase_1.default.falseFunc;\n if (func === boolbase_1.default.trueFunc)\n return getChildFunc(next, adapter);\n return function nthOfType(elem) {\n var siblings = adapter.getSiblings(elem);\n var pos = 0;\n for (var i = 0; i < siblings.length; i++) {\n var currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === adapter.getName(elem)) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-last-of-type\": function (next, rule, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var func = (0, nth_check_1.default)(rule);\n if (func === boolbase_1.default.falseFunc)\n return boolbase_1.default.falseFunc;\n if (func === boolbase_1.default.trueFunc)\n return getChildFunc(next, adapter);\n return function nthLastOfType(elem) {\n var siblings = adapter.getSiblings(elem);\n var pos = 0;\n for (var i = siblings.length - 1; i >= 0; i--) {\n var currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === adapter.getName(elem)) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n // TODO determine the actual root element\n root: function (next, _rule, _a) {\n var adapter = _a.adapter;\n return function (elem) {\n var parent = adapter.getParent(elem);\n return (parent == null || !adapter.isTag(parent)) && next(elem);\n };\n },\n scope: function (next, rule, options, context) {\n var equals = options.equals;\n if (!context || context.length === 0) {\n // Equivalent to :root\n return exports.filters[\"root\"](next, rule, options);\n }\n if (context.length === 1) {\n // NOTE: can't be unpacked, as :has uses this for side-effects\n return function (elem) { return equals(context[0], elem) && next(elem); };\n }\n return function (elem) { return context.includes(elem) && next(elem); };\n },\n hover: dynamicStatePseudo(\"isHovered\"),\n visited: dynamicStatePseudo(\"isVisited\"),\n active: dynamicStatePseudo(\"isActive\"),\n};\n/**\n * Dynamic state pseudos. These depend on optional Adapter methods.\n *\n * @param name The name of the adapter method to call.\n * @returns Pseudo for the `filters` object.\n */\nfunction dynamicStatePseudo(name) {\n return function dynamicPseudo(next, _rule, _a) {\n var adapter = _a.adapter;\n var func = adapter[name];\n if (typeof func !== \"function\") {\n return boolbase_1.default.falseFunc;\n }\n return function active(elem) {\n return func(elem) && next(elem);\n };\n };\n}\n//# sourceMappingURL=filters.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.verifyPseudoArgs = exports.pseudos = void 0;\n// While filters are precompiled, pseudos get called when they are needed\nexports.pseudos = {\n empty: function (elem, _a) {\n var adapter = _a.adapter;\n return !adapter.getChildren(elem).some(function (elem) {\n // FIXME: `getText` call is potentially expensive.\n return adapter.isTag(elem) || adapter.getText(elem) !== \"\";\n });\n },\n \"first-child\": function (elem, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n if (adapter.prevElementSibling) {\n return adapter.prevElementSibling(elem) == null;\n }\n var firstChild = adapter\n .getSiblings(elem)\n .find(function (elem) { return adapter.isTag(elem); });\n return firstChild != null && equals(elem, firstChild);\n },\n \"last-child\": function (elem, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var siblings = adapter.getSiblings(elem);\n for (var i = siblings.length - 1; i >= 0; i--) {\n if (equals(elem, siblings[i]))\n return true;\n if (adapter.isTag(siblings[i]))\n break;\n }\n return false;\n },\n \"first-of-type\": function (elem, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var siblings = adapter.getSiblings(elem);\n var elemName = adapter.getName(elem);\n for (var i = 0; i < siblings.length; i++) {\n var currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n return true;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === elemName) {\n break;\n }\n }\n return false;\n },\n \"last-of-type\": function (elem, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var siblings = adapter.getSiblings(elem);\n var elemName = adapter.getName(elem);\n for (var i = siblings.length - 1; i >= 0; i--) {\n var currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n return true;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === elemName) {\n break;\n }\n }\n return false;\n },\n \"only-of-type\": function (elem, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var elemName = adapter.getName(elem);\n return adapter\n .getSiblings(elem)\n .every(function (sibling) {\n return equals(elem, sibling) ||\n !adapter.isTag(sibling) ||\n adapter.getName(sibling) !== elemName;\n });\n },\n \"only-child\": function (elem, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n return adapter\n .getSiblings(elem)\n .every(function (sibling) { return equals(elem, sibling) || !adapter.isTag(sibling); });\n },\n};\nfunction verifyPseudoArgs(func, name, subselect, argIndex) {\n if (subselect === null) {\n if (func.length > argIndex) {\n throw new Error(\"Pseudo-class :\".concat(name, \" requires an argument\"));\n }\n }\n else if (func.length === argIndex) {\n throw new Error(\"Pseudo-class :\".concat(name, \" doesn't have any arguments\"));\n }\n}\nexports.verifyPseudoArgs = verifyPseudoArgs;\n//# sourceMappingURL=pseudos.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.aliases = void 0;\n/**\n * Aliases are pseudos that are expressed as selectors.\n */\nexports.aliases = {\n // Links\n \"any-link\": \":is(a, area, link)[href]\",\n link: \":any-link:not(:visited)\",\n // Forms\n // https://html.spec.whatwg.org/multipage/scripting.html#disabled-elements\n disabled: \":is(\\n :is(button, input, select, textarea, optgroup, option)[disabled],\\n optgroup[disabled] > option,\\n fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *)\\n )\",\n enabled: \":not(:disabled)\",\n checked: \":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)\",\n required: \":is(input, select, textarea)[required]\",\n optional: \":is(input, select, textarea):not([required])\",\n // JQuery extensions\n // https://html.spec.whatwg.org/multipage/form-elements.html#concept-option-selectedness\n selected: \"option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)\",\n checkbox: \"[type=checkbox]\",\n file: \"[type=file]\",\n password: \"[type=password]\",\n radio: \"[type=radio]\",\n reset: \"[type=reset]\",\n image: \"[type=image]\",\n submit: \"[type=submit]\",\n parent: \":not(:empty)\",\n header: \":is(h1, h2, h3, h4, h5, h6)\",\n button: \":is(button, input[type=button])\",\n input: \":is(input, textarea, select, button)\",\n text: \"input:is(:not([type!='']), [type=text])\",\n};\n//# sourceMappingURL=aliases.js.map","\"use strict\";\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.subselects = exports.getNextSiblings = exports.ensureIsTag = exports.PLACEHOLDER_ELEMENT = void 0;\nvar boolbase_1 = __importDefault(require(\"boolbase\"));\nvar sort_js_1 = require(\"../sort.js\");\n/** Used as a placeholder for :has. Will be replaced with the actual element. */\nexports.PLACEHOLDER_ELEMENT = {};\nfunction ensureIsTag(next, adapter) {\n if (next === boolbase_1.default.falseFunc)\n return boolbase_1.default.falseFunc;\n return function (elem) { return adapter.isTag(elem) && next(elem); };\n}\nexports.ensureIsTag = ensureIsTag;\nfunction getNextSiblings(elem, adapter) {\n var siblings = adapter.getSiblings(elem);\n if (siblings.length <= 1)\n return [];\n var elemIndex = siblings.indexOf(elem);\n if (elemIndex < 0 || elemIndex === siblings.length - 1)\n return [];\n return siblings.slice(elemIndex + 1).filter(adapter.isTag);\n}\nexports.getNextSiblings = getNextSiblings;\nfunction copyOptions(options) {\n // Not copied: context, rootFunc\n return {\n xmlMode: !!options.xmlMode,\n lowerCaseAttributeNames: !!options.lowerCaseAttributeNames,\n lowerCaseTags: !!options.lowerCaseTags,\n quirksMode: !!options.quirksMode,\n cacheResults: !!options.cacheResults,\n pseudos: options.pseudos,\n adapter: options.adapter,\n equals: options.equals,\n };\n}\nvar is = function (next, token, options, context, compileToken) {\n var func = compileToken(token, copyOptions(options), context);\n return func === boolbase_1.default.trueFunc\n ? next\n : func === boolbase_1.default.falseFunc\n ? boolbase_1.default.falseFunc\n : function (elem) { return func(elem) && next(elem); };\n};\n/*\n * :not, :has, :is, :matches and :where have to compile selectors\n * doing this in src/pseudos.ts would lead to circular dependencies,\n * so we add them here\n */\nexports.subselects = {\n is: is,\n /**\n * `:matches` and `:where` are aliases for `:is`.\n */\n matches: is,\n where: is,\n not: function (next, token, options, context, compileToken) {\n var func = compileToken(token, copyOptions(options), context);\n return func === boolbase_1.default.falseFunc\n ? next\n : func === boolbase_1.default.trueFunc\n ? boolbase_1.default.falseFunc\n : function (elem) { return !func(elem) && next(elem); };\n },\n has: function (next, subselect, options, _context, compileToken) {\n var adapter = options.adapter;\n var opts = copyOptions(options);\n opts.relativeSelector = true;\n var context = subselect.some(function (s) { return s.some(sort_js_1.isTraversal); })\n ? // Used as a placeholder. Will be replaced with the actual element.\n [exports.PLACEHOLDER_ELEMENT]\n : undefined;\n var compiled = compileToken(subselect, opts, context);\n if (compiled === boolbase_1.default.falseFunc)\n return boolbase_1.default.falseFunc;\n var hasElement = ensureIsTag(compiled, adapter);\n // If `compiled` is `trueFunc`, we can skip this.\n if (context && compiled !== boolbase_1.default.trueFunc) {\n /*\n * `shouldTestNextSiblings` will only be true if the query starts with\n * a traversal (sibling or adjacent). That means we will always have a context.\n */\n var _a = compiled.shouldTestNextSiblings, shouldTestNextSiblings_1 = _a === void 0 ? false : _a;\n return function (elem) {\n if (!next(elem))\n return false;\n context[0] = elem;\n var childs = adapter.getChildren(elem);\n var nextElements = shouldTestNextSiblings_1\n ? __spreadArray(__spreadArray([], childs, true), getNextSiblings(elem, adapter), true) : childs;\n return adapter.existsOne(hasElement, nextElements);\n };\n }\n return function (elem) {\n return next(elem) &&\n adapter.existsOne(hasElement, adapter.getChildren(elem));\n };\n },\n};\n//# sourceMappingURL=subselects.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.compilePseudoSelector = exports.aliases = exports.pseudos = exports.filters = void 0;\nvar css_what_1 = require(\"css-what\");\nvar filters_js_1 = require(\"./filters.js\");\nObject.defineProperty(exports, \"filters\", { enumerable: true, get: function () { return filters_js_1.filters; } });\nvar pseudos_js_1 = require(\"./pseudos.js\");\nObject.defineProperty(exports, \"pseudos\", { enumerable: true, get: function () { return pseudos_js_1.pseudos; } });\nvar aliases_js_1 = require(\"./aliases.js\");\nObject.defineProperty(exports, \"aliases\", { enumerable: true, get: function () { return aliases_js_1.aliases; } });\nvar subselects_js_1 = require(\"./subselects.js\");\nfunction compilePseudoSelector(next, selector, options, context, compileToken) {\n var _a;\n var name = selector.name, data = selector.data;\n if (Array.isArray(data)) {\n if (!(name in subselects_js_1.subselects)) {\n throw new Error(\"Unknown pseudo-class :\".concat(name, \"(\").concat(data, \")\"));\n }\n return subselects_js_1.subselects[name](next, data, options, context, compileToken);\n }\n var userPseudo = (_a = options.pseudos) === null || _a === void 0 ? void 0 : _a[name];\n var stringPseudo = typeof userPseudo === \"string\" ? userPseudo : aliases_js_1.aliases[name];\n if (typeof stringPseudo === \"string\") {\n if (data != null) {\n throw new Error(\"Pseudo \".concat(name, \" doesn't have any arguments\"));\n }\n // The alias has to be parsed here, to make sure options are respected.\n var alias = (0, css_what_1.parse)(stringPseudo);\n return subselects_js_1.subselects[\"is\"](next, alias, options, context, compileToken);\n }\n if (typeof userPseudo === \"function\") {\n (0, pseudos_js_1.verifyPseudoArgs)(userPseudo, name, data, 1);\n return function (elem) { return userPseudo(elem, data) && next(elem); };\n }\n if (name in filters_js_1.filters) {\n return filters_js_1.filters[name](next, data, options, context);\n }\n if (name in pseudos_js_1.pseudos) {\n var pseudo_1 = pseudos_js_1.pseudos[name];\n (0, pseudos_js_1.verifyPseudoArgs)(pseudo_1, name, data, 2);\n return function (elem) { return pseudo_1(elem, options, data) && next(elem); };\n }\n throw new Error(\"Unknown pseudo-class :\".concat(name));\n}\nexports.compilePseudoSelector = compilePseudoSelector;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.compileGeneralSelector = void 0;\nvar attributes_js_1 = require(\"./attributes.js\");\nvar index_js_1 = require(\"./pseudo-selectors/index.js\");\nvar css_what_1 = require(\"css-what\");\nfunction getElementParent(node, adapter) {\n var parent = adapter.getParent(node);\n if (parent && adapter.isTag(parent)) {\n return parent;\n }\n return null;\n}\n/*\n * All available rules\n */\nfunction compileGeneralSelector(next, selector, options, context, compileToken) {\n var adapter = options.adapter, equals = options.equals;\n switch (selector.type) {\n case css_what_1.SelectorType.PseudoElement: {\n throw new Error(\"Pseudo-elements are not supported by css-select\");\n }\n case css_what_1.SelectorType.ColumnCombinator: {\n throw new Error(\"Column combinators are not yet supported by css-select\");\n }\n case css_what_1.SelectorType.Attribute: {\n if (selector.namespace != null) {\n throw new Error(\"Namespaced attributes are not yet supported by css-select\");\n }\n if (!options.xmlMode || options.lowerCaseAttributeNames) {\n selector.name = selector.name.toLowerCase();\n }\n return attributes_js_1.attributeRules[selector.action](next, selector, options);\n }\n case css_what_1.SelectorType.Pseudo: {\n return (0, index_js_1.compilePseudoSelector)(next, selector, options, context, compileToken);\n }\n // Tags\n case css_what_1.SelectorType.Tag: {\n if (selector.namespace != null) {\n throw new Error(\"Namespaced tag names are not yet supported by css-select\");\n }\n var name_1 = selector.name;\n if (!options.xmlMode || options.lowerCaseTags) {\n name_1 = name_1.toLowerCase();\n }\n return function tag(elem) {\n return adapter.getName(elem) === name_1 && next(elem);\n };\n }\n // Traversal\n case css_what_1.SelectorType.Descendant: {\n if (options.cacheResults === false ||\n typeof WeakSet === \"undefined\") {\n return function descendant(elem) {\n var current = elem;\n while ((current = getElementParent(current, adapter))) {\n if (next(current)) {\n return true;\n }\n }\n return false;\n };\n }\n // @ts-expect-error `ElementNode` is not extending object\n var isFalseCache_1 = new WeakSet();\n return function cachedDescendant(elem) {\n var current = elem;\n while ((current = getElementParent(current, adapter))) {\n if (!isFalseCache_1.has(current)) {\n if (adapter.isTag(current) && next(current)) {\n return true;\n }\n isFalseCache_1.add(current);\n }\n }\n return false;\n };\n }\n case \"_flexibleDescendant\": {\n // Include element itself, only used while querying an array\n return function flexibleDescendant(elem) {\n var current = elem;\n do {\n if (next(current))\n return true;\n } while ((current = getElementParent(current, adapter)));\n return false;\n };\n }\n case css_what_1.SelectorType.Parent: {\n return function parent(elem) {\n return adapter\n .getChildren(elem)\n .some(function (elem) { return adapter.isTag(elem) && next(elem); });\n };\n }\n case css_what_1.SelectorType.Child: {\n return function child(elem) {\n var parent = adapter.getParent(elem);\n return parent != null && adapter.isTag(parent) && next(parent);\n };\n }\n case css_what_1.SelectorType.Sibling: {\n return function sibling(elem) {\n var siblings = adapter.getSiblings(elem);\n for (var i = 0; i < siblings.length; i++) {\n var currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) && next(currentSibling)) {\n return true;\n }\n }\n return false;\n };\n }\n case css_what_1.SelectorType.Adjacent: {\n if (adapter.prevElementSibling) {\n return function adjacent(elem) {\n var previous = adapter.prevElementSibling(elem);\n return previous != null && next(previous);\n };\n }\n return function adjacent(elem) {\n var siblings = adapter.getSiblings(elem);\n var lastElement;\n for (var i = 0; i < siblings.length; i++) {\n var currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling)) {\n lastElement = currentSibling;\n }\n }\n return !!lastElement && next(lastElement);\n };\n }\n case css_what_1.SelectorType.Universal: {\n if (selector.namespace != null && selector.namespace !== \"*\") {\n throw new Error(\"Namespaced universal selectors are not yet supported by css-select\");\n }\n return next;\n }\n }\n}\nexports.compileGeneralSelector = compileGeneralSelector;\n//# sourceMappingURL=general.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.compileToken = exports.compileUnsafe = exports.compile = void 0;\nvar css_what_1 = require(\"css-what\");\nvar boolbase_1 = __importDefault(require(\"boolbase\"));\nvar sort_js_1 = __importStar(require(\"./sort.js\"));\nvar general_js_1 = require(\"./general.js\");\nvar subselects_js_1 = require(\"./pseudo-selectors/subselects.js\");\n/**\n * Compiles a selector to an executable function.\n *\n * @param selector Selector to compile.\n * @param options Compilation options.\n * @param context Optional context for the selector.\n */\nfunction compile(selector, options, context) {\n var next = compileUnsafe(selector, options, context);\n return (0, subselects_js_1.ensureIsTag)(next, options.adapter);\n}\nexports.compile = compile;\nfunction compileUnsafe(selector, options, context) {\n var token = typeof selector === \"string\" ? (0, css_what_1.parse)(selector) : selector;\n return compileToken(token, options, context);\n}\nexports.compileUnsafe = compileUnsafe;\nfunction includesScopePseudo(t) {\n return (t.type === css_what_1.SelectorType.Pseudo &&\n (t.name === \"scope\" ||\n (Array.isArray(t.data) &&\n t.data.some(function (data) { return data.some(includesScopePseudo); }))));\n}\nvar DESCENDANT_TOKEN = { type: css_what_1.SelectorType.Descendant };\nvar FLEXIBLE_DESCENDANT_TOKEN = {\n type: \"_flexibleDescendant\",\n};\nvar SCOPE_TOKEN = {\n type: css_what_1.SelectorType.Pseudo,\n name: \"scope\",\n data: null,\n};\n/*\n * CSS 4 Spec (Draft): 3.4.1. Absolutizing a Relative Selector\n * http://www.w3.org/TR/selectors4/#absolutizing\n */\nfunction absolutize(token, _a, context) {\n var adapter = _a.adapter;\n // TODO Use better check if the context is a document\n var hasContext = !!(context === null || context === void 0 ? void 0 : context.every(function (e) {\n var parent = adapter.isTag(e) && adapter.getParent(e);\n return e === subselects_js_1.PLACEHOLDER_ELEMENT || (parent && adapter.isTag(parent));\n }));\n for (var _i = 0, token_1 = token; _i < token_1.length; _i++) {\n var t = token_1[_i];\n if (t.length > 0 &&\n (0, sort_js_1.isTraversal)(t[0]) &&\n t[0].type !== css_what_1.SelectorType.Descendant) {\n // Don't continue in else branch\n }\n else if (hasContext && !t.some(includesScopePseudo)) {\n t.unshift(DESCENDANT_TOKEN);\n }\n else {\n continue;\n }\n t.unshift(SCOPE_TOKEN);\n }\n}\nfunction compileToken(token, options, context) {\n var _a;\n token.forEach(sort_js_1.default);\n context = (_a = options.context) !== null && _a !== void 0 ? _a : context;\n var isArrayContext = Array.isArray(context);\n var finalContext = context && (Array.isArray(context) ? context : [context]);\n // Check if the selector is relative\n if (options.relativeSelector !== false) {\n absolutize(token, options, finalContext);\n }\n else if (token.some(function (t) { return t.length > 0 && (0, sort_js_1.isTraversal)(t[0]); })) {\n throw new Error(\"Relative selectors are not allowed when the `relativeSelector` option is disabled\");\n }\n var shouldTestNextSiblings = false;\n var query = token\n .map(function (rules) {\n if (rules.length >= 2) {\n var first = rules[0], second = rules[1];\n if (first.type !== css_what_1.SelectorType.Pseudo ||\n first.name !== \"scope\") {\n // Ignore\n }\n else if (isArrayContext &&\n second.type === css_what_1.SelectorType.Descendant) {\n rules[1] = FLEXIBLE_DESCENDANT_TOKEN;\n }\n else if (second.type === css_what_1.SelectorType.Adjacent ||\n second.type === css_what_1.SelectorType.Sibling) {\n shouldTestNextSiblings = true;\n }\n }\n return compileRules(rules, options, finalContext);\n })\n .reduce(reduceRules, boolbase_1.default.falseFunc);\n query.shouldTestNextSiblings = shouldTestNextSiblings;\n return query;\n}\nexports.compileToken = compileToken;\nfunction compileRules(rules, options, context) {\n var _a;\n return rules.reduce(function (previous, rule) {\n return previous === boolbase_1.default.falseFunc\n ? boolbase_1.default.falseFunc\n : (0, general_js_1.compileGeneralSelector)(previous, rule, options, context, compileToken);\n }, (_a = options.rootFunc) !== null && _a !== void 0 ? _a : boolbase_1.default.trueFunc);\n}\nfunction reduceRules(a, b) {\n if (b === boolbase_1.default.falseFunc || a === boolbase_1.default.trueFunc) {\n return a;\n }\n if (a === boolbase_1.default.falseFunc || b === boolbase_1.default.trueFunc) {\n return b;\n }\n return function combine(elem) {\n return a(elem) || b(elem);\n };\n}\n//# sourceMappingURL=compile.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.aliases = exports.pseudos = exports.filters = exports.is = exports.selectOne = exports.selectAll = exports.prepareContext = exports._compileToken = exports._compileUnsafe = exports.compile = void 0;\nvar DomUtils = __importStar(require(\"domutils\"));\nvar boolbase_1 = __importDefault(require(\"boolbase\"));\nvar compile_js_1 = require(\"./compile.js\");\nvar subselects_js_1 = require(\"./pseudo-selectors/subselects.js\");\nvar defaultEquals = function (a, b) { return a === b; };\nvar defaultOptions = {\n adapter: DomUtils,\n equals: defaultEquals,\n};\nfunction convertOptionFormats(options) {\n var _a, _b, _c, _d;\n /*\n * We force one format of options to the other one.\n */\n // @ts-expect-error Default options may have incompatible `Node` / `ElementNode`.\n var opts = options !== null && options !== void 0 ? options : defaultOptions;\n // @ts-expect-error Same as above.\n (_a = opts.adapter) !== null && _a !== void 0 ? _a : (opts.adapter = DomUtils);\n // @ts-expect-error `equals` does not exist on `Options`\n (_b = opts.equals) !== null && _b !== void 0 ? _b : (opts.equals = (_d = (_c = opts.adapter) === null || _c === void 0 ? void 0 : _c.equals) !== null && _d !== void 0 ? _d : defaultEquals);\n return opts;\n}\nfunction wrapCompile(func) {\n return function addAdapter(selector, options, context) {\n var opts = convertOptionFormats(options);\n return func(selector, opts, context);\n };\n}\n/**\n * Compiles the query, returns a function.\n */\nexports.compile = wrapCompile(compile_js_1.compile);\nexports._compileUnsafe = wrapCompile(compile_js_1.compileUnsafe);\nexports._compileToken = wrapCompile(compile_js_1.compileToken);\nfunction getSelectorFunc(searchFunc) {\n return function select(query, elements, options) {\n var opts = convertOptionFormats(options);\n if (typeof query !== \"function\") {\n query = (0, compile_js_1.compileUnsafe)(query, opts, elements);\n }\n var filteredElements = prepareContext(elements, opts.adapter, query.shouldTestNextSiblings);\n return searchFunc(query, filteredElements, opts);\n };\n}\nfunction prepareContext(elems, adapter, shouldTestNextSiblings) {\n if (shouldTestNextSiblings === void 0) { shouldTestNextSiblings = false; }\n /*\n * Add siblings if the query requires them.\n * See https://github.com/fb55/css-select/pull/43#issuecomment-225414692\n */\n if (shouldTestNextSiblings) {\n elems = appendNextSiblings(elems, adapter);\n }\n return Array.isArray(elems)\n ? adapter.removeSubsets(elems)\n : adapter.getChildren(elems);\n}\nexports.prepareContext = prepareContext;\nfunction appendNextSiblings(elem, adapter) {\n // Order matters because jQuery seems to check the children before the siblings\n var elems = Array.isArray(elem) ? elem.slice(0) : [elem];\n var elemsLength = elems.length;\n for (var i = 0; i < elemsLength; i++) {\n var nextSiblings = (0, subselects_js_1.getNextSiblings)(elems[i], adapter);\n elems.push.apply(elems, nextSiblings);\n }\n return elems;\n}\n/**\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elems Elements to query. If it is an element, its children will be queried..\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns All matching elements.\n *\n */\nexports.selectAll = getSelectorFunc(function (query, elems, options) {\n return query === boolbase_1.default.falseFunc || !elems || elems.length === 0\n ? []\n : options.adapter.findAll(query, elems);\n});\n/**\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elems Elements to query. If it is an element, its children will be queried..\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns the first match, or null if there was no match.\n */\nexports.selectOne = getSelectorFunc(function (query, elems, options) {\n return query === boolbase_1.default.falseFunc || !elems || elems.length === 0\n ? null\n : options.adapter.findOne(query, elems);\n});\n/**\n * Tests whether or not an element is matched by query.\n *\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elem The element to test if it matches the query.\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns\n */\nfunction is(elem, query, options) {\n var opts = convertOptionFormats(options);\n return (typeof query === \"function\" ? query : (0, compile_js_1.compile)(query, opts))(elem);\n}\nexports.is = is;\n/**\n * Alias for selectAll(query, elems, options).\n * @see [compile] for supported selector queries.\n */\nexports.default = exports.selectAll;\n// Export filters, pseudos and aliases to allow users to supply their own.\n/** @deprecated Use the `pseudos` option instead. */\nvar index_js_1 = require(\"./pseudo-selectors/index.js\");\nObject.defineProperty(exports, \"filters\", { enumerable: true, get: function () { return index_js_1.filters; } });\nObject.defineProperty(exports, \"pseudos\", { enumerable: true, get: function () { return index_js_1.pseudos; } });\nObject.defineProperty(exports, \"aliases\", { enumerable: true, get: function () { return index_js_1.aliases; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction arr_back(arr) {\n return arr[arr.length - 1];\n}\nexports.default = arr_back;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar type_1 = __importDefault(require(\"./nodes/type\"));\nfunction isTag(node) {\n return node && node.nodeType === type_1.default.ELEMENT_NODE;\n}\nfunction getAttributeValue(elem, name) {\n return isTag(elem) ? elem.getAttribute(name) : undefined;\n}\nfunction getName(elem) {\n return ((elem && elem.rawTagName) || '').toLowerCase();\n}\nfunction getChildren(node) {\n return node && node.childNodes;\n}\nfunction getParent(node) {\n return node ? node.parentNode : null;\n}\nfunction getText(node) {\n return node.text;\n}\nfunction removeSubsets(nodes) {\n var idx = nodes.length;\n var node;\n var ancestor;\n var replace;\n // Check if each node (or one of its ancestors) is already contained in the\n // array.\n while (--idx > -1) {\n node = ancestor = nodes[idx];\n // Temporarily remove the node under consideration\n nodes[idx] = null;\n replace = true;\n while (ancestor) {\n if (nodes.indexOf(ancestor) > -1) {\n replace = false;\n nodes.splice(idx, 1);\n break;\n }\n ancestor = getParent(ancestor);\n }\n // If the node has been found to be unique, re-insert it.\n if (replace) {\n nodes[idx] = node;\n }\n }\n return nodes;\n}\nfunction existsOne(test, elems) {\n return elems.some(function (elem) {\n return isTag(elem) ? test(elem) || existsOne(test, getChildren(elem)) : false;\n });\n}\nfunction getSiblings(node) {\n var parent = getParent(node);\n return parent ? getChildren(parent) : [];\n}\nfunction hasAttrib(elem, name) {\n return getAttributeValue(elem, name) !== undefined;\n}\nfunction findOne(test, elems) {\n var elem = null;\n for (var i = 0, l = elems === null || elems === void 0 ? void 0 : elems.length; i < l && !elem; i++) {\n var el = elems[i];\n if (test(el)) {\n elem = el;\n }\n else {\n var childs = getChildren(el);\n if (childs && childs.length > 0) {\n elem = findOne(test, childs);\n }\n }\n }\n return elem;\n}\nfunction findAll(test, nodes) {\n var result = [];\n for (var i = 0, j = nodes.length; i < j; i++) {\n if (!isTag(nodes[i]))\n continue;\n if (test(nodes[i]))\n result.push(nodes[i]);\n var childs = getChildren(nodes[i]);\n if (childs)\n result = result.concat(findAll(test, childs));\n }\n return result;\n}\nexports.default = {\n isTag: isTag,\n getAttributeValue: getAttributeValue,\n getName: getName,\n getChildren: getChildren,\n getParent: getParent,\n getText: getText,\n removeSubsets: removeSubsets,\n existsOne: existsOne,\n getSiblings: getSiblings,\n hasAttrib: hasAttrib,\n findOne: findOne,\n findAll: findAll\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar VoidTag = /** @class */ (function () {\n function VoidTag(addClosingSlash, tags) {\n if (addClosingSlash === void 0) { addClosingSlash = false; }\n this.addClosingSlash = addClosingSlash;\n if (Array.isArray(tags)) {\n this.voidTags = tags.reduce(function (set, tag) {\n return set.add(tag.toLowerCase()).add(tag.toUpperCase()).add(tag);\n }, new Set());\n }\n else {\n this.voidTags = ['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wbr'].reduce(function (set, tag) {\n return set.add(tag.toLowerCase()).add(tag.toUpperCase()).add(tag);\n }, new Set());\n }\n }\n VoidTag.prototype.formatNode = function (tag, attrs, innerHTML) {\n var addClosingSlash = this.addClosingSlash;\n var closingSpace = (addClosingSlash && attrs && !attrs.endsWith(' ')) ? ' ' : '';\n var closingSlash = addClosingSlash ? \"\".concat(closingSpace, \"/\") : '';\n return this.isVoidElement(tag.toLowerCase()) ? \"<\".concat(tag).concat(attrs).concat(closingSlash, \">\") : \"<\".concat(tag).concat(attrs, \">\").concat(innerHTML, \"</\").concat(tag, \">\");\n };\n VoidTag.prototype.isVoidElement = function (tag) {\n return this.voidTags.has(tag);\n };\n return VoidTag;\n}());\nexports.default = VoidTag;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar he_1 = require(\"he\");\nvar node_1 = __importDefault(require(\"./node\"));\nvar type_1 = __importDefault(require(\"./type\"));\n/**\n * TextNode to contain a text element in DOM tree.\n * @param {string} value [description]\n */\nvar TextNode = /** @class */ (function (_super) {\n __extends(TextNode, _super);\n function TextNode(rawText, parentNode, range) {\n if (parentNode === void 0) { parentNode = null; }\n var _this = _super.call(this, parentNode, range) || this;\n /**\n * Node Type declaration.\n * @type {Number}\n */\n _this.nodeType = type_1.default.TEXT_NODE;\n _this.rawTagName = '';\n _this._rawText = rawText;\n return _this;\n }\n TextNode.prototype.clone = function () {\n return new TextNode(this._rawText, null);\n };\n Object.defineProperty(TextNode.prototype, \"rawText\", {\n get: function () {\n return this._rawText;\n },\n /**\n * Set rawText and invalidate trimmed caches\n */\n set: function (text) {\n this._rawText = text;\n this._trimmedRawText = void 0;\n this._trimmedText = void 0;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TextNode.prototype, \"trimmedRawText\", {\n /**\n * Returns raw text with all whitespace trimmed except single leading/trailing non-breaking space\n */\n get: function () {\n if (this._trimmedRawText !== undefined)\n return this._trimmedRawText;\n this._trimmedRawText = trimText(this.rawText);\n return this._trimmedRawText;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TextNode.prototype, \"trimmedText\", {\n /**\n * Returns text with all whitespace trimmed except single leading/trailing non-breaking space\n */\n get: function () {\n if (this._trimmedText !== undefined)\n return this._trimmedText;\n this._trimmedText = trimText(this.text);\n return this._trimmedText;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TextNode.prototype, \"text\", {\n /**\n * Get unescaped text value of current node and its children.\n * @return {string} text content\n */\n get: function () {\n return (0, he_1.decode)(this.rawText);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TextNode.prototype, \"isWhitespace\", {\n /**\n * Detect if the node contains only white space.\n * @return {boolean}\n */\n get: function () {\n return /^(\\s| )*$/.test(this.rawText);\n },\n enumerable: false,\n configurable: true\n });\n TextNode.prototype.toString = function () {\n return this.rawText;\n };\n return TextNode;\n}(node_1.default));\nexports.default = TextNode;\n/**\n * Trim whitespace except single leading/trailing non-breaking space\n */\nfunction trimText(text) {\n var i = 0;\n var startPos;\n var endPos;\n while (i >= 0 && i < text.length) {\n if (/\\S/.test(text[i])) {\n if (startPos === undefined) {\n startPos = i;\n i = text.length;\n }\n else {\n endPos = i;\n i = void 0;\n }\n }\n if (startPos === undefined)\n i++;\n else\n i--;\n }\n if (startPos === undefined)\n startPos = 0;\n if (endPos === undefined)\n endPos = text.length - 1;\n var hasLeadingSpace = startPos > 0 && /[^\\S\\r\\n]/.test(text[startPos - 1]);\n var hasTrailingSpace = endPos < (text.length - 1) && /[^\\S\\r\\n]/.test(text[endPos + 1]);\n return (hasLeadingSpace ? ' ' : '') + text.slice(startPos, endPos + 1) + (hasTrailingSpace ? ' ' : '');\n}\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parse = exports.base_parse = void 0;\nvar css_select_1 = require(\"css-select\");\nvar he_1 = __importDefault(require(\"he\"));\nvar back_1 = __importDefault(require(\"../back\"));\nvar matcher_1 = __importDefault(require(\"../matcher\"));\nvar void_tag_1 = __importDefault(require(\"../void-tag\"));\nvar comment_1 = __importDefault(require(\"./comment\"));\nvar node_1 = __importDefault(require(\"./node\"));\nvar text_1 = __importDefault(require(\"./text\"));\nvar type_1 = __importDefault(require(\"./type\"));\nfunction decode(val) {\n // clone string\n return JSON.parse(JSON.stringify(he_1.default.decode(val)));\n}\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements\nvar Htags = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup'];\nvar Dtags = ['details', 'dialog', 'dd', 'div', 'dt'];\nvar Ftags = ['fieldset', 'figcaption', 'figure', 'footer', 'form'];\nvar tableTags = ['table', 'td', 'tr'];\nvar htmlTags = ['address', 'article', 'aside', 'blockquote', 'br', 'hr', 'li', 'main', 'nav', 'ol', 'p', 'pre', 'section', 'ul'];\nvar kBlockElements = new Set();\nfunction addToKBlockElement() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var addToSet = function (array) {\n for (var index = 0; index < array.length; index++) {\n var element = array[index];\n kBlockElements.add(element);\n kBlockElements.add(element.toUpperCase());\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var arg = args_1[_a];\n addToSet(arg);\n }\n}\naddToKBlockElement(Htags, Dtags, Ftags, tableTags, htmlTags);\nvar DOMTokenList = /** @class */ (function () {\n function DOMTokenList(valuesInit, afterUpdate) {\n if (valuesInit === void 0) { valuesInit = []; }\n if (afterUpdate === void 0) { afterUpdate = function () { return null; }; }\n this._set = new Set(valuesInit);\n this._afterUpdate = afterUpdate;\n }\n DOMTokenList.prototype._validate = function (c) {\n if (/\\s/.test(c)) {\n throw new Error(\"DOMException in DOMTokenList.add: The token '\".concat(c, \"' contains HTML space characters, which are not valid in tokens.\"));\n }\n };\n DOMTokenList.prototype.add = function (c) {\n this._validate(c);\n this._set.add(c);\n this._afterUpdate(this); // eslint-disable-line @typescript-eslint/no-unsafe-call\n };\n DOMTokenList.prototype.replace = function (c1, c2) {\n this._validate(c2);\n this._set.delete(c1);\n this._set.add(c2);\n this._afterUpdate(this); // eslint-disable-line @typescript-eslint/no-unsafe-call\n };\n DOMTokenList.prototype.remove = function (c) {\n this._set.delete(c) && this._afterUpdate(this); // eslint-disable-line @typescript-eslint/no-unsafe-call\n };\n DOMTokenList.prototype.toggle = function (c) {\n this._validate(c);\n if (this._set.has(c))\n this._set.delete(c);\n else\n this._set.add(c);\n this._afterUpdate(this); // eslint-disable-line @typescript-eslint/no-unsafe-call\n };\n DOMTokenList.prototype.contains = function (c) {\n return this._set.has(c);\n };\n Object.defineProperty(DOMTokenList.prototype, \"length\", {\n get: function () {\n return this._set.size;\n },\n enumerable: false,\n configurable: true\n });\n DOMTokenList.prototype.values = function () {\n return this._set.values();\n };\n Object.defineProperty(DOMTokenList.prototype, \"value\", {\n get: function () {\n return Array.from(this._set.values());\n },\n enumerable: false,\n configurable: true\n });\n DOMTokenList.prototype.toString = function () {\n return Array.from(this._set.values()).join(' ');\n };\n return DOMTokenList;\n}());\n/**\n * HTMLElement, which contains a set of children.\n *\n * Note: this is a minimalist implementation, no complete tree\n * structure provided (no parentNode, nextSibling,\n * previousSibling etc).\n * @class HTMLElement\n * @extends {Node}\n */\nvar HTMLElement = /** @class */ (function (_super) {\n __extends(HTMLElement, _super);\n /**\n * Creates an instance of HTMLElement.\n * @param keyAttrs\tid and class attribute\n * @param [rawAttrs]\tattributes in string\n *\n * @memberof HTMLElement\n */\n function HTMLElement(tagName, keyAttrs, rawAttrs, parentNode, range, voidTag, _parseOptions) {\n if (rawAttrs === void 0) { rawAttrs = ''; }\n if (parentNode === void 0) { parentNode = null; }\n if (voidTag === void 0) { voidTag = new void_tag_1.default(); }\n if (_parseOptions === void 0) { _parseOptions = {}; }\n var _this = _super.call(this, parentNode, range) || this;\n _this.rawAttrs = rawAttrs;\n _this.voidTag = voidTag;\n /**\n * Node Type declaration.\n */\n _this.nodeType = type_1.default.ELEMENT_NODE;\n _this.rawTagName = tagName;\n _this.rawAttrs = rawAttrs || '';\n _this.id = keyAttrs.id || '';\n _this.childNodes = [];\n _this._parseOptions = _parseOptions;\n _this.classList = new DOMTokenList(keyAttrs.class ? keyAttrs.class.split(/\\s+/) : [], function (classList) { return _this.setAttribute('class', classList.toString()); } // eslint-disable-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n );\n if (keyAttrs.id) {\n if (!rawAttrs) {\n _this.rawAttrs = \"id=\\\"\".concat(keyAttrs.id, \"\\\"\");\n }\n }\n if (keyAttrs.class) {\n if (!rawAttrs) {\n var cls = \"class=\\\"\".concat(_this.classList.toString(), \"\\\"\");\n if (_this.rawAttrs) {\n _this.rawAttrs += \" \".concat(cls);\n }\n else {\n _this.rawAttrs = cls;\n }\n }\n }\n return _this;\n }\n /**\n * Quote attribute values\n * @param attr attribute value\n * @returns {string} quoted value\n */\n HTMLElement.prototype.quoteAttribute = function (attr) {\n if (attr == null) {\n return 'null';\n }\n return JSON.stringify(attr.replace(/\"/g, '"')).replace(/\\\\t/g, '\\t').replace(/\\\\n/g, '\\n').replace(/\\\\r/g, '\\r').replace(/\\\\/g, '');\n };\n /**\n * Remove Child element from childNodes array\n * @param {HTMLElement} node node to remove\n */\n HTMLElement.prototype.removeChild = function (node) {\n this.childNodes = this.childNodes.filter(function (child) {\n return child !== node;\n });\n return this;\n };\n /**\n * Exchanges given child with new child\n * @param {HTMLElement} oldNode node to exchange\n * @param {HTMLElement} newNode new node\n */\n HTMLElement.prototype.exchangeChild = function (oldNode, newNode) {\n var children = this.childNodes;\n this.childNodes = children.map(function (child) {\n if (child === oldNode) {\n return newNode;\n }\n return child;\n });\n return this;\n };\n Object.defineProperty(HTMLElement.prototype, \"tagName\", {\n get: function () {\n return this.rawTagName ? this.rawTagName.toUpperCase() : this.rawTagName;\n },\n set: function (newname) {\n this.rawTagName = newname.toLowerCase();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HTMLElement.prototype, \"localName\", {\n get: function () {\n return this.rawTagName.toLowerCase();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HTMLElement.prototype, \"isVoidElement\", {\n get: function () {\n return this.voidTag.isVoidElement(this.localName);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HTMLElement.prototype, \"rawText\", {\n /**\n * Get escpaed (as-it) text value of current node and its children.\n * @return {string} text content\n */\n get: function () {\n // https://github.com/taoqf/node-html-parser/issues/249\n if (/^br$/i.test(this.rawTagName)) {\n return '\\n';\n }\n return this.childNodes.reduce(function (pre, cur) {\n return (pre += cur.rawText);\n }, '');\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HTMLElement.prototype, \"textContent\", {\n get: function () {\n return decode(this.rawText);\n },\n set: function (val) {\n var content = [new text_1.default(val, this)];\n this.childNodes = content;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HTMLElement.prototype, \"text\", {\n /**\n * Get unescaped text value of current node and its children.\n * @return {string} text content\n */\n get: function () {\n return decode(this.rawText);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HTMLElement.prototype, \"structuredText\", {\n /**\n * Get structured Text (with '\\n' etc.)\n * @return {string} structured text\n */\n get: function () {\n var currentBlock = [];\n var blocks = [currentBlock];\n function dfs(node) {\n if (node.nodeType === type_1.default.ELEMENT_NODE) {\n if (kBlockElements.has(node.rawTagName)) {\n if (currentBlock.length > 0) {\n blocks.push((currentBlock = []));\n }\n node.childNodes.forEach(dfs);\n if (currentBlock.length > 0) {\n blocks.push((currentBlock = []));\n }\n }\n else {\n node.childNodes.forEach(dfs);\n }\n }\n else if (node.nodeType === type_1.default.TEXT_NODE) {\n if (node.isWhitespace) {\n // Whitespace node, postponed output\n currentBlock.prependWhitespace = true;\n }\n else {\n var text = node.trimmedText;\n if (currentBlock.prependWhitespace) {\n text = \" \".concat(text);\n currentBlock.prependWhitespace = false;\n }\n currentBlock.push(text);\n }\n }\n }\n dfs(this);\n return blocks\n .map(function (block) {\n return block.join('').replace(/\\s{2,}/g, ' '); // Normalize each line's whitespace\n })\n .join('\\n')\n .replace(/\\s+$/, ''); // trimRight;\n },\n enumerable: false,\n configurable: true\n });\n HTMLElement.prototype.toString = function () {\n var tag = this.rawTagName;\n if (tag) {\n var attrs = this.rawAttrs ? \" \".concat(this.rawAttrs) : '';\n return this.voidTag.formatNode(tag, attrs, this.innerHTML);\n }\n return this.innerHTML;\n };\n Object.defineProperty(HTMLElement.prototype, \"innerHTML\", {\n get: function () {\n return this.childNodes\n .map(function (child) {\n return child.toString();\n })\n .join('');\n },\n set: function (content) {\n var r = parse(content, this._parseOptions);\n var nodes = r.childNodes.length ? r.childNodes : [new text_1.default(content, this)];\n resetParent(nodes, this);\n resetParent(this.childNodes, null);\n this.childNodes = nodes;\n },\n enumerable: false,\n configurable: true\n });\n HTMLElement.prototype.set_content = function (content, options) {\n if (options === void 0) { options = {}; }\n if (content instanceof node_1.default) {\n content = [content];\n }\n else if (typeof content == 'string') {\n options = __assign(__assign({}, this._parseOptions), options);\n var r = parse(content, options);\n content = r.childNodes.length ? r.childNodes : [new text_1.default(r.innerHTML, this)];\n }\n resetParent(this.childNodes, null);\n resetParent(content, this);\n this.childNodes = content;\n return this;\n };\n HTMLElement.prototype.replaceWith = function () {\n var _this = this;\n var nodes = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nodes[_i] = arguments[_i];\n }\n var parent = this.parentNode;\n var content = nodes\n .map(function (node) {\n if (node instanceof node_1.default) {\n return [node];\n }\n else if (typeof node == 'string') {\n var r = parse(node, _this._parseOptions);\n return r.childNodes.length ? r.childNodes : [new text_1.default(node, _this)];\n }\n return [];\n })\n .flat();\n var idx = parent.childNodes.findIndex(function (child) {\n return child === _this;\n });\n resetParent([this], null);\n parent.childNodes = __spreadArray(__spreadArray(__spreadArray([], parent.childNodes.slice(0, idx), true), resetParent(content, parent), true), parent.childNodes.slice(idx + 1), true);\n return this;\n };\n Object.defineProperty(HTMLElement.prototype, \"outerHTML\", {\n get: function () {\n return this.toString();\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Trim element from right (in block) after seeing pattern in a TextNode.\n * @param {RegExp} pattern pattern to find\n * @return {HTMLElement} reference to current node\n */\n HTMLElement.prototype.trimRight = function (pattern) {\n for (var i = 0; i < this.childNodes.length; i++) {\n var childNode = this.childNodes[i];\n if (childNode.nodeType === type_1.default.ELEMENT_NODE) {\n childNode.trimRight(pattern);\n }\n else {\n var index = childNode.rawText.search(pattern);\n if (index > -1) {\n childNode.rawText = childNode.rawText.substr(0, index);\n // trim all following nodes.\n this.childNodes.length = i + 1;\n }\n }\n }\n return this;\n };\n Object.defineProperty(HTMLElement.prototype, \"structure\", {\n /**\n * Get DOM structure\n * @return {string} structure\n */\n get: function () {\n var res = [];\n var indention = 0;\n function write(str) {\n res.push(' '.repeat(indention) + str);\n }\n function dfs(node) {\n var idStr = node.id ? \"#\".concat(node.id) : '';\n var classStr = node.classList.length ? \".\".concat(node.classList.value.join('.')) : ''; // eslint-disable-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/restrict-template-expressions, @typescript-eslint/no-unsafe-call\n write(\"\".concat(node.rawTagName).concat(idStr).concat(classStr));\n indention++;\n node.childNodes.forEach(function (childNode) {\n if (childNode.nodeType === type_1.default.ELEMENT_NODE) {\n dfs(childNode);\n }\n else if (childNode.nodeType === type_1.default.TEXT_NODE) {\n if (!childNode.isWhitespace) {\n write('#text');\n }\n }\n });\n indention--;\n }\n dfs(this);\n return res.join('\\n');\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Remove whitespaces in this sub tree.\n * @return {HTMLElement} pointer to this\n */\n HTMLElement.prototype.removeWhitespace = function () {\n var _this = this;\n var o = 0;\n this.childNodes.forEach(function (node) {\n if (node.nodeType === type_1.default.TEXT_NODE) {\n if (node.isWhitespace) {\n return;\n }\n node.rawText = node.trimmedRawText;\n }\n else if (node.nodeType === type_1.default.ELEMENT_NODE) {\n node.removeWhitespace();\n }\n _this.childNodes[o++] = node;\n });\n this.childNodes.length = o;\n return this;\n };\n /**\n * Query CSS selector to find matching nodes.\n * @param {string} selector Simplified CSS selector\n * @return {HTMLElement[]} matching elements\n */\n HTMLElement.prototype.querySelectorAll = function (selector) {\n return (0, css_select_1.selectAll)(selector, this, {\n xmlMode: true,\n adapter: matcher_1.default,\n });\n };\n /**\n * Query CSS Selector to find matching node.\n * @param {string} selector Simplified CSS selector\n * @return {(HTMLElement|null)} matching node\n */\n HTMLElement.prototype.querySelector = function (selector) {\n return (0, css_select_1.selectOne)(selector, this, {\n xmlMode: true,\n adapter: matcher_1.default,\n });\n };\n /**\n * find elements by their tagName\n * @param {string} tagName the tagName of the elements to select\n */\n HTMLElement.prototype.getElementsByTagName = function (tagName) {\n var upperCasedTagName = tagName.toUpperCase();\n var re = [];\n var stack = [];\n var currentNodeReference = this;\n var index = 0;\n // index turns to undefined once the stack is empty and the first condition occurs\n // which happens once all relevant children are searched through\n while (index !== undefined) {\n var child = void 0;\n // make it work with sparse arrays\n do {\n child = currentNodeReference.childNodes[index++];\n } while (index < currentNodeReference.childNodes.length && child === undefined);\n // if the child does not exist we move on with the last provided index (which belongs to the parentNode)\n if (child === undefined) {\n currentNodeReference = currentNodeReference.parentNode;\n index = stack.pop();\n continue;\n }\n if (child.nodeType === type_1.default.ELEMENT_NODE) {\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/getElementsByTagName#syntax\n if (tagName === '*' || child.tagName === upperCasedTagName)\n re.push(child);\n // if children are existing push the current status to the stack and keep searching for elements in the level below\n if (child.childNodes.length > 0) {\n stack.push(index);\n currentNodeReference = child;\n index = 0;\n }\n }\n }\n return re;\n };\n /**\n * find element by it's id\n * @param {string} id the id of the element to select\n * @returns {HTMLElement | null} the element with the given id or null if not found\n */\n HTMLElement.prototype.getElementById = function (id) {\n var stack = [];\n var currentNodeReference = this;\n var index = 0;\n // index turns to undefined once the stack is empty and the first condition occurs\n // which happens once all relevant children are searched through\n while (index !== undefined) {\n var child = void 0;\n // make it work with sparse arrays\n do {\n child = currentNodeReference.childNodes[index++];\n } while (index < currentNodeReference.childNodes.length && child === undefined);\n // if the child does not exist we move on with the last provided index (which belongs to the parentNode)\n if (child === undefined) {\n currentNodeReference = currentNodeReference.parentNode;\n index = stack.pop();\n continue;\n }\n if (child.nodeType === type_1.default.ELEMENT_NODE) {\n if (child.id === id) {\n return child;\n }\n ;\n // if children are existing push the current status to the stack and keep searching for elements in the level below\n if (child.childNodes.length > 0) {\n stack.push(index);\n currentNodeReference = child;\n index = 0;\n }\n }\n }\n return null;\n };\n /**\n * traverses the Element and its parents (heading toward the document root) until it finds a node that matches the provided selector string. Will return itself or the matching ancestor. If no such element exists, it returns null.\n * @param selector a DOMString containing a selector list\n * @returns {HTMLElement | null} the element with the given id or null if not found\n */\n HTMLElement.prototype.closest = function (selector) {\n var mapChild = new Map();\n var el = this;\n var old = null;\n function findOne(test, elems) {\n var elem = null;\n for (var i = 0, l = elems.length; i < l && !elem; i++) {\n var el_1 = elems[i];\n if (test(el_1)) {\n elem = el_1;\n }\n else {\n var child = mapChild.get(el_1);\n if (child) {\n elem = findOne(test, [child]);\n }\n }\n }\n return elem;\n }\n while (el) {\n mapChild.set(el, old);\n old = el;\n el = el.parentNode;\n }\n el = this;\n while (el) {\n var e = (0, css_select_1.selectOne)(selector, el, {\n xmlMode: true,\n adapter: __assign(__assign({}, matcher_1.default), { getChildren: function (node) {\n var child = mapChild.get(node);\n return child && [child];\n }, getSiblings: function (node) {\n return [node];\n }, findOne: findOne, findAll: function () {\n return [];\n } }),\n });\n if (e) {\n return e;\n }\n el = el.parentNode;\n }\n return null;\n };\n /**\n * Append a child node to childNodes\n * @param {Node} node node to append\n * @return {Node} node appended\n */\n HTMLElement.prototype.appendChild = function (node) {\n // remove the node from it's parent\n node.remove();\n this.childNodes.push(node);\n node.parentNode = this;\n return node;\n };\n Object.defineProperty(HTMLElement.prototype, \"firstChild\", {\n /**\n * Get first child node\n * @return {Node | undefined} first child node; or undefined if none\n */\n get: function () {\n return this.childNodes[0];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HTMLElement.prototype, \"lastChild\", {\n /**\n * Get last child node\n * @return {Node | undefined} last child node; or undefined if none\n */\n get: function () {\n return (0, back_1.default)(this.childNodes);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HTMLElement.prototype, \"attrs\", {\n /**\n * Get attributes\n * @access private\n * @return {Object} parsed and unescaped attributes\n */\n get: function () {\n if (this._attrs) {\n return this._attrs;\n }\n this._attrs = {};\n var attrs = this.rawAttributes;\n for (var key in attrs) {\n var val = attrs[key] || '';\n this._attrs[key.toLowerCase()] = decode(val);\n }\n return this._attrs;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HTMLElement.prototype, \"attributes\", {\n get: function () {\n var ret_attrs = {};\n var attrs = this.rawAttributes;\n for (var key in attrs) {\n var val = attrs[key] || '';\n ret_attrs[key] = decode(val);\n }\n return ret_attrs;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HTMLElement.prototype, \"rawAttributes\", {\n /**\n * Get escaped (as-is) attributes\n * @return {Object} parsed attributes\n */\n get: function () {\n if (this._rawAttrs) {\n return this._rawAttrs;\n }\n var attrs = {};\n if (this.rawAttrs) {\n var re = /([a-zA-Z()[\\]#@$.?:][a-zA-Z0-9-_:()[\\]#]*)(?:\\s*=\\s*((?:'[^']*')|(?:\"[^\"]*\")|\\S+))?/g;\n var match = void 0;\n while ((match = re.exec(this.rawAttrs))) {\n var key = match[1];\n var val = match[2] || null;\n if (val && (val[0] === \"'\" || val[0] === \"\\\"\"))\n val = val.slice(1, val.length - 1);\n attrs[key] = attrs[key] || val;\n }\n }\n this._rawAttrs = attrs;\n return attrs;\n },\n enumerable: false,\n configurable: true\n });\n HTMLElement.prototype.removeAttribute = function (key) {\n var _this = this;\n var attrs = this.rawAttributes;\n delete attrs[key];\n // Update this.attribute\n if (this._attrs) {\n delete this._attrs[key];\n }\n // Update rawString\n this.rawAttrs = Object.keys(attrs)\n .map(function (name) {\n var val = _this.quoteAttribute(attrs[name]);\n if (val === 'null' || val === '\"\"')\n return name;\n return \"\".concat(name, \"=\").concat(val);\n })\n .join(' ');\n // Update this.id\n if (key === 'id') {\n this.id = '';\n }\n return this;\n };\n HTMLElement.prototype.hasAttribute = function (key) {\n return key.toLowerCase() in this.attrs;\n };\n /**\n * Get an attribute\n * @return {string | undefined} value of the attribute; or undefined if not exist\n */\n HTMLElement.prototype.getAttribute = function (key) {\n return this.attrs[key.toLowerCase()];\n };\n /**\n * Set an attribute value to the HTMLElement\n * @param {string} key The attribute name\n * @param {string} value The value to set, or null / undefined to remove an attribute\n */\n HTMLElement.prototype.setAttribute = function (key, value) {\n var _this = this;\n if (arguments.length < 2) {\n throw new Error(\"Failed to execute 'setAttribute' on 'Element'\");\n }\n var k2 = key.toLowerCase();\n var attrs = this.rawAttributes;\n for (var k in attrs) {\n if (k.toLowerCase() === k2) {\n key = k;\n break;\n }\n }\n attrs[key] = String(value);\n // update this.attrs\n if (this._attrs) {\n this._attrs[k2] = decode(attrs[key]);\n }\n // Update rawString\n this.rawAttrs = Object.keys(attrs)\n .map(function (name) {\n var val = _this.quoteAttribute(attrs[name]);\n if (val === 'null' || val === '\"\"')\n return name;\n return \"\".concat(name, \"=\").concat(val);\n })\n .join(' ');\n // Update this.id\n if (key === 'id') {\n this.id = value;\n }\n return this;\n };\n /**\n * Replace all the attributes of the HTMLElement by the provided attributes\n * @param {Attributes} attributes the new attribute set\n */\n HTMLElement.prototype.setAttributes = function (attributes) {\n var _this = this;\n // Invalidate current this.attributes\n if (this._attrs) {\n delete this._attrs;\n }\n // Invalidate current this.rawAttributes\n if (this._rawAttrs) {\n delete this._rawAttrs;\n }\n // Update rawString\n this.rawAttrs = Object.keys(attributes)\n .map(function (name) {\n var val = attributes[name];\n if (val === 'null' || val === '\"\"')\n return name;\n return \"\".concat(name, \"=\").concat(_this.quoteAttribute(String(val)));\n })\n .join(' ');\n return this;\n };\n HTMLElement.prototype.insertAdjacentHTML = function (where, html) {\n var _a, _b, _c;\n var _this = this;\n if (arguments.length < 2) {\n throw new Error('2 arguments required');\n }\n var p = parse(html, this._parseOptions);\n if (where === 'afterend') {\n var idx = this.parentNode.childNodes.findIndex(function (child) {\n return child === _this;\n });\n resetParent(p.childNodes, this.parentNode);\n (_a = this.parentNode.childNodes).splice.apply(_a, __spreadArray([idx + 1, 0], p.childNodes, false));\n }\n else if (where === 'afterbegin') {\n resetParent(p.childNodes, this);\n (_b = this.childNodes).unshift.apply(_b, p.childNodes);\n }\n else if (where === 'beforeend') {\n p.childNodes.forEach(function (n) {\n _this.appendChild(n);\n });\n }\n else if (where === 'beforebegin') {\n var idx = this.parentNode.childNodes.findIndex(function (child) {\n return child === _this;\n });\n resetParent(p.childNodes, this.parentNode);\n (_c = this.parentNode.childNodes).splice.apply(_c, __spreadArray([idx, 0], p.childNodes, false));\n }\n else {\n throw new Error(\"The value provided ('\".concat(where, \"') is not one of 'beforebegin', 'afterbegin', 'beforeend', or 'afterend'\"));\n }\n return this;\n // if (!where || html === undefined || html === null) {\n // \treturn;\n // }\n };\n Object.defineProperty(HTMLElement.prototype, \"nextSibling\", {\n get: function () {\n if (this.parentNode) {\n var children = this.parentNode.childNodes;\n var i = 0;\n while (i < children.length) {\n var child = children[i++];\n if (this === child)\n return children[i] || null;\n }\n return null;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HTMLElement.prototype, \"nextElementSibling\", {\n get: function () {\n if (this.parentNode) {\n var children = this.parentNode.childNodes;\n var i = 0;\n var find = false;\n while (i < children.length) {\n var child = children[i++];\n if (find) {\n if (child instanceof HTMLElement) {\n return child || null;\n }\n }\n else if (this === child) {\n find = true;\n }\n }\n return null;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HTMLElement.prototype, \"previousSibling\", {\n get: function () {\n if (this.parentNode) {\n var children = this.parentNode.childNodes;\n var i = children.length;\n while (i > 0) {\n var child = children[--i];\n if (this === child)\n return children[i - 1] || null;\n }\n return null;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HTMLElement.prototype, \"previousElementSibling\", {\n get: function () {\n if (this.parentNode) {\n var children = this.parentNode.childNodes;\n var i = children.length;\n var find = false;\n while (i > 0) {\n var child = children[--i];\n if (find) {\n if (child instanceof HTMLElement) {\n return child || null;\n }\n }\n else if (this === child) {\n find = true;\n }\n }\n return null;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HTMLElement.prototype, \"classNames\", {\n get: function () {\n return this.classList.toString();\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Clone this Node\n */\n HTMLElement.prototype.clone = function () {\n return parse(this.toString(), this._parseOptions).firstChild;\n };\n return HTMLElement;\n}(node_1.default));\nexports.default = HTMLElement;\n// https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\nvar kMarkupPattern = /<!--[\\s\\S]*?-->|<(\\/?)([a-zA-Z][-.:0-9_a-zA-Z]*)((?:\\s+[^>]*?(?:(?:'[^']*')|(?:\"[^\"]*\"))?)*)\\s*(\\/?)>/g;\nvar kAttributePattern = /(?:^|\\s)(id|class)\\s*=\\s*((?:'[^']*')|(?:\"[^\"]*\")|\\S+)/gi;\nvar kElementsClosedByOpening = {\n li: { li: true, LI: true },\n LI: { li: true, LI: true },\n p: { p: true, div: true, P: true, DIV: true },\n P: { p: true, div: true, P: true, DIV: true },\n b: { div: true, DIV: true },\n B: { div: true, DIV: true },\n td: { td: true, th: true, TD: true, TH: true },\n TD: { td: true, th: true, TD: true, TH: true },\n th: { td: true, th: true, TD: true, TH: true },\n TH: { td: true, th: true, TD: true, TH: true },\n h1: { h1: true, H1: true },\n H1: { h1: true, H1: true },\n h2: { h2: true, H2: true },\n H2: { h2: true, H2: true },\n h3: { h3: true, H3: true },\n H3: { h3: true, H3: true },\n h4: { h4: true, H4: true },\n H4: { h4: true, H4: true },\n h5: { h5: true, H5: true },\n H5: { h5: true, H5: true },\n h6: { h6: true, H6: true },\n H6: { h6: true, H6: true },\n};\nvar kElementsClosedByClosing = {\n li: { ul: true, ol: true, UL: true, OL: true },\n LI: { ul: true, ol: true, UL: true, OL: true },\n a: { div: true, DIV: true },\n A: { div: true, DIV: true },\n b: { div: true, DIV: true },\n B: { div: true, DIV: true },\n i: { div: true, DIV: true },\n I: { div: true, DIV: true },\n p: { div: true, DIV: true },\n P: { div: true, DIV: true },\n td: { tr: true, table: true, TR: true, TABLE: true },\n TD: { tr: true, table: true, TR: true, TABLE: true },\n th: { tr: true, table: true, TR: true, TABLE: true },\n TH: { tr: true, table: true, TR: true, TABLE: true },\n};\nvar frameflag = 'documentfragmentcontainer';\n/**\n * Parses HTML and returns a root element\n * Parse a chuck of HTML source.\n * @param {string} data html\n * @return {HTMLElement} root element\n */\nfunction base_parse(data, options) {\n var _a, _b;\n if (options === void 0) { options = {}; }\n var voidTag = new void_tag_1.default((_a = options === null || options === void 0 ? void 0 : options.voidTag) === null || _a === void 0 ? void 0 : _a.closingSlash, (_b = options === null || options === void 0 ? void 0 : options.voidTag) === null || _b === void 0 ? void 0 : _b.tags);\n var elements = options.blockTextElements || {\n script: true,\n noscript: true,\n style: true,\n pre: true,\n };\n var element_names = Object.keys(elements);\n var kBlockTextElements = element_names.map(function (it) { return new RegExp(\"^\".concat(it, \"$\"), 'i'); });\n var kIgnoreElements = element_names.filter(function (it) { return Boolean(elements[it]); }).map(function (it) { return new RegExp(\"^\".concat(it, \"$\"), 'i'); });\n function element_should_be_ignore(tag) {\n return kIgnoreElements.some(function (it) { return it.test(tag); });\n }\n function is_block_text_element(tag) {\n return kBlockTextElements.some(function (it) { return it.test(tag); });\n }\n var createRange = function (startPos, endPos) { return [startPos - frameFlagOffset, endPos - frameFlagOffset]; };\n var root = new HTMLElement(null, {}, '', null, [0, data.length], voidTag, options);\n var currentParent = root;\n var stack = [root];\n var lastTextPos = -1;\n var noNestedTagIndex = undefined;\n var match;\n // https://github.com/taoqf/node-html-parser/issues/38\n data = \"<\".concat(frameflag, \">\").concat(data, \"</\").concat(frameflag, \">\");\n var lowerCaseTagName = options.lowerCaseTagName, fixNestedATags = options.fixNestedATags;\n var dataEndPos = data.length - (frameflag.length + 2);\n var frameFlagOffset = frameflag.length + 2;\n while ((match = kMarkupPattern.exec(data))) {\n // Note: Object destructuring here consistently tests as higher performance than array destructuring\n // eslint-disable-next-line prefer-const\n var matchText = match[0], leadingSlash = match[1], tagName = match[2], attributes = match[3], closingSlash = match[4];\n var matchLength = matchText.length;\n var tagStartPos = kMarkupPattern.lastIndex - matchLength;\n var tagEndPos = kMarkupPattern.lastIndex;\n // Add TextNode if content\n if (lastTextPos > -1) {\n if (lastTextPos + matchLength < tagEndPos) {\n var text = data.substring(lastTextPos, tagStartPos);\n currentParent.appendChild(new text_1.default(text, currentParent, createRange(lastTextPos, tagStartPos)));\n }\n }\n lastTextPos = kMarkupPattern.lastIndex;\n // https://github.com/taoqf/node-html-parser/issues/38\n // Skip frameflag node\n if (tagName === frameflag)\n continue;\n // Handle comments\n if (matchText[1] === '!') {\n if (options.comment) {\n // Only keep what is in between <!-- and -->\n var text = data.substring(tagStartPos + 4, tagEndPos - 3);\n currentParent.appendChild(new comment_1.default(text, currentParent, createRange(tagStartPos, tagEndPos)));\n }\n continue;\n }\n /* -- Handle tag matching -- */\n // Fix tag casing if necessary\n if (lowerCaseTagName)\n tagName = tagName.toLowerCase();\n // Handle opening tags (ie. <this> not </that>)\n if (!leadingSlash) {\n /* Populate attributes */\n var attrs = {};\n for (var attMatch = void 0; (attMatch = kAttributePattern.exec(attributes));) {\n var key = attMatch[1], val = attMatch[2];\n var isQuoted = val[0] === \"'\" || val[0] === \"\\\"\";\n attrs[key.toLowerCase()] = isQuoted ? val.slice(1, val.length - 1) : val;\n }\n var parentTagName = currentParent.rawTagName;\n if (!closingSlash && kElementsClosedByOpening[parentTagName]) {\n if (kElementsClosedByOpening[parentTagName][tagName]) {\n stack.pop();\n currentParent = (0, back_1.default)(stack);\n }\n }\n // Prevent nested A tags by terminating the last A and starting a new one : see issue #144\n if (fixNestedATags && (tagName === 'a' || tagName === 'A')) {\n if (noNestedTagIndex !== undefined) {\n stack.splice(noNestedTagIndex);\n currentParent = (0, back_1.default)(stack);\n }\n noNestedTagIndex = stack.length;\n }\n var tagEndPos_1 = kMarkupPattern.lastIndex;\n var tagStartPos_1 = tagEndPos_1 - matchLength;\n currentParent = currentParent.appendChild(\n // Initialize range (end position updated later for closed tags)\n new HTMLElement(tagName, attrs, attributes.slice(1), null, createRange(tagStartPos_1, tagEndPos_1), voidTag, options));\n stack.push(currentParent);\n if (is_block_text_element(tagName)) {\n // Find closing tag\n var closeMarkup = \"</\".concat(tagName, \">\");\n var closeIndex = lowerCaseTagName\n ? data.toLocaleLowerCase().indexOf(closeMarkup, kMarkupPattern.lastIndex)\n : data.indexOf(closeMarkup, kMarkupPattern.lastIndex);\n var textEndPos = closeIndex === -1 ? dataEndPos : closeIndex;\n if (element_should_be_ignore(tagName)) {\n var text = data.substring(tagEndPos_1, textEndPos);\n if (text.length > 0 && /\\S/.test(text)) {\n currentParent.appendChild(new text_1.default(text, currentParent, createRange(tagEndPos_1, textEndPos)));\n }\n }\n if (closeIndex === -1) {\n lastTextPos = kMarkupPattern.lastIndex = data.length + 1;\n }\n else {\n lastTextPos = kMarkupPattern.lastIndex = closeIndex + closeMarkup.length;\n // Cause to be treated as self-closing, because no close found\n leadingSlash = '/';\n }\n }\n }\n // Handle closing tags or self-closed elements (ie </tag> or <br>)\n if (leadingSlash || closingSlash || voidTag.isVoidElement(tagName)) {\n while (true) {\n if (noNestedTagIndex != null && (tagName === 'a' || tagName === 'A'))\n noNestedTagIndex = undefined;\n if (currentParent.rawTagName === tagName) {\n // Update range end for closed tag\n currentParent.range[1] = createRange(-1, Math.max(lastTextPos, tagEndPos))[1];\n stack.pop();\n currentParent = (0, back_1.default)(stack);\n break;\n }\n else {\n var parentTagName = currentParent.tagName;\n // Trying to close current tag, and move on\n if (kElementsClosedByClosing[parentTagName]) {\n if (kElementsClosedByClosing[parentTagName][tagName]) {\n stack.pop();\n currentParent = (0, back_1.default)(stack);\n continue;\n }\n }\n // Use aggressive strategy to handle unmatching markups.\n break;\n }\n }\n }\n }\n return stack;\n}\nexports.base_parse = base_parse;\n/**\n * Parses HTML and returns a root element\n * Parse a chuck of HTML source.\n */\nfunction parse(data, options) {\n if (options === void 0) { options = {}; }\n var stack = base_parse(data, options);\n var root = stack[0];\n var _loop_1 = function () {\n // Handle each error elements.\n var last = stack.pop();\n var oneBefore = (0, back_1.default)(stack);\n if (last.parentNode && last.parentNode.parentNode) {\n if (last.parentNode === oneBefore && last.tagName === oneBefore.tagName) {\n // Pair error case <h3> <h3> handle : Fixes to <h3> </h3>\n // this is wrong, becouse this will put the H3 outside the current right position which should be inside the current Html Element, see issue 152 for more info\n if (options.parseNoneClosedTags !== true) {\n oneBefore.removeChild(last);\n last.childNodes.forEach(function (child) {\n oneBefore.parentNode.appendChild(child);\n });\n stack.pop();\n }\n }\n else {\n // Single error <div> <h3> </div> handle: Just removes <h3>\n // Why remove? this is already a HtmlElement and the missing <H3> is already added in this case. see issue 152 for more info\n // eslint-disable-next-line no-lonely-if\n if (options.parseNoneClosedTags !== true) {\n oneBefore.removeChild(last);\n last.childNodes.forEach(function (child) {\n oneBefore.appendChild(child);\n });\n }\n }\n }\n else {\n // If it's final element just skip.\n }\n };\n while (stack.length > 1) {\n _loop_1();\n }\n // response.childNodes.forEach((node) => {\n // \tif (node instanceof HTMLElement) {\n // \t\tnode.parentNode = null;\n // \t}\n // });\n return root;\n}\nexports.parse = parse;\nfunction resetParent(nodes, parent) {\n return nodes.map(function (node) {\n node.parentNode = parent;\n return node;\n });\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = void 0;\nvar html_1 = require(\"./nodes/html\");\nObject.defineProperty(exports, \"default\", { enumerable: true, get: function () { return html_1.parse; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar html_1 = require(\"./nodes/html\");\n/**\n * Parses HTML and returns a root element\n * Parse a chuck of HTML source.\n */\nfunction valid(data, options) {\n if (options === void 0) { options = {}; }\n var stack = (0, html_1.base_parse)(data, options);\n return Boolean(stack.length === 1);\n}\nexports.default = valid;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeType = exports.TextNode = exports.Node = exports.valid = exports.CommentNode = exports.HTMLElement = exports.parse = void 0;\nvar comment_1 = __importDefault(require(\"./nodes/comment\"));\nexports.CommentNode = comment_1.default;\nvar html_1 = __importDefault(require(\"./nodes/html\"));\nexports.HTMLElement = html_1.default;\nvar node_1 = __importDefault(require(\"./nodes/node\"));\nexports.Node = node_1.default;\nvar text_1 = __importDefault(require(\"./nodes/text\"));\nexports.TextNode = text_1.default;\nvar type_1 = __importDefault(require(\"./nodes/type\"));\nexports.NodeType = type_1.default;\nvar parse_1 = __importDefault(require(\"./parse\"));\nvar valid_1 = __importDefault(require(\"./valid\"));\nexports.valid = valid_1.default;\nfunction parse(data, options) {\n if (options === void 0) { options = {}; }\n return (0, parse_1.default)(data, options);\n}\nexports.default = parse;\nexports.parse = parse;\nparse.parse = parse_1.default;\nparse.HTMLElement = html_1.default;\nparse.CommentNode = comment_1.default;\nparse.valid = valid_1.default;\nparse.Node = node_1.default;\nparse.TextNode = text_1.default;\nparse.NodeType = type_1.default;\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 lsp from 'vscode-languageserver-protocol';\nimport { rangeContains } from '../types/range.js';\nconst inlineCodePattern = /(?<!`)(`+)((?:.+?|.*?(?:(?:\\r?\\n).+?)*?)(?:\\r?\\n)?\\1)(?!`)/gm;\nclass InlineRanges {\n static create() {\n return new InlineRanges();\n }\n #map;\n constructor(data) {\n this.#map = new Map(data);\n }\n get(line) {\n return this.#map.get(line) || [];\n }\n add(range) {\n // Register the range for all lines that it covers\n for (let line = range.start.line; line <= range.end.line; line++) {\n let ranges = this.#map.get(line);\n if (!ranges) {\n ranges = [];\n this.#map.set(line, ranges);\n }\n ranges.push(range);\n }\n }\n concat(newRanges) {\n const result = new InlineRanges(this.#map);\n for (const range of newRanges) {\n result.add(range);\n }\n return result;\n }\n}\nexport class NoLinkRanges {\n multiline;\n inline;\n static compute(tokens, document) {\n const multiline = tokens\n .filter(t => (t.type === 'code_block' || t.type === 'fence' || t.type === 'html_block') && !!t.map)\n .map(t => ({ type: t.type, range: t.map }));\n const inlineRanges = InlineRanges.create();\n const text = document.getText();\n for (const match of text.matchAll(inlineCodePattern)) {\n const startOffset = match.index ?? 0;\n const startPosition = document.positionAt(startOffset);\n inlineRanges.add(lsp.Range.create(startPosition, document.positionAt(startOffset + match[0].length)));\n }\n return new NoLinkRanges(multiline, inlineRanges);\n }\n constructor(\n /**\n * Block element ranges, such as code blocks. Represented by [line_start, line_end).\n */\n multiline, \n /**\n * Inline code spans where links should not be detected\n */\n inline) {\n this.multiline = multiline;\n this.inline = inline;\n }\n contains(position, excludeType = '') {\n return this.multiline.some(({ type, range }) => type !== excludeType && position.line >= range[0] && position.line < range[1]) ||\n !!this.inline.get(position.line)?.some(inlineRange => rangeContains(inlineRange, position));\n }\n concatInline(inlineRanges) {\n return new NoLinkRanges(this.multiline, this.inline.concat(inlineRanges));\n }\n}\n//# sourceMappingURL=noLinkRanges.js.map","/*---------------------------------------------------------------------------------------------\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 LazyValue {\n #hasValue = false;\n #value;\n #getValue;\n constructor(getValue) {\n this.#getValue = getValue;\n }\n get value() {\n if (!this.#hasValue) {\n this.#hasValue = true;\n this.#value = this.#getValue();\n }\n return this.#value;\n }\n get hasValue() {\n return this.#hasValue;\n }\n map(f) {\n return new LazyValue(() => f(this.value));\n }\n}\nexport function lazy(getValue) {\n return new LazyValue(getValue);\n}\n//# sourceMappingURL=lazy.js.map","/*---------------------------------------------------------------------------------------------\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 { CancellationTokenSource } from 'vscode-languageserver-protocol';\nimport { getDocUri } from './types/textDocument.js';\nimport { Disposable } from './util/dispose.js';\nimport { lazy } from './util/lazy.js';\nimport { ResourceMap } from './util/resourceMap.js';\n/**\n * Cache of information per-document in the workspace.\n *\n * The values are computed lazily and invalidated when the document changes.\n */\nexport class MdDocumentInfoCache extends Disposable {\n #cache = new ResourceMap();\n #loadingDocuments = new ResourceMap();\n #workspace;\n #getValue;\n constructor(workspace, getValue) {\n super();\n this.#workspace = workspace;\n this.#getValue = getValue;\n this._register(this.#workspace.onDidChangeMarkdownDocument(doc => this.#invalidate(doc)));\n this._register(this.#workspace.onDidDeleteMarkdownDocument(this.#onDidDeleteDocument, this));\n }\n async get(resource) {\n let existing = this.#cache.get(resource);\n if (existing) {\n return existing.value.value;\n }\n const doc = await this.#loadDocument(resource);\n if (!doc) {\n return undefined;\n }\n // Check if we have invalidated\n existing = this.#cache.get(resource);\n if (existing) {\n return existing.value.value;\n }\n return this.#resetEntry(doc)?.value;\n }\n getForDocument(document) {\n const existing = this.#cache.get(getDocUri(document));\n if (existing) {\n return existing.value.value;\n }\n return this.#resetEntry(document).value;\n }\n #loadDocument(resource) {\n const existing = this.#loadingDocuments.get(resource);\n if (existing) {\n return existing;\n }\n const p = this.#workspace.openMarkdownDocument(resource);\n this.#loadingDocuments.set(resource, p);\n p.finally(() => {\n this.#loadingDocuments.delete(resource);\n });\n return p;\n }\n #resetEntry(document) {\n const uri = getDocUri(document);\n const existing = this.#cache.get(uri);\n if (existing) {\n existing.cts.cancel();\n existing.cts.dispose();\n }\n const cts = new CancellationTokenSource();\n const value = lazy(() => this.#getValue(document, cts.token));\n this.#cache.set(uri, { value, cts });\n return value;\n }\n #invalidate(document) {\n if (this.#cache.has(getDocUri(document))) {\n this.#resetEntry(document);\n }\n }\n #onDidDeleteDocument(resource) {\n this.#evict(resource);\n }\n invalidate(resource) {\n this.#evict(resource);\n }\n #evict(resource) {\n const entry = this.#cache.get(resource);\n if (entry) {\n entry.cts.cancel();\n entry.cts.dispose();\n this.#cache.delete(resource);\n }\n }\n}\n/**\n * Cache of information across all markdown files in the workspace.\n *\n * Unlike {@link MdDocumentInfoCache}, the entries here are computed eagerly for every file in the workspace.\n * However the computation of the values is still lazy.\n */\nexport class MdWorkspaceInfoCache extends Disposable {\n #cache = new ResourceMap();\n #init;\n #workspace;\n #getValue;\n constructor(workspace, getValue) {\n super();\n this.#workspace = workspace;\n this.#getValue = getValue;\n this._register(this.#workspace.onDidChangeMarkdownDocument(this.#onDidChangeDocument, this));\n this._register(this.#workspace.onDidCreateMarkdownDocument(this.#onDidChangeDocument, this));\n this._register(this.#workspace.onDidDeleteMarkdownDocument(this.#onDidDeleteDocument, this));\n }\n async entries() {\n await this.#ensureInit();\n return Promise.all(Array.from(this.#cache.entries(), async ([k, v]) => {\n return [k, await v.value.value];\n }));\n }\n async values() {\n await this.#ensureInit();\n return Promise.all(Array.from(this.#cache.entries(), x => x[1].value.value));\n }\n async getForDocs(docs) {\n for (const doc of docs) {\n if (!this.#cache.has(getDocUri(doc))) {\n this.#update(doc);\n }\n }\n return Promise.all(docs.map(doc => this.#cache.get(getDocUri(doc)).value.value));\n }\n async #ensureInit() {\n if (!this.#init) {\n this.#init = this.#populateCache();\n }\n await this.#init;\n }\n async #populateCache() {\n const markdownDocuments = await this.#workspace.getAllMarkdownDocuments();\n for (const document of markdownDocuments) {\n if (!this.#cache.has(getDocUri(document))) {\n this.#update(document);\n }\n }\n }\n #update(document) {\n // TODO: cancel old request?\n const cts = new CancellationTokenSource();\n this.#cache.set(getDocUri(document), {\n value: lazy(() => this.#getValue(document, cts.token)),\n cts\n });\n }\n #onDidChangeDocument(document) {\n this.#update(document);\n }\n #onDidDeleteDocument(resource) {\n const entry = this.#cache.get(resource);\n if (entry) {\n entry.cts.cancel();\n entry.cts.dispose();\n this.#cache.delete(resource);\n }\n }\n}\n//# sourceMappingURL=workspaceCache.js.map","/*---------------------------------------------------------------------------------------------\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 lsp from 'vscode-languageserver-protocol';\nimport { HTMLElement, parse as parseHtml } from 'node-html-parser';\nimport { LogLevel } from './logging.js';\nimport { getDocUri, getLine } from './types/textDocument.js';\nimport { Disposable } from './util/dispose.js';\nimport { NoLinkRanges } from './util/noLinkRanges.js';\nimport { ResourceMap } from './util/resourceMap.js';\nimport { MdDocumentInfoCache } from './workspaceCache.js';\nexport class TableOfContents {\n entries;\n static async create(parser, document, token, options) {\n const tokens = await parser.tokenize(document);\n if (token.isCancellationRequested) {\n return new TableOfContents([], parser.slugifier);\n }\n const headerEntries = await this.#buildTocFromTokens(parser, document, tokens, token);\n if (token.isCancellationRequested) {\n return new TableOfContents([], parser.slugifier);\n }\n if (options?.includeHtmlIds) {\n const htmlIdEntries = this.#getHtmlIdEntries(parser, document, tokens);\n // Filter out html id entries that duplicate existing header slugs\n const headerSlugs = new Set(headerEntries.map(e => e.slug.value));\n const uniqueHtmlIds = htmlIdEntries.filter(e => !headerSlugs.has(e.slug.value));\n return new TableOfContents([...headerEntries, ...uniqueHtmlIds], parser.slugifier);\n }\n return new TableOfContents(headerEntries, parser.slugifier);\n }\n static async createForContainingDoc(parser, workspace, document, token, options) {\n const context = workspace.getContainingDocument?.(getDocUri(document));\n if (context) {\n const entries = (await Promise.all(Array.from(context.children, async (cell) => {\n const doc = await workspace.openMarkdownDocument(cell.uri);\n if (!doc || token.isCancellationRequested) {\n return [];\n }\n return this.#buildToc(parser, doc, token, options);\n }))).flat();\n return new TableOfContents(entries, parser.slugifier);\n }\n return this.create(parser, document, token, options);\n }\n static async #buildToc(parser, document, token, options) {\n const tokens = await parser.tokenize(document);\n if (token.isCancellationRequested) {\n return [];\n }\n const headerEntries = await this.#buildTocFromTokens(parser, document, tokens, token);\n if (options?.includeHtmlIds) {\n const htmlIdEntries = this.#getHtmlIdEntries(parser, document, tokens);\n const headerSlugs = new Set(headerEntries.map(e => e.slug.value));\n const uniqueHtmlIds = htmlIdEntries.filter(e => !headerSlugs.has(e.slug.value));\n return [...headerEntries, ...uniqueHtmlIds];\n }\n return headerEntries;\n }\n static async #buildTocFromTokens(parser, document, tokens, _token) {\n const docUri = getDocUri(document);\n const toc = [];\n const slugBuilder = parser.slugifier.createBuilder();\n const headers = [];\n let currentHeader;\n for (const token of tokens) {\n switch (token.type) {\n case 'heading_open': {\n currentHeader = { open: token, body: [] };\n headers.push(currentHeader);\n break;\n }\n case 'heading_close': {\n currentHeader = undefined;\n break;\n }\n default: {\n currentHeader?.body.push(token);\n break;\n }\n }\n }\n for (const { open, body } of headers) {\n if (!open.map) {\n continue;\n }\n const lineNumber = open.map[0];\n const line = getLine(document, lineNumber);\n const bodyText = TableOfContents.#getHeaderTitleAsPlainText(body);\n const slug = slugBuilder.add(bodyText);\n const headerLocation = {\n uri: docUri.toString(),\n range: lsp.Range.create(lineNumber, 0, lineNumber, line.length)\n };\n const headerTextLocation = {\n uri: docUri.toString(),\n range: lsp.Range.create(lineNumber, line.match(/^#+\\s*/)?.[0].length ?? 0, lineNumber, line.length - (line.match(/\\s*#*$/)?.[0].length ?? 0))\n };\n toc.push({\n kind: 'header',\n slug,\n text: bodyText.trim(),\n level: TableOfContents.#getHeaderLevel(open.markup),\n sectionLocation: headerLocation, // Populated in next steps\n declarationLocation: headerLocation,\n idDeclarationLocation: headerTextLocation\n });\n }\n // Get full range of section\n return toc.map((entry, startIndex) => {\n if (entry.kind !== 'header') {\n return entry;\n }\n ;\n let end = undefined;\n for (let i = startIndex + 1; i < toc.length; ++i) {\n const targetToc = toc[i];\n if (targetToc.kind === 'header' && targetToc.level <= entry.level) {\n end = targetToc.declarationLocation.range.start.line - 1;\n break;\n }\n }\n const endLine = end ?? document.lineCount - 1;\n return {\n ...entry,\n sectionLocation: {\n uri: docUri.toString(),\n range: lsp.Range.create(entry.sectionLocation.range.start, { line: endLine, character: getLine(document, endLine).length })\n }\n };\n });\n }\n static #getHeaderLevel(markup) {\n if (markup === '=') {\n return 1;\n }\n else if (markup === '-') {\n return 2;\n }\n else { // '#', '##', ...\n return markup.length;\n }\n }\n static #tokenToPlainText(token) {\n if (token.children) {\n return token.children.map(TableOfContents.#tokenToPlainText).join('');\n }\n switch (token.type) {\n case 'text':\n case 'emoji':\n case 'code_inline':\n return token.content;\n default:\n return '';\n }\n }\n static #getHeaderTitleAsPlainText(headerTitleParts) {\n return headerTitleParts\n .map(TableOfContents.#tokenToPlainText)\n .join('')\n .trim();\n }\n static #htmlIdAttrPattern = /\\bid\\s*=\\s*[\"']/i;\n static #getHtmlIdEntries(parser, document, tokens) {\n const text = document.getText();\n if (!/<\\w/.test(text)) {\n return [];\n }\n let tree;\n try {\n tree = parseHtml(text);\n }\n catch {\n return [];\n }\n const docUri = getDocUri(document);\n const noLinkRanges = NoLinkRanges.compute(tokens, document);\n const entries = [];\n const existingSlugs = new Set();\n this.#collectHtmlIdEntries(tree, document, parser, docUri, noLinkRanges, existingSlugs, entries);\n return entries;\n }\n static #collectHtmlIdEntries(node, document, parser, docUri, noLinkRanges, existingSlugs, entries) {\n const idValue = node.attributes?.['id'];\n if (idValue) {\n const attrMatch = node.outerHTML.match(this.#htmlIdAttrPattern);\n if (attrMatch) {\n const offset = node.range[0] + attrMatch.index + attrMatch[0].length;\n const position = document.positionAt(offset);\n // Exclude code blocks and inline code, but allow html_block since ids inside HTML are valid\n if (!noLinkRanges.contains(position, 'html_block')) {\n const slug = parser.slugifier.fromFragment(idValue);\n if (!existingSlugs.has(slug.value)) {\n existingSlugs.add(slug.value);\n const endPosition = document.positionAt(offset + idValue.length);\n entries.push({\n kind: 'html-id',\n slug,\n text: idValue,\n declarationLocation: {\n uri: docUri.toString(),\n range: lsp.Range.create(position, endPosition),\n },\n });\n }\n }\n }\n }\n for (const child of node.childNodes) {\n if (child instanceof HTMLElement) {\n this.#collectHtmlIdEntries(child, document, parser, docUri, noLinkRanges, existingSlugs, entries);\n }\n }\n }\n #slugifier;\n constructor(entries, slugifier) {\n this.entries = entries;\n this.#slugifier = slugifier;\n }\n lookupByFragment(fragmentText) {\n const slug = this.#slugifier.fromFragment(fragmentText);\n return this.entries.find(entry => entry.slug.equals(slug));\n }\n lookupByHeading(text) {\n const slug = this.#slugifier.fromHeading(text);\n return this.entries.find(entry => entry.slug.equals(slug));\n }\n lookByLink(link) {\n return link.isAngleBracketLink ? this.lookupByHeading(link.fragment) : this.lookupByFragment(link.fragment);\n }\n}\nexport class MdTableOfContentsProvider extends Disposable {\n #cache;\n #htmlIdResources = new ResourceMap();\n #parser;\n #workspace;\n #logger;\n constructor(parser, workspace, logger) {\n super();\n this.#parser = parser;\n this.#workspace = workspace;\n this.#logger = logger;\n this.#cache = this._register(new MdDocumentInfoCache(workspace, (doc, token) => {\n const includeHtmlIds = this.#htmlIdResources.has(getDocUri(doc));\n this.#logger.log(LogLevel.Debug, 'TableOfContentsProvider.create', { document: doc.uri, version: doc.version, includeHtmlIds });\n return TableOfContents.create(parser, doc, token, { includeHtmlIds });\n }));\n }\n get(resource, options) {\n if (options?.includeHtmlIds && !this.#htmlIdResources.has(resource)) {\n this.#htmlIdResources.set(resource, true);\n this.#cache.invalidate(resource);\n }\n return this.#cache.get(resource);\n }\n getForDocument(doc, options) {\n const uri = getDocUri(doc);\n if (options?.includeHtmlIds && !this.#htmlIdResources.has(uri)) {\n this.#htmlIdResources.set(uri, true);\n this.#cache.invalidate(uri);\n }\n return this.#cache.getForDocument(doc);\n }\n getForContainingDoc(doc, token, options) {\n return TableOfContents.createForContainingDoc(this.#parser, this.#workspace, doc, token, options);\n }\n}\n//# sourceMappingURL=tableOfContents.js.map","/* --------------------------------------------------------------------------------------------\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 * ------------------------------------------------------------------------------------------ */\n'use strict';\nclass FullTextDocument {\n constructor(uri, languageId, version, content) {\n this._uri = uri;\n this._languageId = languageId;\n this._version = version;\n this._content = content;\n this._lineOffsets = undefined;\n }\n get uri() {\n return this._uri;\n }\n get languageId() {\n return this._languageId;\n }\n get version() {\n return this._version;\n }\n getText(range) {\n if (range) {\n const start = this.offsetAt(range.start);\n const end = this.offsetAt(range.end);\n return this._content.substring(start, end);\n }\n return this._content;\n }\n update(changes, version) {\n for (const change of changes) {\n if (FullTextDocument.isIncremental(change)) {\n // makes sure start is before end\n const range = getWellformedRange(change.range);\n // update content\n const startOffset = this.offsetAt(range.start);\n const endOffset = this.offsetAt(range.end);\n this._content = this._content.substring(0, startOffset) + change.text + this._content.substring(endOffset, this._content.length);\n // update the offsets\n const startLine = Math.max(range.start.line, 0);\n const endLine = Math.max(range.end.line, 0);\n let lineOffsets = this._lineOffsets;\n const addedLineOffsets = computeLineOffsets(change.text, false, startOffset);\n if (endLine - startLine === addedLineOffsets.length) {\n for (let i = 0, len = addedLineOffsets.length; i < len; i++) {\n lineOffsets[i + startLine + 1] = addedLineOffsets[i];\n }\n }\n else {\n if (addedLineOffsets.length < 10000) {\n lineOffsets.splice(startLine + 1, endLine - startLine, ...addedLineOffsets);\n }\n else { // avoid too many arguments for splice\n this._lineOffsets = lineOffsets = lineOffsets.slice(0, startLine + 1).concat(addedLineOffsets, lineOffsets.slice(endLine + 1));\n }\n }\n const diff = change.text.length - (endOffset - startOffset);\n if (diff !== 0) {\n for (let i = startLine + 1 + addedLineOffsets.length, len = lineOffsets.length; i < len; i++) {\n lineOffsets[i] = lineOffsets[i] + diff;\n }\n }\n }\n else if (FullTextDocument.isFull(change)) {\n this._content = change.text;\n this._lineOffsets = undefined;\n }\n else {\n throw new Error('Unknown change event received');\n }\n }\n this._version = version;\n }\n getLineOffsets() {\n if (this._lineOffsets === undefined) {\n this._lineOffsets = computeLineOffsets(this._content, true);\n }\n return this._lineOffsets;\n }\n positionAt(offset) {\n offset = Math.max(Math.min(offset, this._content.length), 0);\n const lineOffsets = this.getLineOffsets();\n let low = 0, high = lineOffsets.length;\n if (high === 0) {\n return { line: 0, character: offset };\n }\n while (low < high) {\n const mid = Math.floor((low + high) / 2);\n if (lineOffsets[mid] > offset) {\n high = mid;\n }\n else {\n low = mid + 1;\n }\n }\n // low is the least x for which the line offset is larger than the current offset\n // or array.length if no line offset is larger than the current offset\n const line = low - 1;\n offset = this.ensureBeforeEOL(offset, lineOffsets[line]);\n return { line, character: offset - lineOffsets[line] };\n }\n offsetAt(position) {\n const lineOffsets = this.getLineOffsets();\n if (position.line >= lineOffsets.length) {\n return this._content.length;\n }\n else if (position.line < 0) {\n return 0;\n }\n const lineOffset = lineOffsets[position.line];\n if (position.character <= 0) {\n return lineOffset;\n }\n const nextLineOffset = (position.line + 1 < lineOffsets.length) ? lineOffsets[position.line + 1] : this._content.length;\n const offset = Math.min(lineOffset + position.character, nextLineOffset);\n return this.ensureBeforeEOL(offset, lineOffset);\n }\n ensureBeforeEOL(offset, lineOffset) {\n while (offset > lineOffset && isEOL(this._content.charCodeAt(offset - 1))) {\n offset--;\n }\n return offset;\n }\n get lineCount() {\n return this.getLineOffsets().length;\n }\n static isIncremental(event) {\n const candidate = event;\n return candidate !== undefined && candidate !== null &&\n typeof candidate.text === 'string' && candidate.range !== undefined &&\n (candidate.rangeLength === undefined || typeof candidate.rangeLength === 'number');\n }\n static isFull(event) {\n const candidate = event;\n return candidate !== undefined && candidate !== null &&\n typeof candidate.text === 'string' && candidate.range === undefined && candidate.rangeLength === undefined;\n }\n}\nexport var TextDocument;\n(function (TextDocument) {\n /**\n * Creates a new text document.\n *\n * @param uri The document's uri.\n * @param languageId The document's language Id.\n * @param version The document's initial version number.\n * @param content The document's content.\n */\n function create(uri, languageId, version, content) {\n return new FullTextDocument(uri, languageId, version, content);\n }\n TextDocument.create = create;\n /**\n * Updates a TextDocument by modifying its content.\n *\n * @param document the document to update. Only documents created by TextDocument.create are valid inputs.\n * @param changes the changes to apply to the document.\n * @param version the changes version for the document.\n * @returns The updated TextDocument. Note: That's the same document instance passed in as first parameter.\n *\n */\n function update(document, changes, version) {\n if (document instanceof FullTextDocument) {\n document.update(changes, version);\n return document;\n }\n else {\n throw new Error('TextDocument.update: document must be created by TextDocument.create');\n }\n }\n TextDocument.update = update;\n function applyEdits(document, edits) {\n const text = document.getText();\n const sortedEdits = mergeSort(edits.map(getWellformedEdit), (a, b) => {\n const diff = a.range.start.line - b.range.start.line;\n if (diff === 0) {\n return a.range.start.character - b.range.start.character;\n }\n return diff;\n });\n let lastModifiedOffset = 0;\n const spans = [];\n for (const e of sortedEdits) {\n const startOffset = document.offsetAt(e.range.start);\n if (startOffset < lastModifiedOffset) {\n throw new Error('Overlapping edit');\n }\n else if (startOffset > lastModifiedOffset) {\n spans.push(text.substring(lastModifiedOffset, startOffset));\n }\n if (e.newText.length) {\n spans.push(e.newText);\n }\n lastModifiedOffset = document.offsetAt(e.range.end);\n }\n spans.push(text.substr(lastModifiedOffset));\n return spans.join('');\n }\n TextDocument.applyEdits = applyEdits;\n})(TextDocument || (TextDocument = {}));\nfunction mergeSort(data, compare) {\n if (data.length <= 1) {\n // sorted\n return data;\n }\n const p = (data.length / 2) | 0;\n const left = data.slice(0, p);\n const right = data.slice(p);\n mergeSort(left, compare);\n mergeSort(right, compare);\n let leftIdx = 0;\n let rightIdx = 0;\n let i = 0;\n while (leftIdx < left.length && rightIdx < right.length) {\n const ret = compare(left[leftIdx], right[rightIdx]);\n if (ret <= 0) {\n // smaller_equal -> take left to preserve order\n data[i++] = left[leftIdx++];\n }\n else {\n // greater -> take right\n data[i++] = right[rightIdx++];\n }\n }\n while (leftIdx < left.length) {\n data[i++] = left[leftIdx++];\n }\n while (rightIdx < right.length) {\n data[i++] = right[rightIdx++];\n }\n return data;\n}\nfunction computeLineOffsets(text, isAtLineStart, textOffset = 0) {\n const result = isAtLineStart ? [textOffset] : [];\n for (let i = 0; i < text.length; i++) {\n const ch = text.charCodeAt(i);\n if (isEOL(ch)) {\n if (ch === 13 /* CharCode.CarriageReturn */ && i + 1 < text.length && text.charCodeAt(i + 1) === 10 /* CharCode.LineFeed */) {\n i++;\n }\n result.push(textOffset + i + 1);\n }\n }\n return result;\n}\nfunction isEOL(char) {\n return char === 13 /* CharCode.CarriageReturn */ || char === 10 /* CharCode.LineFeed */;\n}\nfunction getWellformedRange(range) {\n const start = range.start;\n const end = range.end;\n if (start.line > end.line || (start.line === end.line && start.character > end.character)) {\n return { start: end, end: start };\n }\n return range;\n}\nfunction getWellformedEdit(textEdit) {\n const range = getWellformedRange(textEdit.range);\n if (range !== textEdit.range) {\n return { newText: textEdit.newText, range };\n }\n return textEdit;\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 { TextDocument } from 'vscode-languageserver-textdocument';\n/**\n * Represents a temporary version of a document.\n *\n * This indicates that the document should not be cached or reuse cached results.\n */\nexport const tempDocVersion = -1;\nexport class InMemoryDocument {\n version;\n #doc;\n $uri;\n uri;\n constructor(uri, contents, version = 0) {\n this.version = version;\n this.$uri = uri;\n this.uri = uri.toString();\n this.#doc = TextDocument.create(this.uri, 'markdown', version, contents);\n }\n get lineCount() {\n return this.#doc.lineCount;\n }\n positionAt(offset) {\n return this.#doc.positionAt(offset);\n }\n offsetAt(position) {\n return this.#doc.offsetAt(position);\n }\n getText(range) {\n return this.#doc.getText(range);\n }\n replaceContents(newContent) {\n this.#update([{ text: newContent }]);\n return this;\n }\n applyEdits(textEdits) {\n this.#update(textEdits.map(x => ({ range: x.range, text: x.newText })));\n return this;\n }\n previewEdits(textEdits) {\n return TextDocument.applyEdits(this.#doc, textEdits);\n }\n #update(changes) {\n // Temp docs always share the same version\n const newVersion = this.version < 0 ? this.version : this.version + 1;\n this.version = newVersion;\n TextDocument.update(this.#doc, changes, newVersion);\n }\n}\n//# sourceMappingURL=inMemoryDocument.js.map","/*---------------------------------------------------------------------------------------------\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 { PreferredMdPathExtensionStyle } from '../config.js';\nimport { getWorkspaceFolder } from '../workspace.js';\nimport { looksLikeMarkdownUri } from './path.js';\nimport { Schemes } from './schemes.js';\nimport { URI, Utils } from './vscodeUri.js';\n/**\n * Escapes special characters so that {@linkcode linkText} can be used in an angle bracket link.\n */\nexport function escapeForAngleBracketLink(linkText) {\n return linkText.replace(/([<>])/g, '\\\\$1'); // CodeQL [SM02383] This escaping is done for text in an editor, not for rendered markdown.\n}\n/**\n * Checks if {@linkcode linkText} needs to be enclosed in angle brackets.\n */\nexport function needsAngleBracketLink(linkText) {\n // Links with whitespace or control characters must be enclosed in brackets\n // eslint-disable-next-line no-control-regex\n if (linkText.startsWith('<') || /\\s|[\\u007F\\u0000-\\u001f]/.test(linkText)) {\n return true;\n }\n return !hasBalancedParens(linkText);\n}\nexport function hasBalancedParens(linkText) {\n // Check if the link has balanced parens\n if (!/[\\(\\)]/.test(linkText)) {\n return true;\n }\n let previousChar = '';\n let nestingCount = 0;\n for (const char of linkText) {\n if (char === '(' && previousChar !== '\\\\') {\n nestingCount++;\n }\n else if (char === ')' && previousChar !== '\\\\') {\n nestingCount--;\n }\n if (nestingCount < 0) {\n return false;\n }\n previousChar = char;\n }\n return nestingCount === 0;\n}\n/**\n * Removes the file extension from {@link newUri} based on {@link LsConfiguration} preference.\n */\nexport function removeNewUriExtIfNeeded(config, originalHref, newUri) {\n if (shouldRemoveNewUriExt(config, originalHref, newUri)) {\n const editExt = Utils.extname(newUri);\n return newUri.with({\n path: newUri.path.slice(0, newUri.path.length - editExt.length)\n });\n }\n return newUri;\n}\nfunction shouldRemoveNewUriExt(config, originalHref, newUri) {\n if (!looksLikeMarkdownUri(config, newUri)) {\n return false;\n }\n switch (config.preferredMdPathExtensionStyle) {\n case PreferredMdPathExtensionStyle.removeExtension:\n return true;\n case PreferredMdPathExtensionStyle.includeExtension:\n return false;\n case PreferredMdPathExtensionStyle.auto:\n case undefined:\n // If the original markdown link did not use a file extension, remove ours too\n return !Utils.extname(originalHref.path);\n }\n}\nexport function resolveInternalDocumentLink(sourceDocUri, linkText, workspace) {\n // Assume it must be an relative or absolute file path\n // Use a fake scheme to avoid parse warnings\n const tempUri = URI.parse(`vscode-resource:${linkText}`);\n const docUri = workspace.getContainingDocument?.(sourceDocUri)?.uri ?? sourceDocUri;\n let resourceUri;\n if (!tempUri.path) {\n // Looks like a fragment only link\n if (typeof tempUri.fragment !== 'string') {\n return undefined;\n }\n resourceUri = sourceDocUri;\n }\n else if (tempUri.path[0] === '/') {\n const root = getWorkspaceFolder(workspace, docUri);\n if (root) {\n resourceUri = Utils.joinPath(root, tempUri.path);\n }\n }\n else {\n if (docUri.scheme === Schemes.untitled) {\n const root = getWorkspaceFolder(workspace, docUri);\n if (root) {\n resourceUri = Utils.joinPath(root, tempUri.path);\n }\n }\n else {\n const base = Utils.dirname(docUri);\n resourceUri = Utils.joinPath(base, tempUri.path);\n }\n }\n if (!resourceUri) {\n return undefined;\n }\n return {\n resource: resourceUri,\n linkFragment: tempUri.fragment,\n };\n}\n//# sourceMappingURL=mdLinks.js.map","/*---------------------------------------------------------------------------------------------\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 function tryDecodeUri(str) {\n try {\n return decodeURI(str);\n }\n catch {\n return str;\n }\n}\n//# sourceMappingURL=uri.js.map","import { LogLevel } from '../logging.js';\nimport { HrefKind, MdLinkKind } from '../types/documentLink.js';\nimport { translatePosition } from '../types/position.js';\nimport { areRangesEqual, modifyRange, rangeContains } from '../types/range.js';\nimport { getDocUri } from '../types/textDocument.js';\nimport { Disposable } from '../util/dispose.js';\nimport { isSameResource, looksLikeMarkdownUri, looksLikePathToResource } from '../util/path.js';\nimport { statLinkToMarkdownFile } from '../workspace.js';\nexport var MdReferenceKind;\n(function (MdReferenceKind) {\n MdReferenceKind[MdReferenceKind[\"Link\"] = 1] = \"Link\";\n MdReferenceKind[MdReferenceKind[\"Header\"] = 2] = \"Header\";\n MdReferenceKind[MdReferenceKind[\"HtmlId\"] = 3] = \"HtmlId\";\n})(MdReferenceKind || (MdReferenceKind = {}));\n/**\n * Stateful object that computes references for markdown files.\n */\nexport class MdReferencesProvider extends Disposable {\n #configuration;\n #parser;\n #workspace;\n #tocProvider;\n #linkCache;\n #logger;\n constructor(configuration, parser, workspace, tocProvider, linkCache, logger) {\n super();\n this.#configuration = configuration;\n this.#parser = parser;\n this.#workspace = workspace;\n this.#tocProvider = tocProvider;\n this.#linkCache = linkCache;\n this.#logger = logger;\n }\n async provideReferences(document, position, context, token) {\n const allRefs = await this.getReferencesAtPosition(document, position, token);\n return allRefs\n .filter(ref => context.includeDeclaration || !ref.isDefinition)\n .map(ref => ref.location);\n }\n async getReferencesAtPosition(document, position, token) {\n this.#logger.log(LogLevel.Debug, 'ReferencesProvider.getReferencesAtPosition', { document: document.uri, version: document.version });\n const toc = await this.#tocProvider.getForDocument(document, { includeHtmlIds: true });\n if (token.isCancellationRequested) {\n return [];\n }\n const header = toc.entries.find(entry => rangeContains(entry.declarationLocation.range, position));\n if (header) {\n if (header.kind === 'header') {\n return this.#getReferencesToHeader(document, header, token);\n }\n else if (header.kind === 'html-id') {\n return this.#getReferencesToHtmlId(document, header, token);\n }\n else {\n return [];\n }\n }\n else {\n return this.#getReferencesToLinkAtPosition(document, position, token);\n }\n }\n async getReferencesToFileInWorkspace(resource, token) {\n this.#logger.log(LogLevel.Debug, 'ReferencesProvider.getAllReferencesToFileInWorkspace', { resource });\n const allLinksInWorkspace = await this.#getAllLinksInWorkspace();\n if (token.isCancellationRequested) {\n return [];\n }\n return Array.from(this.#findLinksToFile(resource, allLinksInWorkspace, undefined));\n }\n async #getReferencesToHeader(document, header, token) {\n const links = await this.#getAllLinksInWorkspace();\n if (token.isCancellationRequested) {\n return [];\n }\n const references = [];\n references.push({\n kind: MdReferenceKind.Header,\n isTriggerLocation: true,\n isDefinition: true,\n location: header.declarationLocation,\n header,\n });\n for (const link of links) {\n if (link.href.kind === HrefKind.Internal\n && looksLikePathToResource(this.#configuration, link.href.path, getDocUri(document))\n && this.#parser.slugifier.fromFragment(link.href.fragment).equals(header.slug)) {\n references.push({\n kind: MdReferenceKind.Link,\n isTriggerLocation: false,\n isDefinition: false,\n link,\n location: { uri: link.source.resource.toString(), range: link.source.hrefRange },\n });\n }\n }\n return references;\n }\n async #getReferencesToHtmlId(document, htmlId, token) {\n const links = await this.#getAllLinksInWorkspace();\n if (token.isCancellationRequested) {\n return [];\n }\n const references = [];\n references.push({\n kind: MdReferenceKind.HtmlId,\n isTriggerLocation: true,\n isDefinition: true,\n location: htmlId.declarationLocation,\n htmlId,\n });\n for (const link of links) {\n if (link.href.kind === HrefKind.Internal\n && looksLikePathToResource(this.#configuration, link.href.path, getDocUri(document))\n && this.#parser.slugifier.fromFragment(link.href.fragment).equals(htmlId.slug)) {\n references.push({\n kind: MdReferenceKind.Link,\n isTriggerLocation: false,\n isDefinition: false,\n link,\n location: { uri: link.source.resource.toString(), range: link.source.hrefRange },\n });\n }\n }\n return references;\n }\n async #getReferencesToLinkAtPosition(document, position, token) {\n const docLinks = (await this.#linkCache.getForDocs([document]))[0];\n if (token.isCancellationRequested) {\n return [];\n }\n for (const link of docLinks) {\n if (link.kind === MdLinkKind.Definition) {\n // We could be in either the ref name or the definition\n if (rangeContains(link.ref.range, position)) {\n return Array.from(this.#getReferencesToLinkReference(docLinks, link.ref.text, { resource: getDocUri(document), range: link.ref.range }));\n }\n else if (rangeContains(link.source.hrefRange, position)) {\n return this.#getReferencesToLink(docLinks, link, position, token);\n }\n }\n else {\n if (rangeContains(link.source.hrefRange, position)) {\n return this.#getReferencesToLink(docLinks, link, position, token);\n }\n }\n }\n return [];\n }\n async #getReferencesToLink(docLinks, sourceLink, triggerPosition, token) {\n if (sourceLink.href.kind === HrefKind.Reference) {\n return Array.from(this.#getReferencesToLinkReference(docLinks, sourceLink.href.ref, { resource: sourceLink.source.resource, range: sourceLink.source.hrefRange }));\n }\n // Otherwise find all occurrences of the link in the workspace\n const allLinksInWorkspace = await this.#getAllLinksInWorkspace();\n if (token.isCancellationRequested) {\n return [];\n }\n if (sourceLink.href.kind === HrefKind.External) {\n const references = [];\n for (const link of allLinksInWorkspace) {\n if (link.href.kind === HrefKind.External && isSameResource(link.href.uri, sourceLink.href.uri)) {\n const isTriggerLocation = sourceLink.source.resource.fsPath === link.source.resource.fsPath && areRangesEqual(sourceLink.source.hrefRange, link.source.hrefRange);\n references.push({\n kind: MdReferenceKind.Link,\n isTriggerLocation,\n isDefinition: false,\n link,\n location: { uri: link.source.resource.toString(), range: link.source.hrefRange },\n });\n }\n }\n return references;\n }\n const resolvedResource = await statLinkToMarkdownFile(this.#configuration, this.#workspace, sourceLink.href.path);\n if (token.isCancellationRequested) {\n return [];\n }\n const references = [];\n if (resolvedResource && this.#isMarkdownPath(resolvedResource) && sourceLink.href.fragment && sourceLink.source.hrefFragmentRange && rangeContains(sourceLink.source.hrefFragmentRange, triggerPosition)) {\n const toc = await this.#tocProvider.get(resolvedResource, { includeHtmlIds: true });\n const entry = toc?.lookupByFragment(sourceLink.href.fragment);\n if (entry && entry.kind === 'header') {\n references.push({\n kind: MdReferenceKind.Header,\n isTriggerLocation: false,\n isDefinition: true,\n location: entry.declarationLocation,\n header: entry,\n });\n }\n else if (entry && entry.kind === 'html-id') {\n references.push({\n kind: MdReferenceKind.HtmlId,\n isTriggerLocation: false,\n isDefinition: true,\n location: entry.declarationLocation,\n htmlId: entry,\n });\n }\n for (const link of allLinksInWorkspace) {\n if (link.href.kind !== HrefKind.Internal || !looksLikePathToResource(this.#configuration, link.href.path, resolvedResource)) {\n continue;\n }\n if (this.#parser.slugifier.fromHeading(link.href.fragment).equals(this.#parser.slugifier.fromHeading(sourceLink.href.fragment))) {\n const isTriggerLocation = sourceLink.source.resource.fsPath === link.source.resource.fsPath && areRangesEqual(sourceLink.source.hrefRange, link.source.hrefRange);\n references.push({\n kind: MdReferenceKind.Link,\n isTriggerLocation,\n isDefinition: false,\n link,\n location: { uri: link.source.resource.toString(), range: link.source.hrefRange },\n });\n }\n }\n }\n else { // Triggered on a link without a fragment so we only require matching the file and ignore fragments\n references.push(...this.#findLinksToFile(resolvedResource ?? sourceLink.href.path, allLinksInWorkspace, sourceLink));\n }\n return references;\n }\n async #getAllLinksInWorkspace() {\n return (await this.#linkCache.values()).flat();\n }\n #isMarkdownPath(resolvedHrefPath) {\n return this.#workspace.hasMarkdownDocument(resolvedHrefPath) || looksLikeMarkdownUri(this.#configuration, resolvedHrefPath);\n }\n *#findLinksToFile(resource, links, sourceLink) {\n for (const link of links) {\n if (link.href.kind !== HrefKind.Internal || !looksLikePathToResource(this.#configuration, link.href.path, resource)) {\n continue;\n }\n // Exclude cases where the file is implicitly referencing itself\n if (link.source.hrefText.startsWith('#') && link.source.resource.fsPath === resource.fsPath) {\n continue;\n }\n const isTriggerLocation = !!sourceLink && sourceLink.source.resource.fsPath === link.source.resource.fsPath && areRangesEqual(sourceLink.source.hrefRange, link.source.hrefRange);\n const pathRange = this.#getPathRange(link);\n yield {\n kind: MdReferenceKind.Link,\n isTriggerLocation,\n isDefinition: false,\n link,\n location: { uri: link.source.resource.toString(), range: pathRange },\n };\n }\n }\n *#getReferencesToLinkReference(allLinks, refToFind, from) {\n for (const link of allLinks) {\n let ref;\n if (link.kind === MdLinkKind.Definition) {\n ref = link.ref.text;\n }\n else if (link.href.kind === HrefKind.Reference) {\n ref = link.href.ref;\n }\n else {\n continue;\n }\n if (ref === refToFind && link.source.resource.fsPath === from.resource.fsPath) {\n const isTriggerLocation = from.resource.fsPath === link.source.resource.fsPath && ((link.href.kind === HrefKind.Reference && areRangesEqual(from.range, link.source.hrefRange)) || (link.kind === MdLinkKind.Definition && areRangesEqual(from.range, link.ref.range)));\n const pathRange = this.#getPathRange(link);\n yield {\n kind: MdReferenceKind.Link,\n isTriggerLocation,\n isDefinition: link.kind === MdLinkKind.Definition,\n link,\n location: { uri: from.resource.toString(), range: pathRange },\n };\n }\n }\n }\n /**\n * Get just the range of the file path, dropping the fragment\n */\n #getPathRange(link) {\n return link.source.hrefFragmentRange\n ? modifyRange(link.source.hrefRange, undefined, translatePosition(link.source.hrefFragmentRange.start, { characterDelta: -1 }))\n : link.source.hrefRange;\n }\n}\n//# sourceMappingURL=references.js.map","/*---------------------------------------------------------------------------------------------\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 l10n from '@vscode/l10n';\nimport * as path from 'node:path';\nimport * as lsp from 'vscode-languageserver-protocol';\nimport { defaultMarkdownFileExtension } from '../config.js';\nimport { LogLevel } from '../logging.js';\nimport { TableOfContents } from '../tableOfContents.js';\nimport { HrefKind, MdLinkKind } from '../types/documentLink.js';\nimport { InMemoryDocument, tempDocVersion } from '../types/inMemoryDocument.js';\nimport { arePositionsEqual, translatePosition } from '../types/position.js';\nimport { modifyRange, rangeContains } from '../types/range.js';\nimport { getDocUri } from '../types/textDocument.js';\nimport { WorkspaceEditBuilder } from '../util/editBuilder.js';\nimport { escapeForAngleBracketLink, needsAngleBracketLink, resolveInternalDocumentLink } from '../util/mdLinks.js';\nimport { computeRelativePath } from '../util/path.js';\nimport { tryDecodeUri } from '../util/uri.js';\nimport { URI, Utils } from '../util/vscodeUri.js';\nimport { statLinkToMarkdownFile } from '../workspace.js';\nimport { MdReferenceKind } from './references.js';\n/**\n * Error thrown when rename is not supported performed at the requested location.\n */\nexport class RenameNotSupportedAtLocationError extends Error {\n constructor() {\n super(l10n.t('Renaming is not supported here. Try renaming a header or link.'));\n }\n}\nexport class MdRenameProvider {\n #cachedRefs;\n #configuration;\n #workspace;\n #parser;\n #referencesProvider;\n #tableOfContentProvider;\n #slugifier;\n #logger;\n constructor(configuration, workspace, parser, referencesProvider, tableOfContentProvider, slugifier, logger) {\n this.#configuration = configuration;\n this.#workspace = workspace;\n this.#parser = parser;\n this.#referencesProvider = referencesProvider;\n this.#tableOfContentProvider = tableOfContentProvider;\n this.#slugifier = slugifier;\n this.#logger = logger;\n }\n async prepareRename(document, position, token) {\n this.#logger.log(LogLevel.Debug, 'RenameProvider.prepareRename', { document: document.uri, version: document.version });\n const allRefsInfo = await this.#getAllReferences(document, position, token);\n if (token.isCancellationRequested) {\n return undefined;\n }\n if (!allRefsInfo || !allRefsInfo.references.length) {\n throw new RenameNotSupportedAtLocationError();\n }\n const triggerRef = allRefsInfo.triggerRef;\n switch (triggerRef.kind) {\n case MdReferenceKind.Header: {\n return { range: triggerRef.header.idDeclarationLocation.range, placeholder: triggerRef.header.text };\n }\n case MdReferenceKind.HtmlId: {\n return { range: triggerRef.htmlId.declarationLocation.range, placeholder: triggerRef.htmlId.text };\n }\n case MdReferenceKind.Link: {\n if (triggerRef.link.kind === MdLinkKind.Definition) {\n // We may have been triggered on the ref or the definition itself\n if (rangeContains(triggerRef.link.ref.range, position)) {\n return { range: triggerRef.link.ref.range, placeholder: triggerRef.link.ref.text };\n }\n }\n if (triggerRef.link.href.kind === HrefKind.External) {\n return { range: triggerRef.link.source.hrefRange, placeholder: document.getText(triggerRef.link.source.hrefRange) };\n }\n // See if we are renaming the fragment or the path\n const { hrefFragmentRange } = triggerRef.link.source;\n if (hrefFragmentRange && rangeContains(hrefFragmentRange, position)) {\n const headerDeclaration = this.#findHeaderDeclaration(allRefsInfo.references);\n if (headerDeclaration) {\n return { range: hrefFragmentRange, placeholder: headerDeclaration.header.text };\n }\n const htmlIdDeclaration = this.#findHtmlIdDeclaration(allRefsInfo.references);\n if (htmlIdDeclaration) {\n return { range: hrefFragmentRange, placeholder: htmlIdDeclaration.htmlId.text };\n }\n return { range: hrefFragmentRange, placeholder: document.getText(hrefFragmentRange) };\n }\n const range = getFilePathRange(triggerRef.link);\n if (!range) {\n throw new RenameNotSupportedAtLocationError();\n }\n return { range, placeholder: tryDecodeUri(document.getText(range)) };\n }\n }\n }\n #findHeaderDeclaration(references) {\n return references.find(ref => ref.isDefinition && ref.kind === MdReferenceKind.Header);\n }\n #findHtmlIdDeclaration(references) {\n return references.find(ref => ref.isDefinition && ref.kind === MdReferenceKind.HtmlId);\n }\n async provideRenameEdits(document, position, newName, token) {\n this.#logger.log(LogLevel.Debug, 'RenameProvider.provideRenameEdits', { document: document.uri, version: document.version });\n const allRefsInfo = await this.#getAllReferences(document, position, token);\n if (token.isCancellationRequested || !allRefsInfo || !allRefsInfo.references.length) {\n return undefined;\n }\n const triggerRef = allRefsInfo.triggerRef;\n if (triggerRef.kind === MdReferenceKind.Link && ((triggerRef.link.kind === MdLinkKind.Definition && rangeContains(triggerRef.link.ref.range, position)) || triggerRef.link.href.kind === HrefKind.Reference)) {\n return this.#renameReferenceLinks(allRefsInfo, newName);\n }\n else if (triggerRef.kind === MdReferenceKind.Link && triggerRef.link.href.kind === HrefKind.External) {\n return this.#renameExternalLink(allRefsInfo, newName);\n }\n else if (triggerRef.kind === MdReferenceKind.Header || triggerRef.kind === MdReferenceKind.HtmlId || (triggerRef.kind === MdReferenceKind.Link && triggerRef.link.source.hrefFragmentRange && rangeContains(triggerRef.link.source.hrefFragmentRange, position) && (triggerRef.link.kind === MdLinkKind.Definition || triggerRef.link.kind === MdLinkKind.Link && triggerRef.link.href.kind === HrefKind.Internal))) {\n return this.#renameFragment(allRefsInfo, newName, token);\n }\n else if (triggerRef.kind === MdReferenceKind.Link && !(triggerRef.link.source.hrefFragmentRange && rangeContains(triggerRef.link.source.hrefFragmentRange, position)) && (triggerRef.link.kind === MdLinkKind.Link || triggerRef.link.kind === MdLinkKind.Definition) && triggerRef.link.href.kind === HrefKind.Internal) {\n return this.#renameFilePath(triggerRef.link.source.resource, triggerRef.link.href, allRefsInfo, newName, token);\n }\n return undefined;\n }\n async #renameFilePath(triggerDocument, triggerHref, allRefsInfo, newName, token) {\n const builder = new WorkspaceEditBuilder();\n const targetUri = await statLinkToMarkdownFile(this.#configuration, this.#workspace, triggerHref.path) ?? triggerHref.path;\n if (token.isCancellationRequested) {\n return builder.getEdit();\n }\n const rawNewFilePath = resolveInternalDocumentLink(triggerDocument, newName, this.#workspace);\n if (!rawNewFilePath) {\n return builder.getEdit();\n }\n let resolvedNewFilePath = rawNewFilePath.resource;\n if (!Utils.extname(resolvedNewFilePath)) {\n // If the newly entered path doesn't have a file extension but the original link did\n // tack on a .md file extension\n if (Utils.extname(targetUri)) {\n resolvedNewFilePath = resolvedNewFilePath.with({\n path: resolvedNewFilePath.path + '.' + (this.#configuration.markdownFileExtensions[0] ?? defaultMarkdownFileExtension)\n });\n }\n }\n // First rename the file\n if (await this.#workspace.stat(targetUri)) {\n builder.renameFile(targetUri, resolvedNewFilePath);\n }\n // Then update all refs to it\n for (const ref of allRefsInfo.references) {\n if (ref.kind === MdReferenceKind.Link) {\n const { range, newText } = this.#getLinkRenameEdit(ref, rawNewFilePath, newName);\n builder.replace(ref.link.source.resource, range, newText);\n }\n }\n return builder.getEdit();\n }\n #getLinkRenameEdit(ref, rawNewFilePath, newName) {\n // Try to preserve style of existing links\n const newLinkText = getLinkRenameText(this.#workspace, ref.link.source, rawNewFilePath.resource, newName.startsWith('./') || newName.startsWith('.\\\\'));\n return getLinkRenameEdit(ref.link, newLinkText ?? newName);\n }\n async #renameFragment(allRefsInfo, newHeaderText, token) {\n const builder = new WorkspaceEditBuilder();\n let newSlug = this.#slugifier.fromHeading(newHeaderText);\n const existingHeader = allRefsInfo.references.find(x => x.kind === MdReferenceKind.Header);\n if (existingHeader) {\n // If there's a real header we're renaming, we need to handle cases where there are duplicate header ids.\n // There are two cases of this to consider:\n //\n // - The new name duplicates an existing header. In this case, we need to use the unique slug of the new header\n // but also potentially update links to the other duplicated headers.\n //\n // - The old header was duplicated. This may result in links to other instances of the duplicated headers changing\n //\n // In both cases, there could be a cascading effect where multiple headers/links are updated.\n // For instance:\n //\n // ``\n // # Header\n // # Header <- rename here\n // # Header\n // ```\n //\n // In this case we need to rename the third header as well plus all reference to it.\n const doc = await this.#workspace.openMarkdownDocument(URI.parse(existingHeader.location.uri));\n if (token.isCancellationRequested) {\n return;\n }\n if (doc) {\n const editedDoc = new InMemoryDocument(URI.parse(existingHeader.location.uri), doc.getText(), tempDocVersion)\n .applyEdits([lsp.TextEdit.replace(existingHeader.location.range, '# ' + newHeaderText)]);\n const [oldToc, newToc] = await Promise.all([\n this.#tableOfContentProvider.getForDocument(doc),\n TableOfContents.create(this.#parser, editedDoc, token) // Don't use cache for new temp doc\n ]);\n if (token.isCancellationRequested) {\n return;\n }\n const changedHeaders = [];\n oldToc.entries.forEach((oldEntry, index) => {\n const newEntry = newToc.entries[index];\n if (!newEntry) {\n return;\n }\n if (oldEntry.declarationLocation.range.start.line === existingHeader.location.range.start.line) {\n newSlug = newEntry.slug; // Take the new slug from the edited document\n return;\n }\n if (newEntry && !oldEntry.slug.equals(newEntry.slug)) {\n changedHeaders.push(newEntry);\n }\n });\n for (const changedHeader of changedHeaders) {\n const refs = await this.#getAllReferences(doc, changedHeader.declarationLocation.range.start, token);\n if (token.isCancellationRequested) {\n return;\n }\n for (const ref of refs?.references ?? []) {\n if (ref.kind === MdReferenceKind.Link) {\n builder.replace(ref.link.source.resource, ref.link.source.hrefFragmentRange ?? ref.location.range, changedHeader.slug.value);\n }\n }\n }\n }\n }\n for (const ref of allRefsInfo.references) {\n switch (ref.kind) {\n case MdReferenceKind.Header:\n builder.replace(URI.parse(ref.location.uri), ref.header.idDeclarationLocation.range, newHeaderText);\n break;\n case MdReferenceKind.HtmlId:\n builder.replace(URI.parse(ref.location.uri), ref.htmlId.declarationLocation.range, newSlug.value);\n break;\n case MdReferenceKind.Link:\n builder.replace(ref.link.source.resource, ref.link.source.hrefFragmentRange ?? ref.location.range, !ref.link.source.hrefFragmentRange || ref.link.href.kind === HrefKind.External ? newHeaderText : newSlug.value);\n break;\n }\n }\n return builder.getEdit();\n }\n #renameExternalLink(allRefsInfo, newName) {\n const builder = new WorkspaceEditBuilder();\n for (const ref of allRefsInfo.references) {\n if (ref.kind === MdReferenceKind.Link) {\n builder.replace(ref.link.source.resource, ref.location.range, newName);\n }\n }\n return builder.getEdit();\n }\n #renameReferenceLinks(allRefsInfo, newName) {\n const builder = new WorkspaceEditBuilder();\n for (const ref of allRefsInfo.references) {\n if (ref.kind === MdReferenceKind.Link) {\n if (ref.link.kind === MdLinkKind.Definition) {\n builder.replace(ref.link.source.resource, ref.link.ref.range, newName);\n }\n else {\n builder.replace(ref.link.source.resource, ref.link.source.hrefFragmentRange ?? ref.location.range, newName);\n }\n }\n }\n return builder.getEdit();\n }\n async #getAllReferences(document, position, token) {\n const version = document.version;\n if (this.#cachedRefs\n && this.#cachedRefs.resource.fsPath === getDocUri(document).fsPath\n && this.#cachedRefs.version === document.version\n && arePositionsEqual(this.#cachedRefs.position, position)) {\n return this.#cachedRefs;\n }\n const references = await this.#referencesProvider.getReferencesAtPosition(document, position, token);\n if (token.isCancellationRequested) {\n return;\n }\n const triggerRef = references.find(ref => ref.isTriggerLocation);\n if (!triggerRef) {\n return undefined;\n }\n this.#cachedRefs = {\n resource: getDocUri(document),\n version,\n position,\n references,\n triggerRef\n };\n return this.#cachedRefs;\n }\n}\nexport function getLinkRenameText(workspace, source, newPath, preferDotSlash = false) {\n if (source.hrefText.startsWith('/')) {\n const root = resolveInternalDocumentLink(source.resource, '/', workspace);\n if (!root) {\n return undefined;\n }\n return '/' + path.posix.relative(root.resource.path, newPath.path);\n }\n return computeRelativePath(source.resource, newPath, preferDotSlash);\n}\nexport function getFilePathRange(link) {\n if (link.source.hrefFragmentRange) {\n return modifyRange(link.source.hrefRange, undefined, translatePosition(link.source.hrefFragmentRange.start, { characterDelta: -1 }));\n }\n return link.source.hrefRange;\n}\nfunction newPathWithFragmentIfNeeded(newPath, link) {\n if (link.href.kind === HrefKind.Internal && link.href.fragment) {\n return newPath + '#' + link.href.fragment;\n }\n return newPath;\n}\nexport function getLinkRenameEdit(link, newPathText) {\n const linkRange = link.source.hrefRange;\n // TODO: this won't be correct if the file name contains `\\`\n newPathText = newPathWithFragmentIfNeeded(newPathText.replace(/\\\\/g, '/'), link);\n if (link.source.isAngleBracketLink) {\n if (!needsAngleBracketLink(newPathText)) {\n // Remove the angle brackets\n const range = lsp.Range.create(translatePosition(linkRange.start, { characterDelta: -1 }), translatePosition(linkRange.end, { characterDelta: 1 }));\n return { range, newText: newPathText };\n }\n else {\n return { range: linkRange, newText: escapeForAngleBracketLink(newPathText) };\n }\n }\n // We might need to use angle brackets for the link\n if (needsAngleBracketLink(newPathText)) {\n return { range: linkRange, newText: `<${escapeForAngleBracketLink(newPathText)}>` };\n }\n return { range: linkRange, newText: newPathText };\n}\n//# sourceMappingURL=rename.js.map","/*---------------------------------------------------------------------------------------------\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 lsp from 'vscode-languageserver-protocol';\nimport { HrefKind, MdLinkKind } from '../types/documentLink.js';\nimport { translatePosition } from '../types/position.js';\nimport { modifyRange, rangeContains } from '../types/range.js';\nimport { getDocUri } from '../types/textDocument.js';\nimport { isSameResource, looksLikePathToResource } from '../util/path.js';\nimport { tryAppendMarkdownFileExtension } from '../workspace.js';\nimport { getFilePathRange } from './rename.js';\nexport class MdDocumentHighlightProvider {\n #configuration;\n #tocProvider;\n #linkProvider;\n constructor(configuration, tocProvider, linkProvider) {\n this.#configuration = configuration;\n this.#tocProvider = tocProvider;\n this.#linkProvider = linkProvider;\n }\n async getDocumentHighlights(document, position, token) {\n const toc = await this.#tocProvider.getForDocument(document);\n if (token.isCancellationRequested) {\n return [];\n }\n const { links } = await this.#linkProvider.getLinks(document);\n if (token.isCancellationRequested) {\n return [];\n }\n const header = toc.entries.find(entry => rangeContains(entry.declarationLocation.range, position));\n if (header) {\n return [...this.#getHighlightsForHeader(document, header, links, toc)];\n }\n return [...this.#getHighlightsForLinkAtPosition(document, position, links, toc)];\n }\n *#getHighlightsForHeader(document, header, links, toc) {\n yield { range: header.declarationLocation.range, kind: lsp.DocumentHighlightKind.Write };\n const docUri = getDocUri(document);\n for (const link of links) {\n if (link.href.kind === HrefKind.Internal\n && toc.lookupByFragment(link.href.fragment) === header\n && link.source.hrefFragmentRange\n && isSameResource(link.href.path, docUri)) {\n yield {\n range: modifyRange(link.source.hrefFragmentRange, translatePosition(link.source.hrefFragmentRange.start, { characterDelta: -1 })),\n kind: lsp.DocumentHighlightKind.Read,\n };\n }\n }\n }\n #getHighlightsForLinkAtPosition(document, position, links, toc) {\n const link = links.find(link => rangeContains(link.source.hrefRange, position) || (link.kind === MdLinkKind.Definition && rangeContains(link.ref.range, position)));\n if (!link) {\n return [];\n }\n if (link.kind === MdLinkKind.Definition && rangeContains(link.ref.range, position)) {\n // We are on the reference text inside the link definition\n return this.#getHighlightsForReference(link.ref.text, links);\n }\n switch (link.href.kind) {\n case HrefKind.Reference: {\n return this.#getHighlightsForReference(link.href.ref, links);\n }\n case HrefKind.Internal: {\n if (link.source.hrefFragmentRange && rangeContains(link.source.hrefFragmentRange, position)) {\n return this.#getHighlightsForLinkFragment(document, link.href, links, toc);\n }\n return this.#getHighlightsForLinkPath(link.href.path, links);\n }\n case HrefKind.External: {\n return this.#getHighlightsForExternalLink(link.href.uri, links);\n }\n }\n }\n *#getHighlightsForLinkFragment(document, href, links, toc) {\n const targetDoc = tryAppendMarkdownFileExtension(this.#configuration, href.path);\n if (!targetDoc) {\n return;\n }\n const fragment = href.fragment.toLowerCase();\n if (isSameResource(targetDoc, getDocUri(document))) {\n const header = toc.lookupByFragment(fragment);\n if (header) {\n yield { range: header.declarationLocation.range, kind: lsp.DocumentHighlightKind.Write };\n }\n }\n for (const link of links) {\n if (link.href.kind === HrefKind.Internal && looksLikePathToResource(this.#configuration, link.href.path, targetDoc)) {\n if (link.source.hrefFragmentRange && link.href.fragment.toLowerCase() === fragment) {\n yield {\n range: modifyRange(link.source.hrefFragmentRange, translatePosition(link.source.hrefFragmentRange.start, { characterDelta: -1 })),\n kind: lsp.DocumentHighlightKind.Read,\n };\n }\n }\n }\n }\n *#getHighlightsForLinkPath(path, links) {\n const targetDoc = tryAppendMarkdownFileExtension(this.#configuration, path) ?? path;\n for (const link of links) {\n if (link.href.kind === HrefKind.Internal && looksLikePathToResource(this.#configuration, link.href.path, targetDoc)) {\n yield {\n range: getFilePathRange(link),\n kind: lsp.DocumentHighlightKind.Read,\n };\n }\n }\n }\n *#getHighlightsForExternalLink(uri, links) {\n for (const link of links) {\n if (link.href.kind === HrefKind.External && isSameResource(link.href.uri, uri)) {\n yield {\n range: getFilePathRange(link),\n kind: lsp.DocumentHighlightKind.Read,\n };\n }\n }\n }\n *#getHighlightsForReference(ref, links) {\n for (const link of links) {\n if (link.kind === MdLinkKind.Definition && link.ref.text === ref) {\n yield {\n range: link.ref.range,\n kind: lsp.DocumentHighlightKind.Write,\n };\n }\n else if (link.href.kind === HrefKind.Reference && link.href.ref === ref) {\n yield {\n range: link.source.hrefRange,\n kind: lsp.DocumentHighlightKind.Read,\n };\n }\n }\n }\n}\n//# sourceMappingURL=documentHighlights.js.map","/*---------------------------------------------------------------------------------------------\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 *--------------------------------------------------------------------------------------------*/\n/**\n * @returns New array with all falsy values removed. The original array IS NOT modified.\n */\nexport function coalesce(array) {\n return array.filter(e => !!e);\n}\n//# sourceMappingURL=arrays.js.map","/*---------------------------------------------------------------------------------------------\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 *--------------------------------------------------------------------------------------------*/\n/**\n * Map of html tags to attributes that contain links.\n */\nexport const htmlTagPathAttrs = new Map([\n ['IMG', ['src']],\n ['VIDEO', ['src', 'placeholder']],\n ['SOURCE', ['src']],\n ['A', ['href']],\n]);\n//# sourceMappingURL=html.js.map","/*---------------------------------------------------------------------------------------------\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;\nimport * as l10n from '@vscode/l10n';\nimport { HTMLElement, parse } from 'node-html-parser';\nimport * as lsp from 'vscode-languageserver-protocol';\nimport { LogLevel } from '../logging.js';\nimport { HrefKind, LinkDefinitionSet, MdLinkKind } from '../types/documentLink.js';\nimport { translatePosition } from '../types/position.js';\nimport { getDocUri, getLine } from '../types/textDocument.js';\nimport { coalesce } from '../util/arrays.js';\nimport { Disposable } from '../util/dispose.js';\nimport { htmlTagPathAttrs } from '../util/html.js';\nimport { resolveInternalDocumentLink } from '../util/mdLinks.js';\nimport { NoLinkRanges } from '../util/noLinkRanges.js';\nimport { parseLocationInfoFromFragment } from '../util/path.js';\nimport { r } from '../util/string.js';\nimport { tryDecodeUri } from '../util/uri.js';\nimport { URI } from '../util/vscodeUri.js';\nimport { tryAppendMarkdownFileExtension } from '../workspace.js';\nimport { MdDocumentInfoCache, MdWorkspaceInfoCache } from '../workspaceCache.js';\nfunction createHref(sourceDocUri, link, workspace) {\n if (/^[a-z\\-][a-z\\-]+:/i.test(link)) {\n // Looks like a uri\n try {\n return { kind: HrefKind.External, uri: URI.parse(tryDecodeUri(link)) };\n }\n catch (e) {\n console.warn(r `Failed to parse link ${link} in ${sourceDocUri.toString(true)}`);\n return undefined;\n }\n }\n const resolved = resolveInternalDocumentLink(sourceDocUri, link, workspace);\n if (!resolved) {\n return undefined;\n }\n return {\n kind: HrefKind.Internal,\n path: resolved.resource,\n fragment: resolved.linkFragment,\n };\n}\nfunction createMdLink(document, targetText, preHrefText, rawLink, matchIndex, fullMatch, titleMatch, workspace) {\n const isAngleBracketLink = rawLink.startsWith('<');\n const link = stripAngleBrackets(rawLink);\n let linkTarget;\n try {\n linkTarget = createHref(getDocUri(document), link, workspace);\n }\n catch {\n return undefined;\n }\n if (!linkTarget) {\n return undefined;\n }\n const pre = targetText + preHrefText;\n const linkStartOffset = matchIndex;\n const linkStart = document.positionAt(linkStartOffset);\n const linkEnd = document.positionAt(linkStartOffset + fullMatch.length);\n const targetStart = document.positionAt(linkStartOffset + targetText.length);\n const targetRange = { start: targetStart, end: linkEnd };\n const hrefStartOffset = linkStartOffset + pre.length + (isAngleBracketLink ? 1 : 0);\n const hrefStart = document.positionAt(hrefStartOffset);\n const hrefEnd = document.positionAt(hrefStartOffset + link.length);\n const hrefRange = { start: hrefStart, end: hrefEnd };\n let titleRange;\n if (titleMatch) {\n const indexOfTitleInLink = fullMatch.indexOf(titleMatch);\n if (indexOfTitleInLink >= 0) {\n const titleStartOffset = linkStartOffset + indexOfTitleInLink;\n titleRange = lsp.Range.create(document.positionAt(titleStartOffset), document.positionAt(titleStartOffset + titleMatch.length));\n }\n }\n return {\n kind: MdLinkKind.Link,\n href: linkTarget,\n source: {\n hrefText: link,\n resource: getDocUri(document),\n range: { start: linkStart, end: linkEnd },\n targetRange,\n hrefRange,\n isAngleBracketLink,\n ...getLinkSourceFragmentInfo(document, link, hrefStart, hrefEnd),\n titleRange,\n }\n };\n}\nfunction getFragmentRange(text, start, end) {\n const index = text.indexOf('#');\n if (index < 0) {\n return undefined;\n }\n return { start: translatePosition(start, { characterDelta: index + 1 }), end };\n}\nfunction getLinkSourceFragmentInfo(document, link, linkStart, linkEnd) {\n const fragmentRange = getFragmentRange(link, linkStart, linkEnd);\n return {\n hrefPathText: document.getText({ start: linkStart, end: fragmentRange ? translatePosition(fragmentRange.start, { characterDelta: -1 }) : linkEnd }),\n hrefFragmentRange: fragmentRange,\n };\n}\nconst angleBracketLinkRe = /^<(.*)>$/;\n/**\n * Used to strip brackets from the markdown link\n *\n * <http://example.com> will be transformed to http://example.com\n*/\nfunction stripAngleBrackets(link) {\n return link.replace(angleBracketLinkRe, '$1');\n}\n/**\n * Matches `[text](link)` or `[text](<link>)`\n */\nconst linkPattern = new RegExp(r `(?<!\\\\)` + // Must not start with escape\n // text\n r `(!?\\[` + // open prefix match -->\n /**/ r `(?:` +\n /*****/ r `[^\\[\\]\\\\]|` + // Non-bracket chars, or...\n /*****/ r `\\\\.|` + // Escaped char, or...\n /*****/ r `\\[[^\\[\\]]*\\]` + // Matched bracket pair\n /**/ r `)*` +\n r `\\])` + // <-- close prefix match\n // Destination\n r `(\\(\\s*)` + // Pre href\n /**/ r `(` +\n /*****/ r `[^\\s\\(\\)\\<](?:[^\\s\\(\\)]|\\([^\\s\\(\\)]*?\\))*|` + // Link without whitespace, or...\n /*****/ r `<(?:\\\\[<>]|[^<>])+>` + // In angle brackets\n /**/ r `)` +\n // Title\n /**/ r `\\s*(?<title>\"[^\"]*\"|'[^']*'|\\([^\\(\\)]*\\))?\\s*` +\n r `\\)`, 'g');\n/**\n* Matches `[text][ref]` or `[shorthand]` or `[shorthand][]`\n*/\nconst referenceLinkPattern = new RegExp(r `(?<![\\]\\\\])` + // Must not start with another bracket\n r `(?:` +\n // [text][ref] or [text][]\n /**/ r `(?<prefix>` + // Start link prefix\n /****/ r `!?` + // Optional image ref\n /****/ r `\\[(?<text>(?:` + // Link text\n /******/ r `\\\\.|` + // escaped character, or...\n /******/ r `[^\\[\\]\\\\]|` + // non bracket char, or...\n /******/ r `\\[[^\\[\\]]*\\]` + // matched bracket pair\n /****/ `)*)\\]` + // end link text\n /****/ r `\\[\\s*` + // Start of link def\n /**/ r `)` + // end link prefix\n /**/ r `(?<ref>(?:[^\\\\\\]]|\\\\.)*?)\\]` + // link def\n /**/ r `|` +\n // [shorthand] but not [!shorthand]\n /****/ r `\\[(?!\\!)\\s*(?<shorthand>(?:\\\\.|[^\\[\\]\\n\\\\])+?)\\s*\\]` +\n r `)` +\n r `(?![\\(])`, // Must not be followed by a paren to avoid matching normal links\n'gm');\n/**\n * Matches `<http://example.com>`\n */\nconst autoLinkPattern = /(?<!\\\\)\\<(\\w+:[^\\>\\s]+)\\>/g;\n/**\n * Matches `[text]: link`\n */\nconst definitionPattern = /^([\\t ]*(?<!\\\\)\\[(?!\\^)((?:\\\\\\]|\\\\\\[|[^\\]\\[\\n])+)\\]:[\\t ]*)([^<]\\S*|<(?:\\\\[<>]|[^<>])+>)/gm;\n/**\n * Stateless object that extracts link information from markdown files.\n */\nexport class MdLinkComputer {\n #tokenizer;\n #workspace;\n constructor(tokenizer, workspace) {\n this.#tokenizer = tokenizer;\n this.#workspace = workspace;\n }\n async getAllLinks(document, token) {\n const tokens = await this.#tokenizer.tokenize(document);\n if (token.isCancellationRequested) {\n return [];\n }\n const noLinkRanges = NoLinkRanges.compute(tokens, document);\n const inlineLinks = Array.from(this.#getInlineLinks(document, noLinkRanges));\n return [\n ...inlineLinks,\n ...this.#getReferenceLinks(document, noLinkRanges.concatInline(inlineLinks.map(x => x.source.range))),\n ...this.#getLinkDefinitions(document, noLinkRanges),\n ...this.#getAutoLinks(document, noLinkRanges),\n ...this.#getHtmlLinks(document, noLinkRanges),\n ];\n }\n *#getInlineLinks(document, noLinkRanges) {\n const text = document.getText();\n for (const match of text.matchAll(linkPattern)) {\n const linkTextIncludingBrackets = match[1];\n const matchLinkData = createMdLink(document, linkTextIncludingBrackets, match[2], match[3], match.index ?? 0, match[0], match.groups?.['title'], this.#workspace);\n if (matchLinkData && !noLinkRanges.contains(matchLinkData.source.hrefRange.start)) {\n yield matchLinkData;\n // Also check for images in link text\n if (/\\![\\[\\(]/.test(linkTextIncludingBrackets)) {\n const linkText = linkTextIncludingBrackets.slice(1, -1);\n const startOffset = (match.index ?? 0) + 1;\n for (const innerMatch of linkText.matchAll(linkPattern)) {\n const innerData = createMdLink(document, innerMatch[1], innerMatch[2], innerMatch[3], startOffset + (innerMatch.index ?? 0), innerMatch[0], innerMatch.groups?.['title'], this.#workspace);\n if (innerData) {\n yield innerData;\n }\n }\n yield* this.#getReferenceLinksInText(document, linkText, startOffset, noLinkRanges);\n }\n }\n }\n }\n *#getAutoLinks(document, noLinkRanges) {\n const text = document.getText();\n const docUri = getDocUri(document);\n for (const match of text.matchAll(autoLinkPattern)) {\n const linkOffset = (match.index ?? 0);\n const linkStart = document.positionAt(linkOffset);\n if (noLinkRanges.contains(linkStart)) {\n continue;\n }\n const link = match[1];\n const linkTarget = createHref(docUri, link, this.#workspace);\n if (linkTarget?.kind !== HrefKind.External) {\n continue;\n }\n const linkEnd = translatePosition(linkStart, { characterDelta: match[0].length });\n const hrefStart = translatePosition(linkStart, { characterDelta: 1 });\n const hrefEnd = translatePosition(hrefStart, { characterDelta: link.length });\n const hrefRange = { start: hrefStart, end: hrefEnd };\n yield {\n kind: MdLinkKind.AutoLink,\n href: linkTarget,\n source: {\n isAngleBracketLink: false,\n hrefText: link,\n resource: docUri,\n targetRange: hrefRange,\n hrefRange: hrefRange,\n range: { start: linkStart, end: linkEnd },\n ...getLinkSourceFragmentInfo(document, link, hrefStart, hrefEnd),\n titleRange: undefined,\n }\n };\n }\n }\n #getReferenceLinks(document, noLinkRanges) {\n const text = document.getText();\n return this.#getReferenceLinksInText(document, text, 0, noLinkRanges);\n }\n *#getReferenceLinksInText(document, text, startingOffset, noLinkRanges) {\n for (const match of text.matchAll(referenceLinkPattern)) {\n if (!match.groups) {\n continue;\n }\n const linkStartOffset = startingOffset + (match.index ?? 0);\n const linkStart = document.positionAt(linkStartOffset);\n if (noLinkRanges.contains(linkStart)) {\n continue;\n }\n let hrefStart;\n let hrefEnd;\n let reference = match.groups['ref'];\n if (reference === '') { // [ref][],\n reference = match.groups['text'].trim();\n if (!reference) {\n continue;\n }\n const offset = linkStartOffset + 1;\n hrefStart = document.positionAt(offset);\n hrefEnd = document.positionAt(offset + reference.length);\n }\n else if (reference) { // [text][ref]\n const text = match.groups['text'];\n if (!text) {\n // Handle the case ![][cat]\n if (!match[0].startsWith('!')) {\n // Empty links are not valid\n continue;\n }\n }\n if (!match[0].startsWith('!')) {\n // Also get links in text\n yield* this.#getReferenceLinksInText(document, match[2], linkStartOffset + 1, noLinkRanges);\n }\n const pre = match[1];\n const offset = linkStartOffset + pre.length;\n hrefStart = document.positionAt(offset);\n hrefEnd = document.positionAt(offset + reference.length);\n }\n else if (match.groups['shorthand']) { // [ref]\n reference = match.groups['shorthand'].trim();\n if (!reference) {\n continue;\n }\n const offset = linkStartOffset + 1;\n hrefStart = document.positionAt(offset);\n const line = getLine(document, hrefStart.line);\n // See if link looks like link definition\n if (linkStart.character === 0 && line[match[0].length] === ':') {\n continue;\n }\n // See if link looks like a checkbox\n const checkboxMatch = line.match(/^\\s*[\\-\\*\\+]\\s*\\[x\\]/i);\n if (checkboxMatch && hrefStart.character <= checkboxMatch[0].length) {\n continue;\n }\n hrefEnd = document.positionAt(offset + reference.length);\n }\n else {\n continue;\n }\n const linkEnd = translatePosition(linkStart, { characterDelta: match[0].length });\n yield {\n kind: MdLinkKind.Link,\n source: {\n isAngleBracketLink: false,\n hrefText: reference,\n hrefPathText: reference,\n resource: getDocUri(document),\n range: { start: linkStart, end: linkEnd },\n targetRange: lsp.Range.create(translatePosition(hrefStart, { characterDelta: -1 }), translatePosition(hrefEnd, { characterDelta: 1 })),\n hrefRange: lsp.Range.create(hrefStart, hrefEnd),\n hrefFragmentRange: undefined,\n titleRange: undefined, // TODO: support title\n },\n href: {\n kind: HrefKind.Reference,\n ref: reference,\n }\n };\n }\n }\n *#getLinkDefinitions(document, noLinkRanges) {\n const text = document.getText();\n const docUri = getDocUri(document);\n for (const match of text.matchAll(definitionPattern)) {\n const offset = (match.index ?? 0);\n const linkStart = document.positionAt(offset);\n if (noLinkRanges.contains(linkStart)) {\n continue;\n }\n const pre = match[1];\n const reference = match[2];\n const rawLinkText = match[3].trim();\n const isAngleBracketLink = angleBracketLinkRe.test(rawLinkText);\n const linkText = stripAngleBrackets(rawLinkText);\n const target = createHref(docUri, linkText, this.#workspace);\n if (!target) {\n continue;\n }\n const hrefStart = translatePosition(linkStart, { characterDelta: pre.length + (isAngleBracketLink ? 1 : 0) });\n const hrefEnd = translatePosition(hrefStart, { characterDelta: linkText.length });\n const hrefRange = { start: hrefStart, end: hrefEnd };\n const refStart = translatePosition(linkStart, { characterDelta: 1 });\n const refRange = { start: refStart, end: translatePosition(refStart, { characterDelta: reference.length }) };\n const line = getLine(document, linkStart.line);\n const linkEnd = translatePosition(linkStart, { characterDelta: line.length });\n yield {\n kind: MdLinkKind.Definition,\n source: {\n isAngleBracketLink,\n hrefText: linkText,\n resource: docUri,\n range: { start: linkStart, end: linkEnd },\n targetRange: hrefRange,\n hrefRange,\n ...getLinkSourceFragmentInfo(document, rawLinkText, hrefStart, hrefEnd),\n titleRange: undefined, // TODO: support title\n },\n ref: { text: reference, range: refRange },\n href: target,\n };\n }\n }\n #getHtmlLinks(document, noLinkRanges) {\n const text = document.getText();\n if (!/<\\w/.test(text)) { // Only parse if there may be html\n return [];\n }\n try {\n const tree = parse(text);\n return this.#getHtmlLinksFromNode(document, tree, noLinkRanges);\n }\n catch {\n return [];\n }\n }\n static #linkAttrsByTag = new Map(Array.from(htmlTagPathAttrs.entries(), ([key, value]) => [key, value.map(attr => {\n return { attr, regexp: new RegExp(`(${attr}=[\"'])([^'\"]*)[\"']`, 'i') };\n })]));\n *#getHtmlLinksFromNode(document, node, noLinkRanges) {\n const attrs = _a.#linkAttrsByTag.get(node.tagName);\n if (attrs) {\n for (const attr of attrs) {\n const link = node.attributes[attr.attr];\n if (!link) {\n continue;\n }\n const attrMatch = node.outerHTML.match(attr.regexp);\n if (!attrMatch) {\n continue;\n }\n const docUri = getDocUri(document);\n const linkTarget = createHref(docUri, link, this.#workspace);\n if (!linkTarget) {\n continue;\n }\n const linkStart = document.positionAt(node.range[0] + attrMatch.index + attrMatch[1].length);\n if (noLinkRanges.contains(linkStart, 'html_block')) {\n continue;\n }\n const linkEnd = translatePosition(linkStart, { characterDelta: attrMatch[2].length });\n const hrefRange = { start: linkStart, end: linkEnd };\n yield {\n kind: MdLinkKind.Link,\n href: linkTarget,\n source: {\n isAngleBracketLink: false,\n hrefText: link,\n resource: docUri,\n targetRange: hrefRange,\n hrefRange: hrefRange,\n range: { start: linkStart, end: linkEnd },\n ...getLinkSourceFragmentInfo(document, link, linkStart, linkEnd),\n titleRange: undefined,\n }\n };\n }\n }\n for (const child of node.childNodes) {\n if (child instanceof HTMLElement) {\n yield* this.#getHtmlLinksFromNode(document, child, noLinkRanges);\n }\n }\n }\n}\n_a = MdLinkComputer;\n/**\n * Stateful object which provides links for markdown files the workspace.\n */\nexport class MdLinkProvider extends Disposable {\n #linkCache;\n #linkComputer;\n #config;\n #workspace;\n #tocProvider;\n #logger;\n constructor(config, tokenizer, workspace, tocProvider, logger) {\n super();\n this.#config = config;\n this.#workspace = workspace;\n this.#tocProvider = tocProvider;\n this.#logger = logger;\n this.#linkComputer = new MdLinkComputer(tokenizer, this.#workspace);\n this.#linkCache = this._register(new MdDocumentInfoCache(this.#workspace, (doc, token) => this.getLinksWithoutCaching(doc, token)));\n }\n getLinks(document) {\n return this.#linkCache.getForDocument(document);\n }\n async getLinksWithoutCaching(doc, token) {\n this.#logger.log(LogLevel.Debug, 'LinkProvider.compute', { document: doc.uri, version: doc.version });\n const links = await this.#linkComputer.getAllLinks(doc, token);\n return {\n links,\n definitions: new LinkDefinitionSet(links),\n };\n }\n async provideDocumentLinks(document, token) {\n const { links, definitions } = await this.getLinks(document);\n if (token.isCancellationRequested) {\n return [];\n }\n return coalesce(links.map(data => this.#toValidDocumentLink(data, definitions)));\n }\n async resolveDocumentLink(inLink, token) {\n const linkData = this.#reviveLinkHrefData(inLink);\n if (!linkData) {\n return undefined;\n }\n const target = await this.#resolveInternalLinkTarget(linkData, token);\n switch (target.kind) {\n case 'folder':\n inLink.target = this.#createCommandUri('revealInExplorer', linkData.path);\n break;\n case 'external':\n inLink.target = target.uri.toString(true);\n break;\n case 'file':\n if (target.positionOrRange) {\n inLink.target = this.#createOpenAtPosCommand(target.uri, target.positionOrRange);\n }\n else {\n inLink.target = target.uri.toString(true);\n }\n break;\n }\n return inLink;\n }\n async resolveLinkTarget(linkText, sourceDoc, token) {\n const href = createHref(sourceDoc, linkText, this.#workspace);\n if (href?.kind !== HrefKind.Internal) {\n return undefined;\n }\n const resolved = resolveInternalDocumentLink(sourceDoc, linkText, this.#workspace);\n if (!resolved) {\n return undefined;\n }\n return this.#resolveInternalLinkTarget({ path: resolved.resource, fragment: resolved.linkFragment, isAngleBracketLink: false }, token);\n }\n async #resolveInternalLinkTarget(linkData, token) {\n let target = linkData.path;\n // If there's a containing document, don't bother with trying to resolve the\n // link to a workspace file as one will not exist\n const containingContext = this.#workspace.getContainingDocument?.(target);\n if (!containingContext) {\n const stat = await this.#workspace.stat(target);\n if (stat?.isDirectory) {\n return { kind: 'folder', uri: target };\n }\n if (token.isCancellationRequested) {\n return { kind: 'folder', uri: target };\n }\n if (!stat) {\n // We don't think the file exists. If it doesn't already have an extension, try tacking on a `.md` and using that instead\n let found = false;\n const dotMdResource = tryAppendMarkdownFileExtension(this.#config, target);\n if (dotMdResource) {\n if (await this.#workspace.stat(dotMdResource)) {\n target = dotMdResource;\n found = true;\n }\n }\n if (!found) {\n return { kind: 'file', uri: target };\n }\n }\n }\n if (!linkData.fragment) {\n return { kind: 'file', uri: target };\n }\n // Try navigating with fragment that sets line number\n const locationLinkPosition = parseLocationInfoFromFragment(linkData.fragment);\n if (locationLinkPosition) {\n return { kind: 'file', uri: target, positionOrRange: locationLinkPosition };\n }\n // Try navigating to header in file\n const doc = await this.#workspace.openMarkdownDocument(target);\n if (token.isCancellationRequested) {\n return { kind: 'file', uri: target };\n }\n if (doc) {\n const toc = await this.#tocProvider.getForContainingDoc(doc, token);\n let entry = toc.lookByLink({ fragment: linkData.fragment, isAngleBracketLink: linkData.isAngleBracketLink });\n if (!entry) {\n // Also check HTML id attributes\n const tocWithHtmlIds = await this.#tocProvider.getForDocument(doc, { includeHtmlIds: true });\n entry = tocWithHtmlIds.lookByLink({ fragment: linkData.fragment, isAngleBracketLink: linkData.isAngleBracketLink });\n }\n if (entry) {\n return {\n kind: 'file',\n uri: URI.parse(entry.declarationLocation.uri),\n positionOrRange: entry.declarationLocation.range.start,\n fragment: linkData.fragment\n };\n }\n }\n return { kind: 'file', uri: target };\n }\n #reviveLinkHrefData(link) {\n if (!link.data) {\n return undefined;\n }\n const mdLink = link.data;\n if (mdLink.href.kind !== HrefKind.Internal) {\n return undefined;\n }\n return {\n path: URI.from(mdLink.href.path),\n fragment: mdLink.href.fragment,\n isAngleBracketLink: mdLink.source.isAngleBracketLink,\n };\n }\n #toValidDocumentLink(link, definitionSet) {\n switch (link.href.kind) {\n case HrefKind.External: {\n return {\n range: link.source.hrefRange,\n target: link.href.uri.toString(true),\n };\n }\n case HrefKind.Internal: {\n return {\n range: link.source.hrefRange,\n target: undefined, // Needs to be resolved later\n tooltip: l10n.t('Follow link'),\n data: link,\n };\n }\n case HrefKind.Reference: {\n // We only render reference links in the editor if they are actually defined.\n // This matches how reference links are rendered by markdown-it.\n const def = definitionSet.lookup(link.href.ref);\n if (!def) {\n return undefined;\n }\n const target = this.#createOpenAtPosCommand(link.source.resource, def.source.hrefRange.start);\n return {\n range: link.source.hrefRange,\n tooltip: l10n.t('Go to link definition'),\n target: target,\n data: link\n };\n }\n }\n }\n #createCommandUri(command, ...args) {\n return `command:${command}?${encodeURIComponent(JSON.stringify(args))}`;\n }\n #createOpenAtPosCommand(resource, posOrRange) {\n const start = lsp.Range.is(posOrRange) ? posOrRange.start : posOrRange;\n const end = lsp.Range.is(posOrRange) ? posOrRange.end : posOrRange;\n // If the resource itself already has a fragment, we need to handle opening specially\n // instead of using `file://path.md#L123` style uris\n if (resource.fragment) {\n // Match the args of `vscode.open`\n return this.#createCommandUri('vscodeMarkdownLanguageservice.open', resource, {\n selection: lsp.Range.create(start, end),\n });\n }\n const startFragment = `L${start.line + 1},${start.character + 1}`;\n const endFragment = (start.line === end.line && start.character === end.character)\n ? ''\n : `-L${end.line + 1},${end.character + 1}`;\n return resource.with({\n fragment: startFragment + endFragment\n }).toString(true);\n }\n}\nexport function createWorkspaceLinkCache(parser, workspace) {\n const linkComputer = new MdLinkComputer(parser, workspace);\n return new MdWorkspaceInfoCache(workspace, (doc, token) => linkComputer.getAllLinks(doc, token));\n}\n//# sourceMappingURL=documentLinks.js.map","/*---------------------------------------------------------------------------------------------\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 lsp from 'vscode-languageserver-protocol';\nimport { LogLevel } from '../logging.js';\nimport { MdLinkKind } from '../types/documentLink.js';\nimport { isBefore } from '../types/position.js';\nexport class MdDocumentSymbolProvider {\n #tocProvider;\n #linkProvider;\n #logger;\n constructor(tocProvider, linkProvider, logger) {\n this.#tocProvider = tocProvider;\n this.#linkProvider = linkProvider;\n this.#logger = logger;\n }\n async provideDocumentSymbols(document, options, token) {\n this.#logger.log(LogLevel.Debug, 'DocumentSymbolProvider.provideDocumentSymbols', { document: document.uri, version: document.version });\n const linkSymbols = await (options.includeLinkDefinitions ? this.#provideLinkDefinitionSymbols(document, token) : []);\n if (token.isCancellationRequested) {\n return [];\n }\n const toc = await this.#tocProvider.getForDocument(document);\n if (token.isCancellationRequested) {\n return [];\n }\n return this.#toSymbolTree(document, linkSymbols, toc);\n }\n #toSymbolTree(document, linkSymbols, toc) {\n const root = {\n level: -Infinity,\n children: [],\n parent: undefined,\n range: lsp.Range.create(0, 0, document.lineCount + 1, 0),\n };\n const additionalSymbols = [...linkSymbols];\n this.#buildTocSymbolTree(root, toc.entries, additionalSymbols);\n // Put remaining link definitions into top level document instead of last header\n root.children.push(...additionalSymbols);\n return root.children;\n }\n async #provideLinkDefinitionSymbols(document, token) {\n const { links } = await this.#linkProvider.getLinks(document);\n if (token.isCancellationRequested) {\n return [];\n }\n return links\n .filter(link => link.kind === MdLinkKind.Definition)\n .map((link) => this.#definitionToDocumentSymbol(link));\n }\n #definitionToDocumentSymbol(def) {\n return {\n kind: lsp.SymbolKind.Constant,\n name: `[${def.ref.text}]`,\n selectionRange: def.ref.range,\n range: def.source.range,\n };\n }\n #buildTocSymbolTree(root, entries, additionalSymbols) {\n let parent = root;\n for (const entry of entries) {\n if (entry.kind !== 'header') {\n continue;\n }\n while (additionalSymbols.length && isBefore(additionalSymbols[0].range.end, entry.sectionLocation.range.start)) {\n parent.children.push(additionalSymbols.shift());\n }\n while (parent && entry.level <= parent.level) {\n parent = parent.parent;\n }\n if (!parent) {\n // Should not happen\n return;\n }\n const symbol = this.#tocToDocumentSymbol(entry);\n symbol.children = [];\n parent.children.push(symbol);\n parent = { level: entry.level, children: symbol.children, parent, range: entry.sectionLocation.range };\n }\n }\n #tocToDocumentSymbol(entry) {\n return {\n name: this.#getTocSymbolName(entry),\n kind: lsp.SymbolKind.String,\n range: entry.sectionLocation.range,\n selectionRange: entry.sectionLocation.range\n };\n }\n #getTocSymbolName(entry) {\n return '#'.repeat(entry.level) + ' ' + entry.text;\n }\n}\n//# sourceMappingURL=documentSymbols.js.map","/*---------------------------------------------------------------------------------------------\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 path from 'node:path';\nimport { isExcludedPath } from '../config.js';\nimport { HrefKind } from '../types/documentLink.js';\nimport { getDocUri } from '../types/textDocument.js';\nimport { WorkspaceEditBuilder } from '../util/editBuilder.js';\nimport { removeNewUriExtIfNeeded, resolveInternalDocumentLink } from '../util/mdLinks.js';\nimport { isParentDir, isSameResource, looksLikeMarkdownUri } from '../util/path.js';\nimport { URI, Utils } from '../util/vscodeUri.js';\nimport { MdReferenceKind } from './references.js';\nimport { getLinkRenameEdit, getLinkRenameText } from './rename.js';\nexport class MdFileRenameProvider {\n #config;\n #workspace;\n #linkCache;\n #referencesProvider;\n constructor(config, workspace, linkCache, referencesProvider) {\n this.#config = config;\n this.#workspace = workspace;\n this.#linkCache = linkCache;\n this.#referencesProvider = referencesProvider;\n }\n async getRenameFilesInWorkspaceEdit(edits, token) {\n const builder = new WorkspaceEditBuilder();\n const participatingRenames = [];\n for (const edit of edits) {\n const stat = await this.#workspace.stat(edit.newUri);\n if (token.isCancellationRequested) {\n return undefined;\n }\n if (await (stat?.isDirectory ? this.#addDirectoryRenameEdits(edit, builder, token) : this.#addSingleFileRenameEdits(edit, edits, builder, token))) {\n participatingRenames.push(edit);\n }\n if (token.isCancellationRequested) {\n return undefined;\n }\n }\n return { participatingRenames, edit: builder.getEdit() };\n }\n async #addSingleFileRenameEdits(edit, allEdits, builder, token) {\n let didParticipate = false;\n // Update all references to the file\n if (await this.#addEditsForReferencesToFile(edit, builder, token)) {\n didParticipate = true;\n }\n if (token.isCancellationRequested) {\n return false;\n }\n // If the file moved was markdown, we also need to update links in the file itself\n if (await this.#tryAddEditsInSelf(edit, allEdits, builder)) {\n didParticipate = true;\n }\n return didParticipate;\n }\n async #addDirectoryRenameEdits(edit, builder, token) {\n // First update every link that points to something in the moved dir\n const allLinksInWorkspace = await this.#linkCache.entries();\n if (token.isCancellationRequested) {\n return false;\n }\n let didParticipate = false;\n for (const [docUri, links] of allLinksInWorkspace) {\n for (const link of links) {\n if (link.href.kind !== HrefKind.Internal || link.source.hrefText.startsWith('#')) {\n continue;\n }\n // Update links to the moved dir\n if (isParentDir(edit.oldUri, link.href.path)) {\n const relative = path.posix.relative(edit.oldUri.path, link.href.path.path);\n const newUri = edit.newUri.with({\n path: path.posix.join(edit.newUri.path, relative)\n });\n if (this.#addLinkRenameEdit(docUri, link, newUri, builder)) {\n didParticipate = true;\n continue;\n }\n }\n // If the link was within a file in the moved dir but traversed out of it, we also need to update the path\n if (link.source.hrefText.startsWith('..') && isParentDir(edit.newUri, docUri)) {\n // Resolve the link relative to the old file path\n const oldDocUri = docUri.with({\n path: Utils.joinPath(edit.oldUri, path.posix.relative(edit.newUri.path, docUri.path)).path\n });\n const oldLink = resolveInternalDocumentLink(oldDocUri, link.source.hrefText, this.#workspace);\n if (oldLink) {\n let newPathText;\n if (isParentDir(edit.oldUri, oldLink.resource)) {\n // The link still points within the directory being moved.\n // This means we just need to normalize the path it in case it was referencing any old names.\n const rootDir = Utils.dirname(oldDocUri);\n newPathText = './' + path.posix.relative(rootDir.path, oldLink.resource.path);\n }\n else {\n const rootDir = Utils.dirname(docUri);\n newPathText = path.posix.relative(rootDir.path, oldLink.resource.path);\n }\n const replacementPath = encodeURI(newPathText);\n if (replacementPath !== link.source.hrefPathText) {\n const { range, newText } = getLinkRenameEdit(link, replacementPath);\n builder.replace(docUri, range, newText);\n didParticipate = true;\n }\n }\n }\n }\n }\n return didParticipate;\n }\n /**\n * Try to add edits for when a markdown file has been renamed.\n * In this case we also need to update links within the file.\n */\n async #tryAddEditsInSelf(edit, allEdits, builder) {\n if (!looksLikeMarkdownUri(this.#config, edit.newUri)) {\n return false;\n }\n if (isExcludedPath(this.#config, edit.newUri)) {\n return false;\n }\n const doc = await this.#workspace.openMarkdownDocument(edit.newUri);\n if (!doc) {\n return false;\n }\n const links = (await this.#linkCache.getForDocs([doc]))[0];\n let didParticipate = false;\n for (const link of links) {\n if (await this.#addEditsForLinksInSelf(doc, link, edit, allEdits, builder)) {\n didParticipate = true;\n }\n }\n return didParticipate;\n }\n async #addEditsForLinksInSelf(doc, link, edit, allEdits, builder) {\n if (link.href.kind !== HrefKind.Internal) {\n return false;\n }\n if (link.source.hrefText.startsWith('#')) {\n // No rewrite needed as we are referencing the current doc implicitly\n return false;\n }\n if (link.source.hrefText.startsWith('/')) {\n // We likely don't need to update anything since an absolute path is used\n return false;\n }\n // Resolve the link relative to the old file path\n let oldLink = resolveInternalDocumentLink(edit.oldUri, link.source.hrefText, this.#workspace);\n if (!oldLink) {\n return false;\n }\n // See if the old link was effected by one of the renames\n for (const edit of allEdits) {\n if (isSameResource(edit.oldUri, oldLink.resource) || isParentDir(edit.oldUri, oldLink.resource)) {\n oldLink = { resource: Utils.joinPath(edit.newUri, path.posix.relative(edit.oldUri.path, oldLink.resource.path)), linkFragment: oldLink.linkFragment };\n break;\n }\n }\n return this.#addLinkRenameEdit(getDocUri(doc), link, oldLink.resource, builder);\n }\n /**\n * Update links across the workspace for the new file name\n */\n async #addEditsForReferencesToFile(edit, builder, token) {\n if (isExcludedPath(this.#config, edit.newUri)) {\n return false;\n }\n const refs = await this.#referencesProvider.getReferencesToFileInWorkspace(edit.oldUri, token);\n if (token.isCancellationRequested) {\n return false;\n }\n let didParticipate = false;\n for (const ref of refs) {\n if (ref.kind === MdReferenceKind.Link) {\n if (this.#addLinkRenameEdit(URI.parse(ref.location.uri), ref.link, edit.newUri, builder)) {\n didParticipate = true;\n }\n }\n }\n return didParticipate;\n }\n #addLinkRenameEdit(doc, link, newUri, builder) {\n if (link.href.kind !== HrefKind.Internal) {\n return false;\n }\n const newFilePath = removeNewUriExtIfNeeded(this.#config, link.href, newUri);\n const newLinkText = getLinkRenameText(this.#workspace, link.source, newFilePath, link.source.hrefText.startsWith('.'));\n if (typeof newLinkText === 'string') {\n const { range, newText } = getLinkRenameEdit(link, newLinkText);\n builder.replace(doc, range, newText);\n return true;\n }\n return false;\n }\n}\n//# sourceMappingURL=fileRename.js.map","/*---------------------------------------------------------------------------------------------\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 lsp from 'vscode-languageserver-protocol';\nimport { LogLevel } from '../logging.js';\nimport { getLine } from '../types/textDocument.js';\nimport { isEmptyOrWhitespace } from '../util/string.js';\nconst rangeLimit = 5000;\nexport class MdFoldingProvider {\n #parser;\n #tocProvider;\n #logger;\n constructor(parser, tocProvider, logger) {\n this.#parser = parser;\n this.#tocProvider = tocProvider;\n this.#logger = logger;\n }\n async provideFoldingRanges(document, token) {\n this.#logger.log(LogLevel.Debug, 'MdFoldingProvider.provideFoldingRanges', { document: document.uri, version: document.version });\n const foldables = await Promise.all([\n this.#getRegions(document, token),\n this.#getHeaderFoldingRanges(document, token),\n this.#getBlockFoldingRanges(document, token)\n ]);\n const result = foldables.flat();\n return result.length > rangeLimit ? result.slice(0, rangeLimit) : result;\n }\n async #getRegions(document, token) {\n const tokens = await this.#parser.tokenize(document);\n if (token.isCancellationRequested) {\n return [];\n }\n return Array.from(this.#getRegionsFromTokens(tokens));\n }\n *#getRegionsFromTokens(tokens) {\n const nestingStack = [];\n for (const token of tokens) {\n const marker = asRegionMarker(token);\n if (marker) {\n if (marker.isStart) {\n nestingStack.push(marker);\n }\n else if (nestingStack.length && nestingStack[nestingStack.length - 1].isStart) {\n yield { startLine: nestingStack.pop().token.map[0], endLine: marker.token.map[0], kind: lsp.FoldingRangeKind.Region };\n }\n else {\n // noop: invalid nesting (i.e. [end, start] or [start, end, end])\n }\n }\n }\n }\n async #getHeaderFoldingRanges(document, token) {\n const toc = await this.#tocProvider.getForDocument(document);\n if (token.isCancellationRequested) {\n return [];\n }\n return toc.entries\n .filter((entry) => entry.kind === 'header')\n .map((entry) => {\n let endLine = entry.sectionLocation.range.end.line;\n if (isEmptyOrWhitespace(getLine(document, endLine)) && endLine >= entry.declarationLocation.range.start.line + 1) {\n endLine = endLine - 1;\n }\n return { startLine: entry.declarationLocation.range.start.line, endLine };\n });\n }\n async #getBlockFoldingRanges(document, token) {\n const tokens = await this.#parser.tokenize(document);\n if (token.isCancellationRequested) {\n return [];\n }\n return Array.from(this.#getBlockFoldingRangesFromTokens(document, tokens));\n }\n *#getBlockFoldingRangesFromTokens(document, tokens) {\n for (const token of tokens) {\n if (isFoldableToken(token)) {\n const startLine = token.map[0];\n let endLine = token.map[1] - 1;\n if (isEmptyOrWhitespace(getLine(document, endLine)) && endLine >= startLine + 1) {\n endLine = endLine - 1;\n }\n if (endLine > startLine) {\n yield { startLine, endLine, kind: this.#getFoldingRangeKind(token) };\n }\n }\n }\n }\n #getFoldingRangeKind(listItem) {\n return listItem.type === 'html_block' && listItem.content.startsWith('<!--')\n ? lsp.FoldingRangeKind.Comment\n : undefined;\n }\n}\nfunction isStartRegion(t) { return /^\\s*<!--\\s*#?region\\b.*-->/.test(t); }\nfunction isEndRegion(t) { return /^\\s*<!--\\s*#?endregion\\b.*-->/.test(t); }\nfunction asRegionMarker(token) {\n if (!token.map || token.type !== 'html_block') {\n return undefined;\n }\n if (isStartRegion(token.content)) {\n return { token: token, isStart: true };\n }\n if (isEndRegion(token.content)) {\n return { token: token, isStart: false };\n }\n return undefined;\n}\nfunction isFoldableToken(token) {\n if (!token.map) {\n return false;\n }\n switch (token.type) {\n case 'fence':\n case 'list_item_open':\n case 'table_open':\n case 'blockquote_open':\n return token.map[1] > token.map[0];\n case 'html_block':\n if (asRegionMarker(token)) {\n return false;\n }\n return token.map[1] > token.map[0] + 1;\n default:\n return false;\n }\n}\n//# sourceMappingURL=folding.js.map","/*---------------------------------------------------------------------------------------------\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 { escapeForAngleBracketLink, needsAngleBracketLink } from './mdLinks.js';\nexport function inlineCode(text) {\n text = text.replace(/\\n/, '');\n const longestBacktickSequence = Math.max(0, ...Array.from(text.matchAll(/`+/g), ([match]) => match.length));\n const backticks = '`'.repeat(longestBacktickSequence + 1);\n return `${backticks}${text}${backticks}`;\n}\nexport function link(text, uri) {\n const path = uri.toString();\n return `[${escapeMarkdownSyntaxTokens(text.replace(/\\n/, ''))}](${bracketPathIfNeeded(path)})`;\n}\nexport function codeLink(text, uri) {\n const path = uri.toString();\n return `[${inlineCode(text)}](${bracketPathIfNeeded(path)})`;\n}\nexport function image(uri, alt, width) {\n const path = uri.toString();\n return `)})`;\n}\nexport function imageLink(uri, alt, width) {\n const path = uri.toString();\n return `[${image(uri, alt, width)}](${bracketPathIfNeeded(path)})`;\n}\nexport function video(uri, width) {\n const path = uri.toString();\n return `<video width=\"${width ?? ''}\" src=\"${escapeHtmlAttribute(path)}\" autoplay loop controls muted></video>`;\n}\nfunction escapeHtmlAttribute(value) {\n return value.replace(/\"/g, '"');\n}\nfunction bracketPathIfNeeded(path) {\n return needsAngleBracketLink(path) ? escapeForAngleBracketLink(path) : path;\n}\n/**\n * Escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash\n */\nfunction escapeMarkdownSyntaxTokens(text) {\n return text.replace(/[\\\\`*_{}[\\]()#+\\-!~]/g, '\\\\$&'); // CodeQL [SM02383] Backslash is escaped in the character class\n}\n//# sourceMappingURL=mdBuilder.js.map","/*---------------------------------------------------------------------------------------------\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 { Utils } from './vscodeUri.js';\nexport var MediaType;\n(function (MediaType) {\n MediaType[MediaType[\"Image\"] = 0] = \"Image\";\n MediaType[MediaType[\"Video\"] = 1] = \"Video\";\n})(MediaType || (MediaType = {}));\n/**\n * List of common file extensions that can be previewed.\n */\nconst previewableMediaFileExtension = new Map([\n // Image\n ['.bmp', MediaType.Image],\n ['.gif', MediaType.Image],\n ['.jpg', MediaType.Image],\n ['.jpeg', MediaType.Image],\n ['.png', MediaType.Image],\n ['.svg', MediaType.Image],\n ['.webp', MediaType.Image],\n ['.ico', MediaType.Image],\n ['.tiff', MediaType.Image],\n ['.tif', MediaType.Image],\n // Video\n ['.mp4', MediaType.Video],\n]);\nexport function getMediaPreviewType(uri) {\n const ext = Utils.extname(uri).toLowerCase();\n return previewableMediaFileExtension.get(ext);\n}\n//# sourceMappingURL=media.js.map","/*---------------------------------------------------------------------------------------------\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 { HrefKind } from '../types/documentLink.js';\nimport { rangeContains } from '../types/range.js';\nimport * as mdBuilder from '../util/mdBuilder.js';\nimport { getMediaPreviewType, MediaType } from '../util/media.js';\nexport class MdHoverProvider {\n #linkProvider;\n constructor(linkProvider) {\n this.#linkProvider = linkProvider;\n }\n async provideHover(document, pos, token) {\n const links = await this.#linkProvider.getLinks(document);\n if (token.isCancellationRequested) {\n return;\n }\n const link = links.links.find(link => rangeContains(link.source.hrefRange, pos));\n if (!link || link.href.kind === HrefKind.Reference) {\n return;\n }\n const contents = this.#getHoverContents(link);\n return contents && {\n contents,\n range: link.source.hrefRange\n };\n }\n #getHoverContents(link) {\n if (link.href.kind === HrefKind.Reference) {\n return undefined;\n }\n const uri = link.href.kind === HrefKind.External ? link.href.uri : link.href.path;\n const mediaType = getMediaPreviewType(uri);\n const maxWidth = 300;\n switch (mediaType) {\n case MediaType.Image: {\n return {\n kind: 'markdown',\n value: mdBuilder.imageLink(uri, '', maxWidth),\n };\n }\n case MediaType.Video: {\n return {\n kind: 'markdown',\n value: mdBuilder.video(uri, maxWidth),\n };\n }\n }\n return undefined;\n }\n}\n//# sourceMappingURL=hover.js.map","/*---------------------------------------------------------------------------------------------\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 l10n from '@vscode/l10n';\nimport { dirname, extname, resolve } from 'node:path';\nimport * as lsp from 'vscode-languageserver-protocol';\nimport { isExcludedPath } from '../config.js';\nimport { translatePosition } from '../types/position.js';\nimport { getDocUri, getLine } from '../types/textDocument.js';\nimport { htmlTagPathAttrs } from '../util/html.js';\nimport * as mdBuilder from '../util/mdBuilder.js';\nimport { escapeForAngleBracketLink, hasBalancedParens } from '../util/mdLinks.js';\nimport { MediaType, getMediaPreviewType } from '../util/media.js';\nimport { computeRelativePath, isSameResource, looksLikeMarkdownFilePath } from '../util/path.js';\nimport { Schemes } from '../util/schemes.js';\nimport { r } from '../util/string.js';\nimport { URI, Utils } from '../util/vscodeUri.js';\nimport { getWorkspaceFolder, openLinkToMarkdownFile } from '../workspace.js';\nimport { MdWorkspaceInfoCache } from '../workspaceCache.js';\nvar CompletionContextKind;\n(function (CompletionContextKind) {\n /** `[...](|)` */\n CompletionContextKind[CompletionContextKind[\"Link\"] = 0] = \"Link\";\n /** `[...][|]` */\n CompletionContextKind[CompletionContextKind[\"ReferenceLink\"] = 1] = \"ReferenceLink\";\n /** `[]: |` */\n CompletionContextKind[CompletionContextKind[\"LinkDefinition\"] = 2] = \"LinkDefinition\";\n /** <img src=\"|\"> */\n CompletionContextKind[CompletionContextKind[\"HtmlAttribute\"] = 3] = \"HtmlAttribute\";\n})(CompletionContextKind || (CompletionContextKind = {}));\nfunction tryDecodeUriComponent(str) {\n try {\n return decodeURIComponent(str);\n }\n catch {\n return str;\n }\n}\n/**\n * Controls if header completions for other files in the workspace be returned.\n */\nexport var IncludeWorkspaceHeaderCompletions;\n(function (IncludeWorkspaceHeaderCompletions) {\n /**\n * Never return workspace header completions.\n */\n IncludeWorkspaceHeaderCompletions[\"never\"] = \"never\";\n /**\n * Return workspace header completions after `##` is typed.\n *\n * This lets the user signal\n */\n IncludeWorkspaceHeaderCompletions[\"onDoubleHash\"] = \"onDoubleHash\";\n /**\n * Return workspace header completions after either a single `#` is typed or after `##`\n *\n * For a single hash, this means the workspace header completions will be returned along side the current file header completions.\n */\n IncludeWorkspaceHeaderCompletions[\"onSingleOrDoubleHash\"] = \"onSingleOrDoubleHash\";\n})(IncludeWorkspaceHeaderCompletions || (IncludeWorkspaceHeaderCompletions = {}));\nconst sortTexts = Object.freeze({\n localHeader: '1',\n workspaceHeader: '2',\n});\n/**\n * Adds path completions in markdown files.\n */\nexport class MdPathCompletionProvider {\n #configuration;\n #workspace;\n #linkProvider;\n #tocProvider;\n #workspaceTocCache;\n constructor(configuration, workspace, linkProvider, tocProvider) {\n this.#configuration = configuration;\n this.#workspace = workspace;\n this.#linkProvider = linkProvider;\n this.#tocProvider = tocProvider;\n this.#workspaceTocCache = new MdWorkspaceInfoCache(workspace, (doc) => tocProvider.getForDocument(doc));\n }\n async provideCompletionItems(document, position, context, token) {\n const pathContext = this.#getPathCompletionContext(document, position);\n if (!pathContext) {\n return [];\n }\n const items = [];\n for await (const item of this.#provideCompletionItems(document, position, pathContext, context, token)) {\n items.push(item);\n }\n return items;\n }\n async *#provideCompletionItems(document, position, context, options, token) {\n switch (context.kind) {\n case CompletionContextKind.ReferenceLink: {\n yield* this.#provideReferenceSuggestions(document, position, context, token);\n return;\n }\n case CompletionContextKind.LinkDefinition:\n case CompletionContextKind.Link:\n case CompletionContextKind.HtmlAttribute: {\n if (!context.isImageLink) {\n if ((context.linkPrefix.startsWith('#') && options.includeWorkspaceHeaderCompletions === IncludeWorkspaceHeaderCompletions.onSingleOrDoubleHash) ||\n (context.linkPrefix.startsWith('##') && (options.includeWorkspaceHeaderCompletions === IncludeWorkspaceHeaderCompletions.onDoubleHash || options.includeWorkspaceHeaderCompletions === IncludeWorkspaceHeaderCompletions.onSingleOrDoubleHash))) {\n const insertRange = lsp.Range.create(context.linkTextStartPosition, position);\n yield* this.#provideWorkspaceHeaderSuggestions(document, position, context, insertRange, token);\n return;\n }\n const isAnchorInCurrentDoc = context.anchorInfo && context.anchorInfo.beforeAnchor.length === 0;\n // Add anchor #links in current doc\n if (context.linkPrefix.length === 0 || isAnchorInCurrentDoc) {\n const insertRange = lsp.Range.create(context.linkTextStartPosition, position);\n yield* this.#provideHeaderSuggestions(document, position, context, insertRange, token, true);\n }\n if (token.isCancellationRequested) {\n return;\n }\n if (!isAnchorInCurrentDoc) {\n if (context.anchorInfo) { // Anchor to a different document\n const rawUri = this.#resolveReference(document, context.anchorInfo.beforeAnchor);\n if (rawUri) {\n const otherDoc = await openLinkToMarkdownFile(this.#configuration, this.#workspace, rawUri);\n if (token.isCancellationRequested) {\n return;\n }\n if (otherDoc) {\n const anchorStartPosition = translatePosition(position, { characterDelta: -(context.anchorInfo.anchorPrefix.length + 1) });\n const range = lsp.Range.create(anchorStartPosition, position);\n yield* this.#provideHeaderSuggestions(otherDoc, position, context, range, token, false);\n }\n }\n }\n else { // Normal path suggestions\n yield* this.#providePathSuggestions(document, position, context, token);\n }\n }\n }\n else {\n // Image links only get path suggestions, not header/anchor completions\n if (!context.anchorInfo && !context.linkPrefix.startsWith('#')) {\n yield* this.#providePathSuggestions(document, position, context, token);\n }\n }\n return;\n }\n }\n }\n /// [...](...|\n #linkStartPattern = new RegExp(\n // text\n r `\\[` +\n /**/ r `(?:` +\n /*****/ r `[^\\[\\]\\\\]|` + // Non-bracket chars, or...\n /*****/ r `\\\\.|` + // Escaped char, or...\n /*****/ r `\\[[^\\[\\]]*\\]` + // Matched bracket pair\n /**/ r `)*` +\n r `\\]` +\n // Destination start\n r `\\(\\s*(<[^\\>\\)]*|[^\\s\\(\\)]*)` +\n r `$` // Must match cursor position\n );\n /// [...][...|\n #referenceLinkStartPattern = /\\[([^\\]]*?)\\]\\[\\s*([^\\s\\(\\)]*)$/;\n /// [ref...|\n #referenceLinkShortHandPrefix = /(?<![\\]\\)])\\[([^\\s\\(\\)]*)$/;\n /// [id]: |\n #definitionPattern = /^\\s*\\[(?!\\^)(?:\\\\\\]|\\\\\\[|[^\\]\\[\\n])+]:\\s*([^\\s]*)$/m;\n /// [id]: |\n #htmlAttributeStartPattern = /\\<(?<tag>\\w+)([^>]*)\\s(?<attr>\\w+)=['\"](?<link>[^'\"]*)$/m;\n #getPathCompletionContext(document, position) {\n const line = getLine(document, position.line);\n const linePrefixText = line.slice(0, position.character);\n const lineSuffixText = line.slice(position.character);\n const htmlAttributePrefixMatch = linePrefixText.match(this.#htmlAttributeStartPattern);\n if (htmlAttributePrefixMatch?.groups) {\n const validPathAttrs = htmlTagPathAttrs.get(htmlAttributePrefixMatch.groups.tag.toUpperCase());\n if (!validPathAttrs || !validPathAttrs.some(attr => attr === htmlAttributePrefixMatch.groups.attr.toLowerCase())) {\n return undefined;\n }\n const prefix = htmlAttributePrefixMatch.groups.link;\n if (this.#refLooksLikeUrl(prefix)) {\n return undefined;\n }\n const suffix = lineSuffixText.match(/^[^\\s'\"]*/);\n return this.#createCompletionContext(CompletionContextKind.HtmlAttribute, position, prefix, suffix?.[0] ?? '', false);\n }\n const linkPrefixMatch = linePrefixText.match(this.#linkStartPattern);\n if (linkPrefixMatch) {\n const isAngleBracketLink = linkPrefixMatch[1].startsWith('<');\n const prefix = linkPrefixMatch[1].slice(isAngleBracketLink ? 1 : 0);\n if (this.#refLooksLikeUrl(prefix)) {\n return undefined;\n }\n const isImageLink = linePrefixText.charAt(linkPrefixMatch.index - 1) === '!';\n const suffix = lineSuffixText.match(/^[^\\)\\s][^\\)\\s\\>]*/);\n return this.#createCompletionContext(CompletionContextKind.Link, position, prefix, suffix?.[0] ?? '', isAngleBracketLink, isImageLink);\n }\n const definitionLinkPrefixMatch = linePrefixText.match(this.#definitionPattern);\n if (definitionLinkPrefixMatch) {\n const isAngleBracketLink = definitionLinkPrefixMatch[1].startsWith('<');\n const prefix = definitionLinkPrefixMatch[1].slice(isAngleBracketLink ? 1 : 0);\n if (this.#refLooksLikeUrl(prefix)) {\n return undefined;\n }\n const suffix = lineSuffixText.match(/^[^\\s]*/);\n return this.#createCompletionContext(CompletionContextKind.LinkDefinition, position, prefix, suffix?.[0] ?? '', isAngleBracketLink);\n }\n const fullReferenceLinkPrefixMatch = linePrefixText.match(this.#referenceLinkStartPattern);\n if (fullReferenceLinkPrefixMatch) {\n const prefix = fullReferenceLinkPrefixMatch[2];\n const suffix = lineSuffixText.match(/^[^\\]\\s]*/);\n return {\n kind: CompletionContextKind.ReferenceLink,\n linkPrefix: prefix,\n linkTextStartPosition: translatePosition(position, { characterDelta: -prefix.length }),\n linkSuffix: suffix ? suffix[0] : '',\n };\n }\n const shorthandReferenceLinkPrefixMatch = linePrefixText.match(this.#referenceLinkShortHandPrefix);\n if (shorthandReferenceLinkPrefixMatch) {\n const prefix = shorthandReferenceLinkPrefixMatch[1];\n const suffix = lineSuffixText.match(/^[^\\]\\s]*/);\n return {\n kind: CompletionContextKind.ReferenceLink,\n linkPrefix: prefix,\n linkTextStartPosition: translatePosition(position, { characterDelta: -prefix.length }),\n linkSuffix: suffix ? suffix[0] : '',\n };\n }\n return undefined;\n }\n #createCompletionContext(kind, position, prefix, suffix, isAngleBracketPath, isImageLink) {\n return {\n kind,\n linkPrefix: prefix,\n linkTextStartPosition: translatePosition(position, { characterDelta: -prefix.length }),\n linkSuffix: suffix,\n anchorInfo: this.#getAnchorContext(prefix),\n isAngleBracketPath,\n isImageLink,\n };\n }\n /**\n * Check if {@param ref} looks like a 'http:' style url.\n */\n #refLooksLikeUrl(prefix) {\n return /^\\s*[\\w\\d\\-]+:/.test(prefix);\n }\n #getAnchorContext(prefix) {\n const anchorMatch = prefix.match(/^([^#]*)#([^#]*)$/);\n if (!anchorMatch) {\n return undefined;\n }\n return {\n beforeAnchor: anchorMatch[1],\n anchorPrefix: anchorMatch[2],\n };\n }\n async *#provideReferenceSuggestions(document, position, context, token) {\n const insertionRange = lsp.Range.create(context.linkTextStartPosition, position);\n const replacementRange = lsp.Range.create(insertionRange.start, translatePosition(position, { characterDelta: context.linkSuffix.length }));\n const { definitions } = await this.#linkProvider.getLinks(document);\n if (token.isCancellationRequested) {\n return;\n }\n for (const def of definitions) {\n yield {\n kind: lsp.CompletionItemKind.Reference,\n label: def.ref.text,\n detail: l10n.t(`Reference link '{0}'`, def.ref.text),\n textEdit: {\n newText: def.ref.text,\n insert: insertionRange,\n replace: replacementRange,\n },\n };\n }\n }\n async *#provideHeaderSuggestions(document, position, context, insertionRange, token, isCurrentDoc) {\n const toc = await this.#tocProvider.getForContainingDoc(document, token, isCurrentDoc ? { includeHtmlIds: true } : undefined);\n if (token.isCancellationRequested) {\n return;\n }\n const replacementRange = lsp.Range.create(insertionRange.start, translatePosition(position, { characterDelta: context.linkSuffix.length }));\n for (const entry of toc.entries) {\n const completionItem = this.#createTocCompletion(entry, insertionRange, replacementRange, undefined);\n completionItem.labelDetails = {};\n yield completionItem;\n }\n }\n #createTocCompletion(entry, insertionRange, replacementRange, filePathOnSystem) {\n if (entry.kind === 'html-id') {\n return this.#createHtmlIdCompletion(entry, insertionRange, replacementRange, filePathOnSystem);\n }\n else {\n return this.#createHeaderCompletion(entry, insertionRange, replacementRange, filePathOnSystem);\n }\n }\n #createHeaderCompletion(entry, insertionRange, replacementRange, filePathOnSystem) {\n const label = '#' + decodeURIComponent(entry.slug.value);\n const newText = (filePathOnSystem ?? '') + '#' + decodeURIComponent(entry.slug.value);\n return {\n kind: lsp.CompletionItemKind.Reference,\n label,\n detail: l10n.t(`Link to '{0}'`, '#'.repeat(entry.level) + ' ' + entry.text),\n textEdit: {\n newText,\n insert: insertionRange,\n replace: replacementRange,\n },\n };\n }\n #createHtmlIdCompletion(entry, insertionRange, replacementRange, filePathOnSystem) {\n const label = '#' + decodeURIComponent(entry.slug.value);\n const newText = (filePathOnSystem ?? '') + '#' + decodeURIComponent(entry.slug.value);\n return {\n kind: lsp.CompletionItemKind.Value,\n label,\n detail: l10n.t(`Link to HTML id '{0}'`, entry.text),\n textEdit: {\n newText,\n insert: insertionRange,\n replace: replacementRange,\n },\n };\n }\n /**\n * Suggestions for headers across all md files in the workspace\n */\n async *#provideWorkspaceHeaderSuggestions(document, position, context, insertionRange, token) {\n const tocs = await this.#workspaceTocCache.entries();\n if (token.isCancellationRequested) {\n return;\n }\n const replacementRange = lsp.Range.create(insertionRange.start, translatePosition(position, { characterDelta: context.linkSuffix.length }));\n for (const [toDoc, toc] of tocs) {\n const isHeaderInCurrentDocument = isSameResource(toDoc, getDocUri(document));\n const rawPath = isHeaderInCurrentDocument ? '' : computeRelativePath(getDocUri(document), toDoc);\n if (typeof rawPath === 'undefined') {\n continue;\n }\n // For the current document, use the TOC that includes HTML id entries\n const effectiveToc = isHeaderInCurrentDocument\n ? await this.#tocProvider.getForDocument(document, { includeHtmlIds: true })\n : toc;\n const normalizedPath = this.#normalizeFileNameCompletion(rawPath);\n const path = this.#getPathInsertText(context, normalizedPath);\n for (const entry of effectiveToc.entries) {\n const completionItem = this.#createTocCompletion(entry, insertionRange, replacementRange, path);\n completionItem.filterText = '#' + completionItem.label;\n completionItem.sortText = isHeaderInCurrentDocument ? sortTexts.localHeader : sortTexts.workspaceHeader;\n if (!isHeaderInCurrentDocument && path) {\n completionItem.detail = l10n.t(`Link to '# {0}' in '{1}'`, entry.text, path);\n completionItem.labelDetails = { description: path };\n }\n yield completionItem;\n }\n }\n }\n async *#providePathSuggestions(document, position, context, token) {\n const valueBeforeLastSlash = context.linkPrefix.substring(0, context.linkPrefix.lastIndexOf('/') + 1); // keep the last slash\n const parentDir = this.#resolveReference(document, valueBeforeLastSlash ? tryDecodeUriComponent(valueBeforeLastSlash) : '.');\n if (!parentDir) {\n return;\n }\n const pathSegmentStart = translatePosition(position, { characterDelta: valueBeforeLastSlash.length - context.linkPrefix.length });\n const insertRange = lsp.Range.create(pathSegmentStart, position);\n const pathSegmentEnd = translatePosition(position, { characterDelta: context.linkSuffix.length });\n const replacementRange = lsp.Range.create(pathSegmentStart, pathSegmentEnd);\n let dirInfo;\n try {\n dirInfo = await this.#workspace.readDirectory(parentDir);\n }\n catch {\n return;\n }\n if (token.isCancellationRequested) {\n return;\n }\n // eslint-disable-next-line prefer-const\n for (let [name, type] of dirInfo) {\n const uri = Utils.joinPath(parentDir, name);\n if (isExcludedPath(this.#configuration, uri)) {\n continue;\n }\n if (!type.isDirectory) {\n name = this.#normalizeFileNameCompletion(name);\n }\n const isDir = type.isDirectory;\n const newText = this.#getPathInsertText(context, name) + (isDir ? '/' : '');\n const label = isDir ? name + '/' : name;\n yield {\n label,\n kind: isDir ? lsp.CompletionItemKind.Folder : lsp.CompletionItemKind.File,\n detail: l10n.t(`Link to '{0}'`, label),\n documentation: this.#getPathDocumentation(uri, type),\n textEdit: {\n newText,\n insert: insertRange,\n replace: replacementRange,\n },\n command: isDir ? { command: 'editor.action.triggerSuggest', title: '' } : undefined,\n };\n }\n }\n #getPathDocumentation(uri, stat) {\n let documentation = stat.isDirectory\n ? mdBuilder.inlineCode(uri.path + '/') // TODO: support links to folders too\n : mdBuilder.codeLink(uri.path, uri);\n if (!stat.isDirectory) {\n const maxMediaWidth = 300;\n switch (getMediaPreviewType(uri)) {\n case MediaType.Image: {\n documentation += `\\n\\n${mdBuilder.imageLink(uri, 'Linked image', maxMediaWidth)}`;\n break;\n }\n case MediaType.Video: {\n documentation += `\\n\\n${mdBuilder.video(uri, maxMediaWidth)}`;\n break;\n }\n }\n }\n return {\n kind: lsp.MarkupKind.Markdown,\n value: documentation,\n };\n }\n #getPathInsertText(context, name) {\n // If the path has a literal `%` in it, we need encode it to prevent\n // it being incorrectly decoded\n name = name.replaceAll('%', '%25');\n if (context.kind === CompletionContextKind.HtmlAttribute) {\n return name\n .replaceAll(`\"`, '"')\n .replaceAll(`'`, ''');\n }\n if (context.isAngleBracketPath) {\n return escapeForAngleBracketLink(name);\n }\n if (!hasBalancedParens(name)) {\n name = name.replace(/([()])/g, '\\\\$1'); // CodeQL [SM02383] This code is for editing text, not sanitizing rendered markdown\n }\n return name.replaceAll(' ', '%20');\n }\n #normalizeFileNameCompletion(name) {\n if (this.#configuration.preferredMdPathExtensionStyle === 'removeExtension') {\n if (looksLikeMarkdownFilePath(this.#configuration, name)) {\n const ext = extname(name);\n name = name.slice(0, -ext.length);\n }\n }\n return name;\n }\n #resolveReference(document, ref) {\n const docUri = this.#getFileUriOfTextDocument(document);\n if (ref.startsWith('/')) {\n const workspaceFolder = getWorkspaceFolder(this.#workspace, docUri);\n if (workspaceFolder) {\n return Utils.joinPath(workspaceFolder, ref);\n }\n else {\n return this.#resolvePath(docUri, ref.slice(1));\n }\n }\n return this.#resolvePath(docUri, ref);\n }\n #resolvePath(root, ref) {\n try {\n if (root.scheme === Schemes.file) {\n return URI.file(resolve(dirname(root.fsPath), ref));\n }\n else {\n return root.with({\n path: resolve(dirname(root.path), ref),\n });\n }\n }\n catch {\n return undefined;\n }\n }\n #getFileUriOfTextDocument(document) {\n return this.#workspace.getContainingDocument?.(getDocUri(document))?.uri ?? getDocUri(document);\n }\n}\n//# sourceMappingURL=pathCompletions.js.map","/*---------------------------------------------------------------------------------------------\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 lsp from 'vscode-languageserver-protocol';\nimport { LogLevel } from '../logging.js';\nimport { HrefKind, MdLinkKind } from '../types/documentLink.js';\nimport { translatePosition } from '../types/position.js';\nimport { areRangesEqual, modifyRange, rangeContains } from '../types/range.js';\nimport { getLine } from '../types/textDocument.js';\nimport { coalesce } from '../util/arrays.js';\nimport { isEmptyOrWhitespace } from '../util/string.js';\nexport class MdSelectionRangeProvider {\n #parser;\n #tocProvider;\n #linkProvider;\n #logger;\n constructor(parser, tocProvider, documentLink, logger) {\n this.#parser = parser;\n this.#tocProvider = tocProvider;\n this.#linkProvider = documentLink;\n this.#logger = logger;\n }\n async provideSelectionRanges(document, positions, token) {\n this.#logger.log(LogLevel.Debug, 'MdSelectionRangeProvider.provideSelectionRanges', { document: document.uri, version: document.version });\n return coalesce(await Promise.all(positions.map(position => this.#provideSelectionRange(document, position, token))));\n }\n async #provideSelectionRange(document, position, token) {\n const headerRange = await this.#getHeaderSelectionRange(document, position, token);\n if (token.isCancellationRequested) {\n return;\n }\n const blockRange = await this.#getBlockSelectionRange(document, position, headerRange, token);\n if (token.isCancellationRequested) {\n return;\n }\n const inlineRange = await createInlineRange(document, position, blockRange, this.#linkProvider, token);\n if (token.isCancellationRequested) {\n return;\n }\n return inlineRange ?? blockRange ?? headerRange;\n }\n async #getBlockSelectionRange(document, position, parent, token) {\n const tokens = await this.#parser.tokenize(document);\n if (token.isCancellationRequested) {\n return undefined;\n }\n const blockTokens = getBlockTokensForPosition(tokens, position, parent);\n if (blockTokens.length === 0) {\n return undefined;\n }\n let currentRange = parent ?? createBlockRange(blockTokens.shift(), document, position.line, undefined);\n for (let i = 0; i < blockTokens.length; i++) {\n currentRange = createBlockRange(blockTokens[i], document, position.line, currentRange);\n }\n return currentRange;\n }\n async #getHeaderSelectionRange(document, position, token) {\n const toc = await this.#tocProvider.getForDocument(document);\n if (token.isCancellationRequested) {\n return undefined;\n }\n const headerInfo = getHeadersForPosition(toc.entries.filter((entry) => entry.kind === 'header'), position);\n const headers = headerInfo.headers;\n let currentRange;\n for (let i = 0; i < headers.length; i++) {\n const tocEntry = headers[i];\n if (tocEntry.kind === 'header') {\n currentRange = createHeaderRange(tocEntry, i === headers.length - 1, headerInfo.headerOnThisLine, currentRange, getFirstChildHeader(document, tocEntry, toc.entries));\n }\n }\n return currentRange;\n }\n}\nfunction getHeadersForPosition(toc, position) {\n const enclosingHeaders = toc.filter(header => header.sectionLocation.range.start.line <= position.line && header.sectionLocation.range.end.line >= position.line);\n const sortedHeaders = enclosingHeaders.sort((header1, header2) => (header1.declarationLocation.range.start.line - position.line) - (header2.declarationLocation.range.start.line - position.line));\n const onThisLine = toc.find(header => header.declarationLocation.range.start.line === position.line) !== undefined;\n return {\n headers: sortedHeaders,\n headerOnThisLine: onThisLine\n };\n}\nfunction createHeaderRange(header, isClosestHeaderToPosition, onHeaderLine, parent, startOfChildRange) {\n const range = header.sectionLocation.range;\n const contentRange = lsp.Range.create(translatePosition(range.start, { lineDelta: 1 }), range.end);\n if (onHeaderLine && isClosestHeaderToPosition && startOfChildRange) {\n // selection was made on this header line, so select header and its content until the start of its first child\n // then all of its content\n return makeSelectionRange(modifyRange(range, undefined, startOfChildRange), makeSelectionRange(range, parent));\n }\n else if (onHeaderLine && isClosestHeaderToPosition) {\n // selection was made on this header line and no children so expand to all of its content\n return makeSelectionRange(range, parent);\n }\n else if (isClosestHeaderToPosition && startOfChildRange) {\n // selection was made within content and has child so select content\n // of this header then all content then header\n return makeSelectionRange(modifyRange(contentRange, undefined, startOfChildRange), makeSelectionRange(contentRange, (makeSelectionRange(range, parent))));\n }\n else {\n // not on this header line so select content then header\n return makeSelectionRange(contentRange, makeSelectionRange(range, parent));\n }\n}\nfunction getBlockTokensForPosition(tokens, position, parent) {\n const enclosingTokens = tokens.filter((token) => !!token.map && (token.map[0] <= position.line && token.map[1] > position.line) && (!parent || (token.map[0] >= parent.range.start.line && token.map[1] <= parent.range.end.line + 1)) && isBlockElement(token));\n if (enclosingTokens.length === 0) {\n return [];\n }\n const sortedTokens = enclosingTokens.sort((token1, token2) => (token2.map[1] - token2.map[0]) - (token1.map[1] - token1.map[0]));\n return sortedTokens;\n}\nfunction createBlockRange(block, document, cursorLine, parent) {\n if (block.type === 'fence') {\n return createFencedRange(block, cursorLine, document, parent);\n }\n let startLine = isEmptyOrWhitespace(getLine(document, block.map[0])) ? block.map[0] + 1 : block.map[0];\n let endLine = startLine === block.map[1] ? block.map[1] : block.map[1] - 1;\n if (block.type === 'paragraph_open' && block.map[1] - block.map[0] === 2) {\n startLine = endLine = cursorLine;\n }\n else if (isList(block) && isEmptyOrWhitespace(getLine(document, endLine))) {\n endLine = endLine - 1;\n }\n // For table rows and table sections, start at the first pipe character instead of column 0\n let startChar = 0;\n if (block.type === 'tr_open' || block.type === 'tbody_open' || block.type === 'thead_open') {\n const lineText = getLine(document, startLine);\n const pipeIndex = lineText.indexOf('|');\n if (pipeIndex >= 0) {\n startChar = pipeIndex;\n }\n }\n const range = lsp.Range.create(startLine, startChar, endLine, getLine(document, endLine).length);\n if (parent && rangeContains(parent.range, range) && !areRangesEqual(parent.range, range)) {\n return makeSelectionRange(range, parent);\n }\n else if (parent && areRangesEqual(parent.range, range)) {\n return parent;\n }\n else {\n return makeSelectionRange(range, undefined);\n }\n}\nasync function createInlineRange(document, cursorPosition, parent, linkProvider, token) {\n const lineText = getLine(document, cursorPosition.line);\n // Check for table cell selection first\n const tableCellSelection = createTableCellRange(lineText, cursorPosition.character, cursorPosition.line, parent);\n const boldSelection = createBoldRange(lineText, cursorPosition.character, cursorPosition.line, tableCellSelection ?? parent);\n const italicSelection = createOtherInlineRange(lineText, cursorPosition.character, cursorPosition.line, true, tableCellSelection ?? parent);\n let comboSelection;\n if (boldSelection && italicSelection && !areRangesEqual(boldSelection.range, italicSelection.range)) {\n if (rangeContains(boldSelection.range, italicSelection.range)) {\n comboSelection = createOtherInlineRange(lineText, cursorPosition.character, cursorPosition.line, true, boldSelection);\n }\n else if (rangeContains(italicSelection.range, boldSelection.range)) {\n comboSelection = createBoldRange(lineText, cursorPosition.character, cursorPosition.line, italicSelection);\n }\n }\n const linkSelection = await createLinkRange(document, cursorPosition, comboSelection ?? boldSelection ?? italicSelection ?? tableCellSelection ?? parent, linkProvider, token);\n if (token.isCancellationRequested) {\n return;\n }\n const inlineCodeBlockSelection = createOtherInlineRange(lineText, cursorPosition.character, cursorPosition.line, false, linkSelection ?? tableCellSelection ?? parent);\n return inlineCodeBlockSelection ?? linkSelection ?? comboSelection ?? boldSelection ?? italicSelection ?? tableCellSelection;\n}\n/**\n * Parse table cell boundaries from a table row line.\n * Each cell boundary spans from one pipe to the next (inclusive).\n */\nfunction getTableCellBoundaries(lineText) {\n // Find all unescaped pipe positions\n const pipePositions = [];\n for (let i = 0; i < lineText.length; i++) {\n if (lineText[i] === '|' && (i === 0 || lineText[i - 1] !== '\\\\')) {\n pipePositions.push(i);\n }\n }\n // Need at least 2 pipes for a valid table row\n if (pipePositions.length < 2) {\n return [];\n }\n // Each cell spans from one pipe to the next (inclusive of trailing pipe)\n const cells = [];\n for (let i = 0; i < pipePositions.length - 1; i++) {\n cells.push({\n start: pipePositions[i],\n end: pipePositions[i + 1] + 1\n });\n }\n return cells;\n}\n/**\n * Check if a line is a table separator row (e.g., \"|---|---|\")\n */\nfunction isTableSeparatorRow(lineText) {\n const trimmed = lineText.trim();\n if (!trimmed.startsWith('|') || !trimmed.endsWith('|')) {\n return false;\n }\n // Separator rows contain only pipes, dashes, colons (for alignment), and spaces\n const content = trimmed.slice(1, -1);\n return /^[\\s|:\\-]+$/.test(content) && content.includes('-');\n}\n/**\n * Create selection range for the table cell containing the cursor.\n */\nfunction createTableCellRange(lineText, cursorChar, cursorLine, parent) {\n if (isTableSeparatorRow(lineText)) {\n return undefined;\n }\n const cells = getTableCellBoundaries(lineText);\n for (const cell of cells) {\n if (cursorChar >= cell.start && cursorChar < cell.end) {\n const cellRange = lsp.Range.create(cursorLine, cell.start, cursorLine, cell.end);\n const cellSelectionRange = makeSelectionRange(cellRange, parent);\n // Add inner content range: everything between the pipe characters\n const contentStart = cell.start + 1; // skip leading pipe\n const contentEnd = cell.end - 1; // skip trailing pipe\n if (contentStart < contentEnd) {\n const contentRange = lsp.Range.create(cursorLine, contentStart, cursorLine, contentEnd);\n if (!areRangesEqual(contentRange, cellRange)) {\n return makeSelectionRange(contentRange, cellSelectionRange);\n }\n }\n return cellSelectionRange;\n }\n }\n return undefined;\n}\n// #endregion\nfunction createFencedRange(token, cursorLine, document, parent) {\n const startLine = token.map[0];\n const endLine = token.map[1] - 1;\n const onFenceLine = cursorLine === startLine || cursorLine === endLine;\n const fenceRange = lsp.Range.create(startLine, 0, endLine, getLine(document, endLine).length);\n const contentRange = endLine - startLine > 2 && !onFenceLine ? lsp.Range.create(startLine + 1, 0, endLine - 1, getLine(document, endLine - 1).length) : undefined;\n if (contentRange) {\n return makeSelectionRange(contentRange, makeSelectionRange(fenceRange, parent));\n }\n else {\n if (parent && areRangesEqual(parent.range, fenceRange)) {\n return parent;\n }\n else {\n return makeSelectionRange(fenceRange, parent);\n }\n }\n}\nfunction createBoldRange(lineText, cursorChar, cursorLine, parent) {\n const regex = /\\*\\*([^*]+\\*?[^*]+\\*?[^*]+)\\*\\*/gim;\n const matches = [...lineText.matchAll(regex)].filter(match => lineText.indexOf(match[0]) <= cursorChar && lineText.indexOf(match[0]) + match[0].length >= cursorChar);\n if (matches.length) {\n // should only be one match, so select first and index 0 contains the entire match\n const bold = matches[0][0];\n const startIndex = lineText.indexOf(bold);\n const cursorOnStars = cursorChar === startIndex || cursorChar === startIndex + 1 || cursorChar === startIndex + bold.length || cursorChar === startIndex + bold.length - 1;\n const contentAndStars = makeSelectionRange(lsp.Range.create(cursorLine, startIndex, cursorLine, startIndex + bold.length), parent);\n const content = makeSelectionRange(lsp.Range.create(cursorLine, startIndex + 2, cursorLine, startIndex + bold.length - 2), contentAndStars);\n return cursorOnStars ? contentAndStars : content;\n }\n return undefined;\n}\nfunction createOtherInlineRange(lineText, cursorChar, cursorLine, isItalic, parent) {\n const italicRegexes = [/(?:[^*]+)(\\*([^*]+)(?:\\*\\*[^*]*\\*\\*)*([^*]+)\\*)(?:[^*]+)/g, /^(?:[^*]*)(\\*([^*]+)(?:\\*\\*[^*]*\\*\\*)*([^*]+)\\*)(?:[^*]*)$/g];\n let matches = [];\n if (isItalic) {\n matches = [...lineText.matchAll(italicRegexes[0])].filter(match => lineText.indexOf(match[0]) <= cursorChar && lineText.indexOf(match[0]) + match[0].length >= cursorChar);\n if (!matches.length) {\n matches = [...lineText.matchAll(italicRegexes[1])].filter(match => lineText.indexOf(match[0]) <= cursorChar && lineText.indexOf(match[0]) + match[0].length >= cursorChar);\n }\n }\n else {\n matches = [...lineText.matchAll(/\\`[^\\`]*\\`/g)].filter(match => lineText.indexOf(match[0]) <= cursorChar && lineText.indexOf(match[0]) + match[0].length >= cursorChar);\n }\n if (matches.length) {\n // should only be one match, so select first and select group 1 for italics because that contains just the italic section\n // doesn't include the leading and trailing characters which are guaranteed to not be * so as not to be confused with bold\n const match = isItalic ? matches[0][1] : matches[0][0];\n const startIndex = lineText.indexOf(match);\n const cursorOnType = cursorChar === startIndex || cursorChar === startIndex + match.length;\n const contentAndType = makeSelectionRange(lsp.Range.create(cursorLine, startIndex, cursorLine, startIndex + match.length), parent);\n const content = makeSelectionRange(lsp.Range.create(cursorLine, startIndex + 1, cursorLine, startIndex + match.length - 1), contentAndType);\n return cursorOnType ? contentAndType : content;\n }\n return undefined;\n}\nasync function createLinkRange(document, cursorPos, parent, linkProvider, token) {\n const allLinks = await linkProvider.getLinks(document);\n if (token.isCancellationRequested) {\n return;\n }\n const linksInRange = allLinks.links.filter(link => rangeContains(link.source.range, cursorPos));\n // For nested image links, the inner most list is returned last\n const link = linksInRange.at(-1);\n if (!link) {\n return;\n }\n if (link.kind === MdLinkKind.AutoLink) {\n return makeSelectionRange(link.source.hrefRange, makeSelectionRange(link.source.range, parent));\n }\n if (link.href.kind === HrefKind.Reference && areRangesEqual(link.source.targetRange, link.source.range)) {\n return makeSelectionRange(link.source.targetRange, parent);\n }\n const fullLinkSelectionRange = makeSelectionRange(link.source.range, parent);\n // determine if cursor is within [text] or (url) in order to know which should be selected\n if (rangeContains(link.source.targetRange, cursorPos)) {\n // Inside the href\n if (link.kind === MdLinkKind.Definition) {\n return makeSelectionRange(link.source.targetRange, fullLinkSelectionRange);\n }\n // Create two ranges, one for the href content and one for the content plus brackets\n const linkDestRanges = makeSelectionRange(lsp.Range.create(translatePosition(link.source.targetRange.start, { characterDelta: 1 }), translatePosition(link.source.targetRange.end, { characterDelta: -1 })), makeSelectionRange(link.source.targetRange, fullLinkSelectionRange));\n if (link.source.titleRange) {\n // If we're inside the title, create a range for the title\n if (rangeContains(link.source.titleRange, cursorPos)) {\n return makeSelectionRange(link.source.titleRange, linkDestRanges);\n }\n }\n if (link.source.isAngleBracketLink) {\n // If we're inside an angle bracket link, create a range for the contents of the bracket and the brackets\n if (rangeContains(link.source.hrefRange, cursorPos)) {\n return makeSelectionRange(link.source.hrefRange, makeSelectionRange(lsp.Range.create(translatePosition(link.source.hrefRange.start, { characterDelta: -1 }), translatePosition(link.source.hrefRange.end, { characterDelta: 1 })), linkDestRanges));\n }\n }\n if (link.source.titleRange) {\n // If we have a title but are not inside it, create an extra range just for the href too without the title\n return makeSelectionRange(link.source.hrefRange, linkDestRanges);\n }\n return linkDestRanges;\n }\n else {\n // Inside the text\n if (link.kind === MdLinkKind.Definition) {\n return makeSelectionRange(lsp.Range.create(translatePosition(link.source.range.start, { characterDelta: 1 }), translatePosition(link.source.targetRange.start, { characterDelta: -3 })), fullLinkSelectionRange);\n }\n return makeSelectionRange(lsp.Range.create(translatePosition(link.source.range.start, { characterDelta: 1 }), translatePosition(link.source.targetRange.start, { characterDelta: -1 })), fullLinkSelectionRange);\n }\n}\nfunction isList(token) {\n return token.type ? ['ordered_list_open', 'list_item_open', 'bullet_list_open'].includes(token.type) : false;\n}\nfunction isBlockElement(token) {\n return !['list_item_close', 'paragraph_close', 'bullet_list_close', 'inline', 'heading_close', 'heading_open'].includes(token.type);\n}\nfunction getFirstChildHeader(document, header, toc) {\n let childRange;\n if (header && toc) {\n const children = toc.filter((t) => t.kind === 'header' && rangeContains(header.sectionLocation.range, t.sectionLocation.range) && t.sectionLocation.range.start.line > header.sectionLocation.range.start.line).sort((t1, t2) => t1.declarationLocation.range.start.line - t2.declarationLocation.range.start.line);\n if (children.length > 0) {\n childRange = children[0].sectionLocation.range.start;\n const lineText = getLine(document, childRange.line - 1);\n return childRange ? translatePosition(childRange, { lineDelta: -1, characterDelta: lineText.length }) : undefined;\n }\n }\n return undefined;\n}\nfunction makeSelectionRange(range, parent) {\n if (parent && areRangesEqual(parent.range, range)) {\n return parent;\n }\n return { range, parent };\n}\n//# sourceMappingURL=smartSelect.js.map","/*---------------------------------------------------------------------------------------------\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 lsp from 'vscode-languageserver-protocol';\nimport { HrefKind, LinkDefinitionSet } from '../types/documentLink.js';\nimport { InMemoryDocument, tempDocVersion } from '../types/inMemoryDocument.js';\nimport { isBefore, isBeforeOrEqual } from '../types/position.js';\nimport { rangeContains } from '../types/range.js';\nimport { getDocUri } from '../types/textDocument.js';\nimport { removeNewUriExtIfNeeded } from '../util/mdLinks.js';\nimport { computeRelativePath, isSameResource } from '../util/path.js';\nimport { URI } from '../util/vscodeUri.js';\nimport { createAddDefinitionEdit } from './codeActions/extractLinkDef.js';\nclass PasteLinksCopyMetadata {\n source;\n links;\n static fromJSON(json) {\n const obj = JSON.parse(json);\n return new PasteLinksCopyMetadata(URI.parse(obj.source), new LinkDefinitionSet(obj.links));\n }\n constructor(source, links) {\n this.source = source;\n this.links = links;\n }\n toJSON() {\n return JSON.stringify({\n source: this.source.toString(),\n links: this.links ? Array.from(this.links) : undefined,\n });\n }\n}\nexport class MdUpdatePastedLinksProvider {\n #config;\n #linkProvider;\n constructor(config, linkProvider) {\n this.#config = config;\n this.#linkProvider = linkProvider;\n }\n async prepareDocumentPaste(document, _ranges, token) {\n const linkInfo = await this.#linkProvider.getLinks(document);\n if (token.isCancellationRequested) {\n return '';\n }\n const metadata = new PasteLinksCopyMetadata(getDocUri(document), linkInfo.definitions);\n return metadata.toJSON();\n }\n async provideDocumentPasteEdits(targetDocument, pastes, rawCopyMetadata, token) {\n const metadata = this.#parseMetadata(rawCopyMetadata);\n if (!metadata) {\n return;\n }\n // If pasting into same doc copied from, there's no need to rewrite anything\n if (isSameResource(getDocUri(targetDocument), metadata.source)) {\n return;\n }\n // Bail early if there's nothing that looks like it could be a link in the pasted text\n if (!pastes.some(p => p.newText.includes(']') || p.newText.includes('<'))) {\n return undefined;\n }\n const sortedPastes = Array.from(pastes).sort((a, b) => targetDocument.offsetAt(a.range.start) - targetDocument.offsetAt(b.range.start));\n // Find the links in the pasted text by applying the paste edits to an in-memory document.\n // Use `copySource` as the doc uri to make sure links are resolved in its context\n const editedDoc = new InMemoryDocument(metadata.source, targetDocument.getText(), tempDocVersion);\n editedDoc.replaceContents(editedDoc.previewEdits(sortedPastes));\n const allLinks = await this.#linkProvider.getLinksWithoutCaching(editedDoc, token);\n if (token.isCancellationRequested) {\n return;\n }\n const pastedRanges = this.#computedPastedRanges(sortedPastes, targetDocument, editedDoc);\n const linksToRewrite = allLinks.links\n // We only rewrite relative links and references\n .filter(link => {\n if (link.href.kind === HrefKind.Reference) {\n return true;\n }\n return link.href.kind === HrefKind.Internal\n && !link.source.hrefText.startsWith('/') // No need to rewrite absolute paths\n && link.href.path.scheme === metadata.source.scheme && link.href.path.authority === metadata.source.authority; // Only rewrite links that are in the same workspace\n })\n // And the link be newly added (i.e. in one of the pasted ranges)\n .filter(link => pastedRanges.some(range => rangeContains(range, link.source.range)));\n // Generate edits\n const newDefinitionsToAdd = [];\n const rewriteLinksEdits = [];\n for (const link of linksToRewrite) {\n if (link.href.kind === HrefKind.Reference) {\n // See if we've already added the def\n if (new LinkDefinitionSet(newDefinitionsToAdd).lookup(link.href.ref)) {\n continue;\n }\n const originalRef = metadata.links?.lookup(link.href.ref);\n if (!originalRef) {\n continue;\n }\n // If there's an existing definition with the same exact ref, we don't need to add it again\n if (allLinks.definitions.lookup(link.href.ref)?.source.hrefText === originalRef.source.hrefText) {\n continue;\n }\n newDefinitionsToAdd.push(originalRef);\n }\n else if (link.href.kind === HrefKind.Internal) {\n const targetDocUri = getDocUri(targetDocument);\n const newPathText = isSameResource(targetDocUri, link.href.path)\n ? ''\n : computeRelativePath(targetDocUri, removeNewUriExtIfNeeded(this.#config, link.href, link.href.path));\n if (typeof newPathText === 'undefined') {\n continue;\n }\n let newHrefText = newPathText;\n if (link.source.hrefFragmentRange) {\n newHrefText += '#' + link.href.fragment;\n }\n if (link.source.hrefText !== newHrefText) {\n rewriteLinksEdits.push(lsp.TextEdit.replace(link.source.hrefRange, newHrefText));\n }\n }\n }\n // If nothing was rewritten we can just use normal text paste\n if (!rewriteLinksEdits.length && !newDefinitionsToAdd.length) {\n return;\n }\n // Generate a minimal set of edits for the pastes\n const outEdits = [];\n const finalDoc = new InMemoryDocument(editedDoc.$uri, editedDoc.previewEdits(rewriteLinksEdits));\n let offsetAdjustment = 0;\n for (let i = 0; i < pastedRanges.length; ++i) {\n const pasteRange = pastedRanges[i];\n const originalPaste = sortedPastes[i];\n // Adjust the range to account for the `rewriteLinksEdits`\n for (let edit; (edit = rewriteLinksEdits[0]) && isBefore(edit.range.start, pasteRange.start); rewriteLinksEdits.shift()) {\n offsetAdjustment += computeEditLengthChange(edit, editedDoc);\n }\n const startOffset = editedDoc.offsetAt(pasteRange.start) + offsetAdjustment;\n for (let edit; (edit = rewriteLinksEdits[0]) && isBeforeOrEqual(edit.range.end, pasteRange.end); rewriteLinksEdits.shift()) {\n offsetAdjustment += computeEditLengthChange(edit, editedDoc);\n }\n const endOffset = editedDoc.offsetAt(pasteRange.end) + offsetAdjustment;\n const range = lsp.Range.create(finalDoc.positionAt(startOffset), finalDoc.positionAt(endOffset));\n outEdits.push(lsp.TextEdit.replace(originalPaste.range, finalDoc.getText(range)));\n }\n // Add an edit that inserts new definitions\n if (newDefinitionsToAdd.length) {\n const targetLinks = await this.#linkProvider.getLinks(targetDocument);\n if (token.isCancellationRequested) {\n return;\n }\n outEdits.push(createAddDefinitionEdit(targetDocument, Array.from(targetLinks.definitions), newDefinitionsToAdd.map(def => ({ placeholder: def.ref.text, definitionText: def.source.hrefText }))));\n }\n return outEdits;\n }\n #parseMetadata(rawCopyMetadata) {\n try {\n return PasteLinksCopyMetadata.fromJSON(rawCopyMetadata);\n }\n catch {\n return undefined;\n }\n }\n #computedPastedRanges(sortedPastes, targetDocument, editedDoc) {\n const pastedRanges = [];\n let offsetAdjustment = 0;\n for (const paste of sortedPastes) {\n const originalStartOffset = targetDocument.offsetAt(paste.range.start);\n const originalEndOffset = targetDocument.offsetAt(paste.range.end);\n pastedRanges.push(lsp.Range.create(editedDoc.positionAt(originalStartOffset + offsetAdjustment), editedDoc.positionAt(originalStartOffset + offsetAdjustment + paste.newText.length)));\n offsetAdjustment += paste.newText.length - (originalEndOffset - originalStartOffset);\n }\n return pastedRanges;\n }\n}\nfunction computeEditLengthChange(edit, editedDoc) {\n return edit.newText.length - (editedDoc.offsetAt(edit.range.end) - editedDoc.offsetAt(edit.range.start));\n}\n//# sourceMappingURL=updatePastedLinks.js.map","/*---------------------------------------------------------------------------------------------\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 lsp from 'vscode-languageserver-protocol';\nimport { Disposable } from '../util/dispose.js';\nimport { fuzzyContains } from '../util/string.js';\nimport { MdWorkspaceInfoCache } from '../workspaceCache.js';\nexport class MdWorkspaceSymbolProvider extends Disposable {\n #cache;\n #symbolProvider;\n constructor(workspace, symbolProvider) {\n super();\n this.#symbolProvider = symbolProvider;\n this.#cache = this._register(new MdWorkspaceInfoCache(workspace, (doc, token) => this.provideDocumentSymbolInformation(doc, token)));\n }\n async provideWorkspaceSymbols(query, token) {\n const allSymbols = await this.#cache.values();\n if (token.isCancellationRequested) {\n return [];\n }\n const normalizedQueryStr = query.toLowerCase();\n return allSymbols.flat().filter(symbolInformation => {\n return fuzzyContains(symbolInformation.name.toLowerCase(), normalizedQueryStr);\n });\n }\n async provideDocumentSymbolInformation(document, token) {\n const docSymbols = await this.#symbolProvider.provideDocumentSymbols(document, {}, token);\n if (token.isCancellationRequested) {\n return [];\n }\n return Array.from(this.#toSymbolInformation(document.uri, docSymbols));\n }\n *#toSymbolInformation(uri, docSymbols) {\n for (const symbol of docSymbols) {\n yield {\n name: symbol.name,\n kind: lsp.SymbolKind.String,\n location: { uri, range: symbol.selectionRange }\n };\n if (symbol.children) {\n yield* this.#toSymbolInformation(uri, symbol.children);\n }\n }\n }\n}\n//# sourceMappingURL=workspaceSymbols.js.map","/*---------------------------------------------------------------------------------------------\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 GithubSlug {\n value;\n constructor(value) {\n this.value = value;\n }\n equals(other) {\n return other instanceof GithubSlug && this.value.toLowerCase() === other.value.toLowerCase();\n }\n}\n// Copied from https://github.com/Flet/github-slugger since we can't use esm yet.\n// eslint-disable-next-line no-control-regex, no-misleading-character-class\nconst githubSlugReplaceRegex = /[\\0-\\x1F!-,\\.\\/:-@\\[-\\^`\\{-\\xA9\\xAB-\\xB4\\xB6-\\xB9\\xBB-\\xBF\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0378\\u0379\\u037E\\u0380-\\u0385\\u0387\\u038B\\u038D\\u03A2\\u03F6\\u0482\\u0530\\u0557\\u0558\\u055A-\\u055F\\u0589-\\u0590\\u05BE\\u05C0\\u05C3\\u05C6\\u05C8-\\u05CF\\u05EB-\\u05EE\\u05F3-\\u060F\\u061B-\\u061F\\u066A-\\u066D\\u06D4\\u06DD\\u06DE\\u06E9\\u06FD\\u06FE\\u0700-\\u070F\\u074B\\u074C\\u07B2-\\u07BF\\u07F6-\\u07F9\\u07FB\\u07FC\\u07FE\\u07FF\\u082E-\\u083F\\u085C-\\u085F\\u086B-\\u089F\\u08B5\\u08C8-\\u08D2\\u08E2\\u0964\\u0965\\u0970\\u0984\\u098D\\u098E\\u0991\\u0992\\u09A9\\u09B1\\u09B3-\\u09B5\\u09BA\\u09BB\\u09C5\\u09C6\\u09C9\\u09CA\\u09CF-\\u09D6\\u09D8-\\u09DB\\u09DE\\u09E4\\u09E5\\u09F2-\\u09FB\\u09FD\\u09FF\\u0A00\\u0A04\\u0A0B-\\u0A0E\\u0A11\\u0A12\\u0A29\\u0A31\\u0A34\\u0A37\\u0A3A\\u0A3B\\u0A3D\\u0A43-\\u0A46\\u0A49\\u0A4A\\u0A4E-\\u0A50\\u0A52-\\u0A58\\u0A5D\\u0A5F-\\u0A65\\u0A76-\\u0A80\\u0A84\\u0A8E\\u0A92\\u0AA9\\u0AB1\\u0AB4\\u0ABA\\u0ABB\\u0AC6\\u0ACA\\u0ACE\\u0ACF\\u0AD1-\\u0ADF\\u0AE4\\u0AE5\\u0AF0-\\u0AF8\\u0B00\\u0B04\\u0B0D\\u0B0E\\u0B11\\u0B12\\u0B29\\u0B31\\u0B34\\u0B3A\\u0B3B\\u0B45\\u0B46\\u0B49\\u0B4A\\u0B4E-\\u0B54\\u0B58-\\u0B5B\\u0B5E\\u0B64\\u0B65\\u0B70\\u0B72-\\u0B81\\u0B84\\u0B8B-\\u0B8D\\u0B91\\u0B96-\\u0B98\\u0B9B\\u0B9D\\u0BA0-\\u0BA2\\u0BA5-\\u0BA7\\u0BAB-\\u0BAD\\u0BBA-\\u0BBD\\u0BC3-\\u0BC5\\u0BC9\\u0BCE\\u0BCF\\u0BD1-\\u0BD6\\u0BD8-\\u0BE5\\u0BF0-\\u0BFF\\u0C0D\\u0C11\\u0C29\\u0C3A-\\u0C3C\\u0C45\\u0C49\\u0C4E-\\u0C54\\u0C57\\u0C5B-\\u0C5F\\u0C64\\u0C65\\u0C70-\\u0C7F\\u0C84\\u0C8D\\u0C91\\u0CA9\\u0CB4\\u0CBA\\u0CBB\\u0CC5\\u0CC9\\u0CCE-\\u0CD4\\u0CD7-\\u0CDD\\u0CDF\\u0CE4\\u0CE5\\u0CF0\\u0CF3-\\u0CFF\\u0D0D\\u0D11\\u0D45\\u0D49\\u0D4F-\\u0D53\\u0D58-\\u0D5E\\u0D64\\u0D65\\u0D70-\\u0D79\\u0D80\\u0D84\\u0D97-\\u0D99\\u0DB2\\u0DBC\\u0DBE\\u0DBF\\u0DC7-\\u0DC9\\u0DCB-\\u0DCE\\u0DD5\\u0DD7\\u0DE0-\\u0DE5\\u0DF0\\u0DF1\\u0DF4-\\u0E00\\u0E3B-\\u0E3F\\u0E4F\\u0E5A-\\u0E80\\u0E83\\u0E85\\u0E8B\\u0EA4\\u0EA6\\u0EBE\\u0EBF\\u0EC5\\u0EC7\\u0ECE\\u0ECF\\u0EDA\\u0EDB\\u0EE0-\\u0EFF\\u0F01-\\u0F17\\u0F1A-\\u0F1F\\u0F2A-\\u0F34\\u0F36\\u0F38\\u0F3A-\\u0F3D\\u0F48\\u0F6D-\\u0F70\\u0F85\\u0F98\\u0FBD-\\u0FC5\\u0FC7-\\u0FFF\\u104A-\\u104F\\u109E\\u109F\\u10C6\\u10C8-\\u10CC\\u10CE\\u10CF\\u10FB\\u1249\\u124E\\u124F\\u1257\\u1259\\u125E\\u125F\\u1289\\u128E\\u128F\\u12B1\\u12B6\\u12B7\\u12BF\\u12C1\\u12C6\\u12C7\\u12D7\\u1311\\u1316\\u1317\\u135B\\u135C\\u1360-\\u137F\\u1390-\\u139F\\u13F6\\u13F7\\u13FE-\\u1400\\u166D\\u166E\\u1680\\u169B-\\u169F\\u16EB-\\u16ED\\u16F9-\\u16FF\\u170D\\u1715-\\u171F\\u1735-\\u173F\\u1754-\\u175F\\u176D\\u1771\\u1774-\\u177F\\u17D4-\\u17D6\\u17D8-\\u17DB\\u17DE\\u17DF\\u17EA-\\u180A\\u180E\\u180F\\u181A-\\u181F\\u1879-\\u187F\\u18AB-\\u18AF\\u18F6-\\u18FF\\u191F\\u192C-\\u192F\\u193C-\\u1945\\u196E\\u196F\\u1975-\\u197F\\u19AC-\\u19AF\\u19CA-\\u19CF\\u19DA-\\u19FF\\u1A1C-\\u1A1F\\u1A5F\\u1A7D\\u1A7E\\u1A8A-\\u1A8F\\u1A9A-\\u1AA6\\u1AA8-\\u1AAF\\u1AC1-\\u1AFF\\u1B4C-\\u1B4F\\u1B5A-\\u1B6A\\u1B74-\\u1B7F\\u1BF4-\\u1BFF\\u1C38-\\u1C3F\\u1C4A-\\u1C4C\\u1C7E\\u1C7F\\u1C89-\\u1C8F\\u1CBB\\u1CBC\\u1CC0-\\u1CCF\\u1CD3\\u1CFB-\\u1CFF\\u1DFA\\u1F16\\u1F17\\u1F1E\\u1F1F\\u1F46\\u1F47\\u1F4E\\u1F4F\\u1F58\\u1F5A\\u1F5C\\u1F5E\\u1F7E\\u1F7F\\u1FB5\\u1FBD\\u1FBF-\\u1FC1\\u1FC5\\u1FCD-\\u1FCF\\u1FD4\\u1FD5\\u1FDC-\\u1FDF\\u1FED-\\u1FF1\\u1FF5\\u1FFD-\\u203E\\u2041-\\u2053\\u2055-\\u2070\\u2072-\\u207E\\u2080-\\u208F\\u209D-\\u20CF\\u20F1-\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F-\\u215F\\u2189-\\u24B5\\u24EA-\\u2BFF\\u2C2F\\u2C5F\\u2CE5-\\u2CEA\\u2CF4-\\u2CFF\\u2D26\\u2D28-\\u2D2C\\u2D2E\\u2D2F\\u2D68-\\u2D6E\\u2D70-\\u2D7E\\u2D97-\\u2D9F\\u2DA7\\u2DAF\\u2DB7\\u2DBF\\u2DC7\\u2DCF\\u2DD7\\u2DDF\\u2E00-\\u2E2E\\u2E30-\\u3004\\u3008-\\u3020\\u3030\\u3036\\u3037\\u303D-\\u3040\\u3097\\u3098\\u309B\\u309C\\u30A0\\u30FB\\u3100-\\u3104\\u3130\\u318F-\\u319F\\u31C0-\\u31EF\\u3200-\\u33FF\\u4DC0-\\u4DFF\\u9FFD-\\u9FFF\\uA48D-\\uA4CF\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA62C-\\uA63F\\uA673\\uA67E\\uA6F2-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA7C0\\uA7C1\\uA7CB-\\uA7F4\\uA828-\\uA82B\\uA82D-\\uA83F\\uA874-\\uA87F\\uA8C6-\\uA8CF\\uA8DA-\\uA8DF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA954-\\uA95F\\uA97D-\\uA97F\\uA9C1-\\uA9CE\\uA9DA-\\uA9DF\\uA9FF\\uAA37-\\uAA3F\\uAA4E\\uAA4F\\uAA5A-\\uAA5F\\uAA77-\\uAA79\\uAAC3-\\uAADA\\uAADE\\uAADF\\uAAF0\\uAAF1\\uAAF7-\\uAB00\\uAB07\\uAB08\\uAB0F\\uAB10\\uAB17-\\uAB1F\\uAB27\\uAB2F\\uAB5B\\uAB6A-\\uAB6F\\uABEB\\uABEE\\uABEF\\uABFA-\\uABFF\\uD7A4-\\uD7AF\\uD7C7-\\uD7CA\\uD7FC-\\uD7FF\\uE000-\\uF8FF\\uFA6E\\uFA6F\\uFADA-\\uFAFF\\uFB07-\\uFB12\\uFB18-\\uFB1C\\uFB29\\uFB37\\uFB3D\\uFB3F\\uFB42\\uFB45\\uFBB2-\\uFBD2\\uFD3E-\\uFD4F\\uFD90\\uFD91\\uFDC8-\\uFDEF\\uFDFC-\\uFDFF\\uFE10-\\uFE1F\\uFE30-\\uFE32\\uFE35-\\uFE4C\\uFE50-\\uFE6F\\uFE75\\uFEFD-\\uFF0F\\uFF1A-\\uFF20\\uFF3B-\\uFF3E\\uFF40\\uFF5B-\\uFF65\\uFFBF-\\uFFC1\\uFFC8\\uFFC9\\uFFD0\\uFFD1\\uFFD8\\uFFD9\\uFFDD-\\uFFFF]|\\uD800[\\uDC0C\\uDC27\\uDC3B\\uDC3E\\uDC4E\\uDC4F\\uDC5E-\\uDC7F\\uDCFB-\\uDD3F\\uDD75-\\uDDFC\\uDDFE-\\uDE7F\\uDE9D-\\uDE9F\\uDED1-\\uDEDF\\uDEE1-\\uDEFF\\uDF20-\\uDF2C\\uDF4B-\\uDF4F\\uDF7B-\\uDF7F\\uDF9E\\uDF9F\\uDFC4-\\uDFC7\\uDFD0\\uDFD6-\\uDFFF]|\\uD801[\\uDC9E\\uDC9F\\uDCAA-\\uDCAF\\uDCD4-\\uDCD7\\uDCFC-\\uDCFF\\uDD28-\\uDD2F\\uDD64-\\uDDFF\\uDF37-\\uDF3F\\uDF56-\\uDF5F\\uDF68-\\uDFFF]|\\uD802[\\uDC06\\uDC07\\uDC09\\uDC36\\uDC39-\\uDC3B\\uDC3D\\uDC3E\\uDC56-\\uDC5F\\uDC77-\\uDC7F\\uDC9F-\\uDCDF\\uDCF3\\uDCF6-\\uDCFF\\uDD16-\\uDD1F\\uDD3A-\\uDD7F\\uDDB8-\\uDDBD\\uDDC0-\\uDDFF\\uDE04\\uDE07-\\uDE0B\\uDE14\\uDE18\\uDE36\\uDE37\\uDE3B-\\uDE3E\\uDE40-\\uDE5F\\uDE7D-\\uDE7F\\uDE9D-\\uDEBF\\uDEC8\\uDEE7-\\uDEFF\\uDF36-\\uDF3F\\uDF56-\\uDF5F\\uDF73-\\uDF7F\\uDF92-\\uDFFF]|\\uD803[\\uDC49-\\uDC7F\\uDCB3-\\uDCBF\\uDCF3-\\uDCFF\\uDD28-\\uDD2F\\uDD3A-\\uDE7F\\uDEAA\\uDEAD-\\uDEAF\\uDEB2-\\uDEFF\\uDF1D-\\uDF26\\uDF28-\\uDF2F\\uDF51-\\uDFAF\\uDFC5-\\uDFDF\\uDFF7-\\uDFFF]|\\uD804[\\uDC47-\\uDC65\\uDC70-\\uDC7E\\uDCBB-\\uDCCF\\uDCE9-\\uDCEF\\uDCFA-\\uDCFF\\uDD35\\uDD40-\\uDD43\\uDD48-\\uDD4F\\uDD74\\uDD75\\uDD77-\\uDD7F\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDFF\\uDE12\\uDE38-\\uDE3D\\uDE3F-\\uDE7F\\uDE87\\uDE89\\uDE8E\\uDE9E\\uDEA9-\\uDEAF\\uDEEB-\\uDEEF\\uDEFA-\\uDEFF\\uDF04\\uDF0D\\uDF0E\\uDF11\\uDF12\\uDF29\\uDF31\\uDF34\\uDF3A\\uDF45\\uDF46\\uDF49\\uDF4A\\uDF4E\\uDF4F\\uDF51-\\uDF56\\uDF58-\\uDF5C\\uDF64\\uDF65\\uDF6D-\\uDF6F\\uDF75-\\uDFFF]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A-\\uDC5D\\uDC62-\\uDC7F\\uDCC6\\uDCC8-\\uDCCF\\uDCDA-\\uDD7F\\uDDB6\\uDDB7\\uDDC1-\\uDDD7\\uDDDE-\\uDDFF\\uDE41-\\uDE43\\uDE45-\\uDE4F\\uDE5A-\\uDE7F\\uDEB9-\\uDEBF\\uDECA-\\uDEFF\\uDF1B\\uDF1C\\uDF2C-\\uDF2F\\uDF3A-\\uDFFF]|\\uD806[\\uDC3B-\\uDC9F\\uDCEA-\\uDCFE\\uDD07\\uDD08\\uDD0A\\uDD0B\\uDD14\\uDD17\\uDD36\\uDD39\\uDD3A\\uDD44-\\uDD4F\\uDD5A-\\uDD9F\\uDDA8\\uDDA9\\uDDD8\\uDDD9\\uDDE2\\uDDE5-\\uDDFF\\uDE3F-\\uDE46\\uDE48-\\uDE4F\\uDE9A-\\uDE9C\\uDE9E-\\uDEBF\\uDEF9-\\uDFFF]|\\uD807[\\uDC09\\uDC37\\uDC41-\\uDC4F\\uDC5A-\\uDC71\\uDC90\\uDC91\\uDCA8\\uDCB7-\\uDCFF\\uDD07\\uDD0A\\uDD37-\\uDD39\\uDD3B\\uDD3E\\uDD48-\\uDD4F\\uDD5A-\\uDD5F\\uDD66\\uDD69\\uDD8F\\uDD92\\uDD99-\\uDD9F\\uDDAA-\\uDEDF\\uDEF7-\\uDFAF\\uDFB1-\\uDFFF]|\\uD808[\\uDF9A-\\uDFFF]|\\uD809[\\uDC6F-\\uDC7F\\uDD44-\\uDFFF]|[\\uD80A\\uD80B\\uD80E-\\uD810\\uD812-\\uD819\\uD824-\\uD82B\\uD82D\\uD82E\\uD830-\\uD833\\uD837\\uD839\\uD83D\\uD83F\\uD87B-\\uD87D\\uD87F\\uD885-\\uDB3F\\uDB41-\\uDBFF][\\uDC00-\\uDFFF]|\\uD80D[\\uDC2F-\\uDFFF]|\\uD811[\\uDE47-\\uDFFF]|\\uD81A[\\uDE39-\\uDE3F\\uDE5F\\uDE6A-\\uDECF\\uDEEE\\uDEEF\\uDEF5-\\uDEFF\\uDF37-\\uDF3F\\uDF44-\\uDF4F\\uDF5A-\\uDF62\\uDF78-\\uDF7C\\uDF90-\\uDFFF]|\\uD81B[\\uDC00-\\uDE3F\\uDE80-\\uDEFF\\uDF4B-\\uDF4E\\uDF88-\\uDF8E\\uDFA0-\\uDFDF\\uDFE2\\uDFE5-\\uDFEF\\uDFF2-\\uDFFF]|\\uD821[\\uDFF8-\\uDFFF]|\\uD823[\\uDCD6-\\uDCFF\\uDD09-\\uDFFF]|\\uD82C[\\uDD1F-\\uDD4F\\uDD53-\\uDD63\\uDD68-\\uDD6F\\uDEFC-\\uDFFF]|\\uD82F[\\uDC6B-\\uDC6F\\uDC7D-\\uDC7F\\uDC89-\\uDC8F\\uDC9A-\\uDC9C\\uDC9F-\\uDFFF]|\\uD834[\\uDC00-\\uDD64\\uDD6A-\\uDD6C\\uDD73-\\uDD7A\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDE41\\uDE45-\\uDFFF]|\\uD835[\\uDC55\\uDC9D\\uDCA0\\uDCA1\\uDCA3\\uDCA4\\uDCA7\\uDCA8\\uDCAD\\uDCBA\\uDCBC\\uDCC4\\uDD06\\uDD0B\\uDD0C\\uDD15\\uDD1D\\uDD3A\\uDD3F\\uDD45\\uDD47-\\uDD49\\uDD51\\uDEA6\\uDEA7\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3\\uDFCC\\uDFCD]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85-\\uDE9A\\uDEA0\\uDEB0-\\uDFFF]|\\uD838[\\uDC07\\uDC19\\uDC1A\\uDC22\\uDC25\\uDC2B-\\uDCFF\\uDD2D-\\uDD2F\\uDD3E\\uDD3F\\uDD4A-\\uDD4D\\uDD4F-\\uDEBF\\uDEFA-\\uDFFF]|\\uD83A[\\uDCC5-\\uDCCF\\uDCD7-\\uDCFF\\uDD4C-\\uDD4F\\uDD5A-\\uDFFF]|\\uD83B[\\uDC00-\\uDDFF\\uDE04\\uDE20\\uDE23\\uDE25\\uDE26\\uDE28\\uDE33\\uDE38\\uDE3A\\uDE3C-\\uDE41\\uDE43-\\uDE46\\uDE48\\uDE4A\\uDE4C\\uDE50\\uDE53\\uDE55\\uDE56\\uDE58\\uDE5A\\uDE5C\\uDE5E\\uDE60\\uDE63\\uDE65\\uDE66\\uDE6B\\uDE73\\uDE78\\uDE7D\\uDE7F\\uDE8A\\uDE9C-\\uDEA0\\uDEA4\\uDEAA\\uDEBC-\\uDFFF]|\\uD83C[\\uDC00-\\uDD2F\\uDD4A-\\uDD4F\\uDD6A-\\uDD6F\\uDD8A-\\uDFFF]|\\uD83E[\\uDC00-\\uDFEF\\uDFFA-\\uDFFF]|\\uD869[\\uDEDE-\\uDEFF]|\\uD86D[\\uDF35-\\uDF3F]|\\uD86E[\\uDC1E\\uDC1F]|\\uD873[\\uDEA2-\\uDEAF]|\\uD87A[\\uDFE1-\\uDFFF]|\\uD87E[\\uDE1E-\\uDFFF]|\\uD884[\\uDF4B-\\uDFFF]|\\uDB40[\\uDC00-\\uDCFF\\uDDF0-\\uDFFF]/g;\n/**\n * A {@link ISlugifier slugifier} that approximates how GitHub's slugifier works.\n */\nexport const githubSlugifier = new class {\n fromHeading(heading) {\n const slugifiedHeading = heading.trim()\n .toLowerCase()\n .replace(githubSlugReplaceRegex, '')\n .replace(/\\s/g, '-'); // Replace whitespace with -\n return new GithubSlug(slugifiedHeading);\n }\n fromFragment(fragmentText) {\n return new GithubSlug(fragmentText.toLowerCase());\n }\n createBuilder() {\n const entries = new Map();\n return {\n add: (heading) => {\n const slug = this.fromHeading(heading);\n const existingSlugEntry = entries.get(slug.value);\n if (existingSlugEntry) {\n ++existingSlugEntry.count;\n return this.fromHeading(slug.value + '-' + existingSlugEntry.count);\n }\n entries.set(slug.value, { count: 0 });\n return slug;\n }\n };\n }\n};\n//# sourceMappingURL=slugify.js.map","/*---------------------------------------------------------------------------------------------\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 { getLsConfiguration } from './config.js';\nimport { MdExtractLinkDefinitionCodeActionProvider } from './languageFeatures/codeActions/extractLinkDef.js';\nimport { MdRemoveLinkDefinitionCodeActionProvider } from './languageFeatures/codeActions/removeLinkDefinition.js';\nimport { MdDefinitionProvider } from './languageFeatures/definitions.js';\nimport { DiagnosticComputer, DiagnosticsManager } from './languageFeatures/diagnostics.js';\nimport { MdDocumentHighlightProvider } from './languageFeatures/documentHighlights.js';\nimport { createWorkspaceLinkCache, MdLinkProvider } from './languageFeatures/documentLinks.js';\nimport { MdDocumentSymbolProvider } from './languageFeatures/documentSymbols.js';\nimport { MdFileRenameProvider } from './languageFeatures/fileRename.js';\nimport { MdFoldingProvider } from './languageFeatures/folding.js';\nimport { MdHoverProvider } from './languageFeatures/hover.js';\nimport { MdOrganizeLinkDefinitionProvider } from './languageFeatures/organizeLinkDefs.js';\nimport { MdPathCompletionProvider } from './languageFeatures/pathCompletions.js';\nimport { MdReferencesProvider } from './languageFeatures/references.js';\nimport { MdRenameProvider } from './languageFeatures/rename.js';\nimport { MdSelectionRangeProvider } from './languageFeatures/smartSelect.js';\nimport { MdUpdatePastedLinksProvider } from './languageFeatures/updatePastedLinks.js';\nimport { MdWorkspaceSymbolProvider } from './languageFeatures/workspaceSymbols.js';\nimport { MdTableOfContentsProvider } from './tableOfContents.js';\nimport { isWorkspaceWithFileWatching } from './workspace.js';\nexport { PreferredMdPathExtensionStyle } from './config.js';\nexport { DiagnosticCode, DiagnosticLevel } from './languageFeatures/diagnostics.js';\nexport { IncludeWorkspaceHeaderCompletions } from './languageFeatures/pathCompletions.js';\nexport { RenameNotSupportedAtLocationError } from './languageFeatures/rename.js';\nexport { LogLevel } from './logging.js';\nexport { githubSlugifier } from './slugify.js';\n/**\n * Create a new instance of the {@link IMdLanguageService language service}.\n */\nexport function createLanguageService(init) {\n const config = getLsConfiguration(init);\n const logger = init.logger;\n const tocProvider = new MdTableOfContentsProvider(init.parser, init.workspace, logger);\n const foldingProvider = new MdFoldingProvider(init.parser, tocProvider, logger);\n const linkProvider = new MdLinkProvider(config, init.parser, init.workspace, tocProvider, logger);\n const pathCompletionProvider = new MdPathCompletionProvider(config, init.workspace, linkProvider, tocProvider);\n const linkCache = createWorkspaceLinkCache(init.parser, init.workspace);\n const smartSelectProvider = new MdSelectionRangeProvider(init.parser, tocProvider, linkProvider, logger);\n const referencesProvider = new MdReferencesProvider(config, init.parser, init.workspace, tocProvider, linkCache, logger);\n const definitionsProvider = new MdDefinitionProvider(config, init.workspace, tocProvider, linkCache);\n const renameProvider = new MdRenameProvider(config, init.workspace, init.parser, referencesProvider, tocProvider, init.parser.slugifier, logger);\n const fileRenameProvider = new MdFileRenameProvider(config, init.workspace, linkCache, referencesProvider);\n const diagnosticsComputer = new DiagnosticComputer(config, init.workspace, linkProvider, tocProvider, logger);\n const docSymbolProvider = new MdDocumentSymbolProvider(tocProvider, linkProvider, logger);\n const workspaceSymbolProvider = new MdWorkspaceSymbolProvider(init.workspace, docSymbolProvider);\n const organizeLinkDefinitions = new MdOrganizeLinkDefinitionProvider(linkProvider);\n const documentHighlightProvider = new MdDocumentHighlightProvider(config, tocProvider, linkProvider);\n const rewritePastedLinksProvider = new MdUpdatePastedLinksProvider(config, linkProvider);\n const hoverProvider = new MdHoverProvider(linkProvider);\n const extractCodeActionProvider = new MdExtractLinkDefinitionCodeActionProvider(linkProvider);\n const removeLinkDefinitionActionProvider = new MdRemoveLinkDefinitionCodeActionProvider();\n return Object.freeze({\n dispose: () => {\n linkCache.dispose();\n tocProvider.dispose();\n workspaceSymbolProvider.dispose();\n linkProvider.dispose();\n referencesProvider.dispose();\n },\n getDocumentLinks: linkProvider.provideDocumentLinks.bind(linkProvider),\n resolveDocumentLink: linkProvider.resolveDocumentLink.bind(linkProvider),\n resolveLinkTarget: linkProvider.resolveLinkTarget.bind(linkProvider),\n getDocumentSymbols: docSymbolProvider.provideDocumentSymbols.bind(docSymbolProvider),\n getFoldingRanges: foldingProvider.provideFoldingRanges.bind(foldingProvider),\n getSelectionRanges: smartSelectProvider.provideSelectionRanges.bind(smartSelectProvider),\n getWorkspaceSymbols: workspaceSymbolProvider.provideWorkspaceSymbols.bind(workspaceSymbolProvider),\n getCompletionItems: pathCompletionProvider.provideCompletionItems.bind(pathCompletionProvider),\n getReferences: referencesProvider.provideReferences.bind(referencesProvider),\n getFileReferences: async (resource, token) => {\n return (await referencesProvider.getReferencesToFileInWorkspace(resource, token)).map(x => x.location);\n },\n getDefinition: definitionsProvider.provideDefinition.bind(definitionsProvider),\n organizeLinkDefinitions: organizeLinkDefinitions.getOrganizeLinkDefinitionEdits.bind(organizeLinkDefinitions),\n prepareRename: renameProvider.prepareRename.bind(renameProvider),\n getRenameEdit: renameProvider.provideRenameEdits.bind(renameProvider),\n getRenameFilesInWorkspaceEdit: fileRenameProvider.getRenameFilesInWorkspaceEdit.bind(fileRenameProvider),\n getCodeActions: async (doc, range, context, token) => {\n return (await Promise.all([\n extractCodeActionProvider.getActions(doc, range, context, token),\n Array.from(removeLinkDefinitionActionProvider.getActions(doc, range, context)),\n ])).flat();\n },\n getDocumentHighlights: (document, position, token) => {\n return documentHighlightProvider.getDocumentHighlights(document, position, token);\n },\n prepareUpdatePastedLinks: rewritePastedLinksProvider.prepareDocumentPaste.bind(rewritePastedLinksProvider),\n getUpdatePastedLinksEdit: rewritePastedLinksProvider.provideDocumentPasteEdits.bind(rewritePastedLinksProvider),\n getHover: hoverProvider.provideHover.bind(hoverProvider),\n computeDiagnostics: async (doc, options, token) => {\n return (await diagnosticsComputer.compute(doc, options, token))?.diagnostics;\n },\n createPullDiagnosticsManager: () => {\n if (!isWorkspaceWithFileWatching(init.workspace)) {\n throw new Error(`Workspace does not support file watching. Diagnostics manager not supported`);\n }\n return new DiagnosticsManager(config, init.workspace, linkProvider, tocProvider, logger);\n }\n });\n}\n//# sourceMappingURL=index.js.map","'use strict';\n\n/* eslint-disable no-bitwise */\n\nconst decodeCache = {};\n\nfunction getDecodeCache (exclude) {\n let cache = decodeCache[exclude];\n if (cache) { return cache }\n\n cache = decodeCache[exclude] = [];\n\n for (let i = 0; i < 128; i++) {\n const ch = String.fromCharCode(i);\n cache.push(ch);\n }\n\n for (let i = 0; i < exclude.length; i++) {\n const ch = exclude.charCodeAt(i);\n cache[ch] = '%' + ('0' + ch.toString(16).toUpperCase()).slice(-2);\n }\n\n return cache\n}\n\n// Decode percent-encoded string.\n//\nfunction decode (string, exclude) {\n if (typeof exclude !== 'string') {\n exclude = decode.defaultChars;\n }\n\n const cache = getDecodeCache(exclude);\n\n return string.replace(/(%[a-f0-9]{2})+/gi, function (seq) {\n let result = '';\n\n for (let i = 0, l = seq.length; i < l; i += 3) {\n const b1 = parseInt(seq.slice(i + 1, i + 3), 16);\n\n if (b1 < 0x80) {\n result += cache[b1];\n continue\n }\n\n if ((b1 & 0xE0) === 0xC0 && (i + 3 < l)) {\n // 110xxxxx 10xxxxxx\n const b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n\n if ((b2 & 0xC0) === 0x80) {\n const chr = ((b1 << 6) & 0x7C0) | (b2 & 0x3F);\n\n if (chr < 0x80) {\n result += '\\ufffd\\ufffd';\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 3;\n continue\n }\n }\n\n if ((b1 & 0xF0) === 0xE0 && (i + 6 < l)) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n const b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n const b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n const chr = ((b1 << 12) & 0xF000) | ((b2 << 6) & 0xFC0) | (b3 & 0x3F);\n\n if (chr < 0x800 || (chr >= 0xD800 && chr <= 0xDFFF)) {\n result += '\\ufffd\\ufffd\\ufffd';\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 6;\n continue\n }\n }\n\n if ((b1 & 0xF8) === 0xF0 && (i + 9 < l)) {\n // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx\n const b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n const b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n const b4 = parseInt(seq.slice(i + 10, i + 12), 16);\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80 && (b4 & 0xC0) === 0x80) {\n let chr = ((b1 << 18) & 0x1C0000) | ((b2 << 12) & 0x3F000) | ((b3 << 6) & 0xFC0) | (b4 & 0x3F);\n\n if (chr < 0x10000 || chr > 0x10FFFF) {\n result += '\\ufffd\\ufffd\\ufffd\\ufffd';\n } else {\n chr -= 0x10000;\n result += String.fromCharCode(0xD800 + (chr >> 10), 0xDC00 + (chr & 0x3FF));\n }\n\n i += 9;\n continue\n }\n }\n\n result += '\\ufffd';\n }\n\n return result\n })\n}\n\ndecode.defaultChars = ';/?:@&=+$,#';\ndecode.componentChars = '';\n\nconst encodeCache = {};\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache (exclude) {\n let cache = encodeCache[exclude];\n if (cache) { return cache }\n\n cache = encodeCache[exclude] = [];\n\n for (let i = 0; i < 128; i++) {\n const ch = String.fromCharCode(i);\n\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch);\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));\n }\n }\n\n for (let i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i];\n }\n\n return cache\n}\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n// - string - string to encode\n// - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n// - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode (string, exclude, keepEscaped) {\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude;\n exclude = encode.defaultChars;\n }\n\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true;\n }\n\n const cache = getEncodeCache(exclude);\n let result = '';\n\n for (let i = 0, l = string.length; i < l; i++) {\n const code = string.charCodeAt(i);\n\n if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3);\n i += 2;\n continue\n }\n }\n\n if (code < 128) {\n result += cache[code];\n continue\n }\n\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n const nextCode = string.charCodeAt(i + 1);\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1]);\n i++;\n continue\n }\n }\n result += '%EF%BF%BD';\n continue\n }\n\n result += encodeURIComponent(string[i]);\n }\n\n return result\n}\n\nencode.defaultChars = \";/?:@&=+$,-_.!~*'()#\";\nencode.componentChars = \"-_.!~*'()\";\n\nfunction format (url) {\n let result = '';\n\n result += url.protocol || '';\n result += url.slashes ? '//' : '';\n result += url.auth ? url.auth + '@' : '';\n\n if (url.hostname && url.hostname.indexOf(':') !== -1) {\n // ipv6 address\n result += '[' + url.hostname + ']';\n } else {\n result += url.hostname || '';\n }\n\n result += url.port ? ':' + url.port : '';\n result += url.pathname || '';\n result += url.search || '';\n result += url.hash || '';\n\n return result\n}\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n//\n// Changes from joyent/node:\n//\n// 1. No leading slash in paths,\n// e.g. in `url.parse('http://foo?bar')` pathname is ``, not `/`\n//\n// 2. Backslashes are not replaced with slashes,\n// so `http:\\\\example.org\\` is treated like a relative path\n//\n// 3. Trailing colon is treated like a part of the path,\n// i.e. in `http://example.org:foo` pathname is `:foo`\n//\n// 4. Nothing is URL-encoded in the resulting object,\n// (in joyent/node some chars in auth and paths are encoded)\n//\n// 5. `url.parse()` does not have `parseQueryString` argument\n//\n// 6. Removed extraneous result properties: `host`, `path`, `query`, etc.,\n// which can be constructed using other parts of the url.\n//\n\nfunction Url () {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.pathname = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nconst protocolPattern = /^([a-z0-9.+-]+:)/i;\nconst portPattern = /:[0-9]*$/;\n\n// Special case for a simple path URL\n/* eslint-disable-next-line no-useless-escape */\nconst simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/;\n\n// RFC 2396: characters reserved for delimiting URLs.\n// We actually just auto-escape these.\nconst delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'];\n\n// RFC 2396: characters not allowed for various reasons.\nconst unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims);\n\n// Allowed by RFCs, but cause of XSS attacks. Always escape these.\nconst autoEscape = ['\\''].concat(unwise);\n// Characters that are never ever allowed in a hostname.\n// Note that any invalid chars are also handled, but these\n// are the ones that are *expected* to be seen, so we fast-path\n// them.\nconst nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape);\nconst hostEndingChars = ['/', '?', '#'];\nconst hostnameMaxLen = 255;\nconst hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/;\nconst hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/;\n// protocols that can allow \"unsafe\" and \"unwise\" chars.\n// protocols that never have a hostname.\nconst hostlessProtocol = {\n javascript: true,\n 'javascript:': true\n};\n// protocols that always contain a // bit.\nconst slashedProtocol = {\n http: true,\n https: true,\n ftp: true,\n gopher: true,\n file: true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n};\n\nfunction urlParse (url, slashesDenoteHost) {\n if (url && url instanceof Url) return url\n\n const u = new Url();\n u.parse(url, slashesDenoteHost);\n return u\n}\n\nUrl.prototype.parse = function (url, slashesDenoteHost) {\n let lowerProto, hec, slashes;\n let rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n const simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n }\n return this\n }\n }\n\n let proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n lowerProto = proto.toLowerCase();\n this.protocol = proto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n /* eslint-disable-next-line no-useless-escape */\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n let hostEnd = -1;\n for (let i = 0; i < hostEndingChars.length; i++) {\n hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec;\n }\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n let auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = auth;\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (let i = 0; i < nonHostChars.length; i++) {\n hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec;\n }\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1) {\n hostEnd = rest.length;\n }\n\n if (rest[hostEnd - 1] === ':') { hostEnd--; }\n const host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost(host);\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n const ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n const hostparts = this.hostname.split(/\\./);\n for (let i = 0, l = hostparts.length; i < l; i++) {\n const part = hostparts[i];\n if (!part) { continue }\n if (!part.match(hostnamePartPattern)) {\n let newpart = '';\n for (let j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n const validParts = hostparts.slice(0, i);\n const notHost = hostparts.slice(i + 1);\n const bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n }\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n }\n }\n\n // chop off from the tail first.\n const hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n const qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n rest = rest.slice(0, qm);\n }\n if (rest) { this.pathname = rest; }\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '';\n }\n\n return this\n};\n\nUrl.prototype.parseHost = function (host) {\n let port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) { this.hostname = host; }\n};\n\nexports.decode = decode;\nexports.encode = encode;\nexports.format = format;\nexports.parse = urlParse;\n","'use strict';\n\nvar regex$5 = /[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n\nvar regex$4 = /[\\0-\\x1F\\x7F-\\x9F]/;\n\nvar regex$3 = /[\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u0890\\u0891\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB]|\\uD804[\\uDCBD\\uDCCD]|\\uD80D[\\uDC30-\\uDC3F]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]/;\n\nvar regex$2 = /[!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1B7D\\u1B7E\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52-\\u2E5D\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDEAD\\uDF55-\\uDF59\\uDF86-\\uDF89]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDEB9\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDD44-\\uDD46\\uDDE2\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2\\uDF00-\\uDF09]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8\\uDF43-\\uDF4F\\uDFFF]|\\uD809[\\uDC70-\\uDC74]|\\uD80B[\\uDFF1\\uDFF2]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A\\uDFE2]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/;\n\nvar regex$1 = /[\\$\\+<->\\^`\\|~\\xA2-\\xA6\\xA8\\xA9\\xAC\\xAE-\\xB1\\xB4\\xB8\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0384\\u0385\\u03F6\\u0482\\u058D-\\u058F\\u0606-\\u0608\\u060B\\u060E\\u060F\\u06DE\\u06E9\\u06FD\\u06FE\\u07F6\\u07FE\\u07FF\\u0888\\u09F2\\u09F3\\u09FA\\u09FB\\u0AF1\\u0B70\\u0BF3-\\u0BFA\\u0C7F\\u0D4F\\u0D79\\u0E3F\\u0F01-\\u0F03\\u0F13\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F34\\u0F36\\u0F38\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE\\u0FCF\\u0FD5-\\u0FD8\\u109E\\u109F\\u1390-\\u1399\\u166D\\u17DB\\u1940\\u19DE-\\u19FF\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u2044\\u2052\\u207A-\\u207C\\u208A-\\u208C\\u20A0-\\u20C0\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F\\u218A\\u218B\\u2190-\\u2307\\u230C-\\u2328\\u232B-\\u2426\\u2440-\\u244A\\u249C-\\u24E9\\u2500-\\u2767\\u2794-\\u27C4\\u27C7-\\u27E5\\u27F0-\\u2982\\u2999-\\u29D7\\u29DC-\\u29FB\\u29FE-\\u2B73\\u2B76-\\u2B95\\u2B97-\\u2BFF\\u2CE5-\\u2CEA\\u2E50\\u2E51\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFF\\u3004\\u3012\\u3013\\u3020\\u3036\\u3037\\u303E\\u303F\\u309B\\u309C\\u3190\\u3191\\u3196-\\u319F\\u31C0-\\u31E3\\u31EF\\u3200-\\u321E\\u322A-\\u3247\\u3250\\u3260-\\u327F\\u328A-\\u32B0\\u32C0-\\u33FF\\u4DC0-\\u4DFF\\uA490-\\uA4C6\\uA700-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA828-\\uA82B\\uA836-\\uA839\\uAA77-\\uAA79\\uAB5B\\uAB6A\\uAB6B\\uFB29\\uFBB2-\\uFBC2\\uFD40-\\uFD4F\\uFDCF\\uFDFC-\\uFDFF\\uFE62\\uFE64-\\uFE66\\uFE69\\uFF04\\uFF0B\\uFF1C-\\uFF1E\\uFF3E\\uFF40\\uFF5C\\uFF5E\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFFC\\uFFFD]|\\uD800[\\uDD37-\\uDD3F\\uDD79-\\uDD89\\uDD8C-\\uDD8E\\uDD90-\\uDD9C\\uDDA0\\uDDD0-\\uDDFC]|\\uD802[\\uDC77\\uDC78\\uDEC8]|\\uD805\\uDF3F|\\uD807[\\uDFD5-\\uDFF1]|\\uD81A[\\uDF3C-\\uDF3F\\uDF45]|\\uD82F\\uDC9C|\\uD833[\\uDF50-\\uDFC3]|\\uD834[\\uDC00-\\uDCF5\\uDD00-\\uDD26\\uDD29-\\uDD64\\uDD6A-\\uDD6C\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDDEA\\uDE00-\\uDE41\\uDE45\\uDF00-\\uDF56]|\\uD835[\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85\\uDE86]|\\uD838[\\uDD4F\\uDEFF]|\\uD83B[\\uDCAC\\uDCB0\\uDD2E\\uDEF0\\uDEF1]|\\uD83C[\\uDC00-\\uDC2B\\uDC30-\\uDC93\\uDCA0-\\uDCAE\\uDCB1-\\uDCBF\\uDCC1-\\uDCCF\\uDCD1-\\uDCF5\\uDD0D-\\uDDAD\\uDDE6-\\uDE02\\uDE10-\\uDE3B\\uDE40-\\uDE48\\uDE50\\uDE51\\uDE60-\\uDE65\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDED7\\uDEDC-\\uDEEC\\uDEF0-\\uDEFC\\uDF00-\\uDF76\\uDF7B-\\uDFD9\\uDFE0-\\uDFEB\\uDFF0]|\\uD83E[\\uDC00-\\uDC0B\\uDC10-\\uDC47\\uDC50-\\uDC59\\uDC60-\\uDC87\\uDC90-\\uDCAD\\uDCB0\\uDCB1\\uDD00-\\uDE53\\uDE60-\\uDE6D\\uDE70-\\uDE7C\\uDE80-\\uDE88\\uDE90-\\uDEBD\\uDEBF-\\uDEC5\\uDECE-\\uDEDB\\uDEE0-\\uDEE8\\uDEF0-\\uDEF8\\uDF00-\\uDF92\\uDF94-\\uDFCA]/;\n\nvar regex = /[ \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/;\n\nexports.Any = regex$5;\nexports.Cc = regex$4;\nexports.Cf = regex$3;\nexports.P = regex$2;\nexports.S = regex$1;\nexports.Z = regex;\n","'use strict';\n\nvar uc_micro = require('uc.micro');\n\nfunction reFactory (opts) {\n const re = {};\n opts = opts || {};\n\n re.src_Any = uc_micro.Any.source;\n re.src_Cc = uc_micro.Cc.source;\n re.src_Z = uc_micro.Z.source;\n re.src_P = uc_micro.P.source;\n\n // \\p{\\Z\\P\\Cc\\CF} (white spaces + control + format + punctuation)\n re.src_ZPCc = [re.src_Z, re.src_P, re.src_Cc].join('|');\n\n // \\p{\\Z\\Cc} (white spaces + control)\n re.src_ZCc = [re.src_Z, re.src_Cc].join('|');\n\n // Experimental. List of chars, completely prohibited in links\n // because can separate it from other part of text\n const text_separators = '[><\\uff5c]';\n\n // All possible word characters (everything without punctuation, spaces & controls)\n // Defined via punctuation & spaces to save space\n // Should be something like \\p{\\L\\N\\S\\M} (\\w but without `_`)\n re.src_pseudo_letter = `(?:(?!${text_separators}|${re.src_ZPCc})${re.src_Any})`;\n // The same as abothe but without [0-9]\n // var src_pseudo_letter_non_d = '(?:(?![0-9]|' + src_ZPCc + ')' + src_Any + ')';\n\n re.src_ip4 =\n\n '(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)';\n\n // Prohibit any of \"@/[]()\" in user/pass to avoid wrong domain fetch.\n // Length is capped to exclude possible rescans till the end and avoid O(n^2)\n // DoS. No standard limit, just take something reasonable.\n re.src_auth = `(?:(?:(?!${re.src_ZCc}|[@/\\\\[\\\\]()]).){1,50}@)?`;\n\n re.src_port =\n\n '(?::(?:6(?:[0-4]\\\\d{3}|5(?:[0-4]\\\\d{2}|5(?:[0-2]\\\\d|3[0-5])))|[1-5]?\\\\d{1,4}))?';\n\n re.src_host_terminator =\n\n `(?=$|${text_separators}|${re.src_ZPCc})` +\n `(?!${opts['---'] ? '-(?!--)|' : '-|'}_|:\\\\d|\\\\.-|\\\\.(?!$|${re.src_ZPCc}))`;\n\n re.src_path =\n\n '(?:' +\n '[/?#]' +\n '(?:' +\n `(?!${re.src_ZCc}|${text_separators}|[()[\\\\]{}.,\"'?!\\\\-;]).|` +\n `\\\\[(?:(?!${re.src_ZCc}|\\\\]).)*\\\\]|` +\n `\\\\((?:(?!${re.src_ZCc}|[)]).)*\\\\)|` +\n `\\\\{(?:(?!${re.src_ZCc}|[}]).)*\\\\}|` +\n `\\\\\"(?:(?!${re.src_ZCc}|[\"]).)+\\\\\"|` +\n `\\\\'(?:(?!${re.src_ZCc}|[']).)+\\\\'|` +\n\n // allow `I'm_king` if no pair found\n `\\\\'(?=${re.src_pseudo_letter}|[-])|` +\n\n // google has many dots in \"google search\" links (#66, #81).\n // github has ... in commit range links,\n // Restrict to\n // - english\n // - percent-encoded\n // - parts of file path\n // - params separator\n // until more examples found.\n '\\\\.{2,}[a-zA-Z0-9%/&]|' +\n\n `\\\\.(?!${re.src_ZCc}|[.]|$)|` +\n (opts['---']\n ? '\\\\-(?!--(?:[^-]|$))(?:-*)|' // `---` => long dash, terminate\n : '\\\\-+|'\n ) +\n // allow `,,,` in paths\n `,(?!${re.src_ZCc}|$)|` +\n\n // allow `;` if not followed by space-like char\n `;(?!${re.src_ZCc}|$)|` +\n\n // allow `!!!` in paths, but not at the end\n `\\\\!+(?!${re.src_ZCc}|[!]|$)|` +\n\n `\\\\?(?!${re.src_ZCc}|[?]|$)` +\n ')+' +\n '|\\\\/' +\n ')?';\n\n // Allow anything in markdown spec, forbid quote (\") at the first position\n // because emails enclosed in quotes are far more common\n // Max name length capped to 64 chars (RFC 5321). This also prevents O(n^2)\n // rescans to the end on inputs like `mailto:mailto:...`\n re.src_email_name =\n\n '[\\\\-;:&=\\\\+\\\\$,\\\\.a-zA-Z0-9_][\\\\-;:&=\\\\+\\\\$,\\\\\"\\\\.a-zA-Z0-9_]{0,63}';\n\n re.src_xn =\n\n 'xn--[a-z0-9\\\\-]{1,59}';\n\n // More to read about domain names\n // http://serverfault.com/questions/638260/\n\n re.src_domain_root =\n\n // Allow letters & digits (http://test1)\n '(?:' +\n re.src_xn +\n '|' +\n `${re.src_pseudo_letter}{1,63}` +\n ')';\n\n re.src_domain =\n\n '(?:' +\n re.src_xn +\n '|' +\n `(?:${re.src_pseudo_letter})` +\n '|' +\n `(?:${re.src_pseudo_letter}(?:-|${re.src_pseudo_letter}){0,61}${re.src_pseudo_letter})` +\n ')';\n\n re.src_host =\n\n '(?:' +\n // Don't need IP check, because digits are already allowed in normal domain names\n // src_ip4 +\n // '|' +\n `(?:(?:(?:${re.src_domain})\\\\.)*${re.src_domain})`/* _root */ +\n ')';\n\n re.tpl_host_fuzzy =\n\n '(?:' +\n re.src_ip4 +\n '|' +\n `(?:(?:(?:${re.src_domain})\\\\.)+(?:%TLDS%))` +\n ')';\n\n re.tpl_host_no_ip_fuzzy =\n\n `(?:(?:(?:${re.src_domain})\\\\.)+(?:%TLDS%))`;\n\n re.src_host_strict =\n\n re.src_host + re.src_host_terminator;\n\n re.tpl_host_fuzzy_strict =\n\n re.tpl_host_fuzzy + re.src_host_terminator;\n\n re.src_host_port_strict =\n\n re.src_host + re.src_port + re.src_host_terminator;\n\n re.tpl_host_port_fuzzy_strict =\n\n re.tpl_host_fuzzy + re.src_port + re.src_host_terminator;\n\n re.tpl_host_port_no_ip_fuzzy_strict =\n\n re.tpl_host_no_ip_fuzzy + re.src_port + re.src_host_terminator;\n\n //\n // Main rules\n //\n\n // Rude test fuzzy links by host, for quick deny\n re.tpl_host_fuzzy_test =\n\n `localhost|www\\\\.|\\\\.\\\\d{1,3}\\\\.|(?:\\\\.(?:%TLDS%)(?:${re.src_ZPCc}|>|$))`;\n\n re.tpl_email_fuzzy =\n\n `(^|${text_separators}|\"|\\\\(|${re.src_ZCc})` +\n `(${re.src_email_name}@${re.tpl_host_fuzzy_strict})`;\n\n re.tpl_link_fuzzy =\n // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n // but can start with > (markdown blockquote)\n `(^|(?![.:/\\\\-_@])(?:[$+<=>^\\`|\\uff5c]|${re.src_ZPCc}))` +\n `((?![$+<=>^\\`|\\uff5c])${re.tpl_host_port_fuzzy_strict}${re.src_path})`;\n\n re.tpl_link_no_ip_fuzzy =\n // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n // but can start with > (markdown blockquote)\n `(^|(?![.:/\\\\-_@])(?:[$+<=>^\\`|\\uff5c]|${re.src_ZPCc}))` +\n `((?![$+<=>^\\`|\\uff5c])${re.tpl_host_port_no_ip_fuzzy_strict}${re.src_path})`;\n\n return re\n}\n\n//\n// Helpers\n//\n\n// Merge objects\n//\nfunction assign (obj /* from1, from2, from3, ... */) {\n const sources = Array.prototype.slice.call(arguments, 1);\n\n sources.forEach(function (source) {\n if (!source) { return }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key];\n });\n });\n\n return obj\n}\n\nfunction _class (obj) { return Object.prototype.toString.call(obj) }\nfunction isString (obj) { return _class(obj) === '[object String]' }\nfunction isObject (obj) { return _class(obj) === '[object Object]' }\nfunction isRegExp (obj) { return _class(obj) === '[object RegExp]' }\nfunction isFunction (obj) { return _class(obj) === '[object Function]' }\n\nfunction escapeRE (str) { return str.replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&') }\n\n//\n\nconst defaultOptions = {\n fuzzyLink: true,\n fuzzyEmail: true,\n fuzzyIP: false\n};\n\nfunction isOptionsObj (obj) {\n return Object.keys(obj || {}).reduce(function (acc, k) {\n /* eslint-disable-next-line no-prototype-builtins */\n return acc || defaultOptions.hasOwnProperty(k)\n }, false)\n}\n\nconst defaultSchemas = {\n 'http:': {\n validate: function (text, pos, self) {\n const tail = text.slice(pos);\n\n if (!self.re.http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.http = new RegExp(\n `^\\\\/\\\\/${self.re.src_auth}${self.re.src_host_port_strict}${self.re.src_path}`, 'i'\n );\n }\n if (self.re.http.test(tail)) {\n return tail.match(self.re.http)[0].length\n }\n return 0\n }\n },\n 'https:': 'http:',\n 'ftp:': 'http:',\n '//': {\n validate: function (text, pos, self) {\n const tail = text.slice(pos);\n\n if (!self.re.no_http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.no_http = new RegExp(\n '^' +\n self.re.src_auth +\n // Don't allow single-level domains, because of false positives like '//test'\n // with code comments\n `(?:localhost|(?:(?:${self.re.src_domain})\\\\.)+${self.re.src_domain_root})` +\n self.re.src_port +\n self.re.src_host_terminator +\n self.re.src_path,\n\n 'i'\n );\n }\n\n if (self.re.no_http.test(tail)) {\n // should not be `://` & `///`, that protects from errors in protocol name\n if (pos >= 3 && text[pos - 3] === ':') { return 0 }\n if (pos >= 3 && text[pos - 3] === '/') { return 0 }\n return tail.match(self.re.no_http)[0].length\n }\n return 0\n }\n },\n 'mailto:': {\n validate: function (text, pos, self) {\n const tail = text.slice(pos);\n\n if (!self.re.mailto) {\n self.re.mailto = new RegExp(\n `^${self.re.src_email_name}@${self.re.src_host_strict}`, 'i'\n );\n }\n if (self.re.mailto.test(tail)) {\n return tail.match(self.re.mailto)[0].length\n }\n return 0\n }\n }\n};\n\n// RE pattern for 2-character tlds (autogenerated by ./support/tlds_2char_gen.js)\nconst tlds_2ch_src_re = 'a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]';\n\n// DON'T try to make PRs with changes. Extend TLDs with LinkifyIt.tlds() instead\nconst tlds_default = 'biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф'.split('|');\n\nfunction createValidator (re) {\n return function (text, pos) {\n const tail = text.slice(pos);\n\n if (re.test(tail)) {\n return tail.match(re)[0].length\n }\n return 0\n }\n}\n\nfunction createNormalizer () {\n return function (match, self) {\n self.normalize(match);\n }\n}\n\n// Schemas compiler. Build regexps.\n//\nfunction compile (self) {\n // Load & clone RE patterns.\n const re = self.re = reFactory(self.__opts__);\n\n // Define dynamic patterns\n const tlds = self.__tlds__.slice();\n\n self.onCompile();\n\n if (!self.__tlds_replaced__) {\n tlds.push(tlds_2ch_src_re);\n }\n tlds.push(re.src_xn);\n\n re.src_tlds = tlds.join('|');\n\n function untpl (tpl) { return tpl.replace('%TLDS%', re.src_tlds) }\n\n re.email_fuzzy = RegExp(untpl(re.tpl_email_fuzzy), 'i');\n re.email_fuzzy_global = RegExp(untpl(re.tpl_email_fuzzy), 'ig');\n re.link_fuzzy = RegExp(untpl(re.tpl_link_fuzzy), 'i');\n re.link_fuzzy_global = RegExp(untpl(re.tpl_link_fuzzy), 'ig');\n re.link_no_ip_fuzzy = RegExp(untpl(re.tpl_link_no_ip_fuzzy), 'i');\n re.link_no_ip_fuzzy_global = RegExp(untpl(re.tpl_link_no_ip_fuzzy), 'ig');\n re.host_fuzzy_test = RegExp(untpl(re.tpl_host_fuzzy_test), 'i');\n\n //\n // Compile each schema\n //\n\n const aliases = [];\n\n self.__compiled__ = {}; // Reset compiled data\n\n function schemaError (name, val) {\n throw new Error(`(LinkifyIt) Invalid schema \"${name}\": ${val}`)\n }\n\n Object.keys(self.__schemas__).forEach(function (name) {\n const val = self.__schemas__[name];\n\n // skip disabled methods\n if (val === null) { return }\n\n const compiled = { validate: null, link: null };\n\n self.__compiled__[name] = compiled;\n\n if (isObject(val)) {\n if (isRegExp(val.validate)) {\n compiled.validate = createValidator(val.validate);\n } else if (isFunction(val.validate)) {\n compiled.validate = val.validate;\n } else {\n schemaError(name, val);\n }\n\n if (isFunction(val.normalize)) {\n compiled.normalize = val.normalize;\n } else if (!val.normalize) {\n compiled.normalize = createNormalizer();\n } else {\n schemaError(name, val);\n }\n\n return\n }\n\n if (isString(val)) {\n aliases.push(name);\n return\n }\n\n schemaError(name, val);\n });\n\n //\n // Compile postponed aliases\n //\n\n aliases.forEach(function (alias) {\n if (!self.__compiled__[self.__schemas__[alias]]) {\n // Silently fail on missed schemas to avoid errons on disable.\n // schemaError(alias, self.__schemas__[alias]);\n return\n }\n\n self.__compiled__[alias].validate =\n self.__compiled__[self.__schemas__[alias]].validate;\n self.__compiled__[alias].normalize =\n self.__compiled__[self.__schemas__[alias]].normalize;\n });\n\n //\n // Fake record for guessed links\n //\n self.__compiled__[''] = { validate: null, normalize: createNormalizer() };\n\n //\n // Build schema condition\n //\n const slist = Object.keys(self.__compiled__)\n .filter(function (name) {\n // Filter disabled & fake schemas\n return name.length > 0 && self.__compiled__[name]\n })\n .map(escapeRE)\n .join('|');\n // (?!_) cause 1.5x slowdown\n self.re.schema_test = RegExp(`(^|(?!_)(?:[><\\uff5c]|${re.src_ZPCc}))(${slist})`, 'i');\n self.re.schema_search = RegExp(`(^|(?!_)(?:[><\\uff5c]|${re.src_ZPCc}))(${slist})`, 'ig');\n self.re.schema_at_start = RegExp(`^${self.re.schema_search.source}`, 'i');\n\n self.re.pretest = RegExp(\n `(${self.re.schema_test.source})|(${self.re.host_fuzzy_test.source})|@`,\n 'i'\n );\n}\n\n/**\n * class Match\n *\n * Match result. Single element of array, returned by [[LinkifyIt#match]]\n **/\nfunction Match (text, schema, index, lastIndex) {\n const raw = text.slice(index, lastIndex);\n\n /**\n * Match#schema -> String\n *\n * Prefix (protocol) for matched string.\n **/\n this.schema = schema.toLowerCase();\n /**\n * Match#index -> Number\n *\n * First position of matched string.\n **/\n this.index = index;\n /**\n * Match#lastIndex -> Number\n *\n * Next position after matched string.\n **/\n this.lastIndex = lastIndex;\n /**\n * Match#raw -> String\n *\n * Matched string.\n **/\n this.raw = raw;\n /**\n * Match#text -> String\n *\n * Notmalized text of matched string.\n **/\n this.text = raw;\n /**\n * Match#url -> String\n *\n * Normalized url of matched string.\n **/\n this.url = raw;\n}\n\n/**\n * class LinkifyIt\n **/\n\n/**\n * new LinkifyIt(schemas, options)\n * - schemas (Object): Optional. Additional schemas to validate (prefix/validator)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Creates new linkifier instance with optional additional schemas.\n * Can be called without `new` keyword for convenience.\n *\n * By default understands:\n *\n * - `http(s)://...` , `ftp://...`, `mailto:...` & `//...` links\n * - \"fuzzy\" links and emails (example.com, foo@bar.com).\n *\n * `schemas` is an object, where each key/value describes protocol/rule:\n *\n * - __key__ - link prefix (usually, protocol name with `:` at the end, `skype:`\n * for example). `linkify-it` makes shure that prefix is not preceeded with\n * alphanumeric char and symbols. Only whitespaces and punctuation allowed.\n * - __value__ - rule to check tail after link prefix\n * - _String_ - just alias to existing rule\n * - _Object_\n * - _validate_ - validator function (should return matched length on success),\n * or `RegExp`.\n * - _normalize_ - optional function to normalize text & url of matched result\n * (for example, for @twitter mentions).\n *\n * `options`:\n *\n * - __fuzzyLink__ - recognige URL-s without `http(s):` prefix. Default `true`.\n * - __fuzzyIP__ - allow IPs in fuzzy links above. Can conflict with some texts\n * like version numbers. Default `false`.\n * - __fuzzyEmail__ - recognize emails without `mailto:` prefix.\n *\n **/\nfunction LinkifyIt (schemas, options) {\n if (!(this instanceof LinkifyIt)) {\n return new LinkifyIt(schemas, options)\n }\n\n if (!options) {\n if (isOptionsObj(schemas)) {\n options = schemas;\n schemas = {};\n }\n }\n\n this.__opts__ = assign({}, defaultOptions, options);\n\n this.__schemas__ = assign({}, defaultSchemas, schemas);\n this.__compiled__ = {};\n\n this.__tlds__ = tlds_default;\n this.__tlds_replaced__ = false;\n\n this.re = {};\n\n compile(this);\n}\n\n/** chainable\n * LinkifyIt#add(schema, definition)\n * - schema (String): rule name (fixed pattern prefix)\n * - definition (String|RegExp|Object): schema definition\n *\n * Add new rule definition. See constructor description for details.\n **/\nLinkifyIt.prototype.add = function add (schema, definition) {\n this.__schemas__[schema] = definition;\n compile(this);\n return this\n};\n\n/** chainable\n * LinkifyIt#set(options)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Set recognition options for links without schema.\n **/\nLinkifyIt.prototype.set = function set (options) {\n this.__opts__ = assign(this.__opts__, options);\n return this\n};\n\n/**\n * LinkifyIt#test(text) -> Boolean\n *\n * Searches linkifiable pattern and returns `true` on success or `false` on fail.\n **/\nLinkifyIt.prototype.test = function test (text) {\n if (!text.length) { return false }\n\n let m, re;\n\n // try to scan for link with schema - that's the most simple rule\n if (this.re.schema_test.test(text)) {\n re = this.re.schema_search;\n re.lastIndex = 0;\n while ((m = re.exec(text)) !== null) {\n if (this.testSchemaAt(text, m[2], re.lastIndex)) { return true }\n }\n }\n\n if (this.__opts__.fuzzyLink && this.__compiled__['http:']) {\n // guess schemaless links\n if (text.search(this.re.host_fuzzy_test) >= 0) {\n if (text.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy) !== null) {\n return true\n }\n }\n }\n\n if (this.__opts__.fuzzyEmail && this.__compiled__['mailto:']) {\n // guess schemaless emails\n if (text.indexOf('@') >= 0) {\n // We can't skip this check, because this cases are possible:\n // 192.168.1.1@gmail.com, my.in@example.com\n if (text.match(this.re.email_fuzzy) !== null) { return true }\n }\n }\n\n return false\n};\n\n/**\n * LinkifyIt#pretest(text) -> Boolean\n *\n * Very quick check, that can give false positives. Returns true if link MAY BE\n * can exists. Can be used for speed optimization, when you need to check that\n * link NOT exists.\n **/\nLinkifyIt.prototype.pretest = function pretest (text) {\n return this.re.pretest.test(text)\n};\n\n/**\n * LinkifyIt#testSchemaAt(text, name, position) -> Number\n * - text (String): text to scan\n * - name (String): rule (schema) name\n * - position (Number): text offset to check from\n *\n * Similar to [[LinkifyIt#test]] but checks only specific protocol tail exactly\n * at given position. Returns length of found pattern (0 on fail).\n **/\nLinkifyIt.prototype.testSchemaAt = function testSchemaAt (text, schema, pos) {\n // If not supported schema check requested - terminate\n if (!this.__compiled__[schema.toLowerCase()]) {\n return 0\n }\n return this.__compiled__[schema.toLowerCase()].validate(text, pos, this)\n};\n\n/**\n * LinkifyIt#match(text) -> Array|null\n *\n * Returns array of found link descriptions or `null` on fail. We strongly\n * recommend to use [[LinkifyIt#test]] first, for best speed.\n *\n * ##### Result match description\n *\n * - __schema__ - link schema, can be empty for fuzzy links, or `//` for\n * protocol-neutral links.\n * - __index__ - offset of matched text\n * - __lastIndex__ - index of next char after mathch end\n * - __raw__ - matched text\n * - __text__ - normalized text\n * - __url__ - link, generated from matched text\n **/\nLinkifyIt.prototype.match = function match (text) {\n const result = [];\n const type_schemed = [];\n const type_fuzzy_link = [];\n const type_fuzzy_email = [];\n let m, len, re;\n\n function choose (a, b) {\n if (!a) { return b }\n if (!b) { return a }\n if (a.index !== b.index) { return a.index < b.index ? a : b }\n return a.lastIndex >= b.lastIndex ? a : b\n }\n\n if (!text.length) { return null }\n\n // scan for links with schema\n if (this.re.schema_test.test(text)) {\n re = this.re.schema_search;\n re.lastIndex = 0;\n while ((m = re.exec(text)) !== null) {\n len = this.testSchemaAt(text, m[2], re.lastIndex);\n if (len) {\n type_schemed.push({\n schema: m[2],\n index: m.index + m[1].length,\n lastIndex: m.index + m[0].length + len\n });\n }\n }\n }\n\n if (this.__opts__.fuzzyLink && this.__compiled__['http:']) {\n re = this.__opts__.fuzzyIP ? this.re.link_fuzzy_global : this.re.link_no_ip_fuzzy_global;\n re.lastIndex = 0;\n while ((m = re.exec(text)) !== null) {\n type_fuzzy_link.push({\n schema: '',\n index: m.index + m[1].length,\n lastIndex: m.index + m[0].length\n });\n }\n }\n\n if (this.__opts__.fuzzyEmail && this.__compiled__['mailto:']) {\n re = this.re.email_fuzzy_global;\n re.lastIndex = 0;\n while ((m = re.exec(text)) !== null) {\n type_fuzzy_email.push({\n schema: 'mailto:',\n index: m.index + m[1].length,\n lastIndex: m.index + m[0].length\n });\n }\n }\n\n const indexes = [0, 0, 0];\n let lastIndex = 0;\n\n for (;;) {\n const candidates = [\n type_schemed[indexes[0]],\n type_fuzzy_email[indexes[1]],\n type_fuzzy_link[indexes[2]]\n ];\n\n const candidate = choose(choose(candidates[0], candidates[1]), candidates[2]);\n\n if (!candidate) { break }\n\n if (candidate === candidates[0]) {\n indexes[0]++;\n } else if (candidate === candidates[1]) {\n indexes[1]++;\n } else {\n indexes[2]++;\n }\n\n if (candidate.index < lastIndex) { continue }\n\n const match = new Match(text, candidate.schema, candidate.index, candidate.lastIndex);\n this.__compiled__[match.schema].normalize(match, this);\n result.push(match);\n lastIndex = candidate.lastIndex;\n }\n\n if (result.length) {\n return result\n }\n\n return null\n};\n\n/**\n * LinkifyIt#matchAtStart(text) -> Match|null\n *\n * Returns fully-formed (not fuzzy) link if it starts at the beginning\n * of the string, and null otherwise.\n **/\nLinkifyIt.prototype.matchAtStart = function matchAtStart (text) {\n if (!text.length) return null\n\n const m = this.re.schema_at_start.exec(text);\n if (!m) return null\n\n const len = this.testSchemaAt(text, m[2], m[0].length);\n if (!len) return null\n\n const match = new Match(text, m[2], m.index + m[1].length, m.index + m[0].length + len);\n\n this.__compiled__[match.schema].normalize(match, this);\n return match\n};\n\n/** chainable\n * LinkifyIt#tlds(list [, keepOld]) -> this\n * - list (Array): list of tlds\n * - keepOld (Boolean): merge with current list if `true` (`false` by default)\n *\n * Load (or merge) new tlds list. Those are user for fuzzy links (without prefix)\n * to avoid false positives. By default this algorythm used:\n *\n * - hostname with any 2-letter root zones are ok.\n * - biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф\n * are ok.\n * - encoded (`xn--...`) root zones are ok.\n *\n * If list is replaced, then exact match for 2-chars root zones will be checked.\n **/\nLinkifyIt.prototype.tlds = function tlds (list, keepOld) {\n list = Array.isArray(list) ? list : [list];\n\n if (!keepOld) {\n this.__tlds__ = list.slice();\n this.__tlds_replaced__ = true;\n compile(this);\n return this\n }\n\n this.__tlds__ = this.__tlds__.concat(list)\n .sort()\n .filter(function (el, idx, arr) {\n return el !== arr[idx - 1]\n })\n .reverse();\n\n compile(this);\n return this\n};\n\n/**\n * LinkifyIt#normalize(match)\n *\n * Default normalizer (if schema does not define it's own).\n **/\nLinkifyIt.prototype.normalize = function normalize (match) {\n // Do minimal possible changes by default. Need to collect feedback prior\n // to move forward https://github.com/markdown-it/linkify-it/issues/1\n\n if (!match.schema) { match.url = `http://${match.url}`; }\n\n if (match.schema === 'mailto:' && !/^mailto:/i.test(match.url)) {\n match.url = `mailto:${match.url}`;\n }\n};\n\n/**\n * LinkifyIt#onCompile()\n *\n * Override to modify basic RegExp-s.\n **/\nLinkifyIt.prototype.onCompile = function onCompile () {\n};\n\nmodule.exports = LinkifyIt;\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7F]/; // Note: U+007F DEL is excluded too.\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, callback) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = callback(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {String} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(domain, callback) {\n\tconst parts = domain.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tdomain = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tdomain = domain.replace(regexSeparators, '\\x2E');\n\tconst labels = domain.split('.');\n\tconst encoded = map(labels, callback).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = codePoints => String.fromCodePoint(...codePoints);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint >= 0x30 && codePoint < 0x3A) {\n\t\treturn 26 + (codePoint - 0x30);\n\t}\n\tif (codePoint >= 0x41 && codePoint < 0x5B) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint >= 0x61 && codePoint < 0x7B) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tconst oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\t\t\tif (digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tconst inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tconst basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue === n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.3.1',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nmodule.exports = punycode;\n","//#region \\0rolldown/runtime.js\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __exportAll = (all, no_symbols) => {\n\tlet target = {};\n\tfor (var name in all) __defProp(target, name, {\n\t\tget: all[name],\n\t\tenumerable: true\n\t});\n\tif (!no_symbols) __defProp(target, Symbol.toStringTag, { value: \"Module\" });\n\treturn target;\n};\nvar __copyProps = (to, from, except, desc) => {\n\tif (from && typeof from === \"object\" || typeof from === \"function\") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {\n\t\tkey = keys[i];\n\t\tif (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {\n\t\t\tget: ((k) => from[k]).bind(null, key),\n\t\t\tenumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n\t\t});\n\t}\n\treturn to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", {\n\tvalue: mod,\n\tenumerable: true\n}) : target, mod));\n//#endregion\nlet mdurl = require(\"mdurl\");\nmdurl = __toESM(mdurl, 1);\nlet uc_micro = require(\"uc.micro\");\nuc_micro = __toESM(uc_micro, 1);\nlet entities = require(\"entities\");\nlet linkify_it = require(\"linkify-it\");\nlinkify_it = __toESM(linkify_it, 1);\nlet punycode_js = require(\"punycode.js\");\npunycode_js = __toESM(punycode_js, 1);\n//#region lib/common/utils.mjs\nvar utils_exports = /* @__PURE__ */ __exportAll({\n\tarrayReplaceAt: () => arrayReplaceAt,\n\tasciiTrim: () => asciiTrim,\n\tassign: () => assign,\n\tescapeHtml: () => escapeHtml,\n\tescapeRE: () => escapeRE,\n\tfromCodePoint: () => fromCodePoint,\n\thas: () => has,\n\tisMdAsciiPunct: () => isMdAsciiPunct,\n\tisPunctChar: () => isPunctChar,\n\tisPunctCharCode: () => isPunctCharCode,\n\tisSpace: () => isSpace,\n\tisString: () => isString,\n\tisValidEntityCode: () => isValidEntityCode,\n\tisWhiteSpace: () => isWhiteSpace,\n\tlib: () => lib,\n\tnormalizeReference: () => normalizeReference,\n\tunescapeAll: () => unescapeAll,\n\tunescapeMd: () => unescapeMd\n});\nfunction _class(obj) {\n\treturn Object.prototype.toString.call(obj);\n}\nfunction isString(obj) {\n\treturn _class(obj) === \"[object String]\";\n}\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction has(object, key) {\n\treturn _hasOwnProperty.call(object, key);\n}\nfunction assign(obj) {\n\tArray.prototype.slice.call(arguments, 1).forEach(function(source) {\n\t\tif (!source) return;\n\t\tif (typeof source !== \"object\") throw new TypeError(source + \"must be object\");\n\t\tObject.keys(source).forEach(function(key) {\n\t\t\tobj[key] = source[key];\n\t\t});\n\t});\n\treturn obj;\n}\nfunction arrayReplaceAt(src, pos, newElements) {\n\treturn [].concat(src.slice(0, pos), newElements, src.slice(pos + 1));\n}\nfunction isValidEntityCode(c) {\n\tif (c >= 55296 && c <= 57343) return false;\n\tif (c >= 64976 && c <= 65007) return false;\n\tif ((c & 65535) === 65535 || (c & 65535) === 65534) return false;\n\tif (c >= 0 && c <= 8) return false;\n\tif (c === 11) return false;\n\tif (c >= 14 && c <= 31) return false;\n\tif (c >= 127 && c <= 159) return false;\n\tif (c > 1114111) return false;\n\treturn true;\n}\nfunction fromCodePoint(c) {\n\tif (c > 65535) {\n\t\tc -= 65536;\n\t\tconst surrogate1 = 55296 + (c >> 10);\n\t\tconst surrogate2 = 56320 + (c & 1023);\n\t\treturn String.fromCharCode(surrogate1, surrogate2);\n\t}\n\treturn String.fromCharCode(c);\n}\nvar UNESCAPE_MD_RE = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_`{|}~])/g;\nvar UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + \"|\" + /&([a-z#][a-z0-9]{1,31});/gi.source, \"gi\");\nvar DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i;\nfunction replaceEntityPattern(match, name) {\n\tif (name.charCodeAt(0) === 35 && DIGITAL_ENTITY_TEST_RE.test(name)) {\n\t\tconst code = name[1].toLowerCase() === \"x\" ? parseInt(name.slice(2), 16) : parseInt(name.slice(1), 10);\n\t\tif (isValidEntityCode(code)) return fromCodePoint(code);\n\t\treturn match;\n\t}\n\tconst decoded = (0, entities.decodeHTML)(match);\n\tif (decoded !== match) return decoded;\n\treturn match;\n}\nfunction unescapeMd(str) {\n\tif (str.indexOf(\"\\\\\") < 0) return str;\n\treturn str.replace(UNESCAPE_MD_RE, \"$1\");\n}\nfunction unescapeAll(str) {\n\tif (str.indexOf(\"\\\\\") < 0 && str.indexOf(\"&\") < 0) return str;\n\treturn str.replace(UNESCAPE_ALL_RE, function(match, escaped, entity) {\n\t\tif (escaped) return escaped;\n\t\treturn replaceEntityPattern(match, entity);\n\t});\n}\nvar HTML_ESCAPE_TEST_RE = /[&<>\"]/;\nvar HTML_ESCAPE_REPLACE_RE = /[&<>\"]/g;\nvar HTML_REPLACEMENTS = {\n\t\"&\": \"&\",\n\t\"<\": \"<\",\n\t\">\": \">\",\n\t\"\\\"\": \""\"\n};\nfunction replaceUnsafeChar(ch) {\n\treturn HTML_REPLACEMENTS[ch];\n}\nfunction escapeHtml(str) {\n\tif (HTML_ESCAPE_TEST_RE.test(str)) return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar);\n\treturn str;\n}\nvar REGEXP_ESCAPE_RE = /[.?*+^$[\\]\\\\(){}|-]/g;\nfunction escapeRE(str) {\n\treturn str.replace(REGEXP_ESCAPE_RE, \"\\\\$&\");\n}\nfunction isSpace(code) {\n\tswitch (code) {\n\t\tcase 9:\n\t\tcase 32: return true;\n\t}\n\treturn false;\n}\nfunction isWhiteSpace(code) {\n\tif (code >= 8192 && code <= 8202) return true;\n\tswitch (code) {\n\t\tcase 9:\n\t\tcase 10:\n\t\tcase 11:\n\t\tcase 12:\n\t\tcase 13:\n\t\tcase 32:\n\t\tcase 160:\n\t\tcase 5760:\n\t\tcase 8239:\n\t\tcase 8287:\n\t\tcase 12288: return true;\n\t}\n\treturn false;\n}\nfunction isPunctChar(ch) {\n\treturn uc_micro.P.test(ch) || uc_micro.S.test(ch);\n}\nfunction isPunctCharCode(code) {\n\treturn isPunctChar(fromCodePoint(code));\n}\nfunction isMdAsciiPunct(ch) {\n\tswitch (ch) {\n\t\tcase 33:\n\t\tcase 34:\n\t\tcase 35:\n\t\tcase 36:\n\t\tcase 37:\n\t\tcase 38:\n\t\tcase 39:\n\t\tcase 40:\n\t\tcase 41:\n\t\tcase 42:\n\t\tcase 43:\n\t\tcase 44:\n\t\tcase 45:\n\t\tcase 46:\n\t\tcase 47:\n\t\tcase 58:\n\t\tcase 59:\n\t\tcase 60:\n\t\tcase 61:\n\t\tcase 62:\n\t\tcase 63:\n\t\tcase 64:\n\t\tcase 91:\n\t\tcase 92:\n\t\tcase 93:\n\t\tcase 94:\n\t\tcase 95:\n\t\tcase 96:\n\t\tcase 123:\n\t\tcase 124:\n\t\tcase 125:\n\t\tcase 126: return true;\n\t\tdefault: return false;\n\t}\n}\nfunction normalizeReference(str) {\n\tstr = str.trim().replace(/\\s+/g, \" \");\n\tif (\"ẞ\".toLowerCase() === \"Ṿ\")\n /* c8 ignore next 2 */\n\tstr = str.replace(/ẞ/g, \"ß\");\n\treturn str.toLowerCase().toUpperCase();\n}\nfunction isAsciiTrimmable(c) {\n\treturn c === 32 || c === 9 || c === 10 || c === 13;\n}\nfunction asciiTrim(str) {\n\tlet start = 0;\n\tfor (; start < str.length; start++) if (!isAsciiTrimmable(str.charCodeAt(start))) break;\n\tlet end = str.length - 1;\n\tfor (; end >= start; end--) if (!isAsciiTrimmable(str.charCodeAt(end))) break;\n\treturn str.slice(start, end + 1);\n}\nvar lib = {\n\tmdurl,\n\tucmicro: uc_micro\n};\n//#endregion\n//#region lib/helpers/parse_link_label.mjs\nfunction parseLinkLabel(state, start, disableNested) {\n\tlet level, found, marker, prevPos;\n\tconst max = state.posMax;\n\tconst oldPos = state.pos;\n\tstate.pos = start + 1;\n\tlevel = 1;\n\twhile (state.pos < max) {\n\t\tmarker = state.src.charCodeAt(state.pos);\n\t\tif (marker === 93) {\n\t\t\tlevel--;\n\t\t\tif (level === 0) {\n\t\t\t\tfound = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tprevPos = state.pos;\n\t\tstate.md.inline.skipToken(state);\n\t\tif (marker === 91) {\n\t\t\tif (prevPos === state.pos - 1) level++;\n\t\t\telse if (disableNested) {\n\t\t\t\tstate.pos = oldPos;\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\tlet labelEnd = -1;\n\tif (found) labelEnd = state.pos;\n\tstate.pos = oldPos;\n\treturn labelEnd;\n}\n//#endregion\n//#region lib/helpers/parse_link_destination.mjs\nfunction parseLinkDestination(str, start, max) {\n\tlet code;\n\tlet pos = start;\n\tconst result = {\n\t\tok: false,\n\t\tpos: 0,\n\t\tstr: \"\"\n\t};\n\tif (str.charCodeAt(pos) === 60) {\n\t\tpos++;\n\t\twhile (pos < max) {\n\t\t\tcode = str.charCodeAt(pos);\n\t\t\tif (code === 10) return result;\n\t\t\tif (code === 60) return result;\n\t\t\tif (code === 62) {\n\t\t\t\tresult.pos = pos + 1;\n\t\t\t\tresult.str = unescapeAll(str.slice(start + 1, pos));\n\t\t\t\tresult.ok = true;\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tif (code === 92 && pos + 1 < max) {\n\t\t\t\tpos += 2;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tpos++;\n\t\t}\n\t\treturn result;\n\t}\n\tlet level = 0;\n\twhile (pos < max) {\n\t\tcode = str.charCodeAt(pos);\n\t\tif (code === 32) break;\n\t\tif (code < 32 || code === 127) break;\n\t\tif (code === 92 && pos + 1 < max) {\n\t\t\tif (str.charCodeAt(pos + 1) === 32) break;\n\t\t\tpos += 2;\n\t\t\tcontinue;\n\t\t}\n\t\tif (code === 40) {\n\t\t\tlevel++;\n\t\t\tif (level > 32) return result;\n\t\t}\n\t\tif (code === 41) {\n\t\t\tif (level === 0) break;\n\t\t\tlevel--;\n\t\t}\n\t\tpos++;\n\t}\n\tif (start === pos) return result;\n\tif (level !== 0) return result;\n\tresult.str = unescapeAll(str.slice(start, pos));\n\tresult.pos = pos;\n\tresult.ok = true;\n\treturn result;\n}\n//#endregion\n//#region lib/helpers/parse_link_title.mjs\nfunction parseLinkTitle(str, start, max, prev_state) {\n\tlet code;\n\tlet pos = start;\n\tconst state = {\n\t\tok: false,\n\t\tcan_continue: false,\n\t\tpos: 0,\n\t\tstr: \"\",\n\t\tmarker: 0\n\t};\n\tif (prev_state) {\n\t\tstate.str = prev_state.str;\n\t\tstate.marker = prev_state.marker;\n\t} else {\n\t\tif (pos >= max) return state;\n\t\tlet marker = str.charCodeAt(pos);\n\t\tif (marker !== 34 && marker !== 39 && marker !== 40) return state;\n\t\tstart++;\n\t\tpos++;\n\t\tif (marker === 40) marker = 41;\n\t\tstate.marker = marker;\n\t}\n\twhile (pos < max) {\n\t\tcode = str.charCodeAt(pos);\n\t\tif (code === state.marker) {\n\t\t\tstate.pos = pos + 1;\n\t\t\tstate.str += unescapeAll(str.slice(start, pos));\n\t\t\tstate.ok = true;\n\t\t\treturn state;\n\t\t} else if (code === 40 && state.marker === 41) return state;\n\t\telse if (code === 92 && pos + 1 < max) pos++;\n\t\tpos++;\n\t}\n\tstate.can_continue = true;\n\tstate.str += unescapeAll(str.slice(start, pos));\n\treturn state;\n}\n//#endregion\n//#region lib/helpers/index.mjs\nvar helpers_exports = /* @__PURE__ */ __exportAll({\n\tparseLinkDestination: () => parseLinkDestination,\n\tparseLinkLabel: () => parseLinkLabel,\n\tparseLinkTitle: () => parseLinkTitle\n});\n//#endregion\n//#region lib/renderer.mjs\n/**\n* class Renderer\n*\n* Generates HTML from parsed token stream. Each instance has independent\n* copy of rules. Those can be rewritten with ease. Also, you can add new\n* rules if you create plugin and adds new token types.\n**/\nvar default_rules = {};\ndefault_rules.code_inline = function(tokens, idx, options, env, slf) {\n\tconst token = tokens[idx];\n\treturn \"<code\" + slf.renderAttrs(token) + \">\" + escapeHtml(token.content) + \"</code>\";\n};\ndefault_rules.code_block = function(tokens, idx, options, env, slf) {\n\tconst token = tokens[idx];\n\treturn \"<pre\" + slf.renderAttrs(token) + \"><code>\" + escapeHtml(tokens[idx].content) + \"</code></pre>\\n\";\n};\ndefault_rules.fence = function(tokens, idx, options, env, slf) {\n\tconst token = tokens[idx];\n\tconst info = token.info ? unescapeAll(token.info).trim() : \"\";\n\tlet langName = \"\";\n\tlet langAttrs = \"\";\n\tif (info) {\n\t\tconst arr = info.split(/(\\s+)/g);\n\t\tlangName = arr[0];\n\t\tlangAttrs = arr.slice(2).join(\"\");\n\t}\n\tlet highlighted;\n\tif (options.highlight) highlighted = options.highlight(token.content, langName, langAttrs) || escapeHtml(token.content);\n\telse highlighted = escapeHtml(token.content);\n\tif (highlighted.indexOf(\"<pre\") === 0) return highlighted + \"\\n\";\n\tif (info) {\n\t\tconst i = token.attrIndex(\"class\");\n\t\tconst tmpAttrs = token.attrs ? token.attrs.slice() : [];\n\t\tif (i < 0) tmpAttrs.push([\"class\", options.langPrefix + langName]);\n\t\telse {\n\t\t\ttmpAttrs[i] = tmpAttrs[i].slice();\n\t\t\ttmpAttrs[i][1] += \" \" + options.langPrefix + langName;\n\t\t}\n\t\tconst tmpToken = { attrs: tmpAttrs };\n\t\treturn `<pre><code${slf.renderAttrs(tmpToken)}>${highlighted}</code></pre>\\n`;\n\t}\n\treturn `<pre><code${slf.renderAttrs(token)}>${highlighted}</code></pre>\\n`;\n};\ndefault_rules.image = function(tokens, idx, options, env, slf) {\n\tconst token = tokens[idx];\n\ttoken.attrs[token.attrIndex(\"alt\")][1] = slf.renderInlineAsText(token.children, options, env);\n\treturn slf.renderToken(tokens, idx, options);\n};\ndefault_rules.hardbreak = function(tokens, idx, options) {\n\treturn options.xhtmlOut ? \"<br />\\n\" : \"<br>\\n\";\n};\ndefault_rules.softbreak = function(tokens, idx, options) {\n\treturn options.breaks ? options.xhtmlOut ? \"<br />\\n\" : \"<br>\\n\" : \"\\n\";\n};\ndefault_rules.text = function(tokens, idx) {\n\treturn escapeHtml(tokens[idx].content);\n};\ndefault_rules.html_block = function(tokens, idx) {\n\treturn tokens[idx].content;\n};\ndefault_rules.html_inline = function(tokens, idx) {\n\treturn tokens[idx].content;\n};\n/**\n* new Renderer()\n*\n* Creates new [[Renderer]] instance and fill [[Renderer#rules]] with defaults.\n**/\nfunction Renderer() {\n\t/**\n\t* Renderer#rules -> Object\n\t*\n\t* Contains render rules for tokens. Can be updated and extended.\n\t*\n\t* ##### Example\n\t*\n\t* ```javascript\n\t* var md = require('markdown-it')();\n\t*\n\t* md.renderer.rules.strong_open = function () { return '<b>'; };\n\t* md.renderer.rules.strong_close = function () { return '</b>'; };\n\t*\n\t* var result = md.renderInline(...);\n\t* ```\n\t*\n\t* Each rule is called as independent static function with fixed signature:\n\t*\n\t* ```javascript\n\t* function my_token_render(tokens, idx, options, env, renderer) {\n\t* // ...\n\t* return renderedHTML;\n\t* }\n\t* ```\n\t*\n\t* See [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.mjs)\n\t* for more details and examples.\n\t**/\n\tthis.rules = assign({}, default_rules);\n}\n/**\n* Renderer.renderAttrs(token) -> String\n*\n* Render token attributes to string.\n**/\nRenderer.prototype.renderAttrs = function renderAttrs(token) {\n\tlet i, l, result;\n\tif (!token.attrs) return \"\";\n\tresult = \"\";\n\tfor (i = 0, l = token.attrs.length; i < l; i++) result += \" \" + escapeHtml(token.attrs[i][0]) + \"=\\\"\" + escapeHtml(token.attrs[i][1]) + \"\\\"\";\n\treturn result;\n};\n/**\n* Renderer.renderToken(tokens, idx, options) -> String\n* - tokens (Array): list of tokens\n* - idx (Numbed): token index to render\n* - options (Object): params of parser instance\n*\n* Default token renderer. Can be overriden by custom function\n* in [[Renderer#rules]].\n**/\nRenderer.prototype.renderToken = function renderToken(tokens, idx, options) {\n\tconst token = tokens[idx];\n\tlet result = \"\";\n\tif (token.hidden) return \"\";\n\tif (token.block && token.nesting !== -1 && idx && tokens[idx - 1].hidden) result += \"\\n\";\n\tresult += (token.nesting === -1 ? \"</\" : \"<\") + token.tag;\n\tresult += this.renderAttrs(token);\n\tif (token.nesting === 0 && options.xhtmlOut) result += \" /\";\n\tlet needLf = false;\n\tif (token.block) {\n\t\tneedLf = true;\n\t\tif (token.nesting === 1) {\n\t\t\tif (idx + 1 < tokens.length) {\n\t\t\t\tconst nextToken = tokens[idx + 1];\n\t\t\t\tif (nextToken.type === \"inline\" || nextToken.hidden) needLf = false;\n\t\t\t\telse if (nextToken.nesting === -1 && nextToken.tag === token.tag) needLf = false;\n\t\t\t}\n\t\t}\n\t}\n\tresult += needLf ? \">\\n\" : \">\";\n\treturn result;\n};\n/**\n* Renderer.renderInline(tokens, options, env) -> String\n* - tokens (Array): list on block tokens to render\n* - options (Object): params of parser instance\n* - env (Object): additional data from parsed input (references, for example)\n*\n* The same as [[Renderer.render]], but for single token of `inline` type.\n**/\nRenderer.prototype.renderInline = function(tokens, options, env) {\n\tlet result = \"\";\n\tconst rules = this.rules;\n\tfor (let i = 0, len = tokens.length; i < len; i++) {\n\t\tconst type = tokens[i].type;\n\t\tif (typeof rules[type] !== \"undefined\") result += rules[type](tokens, i, options, env, this);\n\t\telse result += this.renderToken(tokens, i, options);\n\t}\n\treturn result;\n};\n/** internal\n* Renderer.renderInlineAsText(tokens, options, env) -> String\n* - tokens (Array): list on block tokens to render\n* - options (Object): params of parser instance\n* - env (Object): additional data from parsed input (references, for example)\n*\n* Special kludge for image `alt` attributes to conform CommonMark spec.\n* Don't try to use it! Spec requires to show `alt` content with stripped markup,\n* instead of simple escaping.\n**/\nRenderer.prototype.renderInlineAsText = function(tokens, options, env) {\n\tlet result = \"\";\n\tfor (let i = 0, len = tokens.length; i < len; i++) switch (tokens[i].type) {\n\t\tcase \"text\":\n\t\t\tresult += tokens[i].content;\n\t\t\tbreak;\n\t\tcase \"image\":\n\t\t\tresult += this.renderInlineAsText(tokens[i].children, options, env);\n\t\t\tbreak;\n\t\tcase \"html_inline\":\n\t\tcase \"html_block\":\n\t\t\tresult += tokens[i].content;\n\t\t\tbreak;\n\t\tcase \"softbreak\":\n\t\tcase \"hardbreak\":\n\t\t\tresult += \"\\n\";\n\t\t\tbreak;\n\t\tdefault:\n\t}\n\treturn result;\n};\n/**\n* Renderer.render(tokens, options, env) -> String\n* - tokens (Array): list on block tokens to render\n* - options (Object): params of parser instance\n* - env (Object): additional data from parsed input (references, for example)\n*\n* Takes token stream and generates HTML. Probably, you will never need to call\n* this method directly.\n**/\nRenderer.prototype.render = function(tokens, options, env) {\n\tlet result = \"\";\n\tconst rules = this.rules;\n\tfor (let i = 0, len = tokens.length; i < len; i++) {\n\t\tconst type = tokens[i].type;\n\t\tif (type === \"inline\") result += this.renderInline(tokens[i].children, options, env);\n\t\telse if (typeof rules[type] !== \"undefined\") result += rules[type](tokens, i, options, env, this);\n\t\telse result += this.renderToken(tokens, i, options, env);\n\t}\n\treturn result;\n};\n//#endregion\n//#region lib/ruler.mjs\n/**\n* class Ruler\n*\n* Helper class, used by [[MarkdownIt#core]], [[MarkdownIt#block]] and\n* [[MarkdownIt#inline]] to manage sequences of functions (rules):\n*\n* - keep rules in defined order\n* - assign the name to each rule\n* - enable/disable rules\n* - add/replace rules\n* - allow assign rules to additional named chains (in the same)\n* - cacheing lists of active rules\n*\n* You will not need use this class directly until write plugins. For simple\n* rules control use [[MarkdownIt.disable]], [[MarkdownIt.enable]] and\n* [[MarkdownIt.use]].\n**/\n/**\n* new Ruler()\n**/\nfunction Ruler() {\n\tthis.__rules__ = [];\n\tthis.__cache__ = null;\n}\nRuler.prototype.__find__ = function(name) {\n\tfor (let i = 0; i < this.__rules__.length; i++) if (this.__rules__[i].name === name) return i;\n\treturn -1;\n};\nRuler.prototype.__compile__ = function() {\n\tconst self = this;\n\tconst chains = [\"\"];\n\tself.__rules__.forEach(function(rule) {\n\t\tif (!rule.enabled) return;\n\t\trule.alt.forEach(function(altName) {\n\t\t\tif (chains.indexOf(altName) < 0) chains.push(altName);\n\t\t});\n\t});\n\tself.__cache__ = {};\n\tchains.forEach(function(chain) {\n\t\tself.__cache__[chain] = [];\n\t\tself.__rules__.forEach(function(rule) {\n\t\t\tif (!rule.enabled) return;\n\t\t\tif (chain && rule.alt.indexOf(chain) < 0) return;\n\t\t\tself.__cache__[chain].push(rule.fn);\n\t\t});\n\t});\n};\n/**\n* Ruler.at(name, fn [, options])\n* - name (String): rule name to replace.\n* - fn (Function): new rule function.\n* - options (Object): new rule options (not mandatory).\n*\n* Replace rule by name with new function & options. Throws error if name not\n* found.\n*\n* ##### Options:\n*\n* - __alt__ - array with names of \"alternate\" chains.\n*\n* ##### Example\n*\n* Replace existing typographer replacement rule with new one:\n*\n* ```javascript\n* var md = require('markdown-it')();\n*\n* md.core.ruler.at('replacements', function replace(state) {\n* //...\n* });\n* ```\n**/\nRuler.prototype.at = function(name, fn, options) {\n\tconst index = this.__find__(name);\n\tconst opt = options || {};\n\tif (index === -1) throw new Error(\"Parser rule not found: \" + name);\n\tthis.__rules__[index].fn = fn;\n\tthis.__rules__[index].alt = opt.alt || [];\n\tthis.__cache__ = null;\n};\n/**\n* Ruler.before(beforeName, ruleName, fn [, options])\n* - beforeName (String): new rule will be added before this one.\n* - ruleName (String): name of added rule.\n* - fn (Function): rule function.\n* - options (Object): rule options (not mandatory).\n*\n* Add new rule to chain before one with given name. See also\n* [[Ruler.after]], [[Ruler.push]].\n*\n* ##### Options:\n*\n* - __alt__ - array with names of \"alternate\" chains.\n*\n* ##### Example\n*\n* ```javascript\n* var md = require('markdown-it')();\n*\n* md.block.ruler.before('paragraph', 'my_rule', function replace(state) {\n* //...\n* });\n* ```\n**/\nRuler.prototype.before = function(beforeName, ruleName, fn, options) {\n\tconst index = this.__find__(beforeName);\n\tconst opt = options || {};\n\tif (index === -1) throw new Error(\"Parser rule not found: \" + beforeName);\n\tthis.__rules__.splice(index, 0, {\n\t\tname: ruleName,\n\t\tenabled: true,\n\t\tfn,\n\t\talt: opt.alt || []\n\t});\n\tthis.__cache__ = null;\n};\n/**\n* Ruler.after(afterName, ruleName, fn [, options])\n* - afterName (String): new rule will be added after this one.\n* - ruleName (String): name of added rule.\n* - fn (Function): rule function.\n* - options (Object): rule options (not mandatory).\n*\n* Add new rule to chain after one with given name. See also\n* [[Ruler.before]], [[Ruler.push]].\n*\n* ##### Options:\n*\n* - __alt__ - array with names of \"alternate\" chains.\n*\n* ##### Example\n*\n* ```javascript\n* var md = require('markdown-it')();\n*\n* md.inline.ruler.after('text', 'my_rule', function replace(state) {\n* //...\n* });\n* ```\n**/\nRuler.prototype.after = function(afterName, ruleName, fn, options) {\n\tconst index = this.__find__(afterName);\n\tconst opt = options || {};\n\tif (index === -1) throw new Error(\"Parser rule not found: \" + afterName);\n\tthis.__rules__.splice(index + 1, 0, {\n\t\tname: ruleName,\n\t\tenabled: true,\n\t\tfn,\n\t\talt: opt.alt || []\n\t});\n\tthis.__cache__ = null;\n};\n/**\n* Ruler.push(ruleName, fn [, options])\n* - ruleName (String): name of added rule.\n* - fn (Function): rule function.\n* - options (Object): rule options (not mandatory).\n*\n* Push new rule to the end of chain. See also\n* [[Ruler.before]], [[Ruler.after]].\n*\n* ##### Options:\n*\n* - __alt__ - array with names of \"alternate\" chains.\n*\n* ##### Example\n*\n* ```javascript\n* var md = require('markdown-it')();\n*\n* md.core.ruler.push('my_rule', function replace(state) {\n* //...\n* });\n* ```\n**/\nRuler.prototype.push = function(ruleName, fn, options) {\n\tconst opt = options || {};\n\tthis.__rules__.push({\n\t\tname: ruleName,\n\t\tenabled: true,\n\t\tfn,\n\t\talt: opt.alt || []\n\t});\n\tthis.__cache__ = null;\n};\n/**\n* Ruler.enable(list [, ignoreInvalid]) -> Array\n* - list (String|Array): list of rule names to enable.\n* - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n*\n* Enable rules with given names. If any rule name not found - throw Error.\n* Errors can be disabled by second param.\n*\n* Returns list of found rule names (if no exception happened).\n*\n* See also [[Ruler.disable]], [[Ruler.enableOnly]].\n**/\nRuler.prototype.enable = function(list, ignoreInvalid) {\n\tif (!Array.isArray(list)) list = [list];\n\tconst result = [];\n\tlist.forEach(function(name) {\n\t\tconst idx = this.__find__(name);\n\t\tif (idx < 0) {\n\t\t\tif (ignoreInvalid) return;\n\t\t\tthrow new Error(\"Rules manager: invalid rule name \" + name);\n\t\t}\n\t\tthis.__rules__[idx].enabled = true;\n\t\tresult.push(name);\n\t}, this);\n\tthis.__cache__ = null;\n\treturn result;\n};\n/**\n* Ruler.enableOnly(list [, ignoreInvalid])\n* - list (String|Array): list of rule names to enable (whitelist).\n* - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n*\n* Enable rules with given names, and disable everything else. If any rule name\n* not found - throw Error. Errors can be disabled by second param.\n*\n* See also [[Ruler.disable]], [[Ruler.enable]].\n**/\nRuler.prototype.enableOnly = function(list, ignoreInvalid) {\n\tif (!Array.isArray(list)) list = [list];\n\tthis.__rules__.forEach(function(rule) {\n\t\trule.enabled = false;\n\t});\n\tthis.enable(list, ignoreInvalid);\n};\n/**\n* Ruler.disable(list [, ignoreInvalid]) -> Array\n* - list (String|Array): list of rule names to disable.\n* - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n*\n* Disable rules with given names. If any rule name not found - throw Error.\n* Errors can be disabled by second param.\n*\n* Returns list of found rule names (if no exception happened).\n*\n* See also [[Ruler.enable]], [[Ruler.enableOnly]].\n**/\nRuler.prototype.disable = function(list, ignoreInvalid) {\n\tif (!Array.isArray(list)) list = [list];\n\tconst result = [];\n\tlist.forEach(function(name) {\n\t\tconst idx = this.__find__(name);\n\t\tif (idx < 0) {\n\t\t\tif (ignoreInvalid) return;\n\t\t\tthrow new Error(\"Rules manager: invalid rule name \" + name);\n\t\t}\n\t\tthis.__rules__[idx].enabled = false;\n\t\tresult.push(name);\n\t}, this);\n\tthis.__cache__ = null;\n\treturn result;\n};\n/**\n* Ruler.getRules(chainName) -> Array\n*\n* Return array of active functions (rules) for given chain name. It analyzes\n* rules configuration, compiles caches if not exists and returns result.\n*\n* Default chain name is `''` (empty string). It can't be skipped. That's\n* done intentionally, to keep signature monomorphic for high speed.\n**/\nRuler.prototype.getRules = function(chainName) {\n\tif (this.__cache__ === null) this.__compile__();\n\treturn this.__cache__[chainName] || [];\n};\n//#endregion\n//#region lib/token.mjs\n/**\n* class Token\n**/\n/**\n* new Token(type, tag, nesting)\n*\n* Create new token and fill passed properties.\n**/\nfunction Token(type, tag, nesting) {\n\t/**\n\t* Token#type -> String\n\t*\n\t* Type of the token (string, e.g. \"paragraph_open\")\n\t**/\n\tthis.type = type;\n\t/**\n\t* Token#tag -> String\n\t*\n\t* html tag name, e.g. \"p\"\n\t**/\n\tthis.tag = tag;\n\t/**\n\t* Token#attrs -> Array\n\t*\n\t* Html attributes. Format: `[ [ name1, value1 ], [ name2, value2 ] ]`\n\t**/\n\tthis.attrs = null;\n\t/**\n\t* Token#map -> Array\n\t*\n\t* Source map info. Format: `[ line_begin, line_end ]`\n\t**/\n\tthis.map = null;\n\t/**\n\t* Token#nesting -> Number\n\t*\n\t* Level change (number in {-1, 0, 1} set), where:\n\t*\n\t* - `1` means the tag is opening\n\t* - `0` means the tag is self-closing\n\t* - `-1` means the tag is closing\n\t**/\n\tthis.nesting = nesting;\n\t/**\n\t* Token#level -> Number\n\t*\n\t* nesting level, the same as `state.level`\n\t**/\n\tthis.level = 0;\n\t/**\n\t* Token#children -> Array\n\t*\n\t* An array of child nodes (inline and img tokens)\n\t**/\n\tthis.children = null;\n\t/**\n\t* Token#content -> String\n\t*\n\t* In a case of self-closing tag (code, html, fence, etc.),\n\t* it has contents of this tag.\n\t**/\n\tthis.content = \"\";\n\t/**\n\t* Token#markup -> String\n\t*\n\t* '*' or '_' for emphasis, fence string for fence, etc.\n\t**/\n\tthis.markup = \"\";\n\t/**\n\t* Token#info -> String\n\t*\n\t* Additional information:\n\t*\n\t* - Info string for \"fence\" tokens\n\t* - The value \"auto\" for autolink \"link_open\" and \"link_close\" tokens\n\t* - The string value of the item marker for ordered-list \"list_item_open\" tokens\n\t**/\n\tthis.info = \"\";\n\t/**\n\t* Token#meta -> Object\n\t*\n\t* A place for plugins to store an arbitrary data\n\t**/\n\tthis.meta = null;\n\t/**\n\t* Token#block -> Boolean\n\t*\n\t* True for block-level tokens, false for inline tokens.\n\t* Used in renderer to calculate line breaks\n\t**/\n\tthis.block = false;\n\t/**\n\t* Token#hidden -> Boolean\n\t*\n\t* If it's true, ignore this element when rendering. Used for tight lists\n\t* to hide paragraphs.\n\t**/\n\tthis.hidden = false;\n}\n/**\n* Token.attrIndex(name) -> Number\n*\n* Search attribute index by name.\n**/\nToken.prototype.attrIndex = function attrIndex(name) {\n\tif (!this.attrs) return -1;\n\tconst attrs = this.attrs;\n\tfor (let i = 0, len = attrs.length; i < len; i++) if (attrs[i][0] === name) return i;\n\treturn -1;\n};\n/**\n* Token.attrPush(attrData)\n*\n* Add `[ name, value ]` attribute to list. Init attrs if necessary\n**/\nToken.prototype.attrPush = function attrPush(attrData) {\n\tif (this.attrs) this.attrs.push(attrData);\n\telse this.attrs = [attrData];\n};\n/**\n* Token.attrSet(name, value)\n*\n* Set `name` attribute to `value`. Override old value if exists.\n**/\nToken.prototype.attrSet = function attrSet(name, value) {\n\tconst idx = this.attrIndex(name);\n\tconst attrData = [name, value];\n\tif (idx < 0) this.attrPush(attrData);\n\telse this.attrs[idx] = attrData;\n};\n/**\n* Token.attrGet(name)\n*\n* Get the value of attribute `name`, or null if it does not exist.\n**/\nToken.prototype.attrGet = function attrGet(name) {\n\tconst idx = this.attrIndex(name);\n\tlet value = null;\n\tif (idx >= 0) value = this.attrs[idx][1];\n\treturn value;\n};\n/**\n* Token.attrJoin(name, value)\n*\n* Join value to existing attribute via space. Or create new attribute if not\n* exists. Useful to operate with token classes.\n**/\nToken.prototype.attrJoin = function attrJoin(name, value) {\n\tconst idx = this.attrIndex(name);\n\tif (idx < 0) this.attrPush([name, value]);\n\telse this.attrs[idx][1] = this.attrs[idx][1] + \" \" + value;\n};\n//#endregion\n//#region lib/rules_core/state_core.mjs\nfunction StateCore(src, md, env) {\n\tthis.src = src;\n\tthis.env = env;\n\tthis.tokens = [];\n\tthis.inlineMode = false;\n\tthis.md = md;\n}\nStateCore.prototype.Token = Token;\n//#endregion\n//#region lib/rules_core/normalize.mjs\nvar NEWLINES_RE = /\\r\\n?|\\n/g;\nvar NULL_RE = /\\0/g;\nfunction normalize(state) {\n\tlet str;\n\tstr = state.src.replace(NEWLINES_RE, \"\\n\");\n\tstr = str.replace(NULL_RE, \"�\");\n\tstate.src = str;\n}\n//#endregion\n//#region lib/rules_core/block.mjs\nfunction block(state) {\n\tlet token;\n\tif (state.inlineMode) {\n\t\ttoken = new state.Token(\"inline\", \"\", 0);\n\t\ttoken.content = state.src;\n\t\ttoken.map = [0, 1];\n\t\ttoken.children = [];\n\t\tstate.tokens.push(token);\n\t} else state.md.block.parse(state.src, state.md, state.env, state.tokens);\n}\n//#endregion\n//#region lib/rules_core/inline.mjs\nfunction inline(state) {\n\tconst tokens = state.tokens;\n\tfor (let i = 0, l = tokens.length; i < l; i++) {\n\t\tconst tok = tokens[i];\n\t\tif (tok.type === \"inline\") state.md.inline.parse(tok.content, state.md, state.env, tok.children);\n\t}\n}\n//#endregion\n//#region lib/rules_core/linkify.mjs\nfunction isLinkOpen$1(str) {\n\treturn /^<a[>\\s]/i.test(str);\n}\nfunction isLinkClose$1(str) {\n\treturn /^<\\/a\\s*>/i.test(str);\n}\nfunction linkify$1(state) {\n\tconst blockTokens = state.tokens;\n\tif (!state.md.options.linkify) return;\n\tfor (let j = 0, l = blockTokens.length; j < l; j++) {\n\t\tif (blockTokens[j].type !== \"inline\" || !state.md.linkify.pretest(blockTokens[j].content)) continue;\n\t\tlet tokens = blockTokens[j].children;\n\t\tlet htmlLinkLevel = 0;\n\t\tfor (let i = tokens.length - 1; i >= 0; i--) {\n\t\t\tconst currentToken = tokens[i];\n\t\t\tif (currentToken.type === \"link_close\") {\n\t\t\t\ti--;\n\t\t\t\twhile (tokens[i].level !== currentToken.level && tokens[i].type !== \"link_open\") i--;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (currentToken.type === \"html_inline\") {\n\t\t\t\tif (isLinkOpen$1(currentToken.content) && htmlLinkLevel > 0) htmlLinkLevel--;\n\t\t\t\tif (isLinkClose$1(currentToken.content)) htmlLinkLevel++;\n\t\t\t}\n\t\t\tif (htmlLinkLevel > 0) continue;\n\t\t\tif (currentToken.type === \"text\" && state.md.linkify.test(currentToken.content)) {\n\t\t\t\tconst text = currentToken.content;\n\t\t\t\tlet links = state.md.linkify.match(text);\n\t\t\t\tconst nodes = [];\n\t\t\t\tlet level = currentToken.level;\n\t\t\t\tlet lastPos = 0;\n\t\t\t\tif (links.length > 0 && links[0].index === 0 && i > 0 && tokens[i - 1].type === \"text_special\") links = links.slice(1);\n\t\t\t\tfor (let ln = 0; ln < links.length; ln++) {\n\t\t\t\t\tconst url = links[ln].url;\n\t\t\t\t\tconst fullUrl = state.md.normalizeLink(url);\n\t\t\t\t\tif (!state.md.validateLink(fullUrl)) continue;\n\t\t\t\t\tlet urlText = links[ln].text;\n\t\t\t\t\tif (!links[ln].schema) urlText = state.md.normalizeLinkText(\"http://\" + urlText).replace(/^http:\\/\\//, \"\");\n\t\t\t\t\telse if (links[ln].schema === \"mailto:\" && !/^mailto:/i.test(urlText)) urlText = state.md.normalizeLinkText(\"mailto:\" + urlText).replace(/^mailto:/, \"\");\n\t\t\t\t\telse urlText = state.md.normalizeLinkText(urlText);\n\t\t\t\t\tconst pos = links[ln].index;\n\t\t\t\t\tif (pos > lastPos) {\n\t\t\t\t\t\tconst token = new state.Token(\"text\", \"\", 0);\n\t\t\t\t\t\ttoken.content = text.slice(lastPos, pos);\n\t\t\t\t\t\ttoken.level = level;\n\t\t\t\t\t\tnodes.push(token);\n\t\t\t\t\t}\n\t\t\t\t\tconst token_o = new state.Token(\"link_open\", \"a\", 1);\n\t\t\t\t\ttoken_o.attrs = [[\"href\", fullUrl]];\n\t\t\t\t\ttoken_o.level = level++;\n\t\t\t\t\ttoken_o.markup = \"linkify\";\n\t\t\t\t\ttoken_o.info = \"auto\";\n\t\t\t\t\tnodes.push(token_o);\n\t\t\t\t\tconst token_t = new state.Token(\"text\", \"\", 0);\n\t\t\t\t\ttoken_t.content = urlText;\n\t\t\t\t\ttoken_t.level = level;\n\t\t\t\t\tnodes.push(token_t);\n\t\t\t\t\tconst token_c = new state.Token(\"link_close\", \"a\", -1);\n\t\t\t\t\ttoken_c.level = --level;\n\t\t\t\t\ttoken_c.markup = \"linkify\";\n\t\t\t\t\ttoken_c.info = \"auto\";\n\t\t\t\t\tnodes.push(token_c);\n\t\t\t\t\tlastPos = links[ln].lastIndex;\n\t\t\t\t}\n\t\t\t\tif (lastPos < text.length) {\n\t\t\t\t\tconst token = new state.Token(\"text\", \"\", 0);\n\t\t\t\t\ttoken.content = text.slice(lastPos);\n\t\t\t\t\ttoken.level = level;\n\t\t\t\t\tnodes.push(token);\n\t\t\t\t}\n\t\t\t\tblockTokens[j].children = tokens = arrayReplaceAt(tokens, i, nodes);\n\t\t\t}\n\t\t}\n\t}\n}\n//#endregion\n//#region lib/rules_core/replacements.mjs\nvar RARE_RE = /\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--/;\nvar SCOPED_ABBR_TEST_RE = /\\((c|tm|r)\\)/i;\nvar SCOPED_ABBR_RE = /\\((c|tm|r)\\)/gi;\nvar SCOPED_ABBR = {\n\tc: \"©\",\n\tr: \"®\",\n\ttm: \"™\"\n};\nfunction replaceFn(match, name) {\n\treturn SCOPED_ABBR[name.toLowerCase()];\n}\nfunction replace_scoped(inlineTokens) {\n\tlet inside_autolink = 0;\n\tfor (let i = inlineTokens.length - 1; i >= 0; i--) {\n\t\tconst token = inlineTokens[i];\n\t\tif (token.type === \"text\" && !inside_autolink) token.content = token.content.replace(SCOPED_ABBR_RE, replaceFn);\n\t\tif (token.type === \"link_open\" && token.info === \"auto\") inside_autolink--;\n\t\tif (token.type === \"link_close\" && token.info === \"auto\") inside_autolink++;\n\t}\n}\nfunction replace_rare(inlineTokens) {\n\tlet inside_autolink = 0;\n\tfor (let i = inlineTokens.length - 1; i >= 0; i--) {\n\t\tconst token = inlineTokens[i];\n\t\tif (token.type === \"text\" && !inside_autolink) {\n\t\t\tif (RARE_RE.test(token.content)) token.content = token.content.replace(/\\+-/g, \"±\").replace(/\\.{2,}/g, \"…\").replace(/([?!])…/g, \"$1..\").replace(/([?!]){4,}/g, \"$1$1$1\").replace(/,{2,}/g, \",\").replace(/(^|[^-])---(?=[^-]|$)/gm, \"$1—\").replace(/(^|\\s)--(?=\\s|$)/gm, \"$1–\").replace(/(^|[^-\\s])--(?=[^-\\s]|$)/gm, \"$1–\");\n\t\t}\n\t\tif (token.type === \"link_open\" && token.info === \"auto\") inside_autolink--;\n\t\tif (token.type === \"link_close\" && token.info === \"auto\") inside_autolink++;\n\t}\n}\nfunction replace(state) {\n\tlet blkIdx;\n\tif (!state.md.options.typographer) return;\n\tfor (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n\t\tif (state.tokens[blkIdx].type !== \"inline\") continue;\n\t\tif (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) replace_scoped(state.tokens[blkIdx].children);\n\t\tif (RARE_RE.test(state.tokens[blkIdx].content)) replace_rare(state.tokens[blkIdx].children);\n\t}\n}\n//#endregion\n//#region lib/rules_core/smartquotes.mjs\nvar QUOTE_TEST_RE = /['\"]/;\nvar QUOTE_RE = /['\"]/g;\nvar APOSTROPHE = \"’\";\nfunction addReplacement(replacements, tokenIdx, pos, ch) {\n\tif (!replacements[tokenIdx]) replacements[tokenIdx] = [];\n\treplacements[tokenIdx].push({\n\t\tpos,\n\t\tch\n\t});\n}\nfunction applyReplacements(str, replacements) {\n\tlet result = \"\";\n\tlet lastPos = 0;\n\treplacements.sort((a, b) => a.pos - b.pos);\n\tfor (let i = 0; i < replacements.length; i++) {\n\t\tconst replacement = replacements[i];\n\t\tresult += str.slice(lastPos, replacement.pos) + replacement.ch;\n\t\tlastPos = replacement.pos + 1;\n\t}\n\treturn result + str.slice(lastPos);\n}\nfunction process_inlines(tokens, state) {\n\tlet j;\n\tconst stack = [];\n\tconst replacements = {};\n\tfor (let i = 0; i < tokens.length; i++) {\n\t\tconst token = tokens[i];\n\t\tconst thisLevel = tokens[i].level;\n\t\tfor (j = stack.length - 1; j >= 0; j--) if (stack[j].level <= thisLevel) break;\n\t\tstack.length = j + 1;\n\t\tif (token.type !== \"text\") continue;\n\t\tconst text = token.content;\n\t\tlet pos = 0;\n\t\tconst max = text.length;\n\t\tOUTER: while (pos < max) {\n\t\t\tQUOTE_RE.lastIndex = pos;\n\t\t\tconst t = QUOTE_RE.exec(text);\n\t\t\tif (!t) break;\n\t\t\tlet canOpen = true;\n\t\t\tlet canClose = true;\n\t\t\tpos = t.index + 1;\n\t\t\tconst isSingle = t[0] === \"'\";\n\t\t\tlet lastChar = 32;\n\t\t\tif (t.index - 1 >= 0) lastChar = text.charCodeAt(t.index - 1);\n\t\t\telse for (j = i - 1; j >= 0; j--) {\n\t\t\t\tif (tokens[j].type === \"softbreak\" || tokens[j].type === \"hardbreak\") break;\n\t\t\t\tif (!tokens[j].content) continue;\n\t\t\t\tlastChar = tokens[j].content.charCodeAt(tokens[j].content.length - 1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tlet nextChar = 32;\n\t\t\tif (pos < max) nextChar = text.charCodeAt(pos);\n\t\t\telse for (j = i + 1; j < tokens.length; j++) {\n\t\t\t\tif (tokens[j].type === \"softbreak\" || tokens[j].type === \"hardbreak\") break;\n\t\t\t\tif (!tokens[j].content) continue;\n\t\t\t\tnextChar = tokens[j].content.charCodeAt(0);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctCharCode(lastChar);\n\t\t\tconst isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctCharCode(nextChar);\n\t\t\tconst isLastWhiteSpace = isWhiteSpace(lastChar);\n\t\t\tconst isNextWhiteSpace = isWhiteSpace(nextChar);\n\t\t\tif (isNextWhiteSpace) canOpen = false;\n\t\t\telse if (isNextPunctChar) {\n\t\t\t\tif (!(isLastWhiteSpace || isLastPunctChar)) canOpen = false;\n\t\t\t}\n\t\t\tif (isLastWhiteSpace) canClose = false;\n\t\t\telse if (isLastPunctChar) {\n\t\t\t\tif (!(isNextWhiteSpace || isNextPunctChar)) canClose = false;\n\t\t\t}\n\t\t\tif (nextChar === 34 && t[0] === \"\\\"\") {\n\t\t\t\tif (lastChar >= 48 && lastChar <= 57) canClose = canOpen = false;\n\t\t\t}\n\t\t\tif (canOpen && canClose) {\n\t\t\t\tcanOpen = isLastPunctChar;\n\t\t\t\tcanClose = isNextPunctChar;\n\t\t\t}\n\t\t\tif (!canOpen && !canClose) {\n\t\t\t\tif (isSingle) addReplacement(replacements, i, t.index, APOSTROPHE);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (canClose) for (j = stack.length - 1; j >= 0; j--) {\n\t\t\t\tlet item = stack[j];\n\t\t\t\tif (stack[j].level < thisLevel) break;\n\t\t\t\tif (item.single === isSingle && stack[j].level === thisLevel) {\n\t\t\t\t\titem = stack[j];\n\t\t\t\t\tlet openQuote;\n\t\t\t\t\tlet closeQuote;\n\t\t\t\t\tif (isSingle) {\n\t\t\t\t\t\topenQuote = state.md.options.quotes[2];\n\t\t\t\t\t\tcloseQuote = state.md.options.quotes[3];\n\t\t\t\t\t} else {\n\t\t\t\t\t\topenQuote = state.md.options.quotes[0];\n\t\t\t\t\t\tcloseQuote = state.md.options.quotes[1];\n\t\t\t\t\t}\n\t\t\t\t\taddReplacement(replacements, i, t.index, closeQuote);\n\t\t\t\t\taddReplacement(replacements, item.token, item.pos, openQuote);\n\t\t\t\t\tstack.length = j;\n\t\t\t\t\tcontinue OUTER;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (canOpen) stack.push({\n\t\t\t\ttoken: i,\n\t\t\t\tpos: t.index,\n\t\t\t\tsingle: isSingle,\n\t\t\t\tlevel: thisLevel\n\t\t\t});\n\t\t\telse if (canClose && isSingle) addReplacement(replacements, i, t.index, APOSTROPHE);\n\t\t}\n\t}\n\tObject.keys(replacements).forEach(function(tokenIdx) {\n\t\ttokens[tokenIdx].content = applyReplacements(tokens[tokenIdx].content, replacements[tokenIdx]);\n\t});\n}\nfunction smartquotes(state) {\n\tif (!state.md.options.typographer) return;\n\tfor (let blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n\t\tif (state.tokens[blkIdx].type !== \"inline\" || !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) continue;\n\t\tprocess_inlines(state.tokens[blkIdx].children, state);\n\t}\n}\n//#endregion\n//#region lib/rules_core/text_join.mjs\nfunction text_join(state) {\n\tlet curr, last;\n\tconst blockTokens = state.tokens;\n\tconst l = blockTokens.length;\n\tfor (let j = 0; j < l; j++) {\n\t\tif (blockTokens[j].type !== \"inline\") continue;\n\t\tconst tokens = blockTokens[j].children;\n\t\tconst max = tokens.length;\n\t\tfor (curr = 0; curr < max; curr++) if (tokens[curr].type === \"text_special\") tokens[curr].type = \"text\";\n\t\tfor (curr = last = 0; curr < max; curr++) if (tokens[curr].type === \"text\" && curr + 1 < max && tokens[curr + 1].type === \"text\") tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;\n\t\telse {\n\t\t\tif (curr !== last) tokens[last] = tokens[curr];\n\t\t\tlast++;\n\t\t}\n\t\tif (curr !== last) tokens.length = last;\n\t}\n}\n//#endregion\n//#region lib/parser_core.mjs\n/** internal\n* class Core\n*\n* Top-level rules executor. Glues block/inline parsers and does intermediate\n* transformations.\n**/\nvar _rules$2 = [\n\t[\"normalize\", normalize],\n\t[\"block\", block],\n\t[\"inline\", inline],\n\t[\"linkify\", linkify$1],\n\t[\"replacements\", replace],\n\t[\"smartquotes\", smartquotes],\n\t[\"text_join\", text_join]\n];\n/**\n* new Core()\n**/\nfunction Core() {\n\t/**\n\t* Core#ruler -> Ruler\n\t*\n\t* [[Ruler]] instance. Keep configuration of core rules.\n\t**/\n\tthis.ruler = new Ruler();\n\tfor (let i = 0; i < _rules$2.length; i++) this.ruler.push(_rules$2[i][0], _rules$2[i][1]);\n}\n/**\n* Core.process(state)\n*\n* Executes core chain rules.\n**/\nCore.prototype.process = function(state) {\n\tconst rules = this.ruler.getRules(\"\");\n\tfor (let i = 0, l = rules.length; i < l; i++) rules[i](state);\n};\nCore.prototype.State = StateCore;\n//#endregion\n//#region lib/rules_block/state_block.mjs\nfunction StateBlock(src, md, env, tokens) {\n\tthis.src = src;\n\tthis.md = md;\n\tthis.env = env;\n\tthis.tokens = tokens;\n\tthis.bMarks = [];\n\tthis.eMarks = [];\n\tthis.tShift = [];\n\tthis.sCount = [];\n\tthis.bsCount = [];\n\tthis.blkIndent = 0;\n\tthis.line = 0;\n\tthis.lineMax = 0;\n\tthis.tight = false;\n\tthis.ddIndent = -1;\n\tthis.listIndent = -1;\n\tthis.parentType = \"root\";\n\tthis.level = 0;\n\tconst s = this.src;\n\tfor (let start = 0, pos = 0, indent = 0, offset = 0, len = s.length, indent_found = false; pos < len; pos++) {\n\t\tconst ch = s.charCodeAt(pos);\n\t\tif (!indent_found) if (isSpace(ch)) {\n\t\t\tindent++;\n\t\t\tif (ch === 9) offset += 4 - offset % 4;\n\t\t\telse offset++;\n\t\t\tcontinue;\n\t\t} else indent_found = true;\n\t\tif (ch === 10 || pos === len - 1) {\n\t\t\tif (ch !== 10) pos++;\n\t\t\tthis.bMarks.push(start);\n\t\t\tthis.eMarks.push(pos);\n\t\t\tthis.tShift.push(indent);\n\t\t\tthis.sCount.push(offset);\n\t\t\tthis.bsCount.push(0);\n\t\t\tindent_found = false;\n\t\t\tindent = 0;\n\t\t\toffset = 0;\n\t\t\tstart = pos + 1;\n\t\t}\n\t}\n\tthis.bMarks.push(s.length);\n\tthis.eMarks.push(s.length);\n\tthis.tShift.push(0);\n\tthis.sCount.push(0);\n\tthis.bsCount.push(0);\n\tthis.lineMax = this.bMarks.length - 1;\n}\nStateBlock.prototype.push = function(type, tag, nesting) {\n\tconst token = new Token(type, tag, nesting);\n\ttoken.block = true;\n\tif (nesting < 0) this.level--;\n\ttoken.level = this.level;\n\tif (nesting > 0) this.level++;\n\tthis.tokens.push(token);\n\treturn token;\n};\nStateBlock.prototype.isEmpty = function isEmpty(line) {\n\treturn this.bMarks[line] + this.tShift[line] >= this.eMarks[line];\n};\nStateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) {\n\tfor (let max = this.lineMax; from < max; from++) if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) break;\n\treturn from;\n};\nStateBlock.prototype.skipSpaces = function skipSpaces(pos) {\n\tfor (let max = this.src.length; pos < max; pos++) if (!isSpace(this.src.charCodeAt(pos))) break;\n\treturn pos;\n};\nStateBlock.prototype.skipSpacesBack = function skipSpacesBack(pos, min) {\n\tif (pos <= min) return pos;\n\twhile (pos > min) if (!isSpace(this.src.charCodeAt(--pos))) return pos + 1;\n\treturn pos;\n};\nStateBlock.prototype.skipChars = function skipChars(pos, code) {\n\tfor (let max = this.src.length; pos < max; pos++) if (this.src.charCodeAt(pos) !== code) break;\n\treturn pos;\n};\nStateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code, min) {\n\tif (pos <= min) return pos;\n\twhile (pos > min) if (code !== this.src.charCodeAt(--pos)) return pos + 1;\n\treturn pos;\n};\nStateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF) {\n\tif (begin >= end) return \"\";\n\tconst queue = new Array(end - begin);\n\tfor (let i = 0, line = begin; line < end; line++, i++) {\n\t\tlet lineIndent = 0;\n\t\tconst lineStart = this.bMarks[line];\n\t\tlet first = lineStart;\n\t\tlet last;\n\t\tif (line + 1 < end || keepLastLF) last = this.eMarks[line] + 1;\n\t\telse last = this.eMarks[line];\n\t\twhile (first < last && lineIndent < indent) {\n\t\t\tconst ch = this.src.charCodeAt(first);\n\t\t\tif (isSpace(ch)) if (ch === 9) lineIndent += 4 - (lineIndent + this.bsCount[line]) % 4;\n\t\t\telse lineIndent++;\n\t\t\telse if (first - lineStart < this.tShift[line]) lineIndent++;\n\t\t\telse break;\n\t\t\tfirst++;\n\t\t}\n\t\tif (lineIndent > indent) queue[i] = new Array(lineIndent - indent + 1).join(\" \") + this.src.slice(first, last);\n\t\telse queue[i] = this.src.slice(first, last);\n\t}\n\treturn queue.join(\"\");\n};\nStateBlock.prototype.Token = Token;\n//#endregion\n//#region lib/rules_block/table.mjs\nvar MAX_AUTOCOMPLETED_CELLS = 65536;\nfunction getLine(state, line) {\n\tconst pos = state.bMarks[line] + state.tShift[line];\n\tconst max = state.eMarks[line];\n\treturn state.src.slice(pos, max);\n}\nfunction escapedSplit(str) {\n\tconst result = [];\n\tconst max = str.length;\n\tlet pos = 0;\n\tlet ch = str.charCodeAt(pos);\n\tlet isEscaped = false;\n\tlet lastPos = 0;\n\tlet current = \"\";\n\twhile (pos < max) {\n\t\tif (ch === 124) if (!isEscaped) {\n\t\t\tresult.push(current + str.substring(lastPos, pos));\n\t\t\tcurrent = \"\";\n\t\t\tlastPos = pos + 1;\n\t\t} else {\n\t\t\tcurrent += str.substring(lastPos, pos - 1);\n\t\t\tlastPos = pos;\n\t\t}\n\t\tisEscaped = ch === 92;\n\t\tpos++;\n\t\tch = str.charCodeAt(pos);\n\t}\n\tresult.push(current + str.substring(lastPos));\n\treturn result;\n}\nfunction table(state, startLine, endLine, silent) {\n\tif (startLine + 2 > endLine) return false;\n\tlet nextLine = startLine + 1;\n\tif (state.sCount[nextLine] < state.blkIndent) return false;\n\tif (state.sCount[nextLine] - state.blkIndent >= 4) return false;\n\tlet pos = state.bMarks[nextLine] + state.tShift[nextLine];\n\tif (pos >= state.eMarks[nextLine]) return false;\n\tconst firstCh = state.src.charCodeAt(pos++);\n\tif (firstCh !== 124 && firstCh !== 45 && firstCh !== 58) return false;\n\tif (pos >= state.eMarks[nextLine]) return false;\n\tconst secondCh = state.src.charCodeAt(pos++);\n\tif (secondCh !== 124 && secondCh !== 45 && secondCh !== 58 && !isSpace(secondCh)) return false;\n\tif (firstCh === 45 && isSpace(secondCh)) return false;\n\twhile (pos < state.eMarks[nextLine]) {\n\t\tconst ch = state.src.charCodeAt(pos);\n\t\tif (ch !== 124 && ch !== 45 && ch !== 58 && !isSpace(ch)) return false;\n\t\tpos++;\n\t}\n\tlet lineText = getLine(state, startLine + 1);\n\tlet columns = lineText.split(\"|\");\n\tconst aligns = [];\n\tfor (let i = 0; i < columns.length; i++) {\n\t\tconst t = columns[i].trim();\n\t\tif (!t) if (i === 0 || i === columns.length - 1) continue;\n\t\telse return false;\n\t\tif (!/^:?-+:?$/.test(t)) return false;\n\t\tif (t.charCodeAt(t.length - 1) === 58) aligns.push(t.charCodeAt(0) === 58 ? \"center\" : \"right\");\n\t\telse if (t.charCodeAt(0) === 58) aligns.push(\"left\");\n\t\telse aligns.push(\"\");\n\t}\n\tlineText = getLine(state, startLine).trim();\n\tif (lineText.indexOf(\"|\") === -1) return false;\n\tif (state.sCount[startLine] - state.blkIndent >= 4) return false;\n\tcolumns = escapedSplit(lineText);\n\tif (columns.length && columns[0] === \"\") columns.shift();\n\tif (columns.length && columns[columns.length - 1] === \"\") columns.pop();\n\tconst columnCount = columns.length;\n\tif (columnCount === 0 || columnCount !== aligns.length) return false;\n\tif (silent) return true;\n\tconst oldParentType = state.parentType;\n\tstate.parentType = \"table\";\n\tconst terminatorRules = state.md.block.ruler.getRules(\"blockquote\");\n\tconst token_to = state.push(\"table_open\", \"table\", 1);\n\tconst tableLines = [startLine, 0];\n\ttoken_to.map = tableLines;\n\tconst token_tho = state.push(\"thead_open\", \"thead\", 1);\n\ttoken_tho.map = [startLine, startLine + 1];\n\tconst token_htro = state.push(\"tr_open\", \"tr\", 1);\n\ttoken_htro.map = [startLine, startLine + 1];\n\tfor (let i = 0; i < columns.length; i++) {\n\t\tconst token_ho = state.push(\"th_open\", \"th\", 1);\n\t\tif (aligns[i]) token_ho.attrs = [[\"style\", \"text-align:\" + aligns[i]]];\n\t\tconst token_il = state.push(\"inline\", \"\", 0);\n\t\ttoken_il.content = columns[i].trim();\n\t\ttoken_il.children = [];\n\t\tstate.push(\"th_close\", \"th\", -1);\n\t}\n\tstate.push(\"tr_close\", \"tr\", -1);\n\tstate.push(\"thead_close\", \"thead\", -1);\n\tlet tbodyLines;\n\tlet autocompletedCells = 0;\n\tfor (nextLine = startLine + 2; nextLine < endLine; nextLine++) {\n\t\tif (state.sCount[nextLine] < state.blkIndent) break;\n\t\tlet terminate = false;\n\t\tfor (let i = 0, l = terminatorRules.length; i < l; i++) if (terminatorRules[i](state, nextLine, endLine, true)) {\n\t\t\tterminate = true;\n\t\t\tbreak;\n\t\t}\n\t\tif (terminate) break;\n\t\tlineText = getLine(state, nextLine).trim();\n\t\tif (!lineText) break;\n\t\tif (state.sCount[nextLine] - state.blkIndent >= 4) break;\n\t\tcolumns = escapedSplit(lineText);\n\t\tif (columns.length && columns[0] === \"\") columns.shift();\n\t\tif (columns.length && columns[columns.length - 1] === \"\") columns.pop();\n\t\tautocompletedCells += columnCount - columns.length;\n\t\tif (autocompletedCells > MAX_AUTOCOMPLETED_CELLS) break;\n\t\tif (nextLine === startLine + 2) {\n\t\t\tconst token_tbo = state.push(\"tbody_open\", \"tbody\", 1);\n\t\t\ttoken_tbo.map = tbodyLines = [startLine + 2, 0];\n\t\t}\n\t\tconst token_tro = state.push(\"tr_open\", \"tr\", 1);\n\t\ttoken_tro.map = [nextLine, nextLine + 1];\n\t\tfor (let i = 0; i < columnCount; i++) {\n\t\t\tconst token_tdo = state.push(\"td_open\", \"td\", 1);\n\t\t\tif (aligns[i]) token_tdo.attrs = [[\"style\", \"text-align:\" + aligns[i]]];\n\t\t\tconst token_il = state.push(\"inline\", \"\", 0);\n\t\t\ttoken_il.content = columns[i] ? columns[i].trim() : \"\";\n\t\t\ttoken_il.children = [];\n\t\t\tstate.push(\"td_close\", \"td\", -1);\n\t\t}\n\t\tstate.push(\"tr_close\", \"tr\", -1);\n\t}\n\tif (tbodyLines) {\n\t\tstate.push(\"tbody_close\", \"tbody\", -1);\n\t\ttbodyLines[1] = nextLine;\n\t}\n\tstate.push(\"table_close\", \"table\", -1);\n\ttableLines[1] = nextLine;\n\tstate.parentType = oldParentType;\n\tstate.line = nextLine;\n\treturn true;\n}\n//#endregion\n//#region lib/rules_block/code.mjs\nfunction code(state, startLine, endLine) {\n\tif (state.sCount[startLine] - state.blkIndent < 4) return false;\n\tlet nextLine = startLine + 1;\n\tlet last = nextLine;\n\twhile (nextLine < endLine) {\n\t\tif (state.isEmpty(nextLine)) {\n\t\t\tnextLine++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (state.sCount[nextLine] - state.blkIndent >= 4) {\n\t\t\tnextLine++;\n\t\t\tlast = nextLine;\n\t\t\tcontinue;\n\t\t}\n\t\tbreak;\n\t}\n\tstate.line = last;\n\tconst token = state.push(\"code_block\", \"code\", 0);\n\ttoken.content = state.getLines(startLine, last, 4 + state.blkIndent, false) + \"\\n\";\n\ttoken.map = [startLine, state.line];\n\treturn true;\n}\n//#endregion\n//#region lib/rules_block/fence.mjs\nfunction fence(state, startLine, endLine, silent) {\n\tlet pos = state.bMarks[startLine] + state.tShift[startLine];\n\tlet max = state.eMarks[startLine];\n\tif (state.sCount[startLine] - state.blkIndent >= 4) return false;\n\tif (pos + 3 > max) return false;\n\tconst marker = state.src.charCodeAt(pos);\n\tif (marker !== 126 && marker !== 96) return false;\n\tlet mem = pos;\n\tpos = state.skipChars(pos, marker);\n\tlet len = pos - mem;\n\tif (len < 3) return false;\n\tconst markup = state.src.slice(mem, pos);\n\tconst params = state.src.slice(pos, max);\n\tif (marker === 96) {\n\t\tif (params.indexOf(String.fromCharCode(marker)) >= 0) return false;\n\t}\n\tif (silent) return true;\n\tlet nextLine = startLine;\n\tlet haveEndMarker = false;\n\tfor (;;) {\n\t\tnextLine++;\n\t\tif (nextLine >= endLine) break;\n\t\tpos = mem = state.bMarks[nextLine] + state.tShift[nextLine];\n\t\tmax = state.eMarks[nextLine];\n\t\tif (pos < max && state.sCount[nextLine] < state.blkIndent) break;\n\t\tif (state.src.charCodeAt(pos) !== marker) continue;\n\t\tif (state.sCount[nextLine] - state.blkIndent >= 4) continue;\n\t\tpos = state.skipChars(pos, marker);\n\t\tif (pos - mem < len) continue;\n\t\tpos = state.skipSpaces(pos);\n\t\tif (pos < max) continue;\n\t\thaveEndMarker = true;\n\t\tbreak;\n\t}\n\tlen = state.sCount[startLine];\n\tstate.line = nextLine + (haveEndMarker ? 1 : 0);\n\tconst token = state.push(\"fence\", \"code\", 0);\n\ttoken.info = params;\n\ttoken.content = state.getLines(startLine + 1, nextLine, len, true);\n\ttoken.markup = markup;\n\ttoken.map = [startLine, state.line];\n\treturn true;\n}\n//#endregion\n//#region lib/rules_block/blockquote.mjs\nfunction blockquote(state, startLine, endLine, silent) {\n\tlet pos = state.bMarks[startLine] + state.tShift[startLine];\n\tlet max = state.eMarks[startLine];\n\tconst oldLineMax = state.lineMax;\n\tif (state.sCount[startLine] - state.blkIndent >= 4) return false;\n\tif (state.src.charCodeAt(pos) !== 62) return false;\n\tif (silent) return true;\n\tconst oldBMarks = [];\n\tconst oldBSCount = [];\n\tconst oldSCount = [];\n\tconst oldTShift = [];\n\tconst terminatorRules = state.md.block.ruler.getRules(\"blockquote\");\n\tconst oldParentType = state.parentType;\n\tstate.parentType = \"blockquote\";\n\tlet lastLineEmpty = false;\n\tlet nextLine;\n\tfor (nextLine = startLine; nextLine < endLine; nextLine++) {\n\t\tconst isOutdented = state.sCount[nextLine] < state.blkIndent;\n\t\tpos = state.bMarks[nextLine] + state.tShift[nextLine];\n\t\tmax = state.eMarks[nextLine];\n\t\tif (pos >= max) break;\n\t\tif (state.src.charCodeAt(pos++) === 62 && !isOutdented) {\n\t\t\tlet initial = state.sCount[nextLine] + 1;\n\t\t\tlet spaceAfterMarker;\n\t\t\tlet adjustTab;\n\t\t\tif (state.src.charCodeAt(pos) === 32) {\n\t\t\t\tpos++;\n\t\t\t\tinitial++;\n\t\t\t\tadjustTab = false;\n\t\t\t\tspaceAfterMarker = true;\n\t\t\t} else if (state.src.charCodeAt(pos) === 9) {\n\t\t\t\tspaceAfterMarker = true;\n\t\t\t\tif ((state.bsCount[nextLine] + initial) % 4 === 3) {\n\t\t\t\t\tpos++;\n\t\t\t\t\tinitial++;\n\t\t\t\t\tadjustTab = false;\n\t\t\t\t} else adjustTab = true;\n\t\t\t} else spaceAfterMarker = false;\n\t\t\tlet offset = initial;\n\t\t\toldBMarks.push(state.bMarks[nextLine]);\n\t\t\tstate.bMarks[nextLine] = pos;\n\t\t\twhile (pos < max) {\n\t\t\t\tconst ch = state.src.charCodeAt(pos);\n\t\t\t\tif (isSpace(ch)) if (ch === 9) offset += 4 - (offset + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4;\n\t\t\t\telse offset++;\n\t\t\t\telse break;\n\t\t\t\tpos++;\n\t\t\t}\n\t\t\tlastLineEmpty = pos >= max;\n\t\t\toldBSCount.push(state.bsCount[nextLine]);\n\t\t\tstate.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0);\n\t\t\toldSCount.push(state.sCount[nextLine]);\n\t\t\tstate.sCount[nextLine] = offset - initial;\n\t\t\toldTShift.push(state.tShift[nextLine]);\n\t\t\tstate.tShift[nextLine] = pos - state.bMarks[nextLine];\n\t\t\tcontinue;\n\t\t}\n\t\tif (lastLineEmpty) break;\n\t\tlet terminate = false;\n\t\tfor (let i = 0, l = terminatorRules.length; i < l; i++) if (terminatorRules[i](state, nextLine, endLine, true)) {\n\t\t\tterminate = true;\n\t\t\tbreak;\n\t\t}\n\t\tif (terminate) {\n\t\t\tstate.lineMax = nextLine;\n\t\t\tif (state.blkIndent !== 0) {\n\t\t\t\toldBMarks.push(state.bMarks[nextLine]);\n\t\t\t\toldBSCount.push(state.bsCount[nextLine]);\n\t\t\t\toldTShift.push(state.tShift[nextLine]);\n\t\t\t\toldSCount.push(state.sCount[nextLine]);\n\t\t\t\tstate.sCount[nextLine] -= state.blkIndent;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\toldBMarks.push(state.bMarks[nextLine]);\n\t\toldBSCount.push(state.bsCount[nextLine]);\n\t\toldTShift.push(state.tShift[nextLine]);\n\t\toldSCount.push(state.sCount[nextLine]);\n\t\tstate.sCount[nextLine] = -1;\n\t}\n\tconst oldIndent = state.blkIndent;\n\tstate.blkIndent = 0;\n\tconst token_o = state.push(\"blockquote_open\", \"blockquote\", 1);\n\ttoken_o.markup = \">\";\n\tconst lines = [startLine, 0];\n\ttoken_o.map = lines;\n\tstate.md.block.tokenize(state, startLine, nextLine);\n\tconst token_c = state.push(\"blockquote_close\", \"blockquote\", -1);\n\ttoken_c.markup = \">\";\n\tstate.lineMax = oldLineMax;\n\tstate.parentType = oldParentType;\n\tlines[1] = state.line;\n\tfor (let i = 0; i < oldTShift.length; i++) {\n\t\tstate.bMarks[i + startLine] = oldBMarks[i];\n\t\tstate.tShift[i + startLine] = oldTShift[i];\n\t\tstate.sCount[i + startLine] = oldSCount[i];\n\t\tstate.bsCount[i + startLine] = oldBSCount[i];\n\t}\n\tstate.blkIndent = oldIndent;\n\treturn true;\n}\n//#endregion\n//#region lib/rules_block/hr.mjs\nfunction hr(state, startLine, endLine, silent) {\n\tconst max = state.eMarks[startLine];\n\tif (state.sCount[startLine] - state.blkIndent >= 4) return false;\n\tlet pos = state.bMarks[startLine] + state.tShift[startLine];\n\tconst marker = state.src.charCodeAt(pos++);\n\tif (marker !== 42 && marker !== 45 && marker !== 95) return false;\n\tlet cnt = 1;\n\twhile (pos < max) {\n\t\tconst ch = state.src.charCodeAt(pos++);\n\t\tif (ch !== marker && !isSpace(ch)) return false;\n\t\tif (ch === marker) cnt++;\n\t}\n\tif (cnt < 3) return false;\n\tif (silent) return true;\n\tstate.line = startLine + 1;\n\tconst token = state.push(\"hr\", \"hr\", 0);\n\ttoken.map = [startLine, state.line];\n\ttoken.markup = Array(cnt + 1).join(String.fromCharCode(marker));\n\treturn true;\n}\n//#endregion\n//#region lib/rules_block/list.mjs\nfunction skipBulletListMarker(state, startLine) {\n\tconst max = state.eMarks[startLine];\n\tlet pos = state.bMarks[startLine] + state.tShift[startLine];\n\tconst marker = state.src.charCodeAt(pos++);\n\tif (marker !== 42 && marker !== 45 && marker !== 43) return -1;\n\tif (pos < max) {\n\t\tif (!isSpace(state.src.charCodeAt(pos))) return -1;\n\t}\n\treturn pos;\n}\nfunction skipOrderedListMarker(state, startLine) {\n\tconst start = state.bMarks[startLine] + state.tShift[startLine];\n\tconst max = state.eMarks[startLine];\n\tlet pos = start;\n\tif (pos + 1 >= max) return -1;\n\tlet ch = state.src.charCodeAt(pos++);\n\tif (ch < 48 || ch > 57) return -1;\n\tfor (;;) {\n\t\tif (pos >= max) return -1;\n\t\tch = state.src.charCodeAt(pos++);\n\t\tif (ch >= 48 && ch <= 57) {\n\t\t\tif (pos - start >= 10) return -1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (ch === 41 || ch === 46) break;\n\t\treturn -1;\n\t}\n\tif (pos < max) {\n\t\tch = state.src.charCodeAt(pos);\n\t\tif (!isSpace(ch)) return -1;\n\t}\n\treturn pos;\n}\nfunction markTightParagraphs(state, idx) {\n\tconst level = state.level + 2;\n\tfor (let i = idx + 2, l = state.tokens.length - 2; i < l; i++) if (state.tokens[i].level === level && state.tokens[i].type === \"paragraph_open\") {\n\t\tstate.tokens[i + 2].hidden = true;\n\t\tstate.tokens[i].hidden = true;\n\t\ti += 2;\n\t}\n}\nfunction list(state, startLine, endLine, silent) {\n\tlet max, pos, start, token;\n\tlet nextLine = startLine;\n\tlet tight = true;\n\tif (state.sCount[nextLine] - state.blkIndent >= 4) return false;\n\tif (state.listIndent >= 0 && state.sCount[nextLine] - state.listIndent >= 4 && state.sCount[nextLine] < state.blkIndent) return false;\n\tlet isTerminatingParagraph = false;\n\tif (silent && state.parentType === \"paragraph\") {\n\t\tif (state.sCount[nextLine] >= state.blkIndent) isTerminatingParagraph = true;\n\t}\n\tlet isOrdered;\n\tlet markerValue;\n\tlet posAfterMarker;\n\tif ((posAfterMarker = skipOrderedListMarker(state, nextLine)) >= 0) {\n\t\tisOrdered = true;\n\t\tstart = state.bMarks[nextLine] + state.tShift[nextLine];\n\t\tmarkerValue = Number(state.src.slice(start, posAfterMarker - 1));\n\t\tif (isTerminatingParagraph && markerValue !== 1) return false;\n\t} else if ((posAfterMarker = skipBulletListMarker(state, nextLine)) >= 0) isOrdered = false;\n\telse return false;\n\tif (isTerminatingParagraph) {\n\t\tif (state.skipSpaces(posAfterMarker) >= state.eMarks[nextLine]) return false;\n\t}\n\tif (silent) return true;\n\tconst markerCharCode = state.src.charCodeAt(posAfterMarker - 1);\n\tconst listTokIdx = state.tokens.length;\n\tif (isOrdered) {\n\t\ttoken = state.push(\"ordered_list_open\", \"ol\", 1);\n\t\tif (markerValue !== 1) token.attrs = [[\"start\", markerValue]];\n\t} else token = state.push(\"bullet_list_open\", \"ul\", 1);\n\tconst listLines = [nextLine, 0];\n\ttoken.map = listLines;\n\ttoken.markup = String.fromCharCode(markerCharCode);\n\tlet prevEmptyEnd = false;\n\tconst terminatorRules = state.md.block.ruler.getRules(\"list\");\n\tconst oldParentType = state.parentType;\n\tstate.parentType = \"list\";\n\twhile (nextLine < endLine) {\n\t\tpos = posAfterMarker;\n\t\tmax = state.eMarks[nextLine];\n\t\tconst initial = state.sCount[nextLine] + posAfterMarker - (state.bMarks[nextLine] + state.tShift[nextLine]);\n\t\tlet offset = initial;\n\t\twhile (pos < max) {\n\t\t\tconst ch = state.src.charCodeAt(pos);\n\t\t\tif (ch === 9) offset += 4 - (offset + state.bsCount[nextLine]) % 4;\n\t\t\telse if (ch === 32) offset++;\n\t\t\telse break;\n\t\t\tpos++;\n\t\t}\n\t\tconst contentStart = pos;\n\t\tlet indentAfterMarker;\n\t\tif (contentStart >= max) indentAfterMarker = 1;\n\t\telse indentAfterMarker = offset - initial;\n\t\tif (indentAfterMarker > 4) indentAfterMarker = 1;\n\t\tconst indent = initial + indentAfterMarker;\n\t\ttoken = state.push(\"list_item_open\", \"li\", 1);\n\t\ttoken.markup = String.fromCharCode(markerCharCode);\n\t\tconst itemLines = [nextLine, 0];\n\t\ttoken.map = itemLines;\n\t\tif (isOrdered) token.info = state.src.slice(start, posAfterMarker - 1);\n\t\tconst oldTight = state.tight;\n\t\tconst oldTShift = state.tShift[nextLine];\n\t\tconst oldSCount = state.sCount[nextLine];\n\t\tconst oldListIndent = state.listIndent;\n\t\tstate.listIndent = state.blkIndent;\n\t\tstate.blkIndent = indent;\n\t\tstate.tight = true;\n\t\tstate.tShift[nextLine] = contentStart - state.bMarks[nextLine];\n\t\tstate.sCount[nextLine] = offset;\n\t\tif (contentStart >= max && state.isEmpty(nextLine + 1)) state.line = Math.min(state.line + 2, endLine);\n\t\telse state.md.block.tokenize(state, nextLine, endLine, true);\n\t\tif (!state.tight || prevEmptyEnd) tight = false;\n\t\tprevEmptyEnd = state.line - nextLine > 1 && state.isEmpty(state.line - 1);\n\t\tstate.blkIndent = state.listIndent;\n\t\tstate.listIndent = oldListIndent;\n\t\tstate.tShift[nextLine] = oldTShift;\n\t\tstate.sCount[nextLine] = oldSCount;\n\t\tstate.tight = oldTight;\n\t\ttoken = state.push(\"list_item_close\", \"li\", -1);\n\t\ttoken.markup = String.fromCharCode(markerCharCode);\n\t\tnextLine = state.line;\n\t\titemLines[1] = nextLine;\n\t\tif (nextLine >= endLine) break;\n\t\tif (state.sCount[nextLine] < state.blkIndent) break;\n\t\tif (state.sCount[nextLine] - state.blkIndent >= 4) break;\n\t\tlet terminate = false;\n\t\tfor (let i = 0, l = terminatorRules.length; i < l; i++) if (terminatorRules[i](state, nextLine, endLine, true)) {\n\t\t\tterminate = true;\n\t\t\tbreak;\n\t\t}\n\t\tif (terminate) break;\n\t\tif (isOrdered) {\n\t\t\tposAfterMarker = skipOrderedListMarker(state, nextLine);\n\t\t\tif (posAfterMarker < 0) break;\n\t\t\tstart = state.bMarks[nextLine] + state.tShift[nextLine];\n\t\t} else {\n\t\t\tposAfterMarker = skipBulletListMarker(state, nextLine);\n\t\t\tif (posAfterMarker < 0) break;\n\t\t}\n\t\tif (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) break;\n\t}\n\tif (isOrdered) token = state.push(\"ordered_list_close\", \"ol\", -1);\n\telse token = state.push(\"bullet_list_close\", \"ul\", -1);\n\ttoken.markup = String.fromCharCode(markerCharCode);\n\tlistLines[1] = nextLine;\n\tstate.line = nextLine;\n\tstate.parentType = oldParentType;\n\tif (tight) markTightParagraphs(state, listTokIdx);\n\treturn true;\n}\n//#endregion\n//#region lib/rules_block/reference.mjs\nfunction reference(state, startLine, _endLine, silent) {\n\tlet pos = state.bMarks[startLine] + state.tShift[startLine];\n\tlet max = state.eMarks[startLine];\n\tlet nextLine = startLine + 1;\n\tif (state.sCount[startLine] - state.blkIndent >= 4) return false;\n\tif (state.src.charCodeAt(pos) !== 91) return false;\n\tfunction getNextLine(nextLine) {\n\t\tconst endLine = state.lineMax;\n\t\tif (nextLine >= endLine || state.isEmpty(nextLine)) return null;\n\t\tlet isContinuation = false;\n\t\tif (state.sCount[nextLine] - state.blkIndent > 3) isContinuation = true;\n\t\tif (state.sCount[nextLine] < 0) isContinuation = true;\n\t\tif (!isContinuation) {\n\t\t\tconst terminatorRules = state.md.block.ruler.getRules(\"reference\");\n\t\t\tconst oldParentType = state.parentType;\n\t\t\tstate.parentType = \"reference\";\n\t\t\tlet terminate = false;\n\t\t\tfor (let i = 0, l = terminatorRules.length; i < l; i++) if (terminatorRules[i](state, nextLine, endLine, true)) {\n\t\t\t\tterminate = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tstate.parentType = oldParentType;\n\t\t\tif (terminate) return null;\n\t\t}\n\t\tconst pos = state.bMarks[nextLine] + state.tShift[nextLine];\n\t\tconst max = state.eMarks[nextLine];\n\t\treturn state.src.slice(pos, max + 1);\n\t}\n\tlet str = state.src.slice(pos, max + 1);\n\tmax = str.length;\n\tlet labelEnd = -1;\n\tfor (pos = 1; pos < max; pos++) {\n\t\tconst ch = str.charCodeAt(pos);\n\t\tif (ch === 91) return false;\n\t\telse if (ch === 93) {\n\t\t\tlabelEnd = pos;\n\t\t\tbreak;\n\t\t} else if (ch === 10) {\n\t\t\tconst lineContent = getNextLine(nextLine);\n\t\t\tif (lineContent !== null) {\n\t\t\t\tstr += lineContent;\n\t\t\t\tmax = str.length;\n\t\t\t\tnextLine++;\n\t\t\t}\n\t\t} else if (ch === 92) {\n\t\t\tpos++;\n\t\t\tif (pos < max && str.charCodeAt(pos) === 10) {\n\t\t\t\tconst lineContent = getNextLine(nextLine);\n\t\t\t\tif (lineContent !== null) {\n\t\t\t\t\tstr += lineContent;\n\t\t\t\t\tmax = str.length;\n\t\t\t\t\tnextLine++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 58) return false;\n\tfor (pos = labelEnd + 2; pos < max; pos++) {\n\t\tconst ch = str.charCodeAt(pos);\n\t\tif (ch === 10) {\n\t\t\tconst lineContent = getNextLine(nextLine);\n\t\t\tif (lineContent !== null) {\n\t\t\t\tstr += lineContent;\n\t\t\t\tmax = str.length;\n\t\t\t\tnextLine++;\n\t\t\t}\n\t\t} else if (isSpace(ch)) {} else break;\n\t}\n\tconst destRes = state.md.helpers.parseLinkDestination(str, pos, max);\n\tif (!destRes.ok) return false;\n\tconst href = state.md.normalizeLink(destRes.str);\n\tif (!state.md.validateLink(href)) return false;\n\tpos = destRes.pos;\n\tconst destEndPos = pos;\n\tconst destEndLineNo = nextLine;\n\tconst start = pos;\n\tfor (; pos < max; pos++) {\n\t\tconst ch = str.charCodeAt(pos);\n\t\tif (ch === 10) {\n\t\t\tconst lineContent = getNextLine(nextLine);\n\t\t\tif (lineContent !== null) {\n\t\t\t\tstr += lineContent;\n\t\t\t\tmax = str.length;\n\t\t\t\tnextLine++;\n\t\t\t}\n\t\t} else if (isSpace(ch)) {} else break;\n\t}\n\tlet titleRes = state.md.helpers.parseLinkTitle(str, pos, max);\n\twhile (titleRes.can_continue) {\n\t\tconst lineContent = getNextLine(nextLine);\n\t\tif (lineContent === null) break;\n\t\tstr += lineContent;\n\t\tpos = max;\n\t\tmax = str.length;\n\t\tnextLine++;\n\t\ttitleRes = state.md.helpers.parseLinkTitle(str, pos, max, titleRes);\n\t}\n\tlet title;\n\tif (pos < max && start !== pos && titleRes.ok) {\n\t\ttitle = titleRes.str;\n\t\tpos = titleRes.pos;\n\t} else {\n\t\ttitle = \"\";\n\t\tpos = destEndPos;\n\t\tnextLine = destEndLineNo;\n\t}\n\twhile (pos < max) {\n\t\tif (!isSpace(str.charCodeAt(pos))) break;\n\t\tpos++;\n\t}\n\tif (pos < max && str.charCodeAt(pos) !== 10) {\n\t\tif (title) {\n\t\t\ttitle = \"\";\n\t\t\tpos = destEndPos;\n\t\t\tnextLine = destEndLineNo;\n\t\t\twhile (pos < max) {\n\t\t\t\tif (!isSpace(str.charCodeAt(pos))) break;\n\t\t\t\tpos++;\n\t\t\t}\n\t\t}\n\t}\n\tif (pos < max && str.charCodeAt(pos) !== 10) return false;\n\tconst label = normalizeReference(str.slice(1, labelEnd));\n\tif (!label) return false;\n\t/* istanbul ignore if */\n\tif (silent) return true;\n\tif (typeof state.env.references === \"undefined\") state.env.references = {};\n\tif (typeof state.env.references[label] === \"undefined\") state.env.references[label] = {\n\t\ttitle,\n\t\thref\n\t};\n\tstate.line = nextLine;\n\treturn true;\n}\n//#endregion\n//#region lib/common/html_blocks.mjs\nvar html_blocks_default = [\n\t\"address\",\n\t\"article\",\n\t\"aside\",\n\t\"base\",\n\t\"basefont\",\n\t\"blockquote\",\n\t\"body\",\n\t\"caption\",\n\t\"center\",\n\t\"col\",\n\t\"colgroup\",\n\t\"dd\",\n\t\"details\",\n\t\"dialog\",\n\t\"dir\",\n\t\"div\",\n\t\"dl\",\n\t\"dt\",\n\t\"fieldset\",\n\t\"figcaption\",\n\t\"figure\",\n\t\"footer\",\n\t\"form\",\n\t\"frame\",\n\t\"frameset\",\n\t\"h1\",\n\t\"h2\",\n\t\"h3\",\n\t\"h4\",\n\t\"h5\",\n\t\"h6\",\n\t\"head\",\n\t\"header\",\n\t\"hr\",\n\t\"html\",\n\t\"iframe\",\n\t\"legend\",\n\t\"li\",\n\t\"link\",\n\t\"main\",\n\t\"menu\",\n\t\"menuitem\",\n\t\"nav\",\n\t\"noframes\",\n\t\"ol\",\n\t\"optgroup\",\n\t\"option\",\n\t\"p\",\n\t\"param\",\n\t\"search\",\n\t\"section\",\n\t\"summary\",\n\t\"table\",\n\t\"tbody\",\n\t\"td\",\n\t\"tfoot\",\n\t\"th\",\n\t\"thead\",\n\t\"title\",\n\t\"tr\",\n\t\"track\",\n\t\"ul\"\n];\n//#endregion\n//#region lib/common/html_re.mjs\nvar HTML_TAG_RE = /* @__PURE__ */ new RegExp(\"^(?:<[A-Za-z][A-Za-z0-9\\\\-]*(?:\\\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\\\s*=\\\\s*(?:[^\\\"'=<>`\\\\x00-\\\\x20]+|'[^']*'|\\\"[^\\\"]*\\\"))?)*\\\\s*\\\\/?>|<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>|<!---?>|<!--(?:[^-]|-[^-]|--[^>])*-->|<[?][\\\\s\\\\S]*?[?]>|<![A-Za-z][^>]*>|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>)\");\nvar HTML_OPEN_CLOSE_TAG_RE = /* @__PURE__ */ new RegExp(\"^(?:<[A-Za-z][A-Za-z0-9\\\\-]*(?:\\\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\\\s*=\\\\s*(?:[^\\\"'=<>`\\\\x00-\\\\x20]+|'[^']*'|\\\"[^\\\"]*\\\"))?)*\\\\s*\\\\/?>|<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>)\");\n//#endregion\n//#region lib/rules_block/html_block.mjs\nvar HTML_SEQUENCES = [\n\t[\n\t\t/^<(script|pre|style|textarea)(?=(\\s|>|$))/i,\n\t\t/<\\/(script|pre|style|textarea)>/i,\n\t\ttrue\n\t],\n\t[\n\t\t/^<!--/,\n\t\t/-->/,\n\t\ttrue\n\t],\n\t[\n\t\t/^<\\?/,\n\t\t/\\?>/,\n\t\ttrue\n\t],\n\t[\n\t\t/^<![A-Z]/,\n\t\t/>/,\n\t\ttrue\n\t],\n\t[\n\t\t/^<!\\[CDATA\\[/,\n\t\t/\\]\\]>/,\n\t\ttrue\n\t],\n\t[\n\t\tnew RegExp(\"^</?(\" + html_blocks_default.join(\"|\") + \")(?=(\\\\s|/?>|$))\", \"i\"),\n\t\t/^$/,\n\t\ttrue\n\t],\n\t[\n\t\tnew RegExp(HTML_OPEN_CLOSE_TAG_RE.source + \"\\\\s*$\"),\n\t\t/^$/,\n\t\tfalse\n\t]\n];\nfunction html_block(state, startLine, endLine, silent) {\n\tlet pos = state.bMarks[startLine] + state.tShift[startLine];\n\tlet max = state.eMarks[startLine];\n\tif (state.sCount[startLine] - state.blkIndent >= 4) return false;\n\tif (!state.md.options.html) return false;\n\tif (state.src.charCodeAt(pos) !== 60) return false;\n\tlet lineText = state.src.slice(pos, max);\n\tlet i = 0;\n\tfor (; i < HTML_SEQUENCES.length; i++) if (HTML_SEQUENCES[i][0].test(lineText)) break;\n\tif (i === HTML_SEQUENCES.length) return false;\n\tif (silent) return HTML_SEQUENCES[i][2];\n\tlet nextLine = startLine + 1;\n\tconst endsOnBlankLine = HTML_SEQUENCES[i][1].test(\"\");\n\tif (!HTML_SEQUENCES[i][1].test(lineText)) for (; nextLine < endLine; nextLine++) {\n\t\tif (state.sCount[nextLine] < state.blkIndent) {\n\t\t\tif (endsOnBlankLine || !state.isEmpty(nextLine)) break;\n\t\t}\n\t\tpos = state.bMarks[nextLine] + state.tShift[nextLine];\n\t\tmax = state.eMarks[nextLine];\n\t\tlineText = state.src.slice(pos, max);\n\t\tif (HTML_SEQUENCES[i][1].test(lineText)) {\n\t\t\tif (lineText.length !== 0) nextLine++;\n\t\t\tbreak;\n\t\t}\n\t}\n\tstate.line = nextLine;\n\tconst token = state.push(\"html_block\", \"\", 0);\n\ttoken.map = [startLine, nextLine];\n\ttoken.content = state.getLines(startLine, nextLine, state.blkIndent, true);\n\treturn true;\n}\n//#endregion\n//#region lib/rules_block/heading.mjs\nfunction heading(state, startLine, endLine, silent) {\n\tlet pos = state.bMarks[startLine] + state.tShift[startLine];\n\tlet max = state.eMarks[startLine];\n\tif (state.sCount[startLine] - state.blkIndent >= 4) return false;\n\tlet ch = state.src.charCodeAt(pos);\n\tif (ch !== 35 || pos >= max) return false;\n\tlet level = 1;\n\tch = state.src.charCodeAt(++pos);\n\twhile (ch === 35 && pos < max && level <= 6) {\n\t\tlevel++;\n\t\tch = state.src.charCodeAt(++pos);\n\t}\n\tif (level > 6 || pos < max && !isSpace(ch)) return false;\n\tif (silent) return true;\n\tmax = state.skipSpacesBack(max, pos);\n\tconst tmp = state.skipCharsBack(max, 35, pos);\n\tif (tmp > pos && isSpace(state.src.charCodeAt(tmp - 1))) max = tmp;\n\tstate.line = startLine + 1;\n\tconst token_o = state.push(\"heading_open\", \"h\" + String(level), 1);\n\ttoken_o.markup = \"########\".slice(0, level);\n\ttoken_o.map = [startLine, state.line];\n\tconst token_i = state.push(\"inline\", \"\", 0);\n\ttoken_i.content = asciiTrim(state.src.slice(pos, max));\n\ttoken_i.map = [startLine, state.line];\n\ttoken_i.children = [];\n\tconst token_c = state.push(\"heading_close\", \"h\" + String(level), -1);\n\ttoken_c.markup = \"########\".slice(0, level);\n\treturn true;\n}\n//#endregion\n//#region lib/rules_block/lheading.mjs\nfunction lheading(state, startLine, endLine) {\n\tconst terminatorRules = state.md.block.ruler.getRules(\"paragraph\");\n\tif (state.sCount[startLine] - state.blkIndent >= 4) return false;\n\tconst oldParentType = state.parentType;\n\tstate.parentType = \"paragraph\";\n\tlet level = 0;\n\tlet marker;\n\tlet nextLine = startLine + 1;\n\tfor (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n\t\tif (state.sCount[nextLine] - state.blkIndent > 3) continue;\n\t\tif (state.sCount[nextLine] >= state.blkIndent) {\n\t\t\tlet pos = state.bMarks[nextLine] + state.tShift[nextLine];\n\t\t\tconst max = state.eMarks[nextLine];\n\t\t\tif (pos < max) {\n\t\t\t\tmarker = state.src.charCodeAt(pos);\n\t\t\t\tif (marker === 45 || marker === 61) {\n\t\t\t\t\tpos = state.skipChars(pos, marker);\n\t\t\t\t\tpos = state.skipSpaces(pos);\n\t\t\t\t\tif (pos >= max) {\n\t\t\t\t\t\tlevel = marker === 61 ? 1 : 2;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (state.sCount[nextLine] < 0) continue;\n\t\tlet terminate = false;\n\t\tfor (let i = 0, l = terminatorRules.length; i < l; i++) if (terminatorRules[i](state, nextLine, endLine, true)) {\n\t\t\tterminate = true;\n\t\t\tbreak;\n\t\t}\n\t\tif (terminate) break;\n\t}\n\tif (!level) {\n\t\tstate.parentType = oldParentType;\n\t\treturn false;\n\t}\n\tconst content = asciiTrim(state.getLines(startLine, nextLine, state.blkIndent, false));\n\tstate.line = nextLine + 1;\n\tconst token_o = state.push(\"heading_open\", \"h\" + String(level), 1);\n\ttoken_o.markup = String.fromCharCode(marker);\n\ttoken_o.map = [startLine, state.line];\n\tconst token_i = state.push(\"inline\", \"\", 0);\n\ttoken_i.content = content;\n\ttoken_i.map = [startLine, state.line - 1];\n\ttoken_i.children = [];\n\tconst token_c = state.push(\"heading_close\", \"h\" + String(level), -1);\n\ttoken_c.markup = String.fromCharCode(marker);\n\tstate.parentType = oldParentType;\n\treturn true;\n}\n//#endregion\n//#region lib/rules_block/paragraph.mjs\nfunction paragraph(state, startLine, endLine) {\n\tconst terminatorRules = state.md.block.ruler.getRules(\"paragraph\");\n\tconst oldParentType = state.parentType;\n\tlet nextLine = startLine + 1;\n\tstate.parentType = \"paragraph\";\n\tfor (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n\t\tif (state.sCount[nextLine] - state.blkIndent > 3) continue;\n\t\tif (state.sCount[nextLine] < 0) continue;\n\t\tlet terminate = false;\n\t\tfor (let i = 0, l = terminatorRules.length; i < l; i++) if (terminatorRules[i](state, nextLine, endLine, true)) {\n\t\t\tterminate = true;\n\t\t\tbreak;\n\t\t}\n\t\tif (terminate) break;\n\t}\n\tconst content = asciiTrim(state.getLines(startLine, nextLine, state.blkIndent, false));\n\tstate.line = nextLine;\n\tconst token_o = state.push(\"paragraph_open\", \"p\", 1);\n\ttoken_o.map = [startLine, state.line];\n\tconst token_i = state.push(\"inline\", \"\", 0);\n\ttoken_i.content = content;\n\ttoken_i.map = [startLine, state.line];\n\ttoken_i.children = [];\n\tstate.push(\"paragraph_close\", \"p\", -1);\n\tstate.parentType = oldParentType;\n\treturn true;\n}\n//#endregion\n//#region lib/parser_block.mjs\n/** internal\n* class ParserBlock\n*\n* Block-level tokenizer.\n**/\nvar _rules$1 = [\n\t[\n\t\t\"table\",\n\t\ttable,\n\t\t[\"paragraph\", \"reference\"]\n\t],\n\t[\"code\", code],\n\t[\n\t\t\"fence\",\n\t\tfence,\n\t\t[\n\t\t\t\"paragraph\",\n\t\t\t\"reference\",\n\t\t\t\"blockquote\",\n\t\t\t\"list\"\n\t\t]\n\t],\n\t[\n\t\t\"blockquote\",\n\t\tblockquote,\n\t\t[\n\t\t\t\"paragraph\",\n\t\t\t\"reference\",\n\t\t\t\"blockquote\",\n\t\t\t\"list\"\n\t\t]\n\t],\n\t[\n\t\t\"hr\",\n\t\thr,\n\t\t[\n\t\t\t\"paragraph\",\n\t\t\t\"reference\",\n\t\t\t\"blockquote\",\n\t\t\t\"list\"\n\t\t]\n\t],\n\t[\n\t\t\"list\",\n\t\tlist,\n\t\t[\n\t\t\t\"paragraph\",\n\t\t\t\"reference\",\n\t\t\t\"blockquote\"\n\t\t]\n\t],\n\t[\"reference\", reference],\n\t[\n\t\t\"html_block\",\n\t\thtml_block,\n\t\t[\n\t\t\t\"paragraph\",\n\t\t\t\"reference\",\n\t\t\t\"blockquote\"\n\t\t]\n\t],\n\t[\n\t\t\"heading\",\n\t\theading,\n\t\t[\n\t\t\t\"paragraph\",\n\t\t\t\"reference\",\n\t\t\t\"blockquote\"\n\t\t]\n\t],\n\t[\"lheading\", lheading],\n\t[\"paragraph\", paragraph]\n];\n/**\n* new ParserBlock()\n**/\nfunction ParserBlock() {\n\t/**\n\t* ParserBlock#ruler -> Ruler\n\t*\n\t* [[Ruler]] instance. Keep configuration of block rules.\n\t**/\n\tthis.ruler = new Ruler();\n\tfor (let i = 0; i < _rules$1.length; i++) this.ruler.push(_rules$1[i][0], _rules$1[i][1], { alt: (_rules$1[i][2] || []).slice() });\n}\nParserBlock.prototype.tokenize = function(state, startLine, endLine) {\n\tconst rules = this.ruler.getRules(\"\");\n\tconst len = rules.length;\n\tconst maxNesting = state.md.options.maxNesting;\n\tlet line = startLine;\n\tlet hasEmptyLines = false;\n\twhile (line < endLine) {\n\t\tstate.line = line = state.skipEmptyLines(line);\n\t\tif (line >= endLine) break;\n\t\tif (state.sCount[line] < state.blkIndent) break;\n\t\tif (state.level >= maxNesting) {\n\t\t\tstate.line = endLine;\n\t\t\tbreak;\n\t\t}\n\t\tconst prevLine = state.line;\n\t\tlet ok = false;\n\t\tfor (let i = 0; i < len; i++) {\n\t\t\tok = rules[i](state, line, endLine, false);\n\t\t\tif (ok) {\n\t\t\t\tif (prevLine >= state.line) throw new Error(\"block rule didn't increment state.line\");\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (!ok) throw new Error(\"none of the block rules matched\");\n\t\tstate.tight = !hasEmptyLines;\n\t\tif (state.isEmpty(state.line - 1)) hasEmptyLines = true;\n\t\tline = state.line;\n\t\tif (line < endLine && state.isEmpty(line)) {\n\t\t\thasEmptyLines = true;\n\t\t\tline++;\n\t\t\tstate.line = line;\n\t\t}\n\t}\n};\n/**\n* ParserBlock.parse(str, md, env, outTokens)\n*\n* Process input string and push block tokens into `outTokens`\n**/\nParserBlock.prototype.parse = function(src, md, env, outTokens) {\n\tif (!src) return;\n\tconst state = new this.State(src, md, env, outTokens);\n\tthis.tokenize(state, state.line, state.lineMax);\n};\nParserBlock.prototype.State = StateBlock;\n//#endregion\n//#region lib/rules_inline/state_inline.mjs\nfunction StateInline(src, md, env, outTokens) {\n\tthis.src = src;\n\tthis.env = env;\n\tthis.md = md;\n\tthis.tokens = outTokens;\n\tthis.tokens_meta = Array(outTokens.length);\n\tthis.pos = 0;\n\tthis.posMax = this.src.length;\n\tthis.level = 0;\n\tthis.pending = \"\";\n\tthis.pendingLevel = 0;\n\tthis.cache = {};\n\tthis.delimiters = [];\n\tthis._prev_delimiters = [];\n\tthis.backticks = {};\n\tthis.backticksScanned = false;\n\tthis.linkLevel = 0;\n}\nStateInline.prototype.pushPending = function() {\n\tconst token = new Token(\"text\", \"\", 0);\n\ttoken.content = this.pending;\n\ttoken.level = this.pendingLevel;\n\tthis.tokens.push(token);\n\tthis.pending = \"\";\n\treturn token;\n};\nStateInline.prototype.push = function(type, tag, nesting) {\n\tif (this.pending) this.pushPending();\n\tconst token = new Token(type, tag, nesting);\n\tlet token_meta = null;\n\tif (nesting < 0) {\n\t\tthis.level--;\n\t\tthis.delimiters = this._prev_delimiters.pop();\n\t}\n\ttoken.level = this.level;\n\tif (nesting > 0) {\n\t\tthis.level++;\n\t\tthis._prev_delimiters.push(this.delimiters);\n\t\tthis.delimiters = [];\n\t\ttoken_meta = { delimiters: this.delimiters };\n\t}\n\tthis.pendingLevel = this.level;\n\tthis.tokens.push(token);\n\tthis.tokens_meta.push(token_meta);\n\treturn token;\n};\nStateInline.prototype.scanDelims = function(start, canSplitWord) {\n\tconst max = this.posMax;\n\tconst marker = this.src.charCodeAt(start);\n\tlet lastChar;\n\tif (start === 0) lastChar = 32;\n\telse if (start === 1) {\n\t\tlastChar = this.src.charCodeAt(0);\n\t\tif ((lastChar & 63488) === 55296) lastChar = 65533;\n\t} else {\n\t\tlastChar = this.src.charCodeAt(start - 1);\n\t\tif ((lastChar & 64512) === 56320) {\n\t\t\tconst highSurr = this.src.charCodeAt(start - 2);\n\t\t\tlastChar = (highSurr & 64512) === 55296 ? 65536 + (highSurr - 55296 << 10) + (lastChar - 56320) : 65533;\n\t\t} else if ((lastChar & 64512) === 55296) lastChar = 65533;\n\t}\n\tlet pos = start;\n\twhile (pos < max && this.src.charCodeAt(pos) === marker) pos++;\n\tconst count = pos - start;\n\tlet nextChar = pos < max ? this.src.charCodeAt(pos) : 32;\n\tif ((nextChar & 64512) === 55296) {\n\t\tconst lowSurr = this.src.charCodeAt(pos + 1);\n\t\tnextChar = (lowSurr & 64512) === 56320 ? 65536 + (nextChar - 55296 << 10) + (lowSurr - 56320) : 65533;\n\t} else if ((nextChar & 64512) === 56320) nextChar = 65533;\n\tconst isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctCharCode(lastChar);\n\tconst isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctCharCode(nextChar);\n\tconst isLastWhiteSpace = isWhiteSpace(lastChar);\n\tconst isNextWhiteSpace = isWhiteSpace(nextChar);\n\tconst left_flanking = !isNextWhiteSpace && (!isNextPunctChar || isLastWhiteSpace || isLastPunctChar);\n\tconst right_flanking = !isLastWhiteSpace && (!isLastPunctChar || isNextWhiteSpace || isNextPunctChar);\n\treturn {\n\t\tcan_open: left_flanking && (canSplitWord || !right_flanking || isLastPunctChar),\n\t\tcan_close: right_flanking && (canSplitWord || !left_flanking || isNextPunctChar),\n\t\tlength: count\n\t};\n};\nStateInline.prototype.Token = Token;\n//#endregion\n//#region lib/rules_inline/text.mjs\nfunction isTerminatorChar(ch) {\n\tswitch (ch) {\n\t\tcase 10:\n\t\tcase 33:\n\t\tcase 35:\n\t\tcase 36:\n\t\tcase 37:\n\t\tcase 38:\n\t\tcase 42:\n\t\tcase 43:\n\t\tcase 45:\n\t\tcase 58:\n\t\tcase 60:\n\t\tcase 61:\n\t\tcase 62:\n\t\tcase 64:\n\t\tcase 91:\n\t\tcase 92:\n\t\tcase 93:\n\t\tcase 94:\n\t\tcase 95:\n\t\tcase 96:\n\t\tcase 123:\n\t\tcase 125:\n\t\tcase 126: return true;\n\t\tdefault: return false;\n\t}\n}\nfunction text(state, silent) {\n\tlet pos = state.pos;\n\twhile (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) pos++;\n\tif (pos === state.pos) return false;\n\tif (!silent) state.pending += state.src.slice(state.pos, pos);\n\tstate.pos = pos;\n\treturn true;\n}\n//#endregion\n//#region lib/rules_inline/linkify.mjs\nvar SCHEME_RE = /(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i;\nfunction linkify(state, silent) {\n\tif (!state.md.options.linkify) return false;\n\tif (state.linkLevel > 0) return false;\n\tconst pos = state.pos;\n\tconst max = state.posMax;\n\tif (pos + 3 > max) return false;\n\tif (state.src.charCodeAt(pos) !== 58) return false;\n\tif (state.src.charCodeAt(pos + 1) !== 47) return false;\n\tif (state.src.charCodeAt(pos + 2) !== 47) return false;\n\tconst match = state.pending.match(SCHEME_RE);\n\tif (!match) return false;\n\tconst proto = match[1];\n\tconst link = state.md.linkify.matchAtStart(state.src.slice(pos - proto.length));\n\tif (!link) return false;\n\tlet url = link.url;\n\tif (url.length <= proto.length) return false;\n\tlet urlEnd = url.length;\n\twhile (urlEnd > 0 && url.charCodeAt(urlEnd - 1) === 42) urlEnd--;\n\tif (urlEnd !== url.length) url = url.slice(0, urlEnd);\n\tconst fullUrl = state.md.normalizeLink(url);\n\tif (!state.md.validateLink(fullUrl)) return false;\n\tif (!silent) {\n\t\tstate.pending = state.pending.slice(0, -proto.length);\n\t\tconst token_o = state.push(\"link_open\", \"a\", 1);\n\t\ttoken_o.attrs = [[\"href\", fullUrl]];\n\t\ttoken_o.markup = \"linkify\";\n\t\ttoken_o.info = \"auto\";\n\t\tconst token_t = state.push(\"text\", \"\", 0);\n\t\ttoken_t.content = state.md.normalizeLinkText(url);\n\t\tconst token_c = state.push(\"link_close\", \"a\", -1);\n\t\ttoken_c.markup = \"linkify\";\n\t\ttoken_c.info = \"auto\";\n\t}\n\tstate.pos += url.length - proto.length;\n\treturn true;\n}\n//#endregion\n//#region lib/rules_inline/newline.mjs\nfunction newline(state, silent) {\n\tlet pos = state.pos;\n\tif (state.src.charCodeAt(pos) !== 10) return false;\n\tconst pmax = state.pending.length - 1;\n\tconst max = state.posMax;\n\tif (!silent) if (pmax >= 0 && state.pending.charCodeAt(pmax) === 32) if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 32) {\n\t\tlet ws = pmax - 1;\n\t\twhile (ws >= 1 && state.pending.charCodeAt(ws - 1) === 32) ws--;\n\t\tstate.pending = state.pending.slice(0, ws);\n\t\tstate.push(\"hardbreak\", \"br\", 0);\n\t} else {\n\t\tstate.pending = state.pending.slice(0, -1);\n\t\tstate.push(\"softbreak\", \"br\", 0);\n\t}\n\telse state.push(\"softbreak\", \"br\", 0);\n\tpos++;\n\twhile (pos < max && isSpace(state.src.charCodeAt(pos))) pos++;\n\tstate.pos = pos;\n\treturn true;\n}\n//#endregion\n//#region lib/rules_inline/escape.mjs\nvar ESCAPED = [];\nfor (let i = 0; i < 256; i++) ESCAPED.push(0);\n\"\\\\!\\\"#$%&'()*+,./:;<=>?@[]^_`{|}~-\".split(\"\").forEach(function(ch) {\n\tESCAPED[ch.charCodeAt(0)] = 1;\n});\nfunction escape(state, silent) {\n\tlet pos = state.pos;\n\tconst max = state.posMax;\n\tif (state.src.charCodeAt(pos) !== 92) return false;\n\tpos++;\n\tif (pos >= max) return false;\n\tlet ch1 = state.src.charCodeAt(pos);\n\tif (ch1 === 10) {\n\t\tif (!silent) state.push(\"hardbreak\", \"br\", 0);\n\t\tpos++;\n\t\twhile (pos < max) {\n\t\t\tch1 = state.src.charCodeAt(pos);\n\t\t\tif (!isSpace(ch1)) break;\n\t\t\tpos++;\n\t\t}\n\t\tstate.pos = pos;\n\t\treturn true;\n\t}\n\tif (ch1 === 32) {\n\t\tif (!silent) {\n\t\t\tconst token = state.push(\"text_special\", \"\", 0);\n\t\t\ttoken.content = \"\\\\\";\n\t\t\ttoken.markup = \"\\\\\";\n\t\t\ttoken.info = \"escape\";\n\t\t}\n\t\tstate.pos = pos;\n\t\treturn true;\n\t}\n\tlet escapedStr = state.src[pos];\n\tif (ch1 >= 55296 && ch1 <= 56319 && pos + 1 < max) {\n\t\tconst ch2 = state.src.charCodeAt(pos + 1);\n\t\tif (ch2 >= 56320 && ch2 <= 57343) {\n\t\t\tescapedStr += state.src[pos + 1];\n\t\t\tpos++;\n\t\t}\n\t}\n\tconst origStr = \"\\\\\" + escapedStr;\n\tif (!silent) {\n\t\tconst token = state.push(\"text_special\", \"\", 0);\n\t\tif (ch1 < 256 && ESCAPED[ch1] !== 0) token.content = escapedStr;\n\t\telse token.content = origStr;\n\t\ttoken.markup = origStr;\n\t\ttoken.info = \"escape\";\n\t}\n\tstate.pos = pos + 1;\n\treturn true;\n}\n//#endregion\n//#region lib/rules_inline/backticks.mjs\nfunction backtick(state, silent) {\n\tlet pos = state.pos;\n\tif (state.src.charCodeAt(pos) !== 96) return false;\n\tconst start = pos;\n\tpos++;\n\tconst max = state.posMax;\n\twhile (pos < max && state.src.charCodeAt(pos) === 96) pos++;\n\tconst marker = state.src.slice(start, pos);\n\tconst openerLength = marker.length;\n\tif (state.backticksScanned && (state.backticks[openerLength] || 0) <= start) {\n\t\tif (!silent) state.pending += marker;\n\t\tstate.pos += openerLength;\n\t\treturn true;\n\t}\n\tlet matchEnd = pos;\n\tlet matchStart;\n\twhile ((matchStart = state.src.indexOf(\"`\", matchEnd)) !== -1) {\n\t\tmatchEnd = matchStart + 1;\n\t\twhile (matchEnd < max && state.src.charCodeAt(matchEnd) === 96) matchEnd++;\n\t\tconst closerLength = matchEnd - matchStart;\n\t\tif (closerLength === openerLength) {\n\t\t\tif (!silent) {\n\t\t\t\tconst token = state.push(\"code_inline\", \"code\", 0);\n\t\t\t\ttoken.markup = marker;\n\t\t\t\ttoken.content = state.src.slice(pos, matchStart).replace(/\\n/g, \" \").replace(/^ (.+) $/, \"$1\");\n\t\t\t}\n\t\t\tstate.pos = matchEnd;\n\t\t\treturn true;\n\t\t}\n\t\tstate.backticks[closerLength] = matchStart;\n\t}\n\tstate.backticksScanned = true;\n\tif (!silent) state.pending += marker;\n\tstate.pos += openerLength;\n\treturn true;\n}\n//#endregion\n//#region lib/rules_inline/strikethrough.mjs\nfunction strikethrough_tokenize(state, silent) {\n\tconst start = state.pos;\n\tconst marker = state.src.charCodeAt(start);\n\tif (silent) return false;\n\tif (marker !== 126) return false;\n\tconst scanned = state.scanDelims(state.pos, true);\n\tlet len = scanned.length;\n\tconst ch = String.fromCharCode(marker);\n\tif (len < 2) return false;\n\tlet token;\n\tif (len % 2) {\n\t\ttoken = state.push(\"text\", \"\", 0);\n\t\ttoken.content = ch;\n\t\tlen--;\n\t}\n\tfor (let i = 0; i < len; i += 2) {\n\t\ttoken = state.push(\"text\", \"\", 0);\n\t\ttoken.content = ch + ch;\n\t\tstate.delimiters.push({\n\t\t\tmarker,\n\t\t\tlength: 0,\n\t\t\ttoken: state.tokens.length - 1,\n\t\t\tend: -1,\n\t\t\topen: scanned.can_open,\n\t\t\tclose: scanned.can_close\n\t\t});\n\t}\n\tstate.pos += scanned.length;\n\treturn true;\n}\nfunction postProcess$1(state, delimiters) {\n\tlet token;\n\tconst loneMarkers = [];\n\tconst max = delimiters.length;\n\tfor (let i = 0; i < max; i++) {\n\t\tconst startDelim = delimiters[i];\n\t\tif (startDelim.marker !== 126) continue;\n\t\tif (startDelim.end === -1) continue;\n\t\tconst endDelim = delimiters[startDelim.end];\n\t\ttoken = state.tokens[startDelim.token];\n\t\ttoken.type = \"s_open\";\n\t\ttoken.tag = \"s\";\n\t\ttoken.nesting = 1;\n\t\ttoken.markup = \"~~\";\n\t\ttoken.content = \"\";\n\t\ttoken = state.tokens[endDelim.token];\n\t\ttoken.type = \"s_close\";\n\t\ttoken.tag = \"s\";\n\t\ttoken.nesting = -1;\n\t\ttoken.markup = \"~~\";\n\t\ttoken.content = \"\";\n\t\tif (state.tokens[endDelim.token - 1].type === \"text\" && state.tokens[endDelim.token - 1].content === \"~\") loneMarkers.push(endDelim.token - 1);\n\t}\n\twhile (loneMarkers.length) {\n\t\tconst i = loneMarkers.pop();\n\t\tlet j = i + 1;\n\t\twhile (j < state.tokens.length && state.tokens[j].type === \"s_close\") j++;\n\t\tj--;\n\t\tif (i !== j) {\n\t\t\ttoken = state.tokens[j];\n\t\t\tstate.tokens[j] = state.tokens[i];\n\t\t\tstate.tokens[i] = token;\n\t\t}\n\t}\n}\nfunction strikethrough_postProcess(state) {\n\tconst tokens_meta = state.tokens_meta;\n\tconst max = state.tokens_meta.length;\n\tpostProcess$1(state, state.delimiters);\n\tfor (let curr = 0; curr < max; curr++) if (tokens_meta[curr] && tokens_meta[curr].delimiters) postProcess$1(state, tokens_meta[curr].delimiters);\n}\nvar strikethrough_default = {\n\ttokenize: strikethrough_tokenize,\n\tpostProcess: strikethrough_postProcess\n};\n//#endregion\n//#region lib/rules_inline/emphasis.mjs\nfunction emphasis_tokenize(state, silent) {\n\tconst start = state.pos;\n\tconst marker = state.src.charCodeAt(start);\n\tif (silent) return false;\n\tif (marker !== 95 && marker !== 42) return false;\n\tconst scanned = state.scanDelims(state.pos, marker === 42);\n\tfor (let i = 0; i < scanned.length; i++) {\n\t\tconst token = state.push(\"text\", \"\", 0);\n\t\ttoken.content = String.fromCharCode(marker);\n\t\tstate.delimiters.push({\n\t\t\tmarker,\n\t\t\tlength: scanned.length,\n\t\t\ttoken: state.tokens.length - 1,\n\t\t\tend: -1,\n\t\t\topen: scanned.can_open,\n\t\t\tclose: scanned.can_close\n\t\t});\n\t}\n\tstate.pos += scanned.length;\n\treturn true;\n}\nfunction postProcess(state, delimiters) {\n\tconst max = delimiters.length;\n\tfor (let i = max - 1; i >= 0; i--) {\n\t\tconst startDelim = delimiters[i];\n\t\tif (startDelim.marker !== 95 && startDelim.marker !== 42) continue;\n\t\tif (startDelim.end === -1) continue;\n\t\tconst endDelim = delimiters[startDelim.end];\n\t\tconst isStrong = i > 0 && delimiters[i - 1].end === startDelim.end + 1 && delimiters[i - 1].marker === startDelim.marker && delimiters[i - 1].token === startDelim.token - 1 && delimiters[startDelim.end + 1].token === endDelim.token + 1;\n\t\tconst ch = String.fromCharCode(startDelim.marker);\n\t\tconst token_o = state.tokens[startDelim.token];\n\t\ttoken_o.type = isStrong ? \"strong_open\" : \"em_open\";\n\t\ttoken_o.tag = isStrong ? \"strong\" : \"em\";\n\t\ttoken_o.nesting = 1;\n\t\ttoken_o.markup = isStrong ? ch + ch : ch;\n\t\ttoken_o.content = \"\";\n\t\tconst token_c = state.tokens[endDelim.token];\n\t\ttoken_c.type = isStrong ? \"strong_close\" : \"em_close\";\n\t\ttoken_c.tag = isStrong ? \"strong\" : \"em\";\n\t\ttoken_c.nesting = -1;\n\t\ttoken_c.markup = isStrong ? ch + ch : ch;\n\t\ttoken_c.content = \"\";\n\t\tif (isStrong) {\n\t\t\tstate.tokens[delimiters[i - 1].token].content = \"\";\n\t\t\tstate.tokens[delimiters[startDelim.end + 1].token].content = \"\";\n\t\t\ti--;\n\t\t}\n\t}\n}\nfunction emphasis_post_process(state) {\n\tconst tokens_meta = state.tokens_meta;\n\tconst max = state.tokens_meta.length;\n\tpostProcess(state, state.delimiters);\n\tfor (let curr = 0; curr < max; curr++) if (tokens_meta[curr] && tokens_meta[curr].delimiters) postProcess(state, tokens_meta[curr].delimiters);\n}\nvar emphasis_default = {\n\ttokenize: emphasis_tokenize,\n\tpostProcess: emphasis_post_process\n};\n//#endregion\n//#region lib/rules_inline/link.mjs\nfunction link(state, silent) {\n\tlet code, label, res, ref;\n\tlet href = \"\";\n\tlet title = \"\";\n\tlet start = state.pos;\n\tlet parseReference = true;\n\tif (state.src.charCodeAt(state.pos) !== 91) return false;\n\tconst oldPos = state.pos;\n\tconst max = state.posMax;\n\tconst labelStart = state.pos + 1;\n\tconst labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true);\n\tif (labelEnd < 0) return false;\n\tlet pos = labelEnd + 1;\n\tif (pos < max && state.src.charCodeAt(pos) === 40) {\n\t\tparseReference = false;\n\t\tpos++;\n\t\tfor (; pos < max; pos++) {\n\t\t\tcode = state.src.charCodeAt(pos);\n\t\t\tif (!isSpace(code) && code !== 10) break;\n\t\t}\n\t\tif (pos >= max) return false;\n\t\tstart = pos;\n\t\tres = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n\t\tif (res.ok) {\n\t\t\thref = state.md.normalizeLink(res.str);\n\t\t\tif (state.md.validateLink(href)) pos = res.pos;\n\t\t\telse href = \"\";\n\t\t\tstart = pos;\n\t\t\tfor (; pos < max; pos++) {\n\t\t\t\tcode = state.src.charCodeAt(pos);\n\t\t\t\tif (!isSpace(code) && code !== 10) break;\n\t\t\t}\n\t\t\tres = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n\t\t\tif (pos < max && start !== pos && res.ok) {\n\t\t\t\ttitle = res.str;\n\t\t\t\tpos = res.pos;\n\t\t\t\tfor (; pos < max; pos++) {\n\t\t\t\t\tcode = state.src.charCodeAt(pos);\n\t\t\t\t\tif (!isSpace(code) && code !== 10) break;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (pos >= max || state.src.charCodeAt(pos) !== 41) parseReference = true;\n\t\tpos++;\n\t}\n\tif (parseReference) {\n\t\tif (typeof state.env.references === \"undefined\") return false;\n\t\tif (pos < max && state.src.charCodeAt(pos) === 91) {\n\t\t\tstart = pos + 1;\n\t\t\tpos = state.md.helpers.parseLinkLabel(state, pos);\n\t\t\tif (pos >= 0) label = state.src.slice(start, pos++);\n\t\t\telse pos = labelEnd + 1;\n\t\t} else pos = labelEnd + 1;\n\t\tif (!label) label = state.src.slice(labelStart, labelEnd);\n\t\tref = state.env.references[normalizeReference(label)];\n\t\tif (!ref) {\n\t\t\tstate.pos = oldPos;\n\t\t\treturn false;\n\t\t}\n\t\thref = ref.href;\n\t\ttitle = ref.title;\n\t}\n\tif (!silent) {\n\t\tstate.pos = labelStart;\n\t\tstate.posMax = labelEnd;\n\t\tconst token_o = state.push(\"link_open\", \"a\", 1);\n\t\tconst attrs = [[\"href\", href]];\n\t\ttoken_o.attrs = attrs;\n\t\tif (title) attrs.push([\"title\", title]);\n\t\tstate.linkLevel++;\n\t\tstate.md.inline.tokenize(state);\n\t\tstate.linkLevel--;\n\t\tstate.push(\"link_close\", \"a\", -1);\n\t}\n\tstate.pos = pos;\n\tstate.posMax = max;\n\treturn true;\n}\n//#endregion\n//#region lib/rules_inline/image.mjs\nfunction image(state, silent) {\n\tlet code, content, label, pos, ref, res, title, start;\n\tlet href = \"\";\n\tconst oldPos = state.pos;\n\tconst max = state.posMax;\n\tif (state.src.charCodeAt(state.pos) !== 33) return false;\n\tif (state.src.charCodeAt(state.pos + 1) !== 91) return false;\n\tconst labelStart = state.pos + 2;\n\tconst labelEnd = state.md.helpers.parseLinkLabel(state, state.pos + 1, false);\n\tif (labelEnd < 0) return false;\n\tpos = labelEnd + 1;\n\tif (pos < max && state.src.charCodeAt(pos) === 40) {\n\t\tpos++;\n\t\tfor (; pos < max; pos++) {\n\t\t\tcode = state.src.charCodeAt(pos);\n\t\t\tif (!isSpace(code) && code !== 10) break;\n\t\t}\n\t\tif (pos >= max) return false;\n\t\tstart = pos;\n\t\tres = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n\t\tif (res.ok) {\n\t\t\thref = state.md.normalizeLink(res.str);\n\t\t\tif (state.md.validateLink(href)) pos = res.pos;\n\t\t\telse href = \"\";\n\t\t}\n\t\tstart = pos;\n\t\tfor (; pos < max; pos++) {\n\t\t\tcode = state.src.charCodeAt(pos);\n\t\t\tif (!isSpace(code) && code !== 10) break;\n\t\t}\n\t\tres = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n\t\tif (pos < max && start !== pos && res.ok) {\n\t\t\ttitle = res.str;\n\t\t\tpos = res.pos;\n\t\t\tfor (; pos < max; pos++) {\n\t\t\t\tcode = state.src.charCodeAt(pos);\n\t\t\t\tif (!isSpace(code) && code !== 10) break;\n\t\t\t}\n\t\t} else title = \"\";\n\t\tif (pos >= max || state.src.charCodeAt(pos) !== 41) {\n\t\t\tstate.pos = oldPos;\n\t\t\treturn false;\n\t\t}\n\t\tpos++;\n\t} else {\n\t\tif (typeof state.env.references === \"undefined\") return false;\n\t\tif (pos < max && state.src.charCodeAt(pos) === 91) {\n\t\t\tstart = pos + 1;\n\t\t\tpos = state.md.helpers.parseLinkLabel(state, pos);\n\t\t\tif (pos >= 0) label = state.src.slice(start, pos++);\n\t\t\telse pos = labelEnd + 1;\n\t\t} else pos = labelEnd + 1;\n\t\tif (!label) label = state.src.slice(labelStart, labelEnd);\n\t\tref = state.env.references[normalizeReference(label)];\n\t\tif (!ref) {\n\t\t\tstate.pos = oldPos;\n\t\t\treturn false;\n\t\t}\n\t\thref = ref.href;\n\t\ttitle = ref.title;\n\t}\n\tif (!silent) {\n\t\tcontent = state.src.slice(labelStart, labelEnd);\n\t\tconst tokens = [];\n\t\tstate.md.inline.parse(content, state.md, state.env, tokens);\n\t\tconst token = state.push(\"image\", \"img\", 0);\n\t\tconst attrs = [[\"src\", href], [\"alt\", \"\"]];\n\t\ttoken.attrs = attrs;\n\t\ttoken.children = tokens;\n\t\ttoken.content = content;\n\t\tif (title) attrs.push([\"title\", title]);\n\t}\n\tstate.pos = pos;\n\tstate.posMax = max;\n\treturn true;\n}\n//#endregion\n//#region lib/rules_inline/autolink.mjs\nvar EMAIL_RE = /^([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])?)*)$/;\nvar AUTOLINK_RE = /^([a-zA-Z][a-zA-Z0-9+.-]{1,31}):([^<>\\x00-\\x20]*)$/;\nfunction autolink(state, silent) {\n\tlet pos = state.pos;\n\tif (state.src.charCodeAt(pos) !== 60) return false;\n\tconst start = state.pos;\n\tconst max = state.posMax;\n\tfor (;;) {\n\t\tif (++pos >= max) return false;\n\t\tconst ch = state.src.charCodeAt(pos);\n\t\tif (ch === 60) return false;\n\t\tif (ch === 62) break;\n\t}\n\tconst url = state.src.slice(start + 1, pos);\n\tif (AUTOLINK_RE.test(url)) {\n\t\tconst fullUrl = state.md.normalizeLink(url);\n\t\tif (!state.md.validateLink(fullUrl)) return false;\n\t\tif (!silent) {\n\t\t\tconst token_o = state.push(\"link_open\", \"a\", 1);\n\t\t\ttoken_o.attrs = [[\"href\", fullUrl]];\n\t\t\ttoken_o.markup = \"autolink\";\n\t\t\ttoken_o.info = \"auto\";\n\t\t\tconst token_t = state.push(\"text\", \"\", 0);\n\t\t\ttoken_t.content = state.md.normalizeLinkText(url);\n\t\t\tconst token_c = state.push(\"link_close\", \"a\", -1);\n\t\t\ttoken_c.markup = \"autolink\";\n\t\t\ttoken_c.info = \"auto\";\n\t\t}\n\t\tstate.pos += url.length + 2;\n\t\treturn true;\n\t}\n\tif (EMAIL_RE.test(url)) {\n\t\tconst fullUrl = state.md.normalizeLink(\"mailto:\" + url);\n\t\tif (!state.md.validateLink(fullUrl)) return false;\n\t\tif (!silent) {\n\t\t\tconst token_o = state.push(\"link_open\", \"a\", 1);\n\t\t\ttoken_o.attrs = [[\"href\", fullUrl]];\n\t\t\ttoken_o.markup = \"autolink\";\n\t\t\ttoken_o.info = \"auto\";\n\t\t\tconst token_t = state.push(\"text\", \"\", 0);\n\t\t\ttoken_t.content = state.md.normalizeLinkText(url);\n\t\t\tconst token_c = state.push(\"link_close\", \"a\", -1);\n\t\t\ttoken_c.markup = \"autolink\";\n\t\t\ttoken_c.info = \"auto\";\n\t\t}\n\t\tstate.pos += url.length + 2;\n\t\treturn true;\n\t}\n\treturn false;\n}\n//#endregion\n//#region lib/rules_inline/html_inline.mjs\nfunction isLinkOpen(str) {\n\treturn /^<a[>\\s]/i.test(str);\n}\nfunction isLinkClose(str) {\n\treturn /^<\\/a\\s*>/i.test(str);\n}\nfunction isLetter(ch) {\n\tconst lc = ch | 32;\n\treturn lc >= 97 && lc <= 122;\n}\nfunction html_inline(state, silent) {\n\tif (!state.md.options.html) return false;\n\tconst max = state.posMax;\n\tconst pos = state.pos;\n\tif (state.src.charCodeAt(pos) !== 60 || pos + 2 >= max) return false;\n\tconst ch = state.src.charCodeAt(pos + 1);\n\tif (ch !== 33 && ch !== 63 && ch !== 47 && !isLetter(ch)) return false;\n\tconst match = state.src.slice(pos).match(HTML_TAG_RE);\n\tif (!match) return false;\n\tif (!silent) {\n\t\tconst token = state.push(\"html_inline\", \"\", 0);\n\t\ttoken.content = match[0];\n\t\tif (isLinkOpen(token.content)) state.linkLevel++;\n\t\tif (isLinkClose(token.content)) state.linkLevel--;\n\t}\n\tstate.pos += match[0].length;\n\treturn true;\n}\n//#endregion\n//#region lib/rules_inline/entity.mjs\nvar DIGITAL_RE = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i;\nvar NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i;\nfunction entity(state, silent) {\n\tconst pos = state.pos;\n\tconst max = state.posMax;\n\tif (state.src.charCodeAt(pos) !== 38) return false;\n\tif (pos + 1 >= max) return false;\n\tif (state.src.charCodeAt(pos + 1) === 35) {\n\t\tconst match = state.src.slice(pos).match(DIGITAL_RE);\n\t\tif (match) {\n\t\t\tif (!silent) {\n\t\t\t\tconst code = match[1][0].toLowerCase() === \"x\" ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10);\n\t\t\t\tconst token = state.push(\"text_special\", \"\", 0);\n\t\t\t\ttoken.content = isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(65533);\n\t\t\t\ttoken.markup = match[0];\n\t\t\t\ttoken.info = \"entity\";\n\t\t\t}\n\t\t\tstate.pos += match[0].length;\n\t\t\treturn true;\n\t\t}\n\t} else {\n\t\tconst match = state.src.slice(pos).match(NAMED_RE);\n\t\tif (match) {\n\t\t\tconst decoded = (0, entities.decodeHTMLStrict)(match[0]);\n\t\t\tif (decoded !== match[0]) {\n\t\t\t\tif (!silent) {\n\t\t\t\t\tconst token = state.push(\"text_special\", \"\", 0);\n\t\t\t\t\ttoken.content = decoded;\n\t\t\t\t\ttoken.markup = match[0];\n\t\t\t\t\ttoken.info = \"entity\";\n\t\t\t\t}\n\t\t\t\tstate.pos += match[0].length;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n//#endregion\n//#region lib/rules_inline/balance_pairs.mjs\nfunction processDelimiters(delimiters) {\n\tconst openersBottom = {};\n\tconst max = delimiters.length;\n\tif (!max) return;\n\tlet headerIdx = 0;\n\tlet lastTokenIdx = -2;\n\tconst jumps = [];\n\tfor (let closerIdx = 0; closerIdx < max; closerIdx++) {\n\t\tconst closer = delimiters[closerIdx];\n\t\tjumps.push(0);\n\t\tif (delimiters[headerIdx].marker !== closer.marker || lastTokenIdx !== closer.token - 1) headerIdx = closerIdx;\n\t\tlastTokenIdx = closer.token;\n\t\tcloser.length = closer.length || 0;\n\t\tif (!closer.close) continue;\n\t\tif (!openersBottom.hasOwnProperty(closer.marker)) openersBottom[closer.marker] = [\n\t\t\t-1,\n\t\t\t-1,\n\t\t\t-1,\n\t\t\t-1,\n\t\t\t-1,\n\t\t\t-1\n\t\t];\n\t\tconst minOpenerIdx = openersBottom[closer.marker][(closer.open ? 3 : 0) + closer.length % 3];\n\t\tlet openerIdx = headerIdx - jumps[headerIdx] - 1;\n\t\tlet newMinOpenerIdx = openerIdx;\n\t\tfor (; openerIdx > minOpenerIdx; openerIdx -= jumps[openerIdx] + 1) {\n\t\t\tconst opener = delimiters[openerIdx];\n\t\t\tif (opener.marker !== closer.marker) continue;\n\t\t\tif (opener.open && opener.end < 0) {\n\t\t\t\tlet isOddMatch = false;\n\t\t\t\tif (opener.close || closer.open) {\n\t\t\t\t\tif ((opener.length + closer.length) % 3 === 0) {\n\t\t\t\t\t\tif (opener.length % 3 !== 0 || closer.length % 3 !== 0) isOddMatch = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!isOddMatch) {\n\t\t\t\t\tconst lastJump = openerIdx > 0 && !delimiters[openerIdx - 1].open ? jumps[openerIdx - 1] + 1 : 0;\n\t\t\t\t\tjumps[closerIdx] = closerIdx - openerIdx + lastJump;\n\t\t\t\t\tjumps[openerIdx] = lastJump;\n\t\t\t\t\tcloser.open = false;\n\t\t\t\t\topener.end = closerIdx;\n\t\t\t\t\topener.close = false;\n\t\t\t\t\tnewMinOpenerIdx = -1;\n\t\t\t\t\tlastTokenIdx = -2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (newMinOpenerIdx !== -1) openersBottom[closer.marker][(closer.open ? 3 : 0) + (closer.length || 0) % 3] = newMinOpenerIdx;\n\t}\n}\nfunction link_pairs(state) {\n\tconst tokens_meta = state.tokens_meta;\n\tconst max = state.tokens_meta.length;\n\tprocessDelimiters(state.delimiters);\n\tfor (let curr = 0; curr < max; curr++) if (tokens_meta[curr] && tokens_meta[curr].delimiters) processDelimiters(tokens_meta[curr].delimiters);\n}\n//#endregion\n//#region lib/rules_inline/fragments_join.mjs\nfunction fragments_join(state) {\n\tlet curr, last;\n\tlet level = 0;\n\tconst tokens = state.tokens;\n\tconst max = state.tokens.length;\n\tfor (curr = last = 0; curr < max; curr++) {\n\t\tif (tokens[curr].nesting < 0) level--;\n\t\ttokens[curr].level = level;\n\t\tif (tokens[curr].nesting > 0) level++;\n\t\tif (tokens[curr].type === \"text\" && curr + 1 < max && tokens[curr + 1].type === \"text\") tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;\n\t\telse {\n\t\t\tif (curr !== last) tokens[last] = tokens[curr];\n\t\t\tlast++;\n\t\t}\n\t}\n\tif (curr !== last) tokens.length = last;\n}\n//#endregion\n//#region lib/parser_inline.mjs\n/** internal\n* class ParserInline\n*\n* Tokenizes paragraph content.\n**/\nvar _rules = [\n\t[\"text\", text],\n\t[\"linkify\", linkify],\n\t[\"newline\", newline],\n\t[\"escape\", escape],\n\t[\"backticks\", backtick],\n\t[\"strikethrough\", strikethrough_default.tokenize],\n\t[\"emphasis\", emphasis_default.tokenize],\n\t[\"link\", link],\n\t[\"image\", image],\n\t[\"autolink\", autolink],\n\t[\"html_inline\", html_inline],\n\t[\"entity\", entity]\n];\nvar _rules2 = [\n\t[\"balance_pairs\", link_pairs],\n\t[\"strikethrough\", strikethrough_default.postProcess],\n\t[\"emphasis\", emphasis_default.postProcess],\n\t[\"fragments_join\", fragments_join]\n];\n/**\n* new ParserInline()\n**/\nfunction ParserInline() {\n\t/**\n\t* ParserInline#ruler -> Ruler\n\t*\n\t* [[Ruler]] instance. Keep configuration of inline rules.\n\t**/\n\tthis.ruler = new Ruler();\n\tfor (let i = 0; i < _rules.length; i++) this.ruler.push(_rules[i][0], _rules[i][1]);\n\t/**\n\t* ParserInline#ruler2 -> Ruler\n\t*\n\t* [[Ruler]] instance. Second ruler used for post-processing\n\t* (e.g. in emphasis-like rules).\n\t**/\n\tthis.ruler2 = new Ruler();\n\tfor (let i = 0; i < _rules2.length; i++) this.ruler2.push(_rules2[i][0], _rules2[i][1]);\n}\nParserInline.prototype.skipToken = function(state) {\n\tconst pos = state.pos;\n\tconst rules = this.ruler.getRules(\"\");\n\tconst len = rules.length;\n\tconst maxNesting = state.md.options.maxNesting;\n\tconst cache = state.cache;\n\tif (typeof cache[pos] !== \"undefined\") {\n\t\tstate.pos = cache[pos];\n\t\treturn;\n\t}\n\tlet ok = false;\n\tif (state.level < maxNesting) for (let i = 0; i < len; i++) {\n\t\tstate.level++;\n\t\tok = rules[i](state, true);\n\t\tstate.level--;\n\t\tif (ok) {\n\t\t\tif (pos >= state.pos) throw new Error(\"inline rule didn't increment state.pos\");\n\t\t\tbreak;\n\t\t}\n\t}\n\telse state.pos = state.posMax;\n\tif (!ok) state.pos++;\n\tcache[pos] = state.pos;\n};\nParserInline.prototype.tokenize = function(state) {\n\tconst rules = this.ruler.getRules(\"\");\n\tconst len = rules.length;\n\tconst end = state.posMax;\n\tconst maxNesting = state.md.options.maxNesting;\n\twhile (state.pos < end) {\n\t\tconst prevPos = state.pos;\n\t\tlet ok = false;\n\t\tif (state.level < maxNesting) for (let i = 0; i < len; i++) {\n\t\t\tok = rules[i](state, false);\n\t\t\tif (ok) {\n\t\t\t\tif (prevPos >= state.pos) throw new Error(\"inline rule didn't increment state.pos\");\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (ok) {\n\t\t\tif (state.pos >= end) break;\n\t\t\tcontinue;\n\t\t}\n\t\tstate.pending += state.src[state.pos++];\n\t}\n\tif (state.pending) state.pushPending();\n};\n/**\n* ParserInline.parse(str, md, env, outTokens)\n*\n* Process input string and push inline tokens into `outTokens`\n**/\nParserInline.prototype.parse = function(str, md, env, outTokens) {\n\tconst state = new this.State(str, md, env, outTokens);\n\tthis.tokenize(state);\n\tconst rules = this.ruler2.getRules(\"\");\n\tconst len = rules.length;\n\tfor (let i = 0; i < len; i++) rules[i](state);\n};\nParserInline.prototype.State = StateInline;\n//#endregion\n//#region lib/index.mjs\nvar config = {\n\tdefault: {\n\t\toptions: {\n\t\t\thtml: false,\n\t\t\txhtmlOut: false,\n\t\t\tbreaks: false,\n\t\t\tlangPrefix: \"language-\",\n\t\t\tlinkify: false,\n\t\t\ttypographer: false,\n\t\t\tquotes: \"“”‘’\",\n\t\t\thighlight: null,\n\t\t\tmaxNesting: 100\n\t\t},\n\t\tcomponents: {\n\t\t\tcore: {},\n\t\t\tblock: {},\n\t\t\tinline: {}\n\t\t}\n\t},\n\tzero: {\n\t\toptions: {\n\t\t\thtml: false,\n\t\t\txhtmlOut: false,\n\t\t\tbreaks: false,\n\t\t\tlangPrefix: \"language-\",\n\t\t\tlinkify: false,\n\t\t\ttypographer: false,\n\t\t\tquotes: \"“”‘’\",\n\t\t\thighlight: null,\n\t\t\tmaxNesting: 20\n\t\t},\n\t\tcomponents: {\n\t\t\tcore: { rules: [\n\t\t\t\t\"normalize\",\n\t\t\t\t\"block\",\n\t\t\t\t\"inline\",\n\t\t\t\t\"text_join\"\n\t\t\t] },\n\t\t\tblock: { rules: [\"paragraph\"] },\n\t\t\tinline: {\n\t\t\t\trules: [\"text\"],\n\t\t\t\trules2: [\"balance_pairs\", \"fragments_join\"]\n\t\t\t}\n\t\t}\n\t},\n\tcommonmark: {\n\t\toptions: {\n\t\t\thtml: true,\n\t\t\txhtmlOut: true,\n\t\t\tbreaks: false,\n\t\t\tlangPrefix: \"language-\",\n\t\t\tlinkify: false,\n\t\t\ttypographer: false,\n\t\t\tquotes: \"“”‘’\",\n\t\t\thighlight: null,\n\t\t\tmaxNesting: 20\n\t\t},\n\t\tcomponents: {\n\t\t\tcore: { rules: [\n\t\t\t\t\"normalize\",\n\t\t\t\t\"block\",\n\t\t\t\t\"inline\",\n\t\t\t\t\"text_join\"\n\t\t\t] },\n\t\t\tblock: { rules: [\n\t\t\t\t\"blockquote\",\n\t\t\t\t\"code\",\n\t\t\t\t\"fence\",\n\t\t\t\t\"heading\",\n\t\t\t\t\"hr\",\n\t\t\t\t\"html_block\",\n\t\t\t\t\"lheading\",\n\t\t\t\t\"list\",\n\t\t\t\t\"reference\",\n\t\t\t\t\"paragraph\"\n\t\t\t] },\n\t\t\tinline: {\n\t\t\t\trules: [\n\t\t\t\t\t\"autolink\",\n\t\t\t\t\t\"backticks\",\n\t\t\t\t\t\"emphasis\",\n\t\t\t\t\t\"entity\",\n\t\t\t\t\t\"escape\",\n\t\t\t\t\t\"html_inline\",\n\t\t\t\t\t\"image\",\n\t\t\t\t\t\"link\",\n\t\t\t\t\t\"newline\",\n\t\t\t\t\t\"text\"\n\t\t\t\t],\n\t\t\t\trules2: [\n\t\t\t\t\t\"balance_pairs\",\n\t\t\t\t\t\"emphasis\",\n\t\t\t\t\t\"fragments_join\"\n\t\t\t\t]\n\t\t\t}\n\t\t}\n\t}\n};\nvar BAD_PROTO_RE = /^(vbscript|javascript|file|data):/;\nvar GOOD_DATA_RE = /^data:image\\/(gif|png|jpeg|webp);/;\nfunction validateLink(url) {\n\tconst str = url.trim().toLowerCase();\n\treturn BAD_PROTO_RE.test(str) ? GOOD_DATA_RE.test(str) : true;\n}\nvar RECODE_HOSTNAME_FOR = [\n\t\"http:\",\n\t\"https:\",\n\t\"mailto:\"\n];\nfunction normalizeLink(url) {\n\tconst parsed = mdurl.parse(url, true);\n\tif (parsed.hostname) {\n\t\tif (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) try {\n\t\t\tparsed.hostname = punycode_js.default.toASCII(parsed.hostname);\n\t\t} catch (er) {}\n\t}\n\treturn mdurl.encode(mdurl.format(parsed));\n}\nfunction normalizeLinkText(url) {\n\tconst parsed = mdurl.parse(url, true);\n\tif (parsed.hostname) {\n\t\tif (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) try {\n\t\t\tparsed.hostname = punycode_js.default.toUnicode(parsed.hostname);\n\t\t} catch (er) {}\n\t}\n\treturn mdurl.decode(mdurl.format(parsed), mdurl.decode.defaultChars + \"%\");\n}\n/**\n* class MarkdownIt\n*\n* Main parser/renderer class.\n*\n* ##### Usage\n*\n* ```javascript\n* // node.js, \"classic\" way:\n* var MarkdownIt = require('markdown-it'),\n* md = new MarkdownIt();\n* var result = md.render('# markdown-it rulezz!');\n*\n* // node.js, the same, but with sugar:\n* var md = require('markdown-it')();\n* var result = md.render('# markdown-it rulezz!');\n*\n* // browser without AMD, added to \"window\" on script load\n* // Note, there are no dash.\n* var md = window.markdownit();\n* var result = md.render('# markdown-it rulezz!');\n* ```\n*\n* Single line rendering, without paragraph wrap:\n*\n* ```javascript\n* var md = require('markdown-it')();\n* var result = md.renderInline('__markdown-it__ rulezz!');\n* ```\n**/\n/**\n* new MarkdownIt([presetName, options])\n* - presetName (String): optional, `commonmark` / `zero`\n* - options (Object)\n*\n* Creates parser instanse with given config. Can be called without `new`.\n*\n* ##### presetName\n*\n* MarkdownIt provides named presets as a convenience to quickly\n* enable/disable active syntax rules and options for common use cases.\n*\n* - [\"commonmark\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/commonmark.mjs) -\n* configures parser to strict [CommonMark](http://commonmark.org/) mode.\n* - [default](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/default.mjs) -\n* similar to GFM, used when no preset name given. Enables all available rules,\n* but still without html, typographer & autolinker.\n* - [\"zero\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/zero.mjs) -\n* all rules disabled. Useful to quickly setup your config via `.enable()`.\n* For example, when you need only `bold` and `italic` markup and nothing else.\n*\n* ##### options:\n*\n* - __html__ - `false`. Set `true` to enable HTML tags in source. Be careful!\n* That's not safe! You may need external sanitizer to protect output from XSS.\n* It's better to extend features via plugins, instead of enabling HTML.\n* - __xhtmlOut__ - `false`. Set `true` to add '/' when closing single tags\n* (`<br />`). This is needed only for full CommonMark compatibility. In real\n* world you will need HTML output.\n* - __breaks__ - `false`. Set `true` to convert `\\n` in paragraphs into `<br>`.\n* - __langPrefix__ - `language-`. CSS language class prefix for fenced blocks.\n* Can be useful for external highlighters.\n* - __linkify__ - `false`. Set `true` to autoconvert URL-like text to links.\n* - __typographer__ - `false`. Set `true` to enable [some language-neutral\n* replacement](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.mjs) +\n* quotes beautification (smartquotes).\n* - __quotes__ - `“”‘’`, String or Array. Double + single quotes replacement\n* pairs, when typographer enabled and smartquotes on. For example, you can\n* use `'«»„“'` for Russian, `'„“‚‘'` for German, and\n* `['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›']` for French (including nbsp).\n* - __highlight__ - `null`. Highlighter function for fenced code blocks.\n* Highlighter `function (str, lang)` should return escaped HTML. It can also\n* return empty string if the source was not changed and should be escaped\n* externaly. If result starts with <pre... internal wrapper is skipped.\n*\n* ##### Example\n*\n* ```javascript\n* // commonmark mode\n* var md = require('markdown-it')('commonmark');\n*\n* // default mode\n* var md = require('markdown-it')();\n*\n* // enable everything\n* var md = require('markdown-it')({\n* html: true,\n* linkify: true,\n* typographer: true\n* });\n* ```\n*\n* ##### Syntax highlighting\n*\n* ```js\n* var hljs = require('highlight.js') // https://highlightjs.org/\n*\n* var md = require('markdown-it')({\n* highlight: function (str, lang) {\n* if (lang && hljs.getLanguage(lang)) {\n* try {\n* return hljs.highlight(str, { language: lang, ignoreIllegals: true }).value;\n* } catch (__) {}\n* }\n*\n* return ''; // use external default escaping\n* }\n* });\n* ```\n*\n* Or with full wrapper override (if you need assign class to `<pre>` or `<code>`):\n*\n* ```javascript\n* var hljs = require('highlight.js') // https://highlightjs.org/\n*\n* // Actual default values\n* var md = require('markdown-it')({\n* highlight: function (str, lang) {\n* if (lang && hljs.getLanguage(lang)) {\n* try {\n* return '<pre><code class=\"hljs\">' +\n* hljs.highlight(str, { language: lang, ignoreIllegals: true }).value +\n* '</code></pre>';\n* } catch (__) {}\n* }\n*\n* return '<pre><code class=\"hljs\">' + md.utils.escapeHtml(str) + '</code></pre>';\n* }\n* });\n* ```\n*\n**/\nfunction MarkdownIt(presetName, options) {\n\tif (!(this instanceof MarkdownIt)) return new MarkdownIt(presetName, options);\n\tif (!options) {\n\t\tif (!isString(presetName)) {\n\t\t\toptions = presetName || {};\n\t\t\tpresetName = \"default\";\n\t\t}\n\t}\n\t/**\n\t* MarkdownIt#inline -> ParserInline\n\t*\n\t* Instance of [[ParserInline]]. You may need it to add new rules when\n\t* writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n\t* [[MarkdownIt.enable]].\n\t**/\n\tthis.inline = new ParserInline();\n\t/**\n\t* MarkdownIt#block -> ParserBlock\n\t*\n\t* Instance of [[ParserBlock]]. You may need it to add new rules when\n\t* writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n\t* [[MarkdownIt.enable]].\n\t**/\n\tthis.block = new ParserBlock();\n\t/**\n\t* MarkdownIt#core -> Core\n\t*\n\t* Instance of [[Core]] chain executor. You may need it to add new rules when\n\t* writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n\t* [[MarkdownIt.enable]].\n\t**/\n\tthis.core = new Core();\n\t/**\n\t* MarkdownIt#renderer -> Renderer\n\t*\n\t* Instance of [[Renderer]]. Use it to modify output look. Or to add rendering\n\t* rules for new token types, generated by plugins.\n\t*\n\t* ##### Example\n\t*\n\t* ```javascript\n\t* var md = require('markdown-it')();\n\t*\n\t* function myToken(tokens, idx, options, env, self) {\n\t* //...\n\t* return result;\n\t* };\n\t*\n\t* md.renderer.rules['my_token'] = myToken\n\t* ```\n\t*\n\t* See [[Renderer]] docs and [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.mjs).\n\t**/\n\tthis.renderer = new Renderer();\n\t/**\n\t* MarkdownIt#linkify -> LinkifyIt\n\t*\n\t* [linkify-it](https://github.com/markdown-it/linkify-it) instance.\n\t* Used by [linkify](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/linkify.mjs)\n\t* rule.\n\t**/\n\tthis.linkify = new linkify_it.default();\n\t/**\n\t* MarkdownIt#validateLink(url) -> Boolean\n\t*\n\t* Link validation function. CommonMark allows too much in links. By default\n\t* we disable `javascript:`, `vbscript:`, `file:` schemas, and almost all `data:...` schemas\n\t* except some embedded image types.\n\t*\n\t* You can change this behaviour:\n\t*\n\t* ```javascript\n\t* var md = require('markdown-it')();\n\t* // enable everything\n\t* md.validateLink = function () { return true; }\n\t* ```\n\t**/\n\tthis.validateLink = validateLink;\n\t/**\n\t* MarkdownIt#normalizeLink(url) -> String\n\t*\n\t* Function used to encode link url to a machine-readable format,\n\t* which includes url-encoding, punycode, etc.\n\t**/\n\tthis.normalizeLink = normalizeLink;\n\t/**\n\t* MarkdownIt#normalizeLinkText(url) -> String\n\t*\n\t* Function used to decode link url to a human-readable format`\n\t**/\n\tthis.normalizeLinkText = normalizeLinkText;\n\t/**\n\t* MarkdownIt#utils -> utils\n\t*\n\t* Assorted utility functions, useful to write plugins. See details\n\t* [here](https://github.com/markdown-it/markdown-it/blob/master/lib/common/utils.mjs).\n\t**/\n\tthis.utils = utils_exports;\n\t/**\n\t* MarkdownIt#helpers -> helpers\n\t*\n\t* Link components parser functions, useful to write plugins. See details\n\t* [here](https://github.com/markdown-it/markdown-it/blob/master/lib/helpers).\n\t**/\n\tthis.helpers = assign({}, helpers_exports);\n\tthis.options = {};\n\tthis.configure(presetName);\n\tif (options) this.set(options);\n}\n/** chainable\n* MarkdownIt.set(options)\n*\n* Set parser options (in the same format as in constructor). Probably, you\n* will never need it, but you can change options after constructor call.\n*\n* ##### Example\n*\n* ```javascript\n* var md = require('markdown-it')()\n* .set({ html: true, breaks: true })\n* .set({ typographer: true });\n* ```\n*\n* __Note:__ To achieve the best possible performance, don't modify a\n* `markdown-it` instance options on the fly. If you need multiple configurations\n* it's best to create multiple instances and initialize each with separate\n* config.\n**/\nMarkdownIt.prototype.set = function(options) {\n\tassign(this.options, options);\n\treturn this;\n};\n/** chainable, internal\n* MarkdownIt.configure(presets)\n*\n* Batch load of all options and compenent settings. This is internal method,\n* and you probably will not need it. But if you will - see available presets\n* and data structure [here](https://github.com/markdown-it/markdown-it/tree/master/lib/presets)\n*\n* We strongly recommend to use presets instead of direct config loads. That\n* will give better compatibility with next versions.\n**/\nMarkdownIt.prototype.configure = function(presets) {\n\tconst self = this;\n\tif (isString(presets)) {\n\t\tconst presetName = presets;\n\t\tpresets = config[presetName];\n\t\tif (!presets) throw new Error(\"Wrong `markdown-it` preset \\\"\" + presetName + \"\\\", check name\");\n\t}\n\tif (!presets) throw new Error(\"Wrong `markdown-it` preset, can't be empty\");\n\tif (presets.options) self.set(presets.options);\n\tif (presets.components) Object.keys(presets.components).forEach(function(name) {\n\t\tif (presets.components[name].rules) self[name].ruler.enableOnly(presets.components[name].rules);\n\t\tif (presets.components[name].rules2) self[name].ruler2.enableOnly(presets.components[name].rules2);\n\t});\n\treturn this;\n};\n/** chainable\n* MarkdownIt.enable(list, ignoreInvalid)\n* - list (String|Array): rule name or list of rule names to enable\n* - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n*\n* Enable list or rules. It will automatically find appropriate components,\n* containing rules with given names. If rule not found, and `ignoreInvalid`\n* not set - throws exception.\n*\n* ##### Example\n*\n* ```javascript\n* var md = require('markdown-it')()\n* .enable(['sub', 'sup'])\n* .disable('smartquotes');\n* ```\n**/\nMarkdownIt.prototype.enable = function(list, ignoreInvalid) {\n\tlet result = [];\n\tif (!Array.isArray(list)) list = [list];\n\t[\n\t\t\"core\",\n\t\t\"block\",\n\t\t\"inline\"\n\t].forEach(function(chain) {\n\t\tresult = result.concat(this[chain].ruler.enable(list, true));\n\t}, this);\n\tresult = result.concat(this.inline.ruler2.enable(list, true));\n\tconst missed = list.filter(function(name) {\n\t\treturn result.indexOf(name) < 0;\n\t});\n\tif (missed.length && !ignoreInvalid) throw new Error(\"MarkdownIt. Failed to enable unknown rule(s): \" + missed);\n\treturn this;\n};\n/** chainable\n* MarkdownIt.disable(list, ignoreInvalid)\n* - list (String|Array): rule name or list of rule names to disable.\n* - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n*\n* The same as [[MarkdownIt.enable]], but turn specified rules off.\n**/\nMarkdownIt.prototype.disable = function(list, ignoreInvalid) {\n\tlet result = [];\n\tif (!Array.isArray(list)) list = [list];\n\t[\n\t\t\"core\",\n\t\t\"block\",\n\t\t\"inline\"\n\t].forEach(function(chain) {\n\t\tresult = result.concat(this[chain].ruler.disable(list, true));\n\t}, this);\n\tresult = result.concat(this.inline.ruler2.disable(list, true));\n\tconst missed = list.filter(function(name) {\n\t\treturn result.indexOf(name) < 0;\n\t});\n\tif (missed.length && !ignoreInvalid) throw new Error(\"MarkdownIt. Failed to disable unknown rule(s): \" + missed);\n\treturn this;\n};\n/** chainable\n* MarkdownIt.use(plugin, params)\n*\n* Load specified plugin with given params into current parser instance.\n* It's just a sugar to call `plugin(md, params)` with curring.\n*\n* ##### Example\n*\n* ```javascript\n* var iterator = require('markdown-it-for-inline');\n* var md = require('markdown-it')()\n* .use(iterator, 'foo_replace', 'text', function (tokens, idx) {\n* tokens[idx].content = tokens[idx].content.replace(/foo/g, 'bar');\n* });\n* ```\n**/\nMarkdownIt.prototype.use = function(plugin) {\n\tconst args = [this].concat(Array.prototype.slice.call(arguments, 1));\n\tplugin.apply(plugin, args);\n\treturn this;\n};\n/** internal\n* MarkdownIt.parse(src, env) -> Array\n* - src (String): source string\n* - env (Object): environment sandbox\n*\n* Parse input string and return list of block tokens (special token type\n* \"inline\" will contain list of inline tokens). You should not call this\n* method directly, until you write custom renderer (for example, to produce\n* AST).\n*\n* `env` is used to pass data between \"distributed\" rules and return additional\n* metadata like reference info, needed for the renderer. It also can be used to\n* inject data in specific cases. Usually, you will be ok to pass `{}`,\n* and then pass updated object to renderer.\n**/\nMarkdownIt.prototype.parse = function(src, env) {\n\tif (typeof src !== \"string\") throw new Error(\"Input data should be a String\");\n\tconst state = new this.core.State(src, this, env);\n\tthis.core.process(state);\n\treturn state.tokens;\n};\n/**\n* MarkdownIt.render(src [, env]) -> String\n* - src (String): source string\n* - env (Object): environment sandbox\n*\n* Render markdown string into html. It does all magic for you :).\n*\n* `env` can be used to inject additional metadata (`{}` by default).\n* But you will not need it with high probability. See also comment\n* in [[MarkdownIt.parse]].\n**/\nMarkdownIt.prototype.render = function(src, env) {\n\tenv = env || {};\n\treturn this.renderer.render(this.parse(src, env), this.options, env);\n};\n/** internal\n* MarkdownIt.parseInline(src, env) -> Array\n* - src (String): source string\n* - env (Object): environment sandbox\n*\n* The same as [[MarkdownIt.parse]] but skip all block rules. It returns the\n* block tokens list with the single `inline` element, containing parsed inline\n* tokens in `children` property. Also updates `env` object.\n**/\nMarkdownIt.prototype.parseInline = function(src, env) {\n\tconst state = new this.core.State(src, this, env);\n\tstate.inlineMode = true;\n\tthis.core.process(state);\n\treturn state.tokens;\n};\n/**\n* MarkdownIt.renderInline(src [, env]) -> String\n* - src (String): source string\n* - env (Object): environment sandbox\n*\n* Similar to [[MarkdownIt.render]] but for single paragraph content. Result\n* will NOT be wrapped into `<p>` tags.\n**/\nMarkdownIt.prototype.renderInline = function(src, env) {\n\tenv = env || {};\n\treturn this.renderer.render(this.parseInline(src, env), this.options, env);\n};\n//#endregion\nmodule.exports = MarkdownIt;\n\n//# sourceMappingURL=index.cjs.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.create = create;\nconst language_service_1 = require(\"@volar/language-service\");\nconst vscode_jsonrpc_1 = require(\"vscode-jsonrpc\");\nconst vscode_markdown_languageservice_1 = require(\"vscode-markdown-languageservice\");\nconst vscode_uri_1 = require(\"vscode-uri\");\nconst MarkdownIt = require(\"markdown-it\");\nconst md = new MarkdownIt();\nconst organizeLinkDefKind = 'source.organizeLinkDefinitions';\nfunction create({ documentSelector = ['markdown'], fileExtensions = [\n 'md',\n 'mkd',\n 'mdwn',\n 'mdown',\n 'markdown',\n 'markdn',\n 'mdtxt',\n 'mdtext',\n 'workbook',\n], getDiagnosticOptions = async (_document, context) => {\n return await context.env.getConfiguration?.('markdown.validate');\n}, } = {}) {\n return {\n name: 'markdown',\n capabilities: {\n codeActionProvider: {\n resolveProvider: true,\n codeActionKinds: [\n organizeLinkDefKind,\n 'quickfix',\n 'refactor',\n ],\n },\n completionProvider: {\n triggerCharacters: ['.', '/', '#'],\n },\n definitionProvider: true,\n diagnosticProvider: {\n interFileDependencies: false,\n workspaceDiagnostics: false,\n },\n documentHighlightProvider: true,\n documentLinkProvider: {\n resolveProvider: true,\n },\n documentSymbolProvider: true,\n foldingRangeProvider: true,\n hoverProvider: true,\n referencesProvider: true,\n fileReferencesProvider: true,\n renameProvider: {\n prepareProvider: true,\n },\n fileRenameEditsProvider: true,\n selectionRangeProvider: true,\n workspaceSymbolProvider: {},\n },\n create(context) {\n const logger = {\n level: vscode_markdown_languageservice_1.LogLevel.Off,\n log(_logLevel, message) {\n context.env.console?.log(message);\n },\n };\n const parser = {\n slugifier: vscode_markdown_languageservice_1.githubSlugifier,\n async tokenize(document) {\n return md.parse(document.getText(), {});\n },\n };\n const workspace = getMarkdownWorkspace();\n const mdLs = (0, vscode_markdown_languageservice_1.createLanguageService)({\n logger,\n parser,\n workspace: workspace.workspace,\n });\n const firedDocumentChanges = new Map();\n const fsSourceScripts = new Map();\n const fileWatcher = context.env.onDidChangeWatchedFiles?.(event => {\n for (const change of event.changes) {\n fsSourceScripts.delete(change.uri);\n }\n });\n const codeActionDocuments = new Map();\n return {\n dispose() {\n mdLs.dispose();\n workspace.dispose();\n fileWatcher?.dispose();\n },\n provide: {\n 'markdown/languageService': () => mdLs,\n },\n provideCodeActions(document, range, context, token) {\n if (prepare(document)) {\n if (context.only?.some(kind => kind === 'source' || kind.startsWith('source.'))) {\n const action = {\n title: 'Organize link definitions',\n kind: organizeLinkDefKind,\n data: { uri: document.uri },\n };\n codeActionDocuments.set(action.title, new WeakRef(document));\n return [action];\n }\n return mdLs.getCodeActions(document, range, context, token);\n }\n },\n async resolveCodeAction(codeAction, token) {\n if (codeAction.kind === organizeLinkDefKind) {\n const data = codeAction.data;\n const document = codeActionDocuments.get(codeAction.title)?.deref();\n if (!document) {\n return codeAction;\n }\n const edits = await mdLs.organizeLinkDefinitions(document, { removeUnused: true }, token);\n codeAction.edit = {\n changes: {\n [data.uri]: edits,\n },\n };\n return codeAction;\n }\n return codeAction;\n },\n async provideCompletionItems(document, position, _context, token) {\n if (prepare(document)) {\n const items = await mdLs.getCompletionItems(document, position, {}, token);\n return {\n isIncomplete: false,\n items,\n };\n }\n },\n async provideDefinition(document, position, token) {\n if (prepare(document)) {\n let locations = await mdLs.getDefinition(document, position, token);\n if (!locations) {\n return;\n }\n if (!Array.isArray(locations)) {\n locations = [locations];\n }\n return locations.map(location => ({\n targetUri: location.uri,\n targetRange: location.range,\n targetSelectionRange: location.range,\n }));\n }\n },\n async provideDiagnostics(document, token) {\n if (prepare(document)) {\n const configuration = await getDiagnosticOptions(document, context);\n if (configuration) {\n return mdLs.computeDiagnostics(document, configuration, token);\n }\n }\n },\n provideDocumentHighlights(document, position, token) {\n if (prepare(document)) {\n return mdLs.getDocumentHighlights(document, position, token);\n }\n },\n async provideDocumentLinks(document, token) {\n if (prepare(document)) {\n return await mdLs.getDocumentLinks(document, token);\n }\n },\n provideDocumentSymbols(document, token) {\n if (prepare(document)) {\n return mdLs.getDocumentSymbols(document, { includeLinkDefinitions: true }, token);\n }\n },\n provideFileReferences(document, token) {\n if (prepare(document)) {\n return mdLs.getFileReferences(vscode_uri_1.URI.parse(document.uri), token);\n }\n },\n provideFoldingRanges(document, token) {\n if (prepare(document)) {\n return mdLs.getFoldingRanges(document, token);\n }\n },\n provideHover(document, position, token) {\n if (prepare(document)) {\n return mdLs.getHover(document, position, token);\n }\n },\n provideReferences(document, position, referenceContext, token) {\n if (prepare(document)) {\n return mdLs.getReferences(document, position, referenceContext, token);\n }\n },\n provideRenameEdits(document, position, newName, token) {\n if (prepare(document)) {\n return mdLs.getRenameEdit(document, position, newName, token);\n }\n },\n provideRenameRange(document, position, token) {\n if (prepare(document)) {\n return mdLs.prepareRename(document, position, token);\n }\n },\n async provideFileRenameEdits(oldUri, newUri, token) {\n const result = await mdLs.getRenameFilesInWorkspaceEdit([{ oldUri, newUri }], token);\n return result?.edit;\n },\n provideSelectionRanges(document, positions, token) {\n if (prepare(document)) {\n return mdLs.getSelectionRanges(document, positions, token);\n }\n },\n provideWorkspaceSymbols(query, token) {\n return mdLs.getWorkspaceSymbols(query, token);\n },\n async resolveDocumentLink(link, token) {\n return await mdLs.resolveDocumentLink(link, token) ?? link;\n },\n };\n function prepare(document) {\n if (matchDocument(documentSelector, document)) {\n if (firedDocumentChanges.get(document.uri) !== document.version) {\n firedDocumentChanges.set(document.uri, document.version);\n workspace.onDidChangeMarkdownDocument.fire(document);\n }\n return true;\n }\n return false;\n }\n function getMarkdownWorkspace() {\n const onDidChangeMarkdownDocument = new vscode_jsonrpc_1.Emitter();\n const onDidCreateMarkdownDocument = new vscode_jsonrpc_1.Emitter();\n const onDidDeleteMarkdownDocument = new vscode_jsonrpc_1.Emitter();\n const { fs, onDidChangeWatchedFiles } = context.env;\n const fileWatcher = onDidChangeWatchedFiles?.(event => {\n for (const change of event.changes) {\n switch (change.type) {\n case 2: {\n const document = getTextDocument(vscode_uri_1.URI.parse(change.uri));\n if (document) {\n onDidChangeMarkdownDocument.fire(document);\n }\n break;\n }\n case 1: {\n const document = getTextDocument(vscode_uri_1.URI.parse(change.uri));\n if (document) {\n onDidCreateMarkdownDocument.fire(document);\n }\n break;\n }\n case 3: {\n onDidDeleteMarkdownDocument.fire(vscode_uri_1.URI.parse(change.uri));\n break;\n }\n }\n }\n });\n const workspace = {\n async getAllMarkdownDocuments() {\n // TODO: Add opened files (such as untitled files)\n // const openTextDocumentResults = this.documents.all()\n // \t.filter(doc => this.isRelevantMarkdownDocument(doc));\n return (await Promise.all(context.env.workspaceFolders.map(findMarkdownFilesInWorkspace))).flat();\n },\n getContainingDocument(resource) {\n const decoded = context.decodeEmbeddedDocumentUri(resource);\n if (decoded) {\n return {\n uri: decoded[0],\n children: [],\n };\n }\n },\n hasMarkdownDocument(resource) {\n const document = getTextDocument(resource);\n return Boolean(document && matchDocument(documentSelector, document));\n },\n onDidChangeMarkdownDocument: onDidChangeMarkdownDocument.event,\n onDidCreateMarkdownDocument: onDidCreateMarkdownDocument.event,\n onDidDeleteMarkdownDocument: onDidDeleteMarkdownDocument.event,\n async openMarkdownDocument(resource) {\n return getTextDocument(resource);\n },\n async readDirectory(resource) {\n const directory = await fs?.readDirectory(resource) ?? [];\n return directory\n .filter(file => file[1] !== 0)\n .map(([fileName, fileType]) => [\n fileName,\n { isDirectory: fileType === 2 },\n ]);\n },\n async stat(resource) {\n const stat = await fs?.stat(resource);\n if (stat?.type === 0) {\n return;\n }\n return { isDirectory: stat?.type === 2 };\n },\n workspaceFolders: context.env.workspaceFolders,\n };\n return {\n workspace,\n onDidChangeMarkdownDocument,\n onDidCreateMarkdownDocument,\n onDidDeleteMarkdownDocument,\n dispose() {\n fileWatcher?.dispose();\n onDidDeleteMarkdownDocument.dispose();\n onDidCreateMarkdownDocument.dispose();\n onDidChangeMarkdownDocument.dispose();\n },\n };\n }\n async function findMarkdownFilesInWorkspace(folder) {\n const { fs } = context.env;\n const files = await fs?.readDirectory(folder) ?? [];\n const docs = [];\n await Promise.all(files.map(async ([fileName, fileType]) => {\n if (fileType === 2 && fileName !== 'node_modules') {\n for (const doc of await findMarkdownFilesInWorkspace(vscode_uri_1.Utils.joinPath(folder, fileName))) {\n docs.push(doc);\n }\n }\n else if (fileExtensions.some(ext => fileName.endsWith('.' + ext))) {\n const fileUri = vscode_uri_1.Utils.joinPath(folder, fileName);\n let sourceScript = context.language.scripts.get(fileUri);\n if (!sourceScript) {\n if (!fsSourceScripts.has(fileUri.toString())) {\n fsSourceScripts.set(fileUri.toString(), undefined);\n const fileContent = await fs?.readFile(fileUri);\n if (fileContent !== undefined) {\n fsSourceScripts.set(fileUri.toString(), context.language.scripts.set(fileUri, {\n getText(start, end) {\n return fileContent.substring(start, end);\n },\n getLength() {\n return fileContent.length;\n },\n getChangeRange() {\n return undefined;\n },\n }));\n context.language.scripts.delete(fileUri);\n }\n }\n sourceScript = fsSourceScripts.get(fileUri.toString());\n }\n if (sourceScript?.generated) {\n for (const virtualCode of (0, language_service_1.forEachEmbeddedCode)(sourceScript.generated.root)) {\n if (matchDocument(documentSelector, virtualCode)) {\n const uri = context.encodeEmbeddedDocumentUri(sourceScript.id, virtualCode.id);\n const doc = context.documents.get(uri, virtualCode.languageId, virtualCode.snapshot);\n docs.push(doc);\n }\n }\n }\n else if (sourceScript) {\n const doc = context.documents.get(sourceScript.id, sourceScript.languageId, sourceScript.snapshot);\n if (doc && matchDocument(documentSelector, doc)) {\n docs.push(doc);\n }\n }\n }\n }));\n return docs;\n }\n function getTextDocument(uri) {\n const decoded = context.decodeEmbeddedDocumentUri(uri);\n if (decoded) {\n const sourceScript = context.language.scripts.get(decoded[0]);\n const virtualCode = sourceScript?.generated?.embeddedCodes.get(decoded[1]);\n if (virtualCode) {\n return context.documents.get(uri, virtualCode.languageId, virtualCode.snapshot);\n }\n }\n else {\n const sourceScript = context.language.scripts.get(uri);\n if (sourceScript) {\n return context.documents.get(uri, sourceScript.languageId, sourceScript.snapshot);\n }\n }\n }\n },\n };\n}\nfunction matchDocument(selector, document) {\n for (const sel of selector) {\n if (sel === document.languageId || (typeof sel === 'object' && sel.language === document.languageId)) {\n return true;\n }\n }\n return false;\n}\n//# sourceMappingURL=index.js.map"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127],"mappings":";;;;;;;CAKA,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;CAC5D,QAAQ,cAAc,QAAQ,QAAQ,QAAQ,OAAO,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,SAAS,QAAQ,UAAU,KAAK;CAC9H,SAAS,QAAQ,OAAO;EACpB,OAAO,UAAU,QAAQ,UAAU;CACvC;CACA,QAAQ,UAAU;CAClB,SAAS,OAAO,OAAO;EACnB,OAAO,OAAO,UAAU,YAAY,iBAAiB;CACzD;CACA,QAAQ,SAAS;CACjB,SAAS,OAAO,OAAO;EACnB,OAAO,OAAO,UAAU,YAAY,iBAAiB;CACzD;CACA,QAAQ,SAAS;CACjB,SAAS,MAAM,OAAO;EAClB,OAAO,iBAAiB;CAC5B;CACA,QAAQ,QAAQ;CAChB,SAAS,KAAK,OAAO;EACjB,OAAO,OAAO,UAAU;CAC5B;CACA,QAAQ,OAAO;CACf,SAAS,MAAM,OAAO;EAClB,OAAO,MAAM,QAAQ,KAAK;CAC9B;CACA,QAAQ,QAAQ;CAChB,SAAS,YAAY,OAAO;EACxB,OAAO,MAAM,KAAK,KAAK,MAAM,OAAM,SAAQ,OAAO,IAAI,CAAC;CAC3D;CACA,QAAQ,cAAc;;;;;CC7BtB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;CAC5D,QAAQ,UAAU,QAAQ,oBAAoB,QAAQ,oBAAoB,QAAQ,oBAAoB,QAAQ,oBAAoB,QAAQ,oBAAoB,QAAQ,oBAAoB,QAAQ,oBAAoB,QAAQ,oBAAoB,QAAQ,oBAAoB,QAAQ,oBAAoB,QAAQ,mBAAmB,QAAQ,eAAe,QAAQ,eAAe,QAAQ,eAAe,QAAQ,eAAe,QAAQ,eAAe,QAAQ,eAAe,QAAQ,eAAe,QAAQ,eAAe,QAAQ,eAAe,QAAQ,cAAc,QAAQ,eAAe,QAAQ,2BAA2B,QAAQ,sBAAsB,QAAQ,gBAAgB,QAAQ,aAAa,KAAK;CACprB,IAAM,KAAA,WAAA;;;;CAIN,IAAI;CACJ,CAAC,SAAU,YAAY;EAEnB,WAAW,aAAa;EACxB,WAAW,iBAAiB;EAC5B,WAAW,iBAAiB;EAC5B,WAAW,gBAAgB;EAC3B,WAAW,gBAAgB;;;;;;;;;;EAU3B,WAAW,iCAAiC;;EAE5C,WAAW,mBAAmB;;;;EAI9B,WAAW,oBAAoB;;;;EAI/B,WAAW,mBAAmB;;;;;EAK9B,WAAW,0BAA0B;;;;EAIrC,WAAW,qBAAqB;;;;;EAKhC,WAAW,uBAAuB;EAClC,WAAW,mBAAmB;;;;;;;EAO9B,WAAW,+BAA+B;;EAE1C,WAAW,iBAAiB;CAChC,EAAA,CAAG,eAAe,QAAQ,aAAa,aAAa,CAAC,EAAE;CAuBvD,QAAQ,gBAAgB,MAlBlB,sBAAsB,MAAM;EAC9B,YAAY,MAAM,SAAS,MAAM;GAC7B,MAAM,OAAO;GACb,KAAK,OAAO,GAAG,OAAO,IAAI,IAAI,OAAO,WAAW;GAChD,KAAK,OAAO;GACZ,OAAO,eAAe,MAAM,cAAc,SAAS;EACvD;EACA,SAAS;GACL,MAAM,SAAS;IACX,MAAM,KAAK;IACX,SAAS,KAAK;GAClB;GACA,IAAI,KAAK,SAAS,KAAA,GACd,OAAO,OAAO,KAAK;GAEvB,OAAO;EACX;CACJ;CAEA,IAAM,sBAAN,MAAM,oBAAoB;EACtB,YAAY,MAAM;GACd,KAAK,OAAO;EAChB;EACA,OAAO,GAAG,OAAO;GACb,OAAO,UAAU,oBAAoB,QAAQ,UAAU,oBAAoB,UAAU,UAAU,oBAAoB;EACvH;EACA,WAAW;GACP,OAAO,KAAK;EAChB;CACJ;CACA,QAAQ,sBAAsB;;;;;CAK9B,oBAAoB,OAAO,IAAI,oBAAoB,MAAM;;;;;CAKzD,oBAAoB,aAAa,IAAI,oBAAoB,YAAY;;;;;;CAMrE,oBAAoB,SAAS,IAAI,oBAAoB,QAAQ;;;;CAI7D,IAAM,2BAAN,MAA+B;EAC3B,YAAY,QAAQ,gBAAgB;GAChC,KAAK,SAAS;GACd,KAAK,iBAAiB;EAC1B;EACA,IAAI,sBAAsB;GACtB,OAAO,oBAAoB;EAC/B;CACJ;CACA,QAAQ,2BAA2B;;;;CAInC,IAAM,eAAN,cAA2B,yBAAyB;EAChD,YAAY,QAAQ;GAChB,MAAM,QAAQ,CAAC;EACnB;CACJ;CACA,QAAQ,eAAe;CACvB,IAAM,cAAN,cAA0B,yBAAyB;EAC/C,YAAY,QAAQ,uBAAuB,oBAAoB,MAAM;GACjE,MAAM,QAAQ,CAAC;GACf,KAAK,uBAAuB;EAChC;EACA,IAAI,sBAAsB;GACtB,OAAO,KAAK;EAChB;CACJ;CACA,QAAQ,cAAc;CACtB,IAAM,eAAN,cAA2B,yBAAyB;EAChD,YAAY,QAAQ,uBAAuB,oBAAoB,MAAM;GACjE,MAAM,QAAQ,CAAC;GACf,KAAK,uBAAuB;EAChC;EACA,IAAI,sBAAsB;GACtB,OAAO,KAAK;EAChB;CACJ;CACA,QAAQ,eAAe;CACvB,IAAM,eAAN,cAA2B,yBAAyB;EAChD,YAAY,QAAQ;GAChB,MAAM,QAAQ,CAAC;EACnB;CACJ;CACA,QAAQ,eAAe;CACvB,IAAM,eAAN,cAA2B,yBAAyB;EAChD,YAAY,QAAQ;GAChB,MAAM,QAAQ,CAAC;EACnB;CACJ;CACA,QAAQ,eAAe;CACvB,IAAM,eAAN,cAA2B,yBAAyB;EAChD,YAAY,QAAQ;GAChB,MAAM,QAAQ,CAAC;EACnB;CACJ;CACA,QAAQ,eAAe;CACvB,IAAM,eAAN,cAA2B,yBAAyB;EAChD,YAAY,QAAQ;GAChB,MAAM,QAAQ,CAAC;EACnB;CACJ;CACA,QAAQ,eAAe;CACvB,IAAM,eAAN,cAA2B,yBAAyB;EAChD,YAAY,QAAQ;GAChB,MAAM,QAAQ,CAAC;EACnB;CACJ;CACA,QAAQ,eAAe;CACvB,IAAM,eAAN,cAA2B,yBAAyB;EAChD,YAAY,QAAQ;GAChB,MAAM,QAAQ,CAAC;EACnB;CACJ;CACA,QAAQ,eAAe;CACvB,IAAM,eAAN,cAA2B,yBAAyB;EAChD,YAAY,QAAQ;GAChB,MAAM,QAAQ,CAAC;EACnB;CACJ;CACA,QAAQ,eAAe;CACvB,IAAM,eAAN,cAA2B,yBAAyB;EAChD,YAAY,QAAQ;GAChB,MAAM,QAAQ,CAAC;EACnB;CACJ;CACA,QAAQ,eAAe;CACvB,IAAM,mBAAN,cAA+B,yBAAyB;EACpD,YAAY,QAAQ,uBAAuB,oBAAoB,MAAM;GACjE,MAAM,QAAQ,CAAC;GACf,KAAK,uBAAuB;EAChC;EACA,IAAI,sBAAsB;GACtB,OAAO,KAAK;EAChB;CACJ;CACA,QAAQ,mBAAmB;CAC3B,IAAM,oBAAN,cAAgC,yBAAyB;EACrD,YAAY,QAAQ;GAChB,MAAM,QAAQ,CAAC;EACnB;CACJ;CACA,QAAQ,oBAAoB;CAC5B,IAAM,oBAAN,cAAgC,yBAAyB;EACrD,YAAY,QAAQ,uBAAuB,oBAAoB,MAAM;GACjE,MAAM,QAAQ,CAAC;GACf,KAAK,uBAAuB;EAChC;EACA,IAAI,sBAAsB;GACtB,OAAO,KAAK;EAChB;CACJ;CACA,QAAQ,oBAAoB;CAC5B,IAAM,oBAAN,cAAgC,yBAAyB;EACrD,YAAY,QAAQ;GAChB,MAAM,QAAQ,CAAC;EACnB;CACJ;CACA,QAAQ,oBAAoB;CAC5B,IAAM,oBAAN,cAAgC,yBAAyB;EACrD,YAAY,QAAQ;GAChB,MAAM,QAAQ,CAAC;EACnB;CACJ;CACA,QAAQ,oBAAoB;CAC5B,IAAM,oBAAN,cAAgC,yBAAyB;EACrD,YAAY,QAAQ;GAChB,MAAM,QAAQ,CAAC;EACnB;CACJ;CACA,QAAQ,oBAAoB;CAC5B,IAAM,oBAAN,cAAgC,yBAAyB;EACrD,YAAY,QAAQ;GAChB,MAAM,QAAQ,CAAC;EACnB;CACJ;CACA,QAAQ,oBAAoB;CAC5B,IAAM,oBAAN,cAAgC,yBAAyB;EACrD,YAAY,QAAQ;GAChB,MAAM,QAAQ,CAAC;EACnB;CACJ;CACA,QAAQ,oBAAoB;CAC5B,IAAM,oBAAN,cAAgC,yBAAyB;EACrD,YAAY,QAAQ;GAChB,MAAM,QAAQ,CAAC;EACnB;CACJ;CACA,QAAQ,oBAAoB;CAC5B,IAAM,oBAAN,cAAgC,yBAAyB;EACrD,YAAY,QAAQ;GAChB,MAAM,QAAQ,CAAC;EACnB;CACJ;CACA,QAAQ,oBAAoB;CAC5B,IAAM,oBAAN,cAAgC,yBAAyB;EACrD,YAAY,QAAQ;GAChB,MAAM,QAAQ,CAAC;EACnB;CACJ;CACA,QAAQ,oBAAoB;CAC5B,IAAI;CACJ,CAAC,SAAU,SAAS;;;;EAIhB,SAAS,UAAU,SAAS;GACxB,MAAM,YAAY;GAClB,OAAO,aAAa,GAAG,OAAO,UAAU,MAAM,MAAM,GAAG,OAAO,UAAU,EAAE,KAAK,GAAG,OAAO,UAAU,EAAE;EACzG;EACA,QAAQ,YAAY;;;;EAIpB,SAAS,eAAe,SAAS;GAC7B,MAAM,YAAY;GAClB,OAAO,aAAa,GAAG,OAAO,UAAU,MAAM,KAAK,QAAQ,OAAO,KAAK;EAC3E;EACA,QAAQ,iBAAiB;;;;EAIzB,SAAS,WAAW,SAAS;GACzB,MAAM,YAAY;GAClB,OAAO,cAAc,UAAU,WAAW,KAAK,KAAK,CAAC,CAAC,UAAU,WAAW,GAAG,OAAO,UAAU,EAAE,KAAK,GAAG,OAAO,UAAU,EAAE,KAAK,UAAU,OAAO;EACtJ;EACA,QAAQ,aAAa;CACzB,EAAA,CAAG,YAAY,QAAQ,UAAU,UAAU,CAAC,EAAE;;;;;CC5S9C,IAAI;CACJ,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;CAC5D,QAAQ,WAAW,QAAQ,YAAY,QAAQ,QAAQ,KAAK;CAC5D,IAAI;CACJ,CAAC,SAAU,OAAO;EACd,MAAM,OAAO;EACb,MAAM,QAAQ;EACd,MAAM,QAAQ,MAAM;EACpB,MAAM,OAAO;EACb,MAAM,QAAQ,MAAM;CACxB,EAAA,CAAG,UAAU,QAAQ,QAAQ,QAAQ,CAAC,EAAE;CACxC,IAAM,YAAN,MAAgB;EACZ,cAAc;GACV,KAAK,MAAM;GACX,KAAK,uBAAO,IAAI,IAAI;GACpB,KAAK,QAAQ,KAAA;GACb,KAAK,QAAQ,KAAA;GACb,KAAK,QAAQ;GACb,KAAK,SAAS;EAClB;EACA,QAAQ;GACJ,KAAK,KAAK,MAAM;GAChB,KAAK,QAAQ,KAAA;GACb,KAAK,QAAQ,KAAA;GACb,KAAK,QAAQ;GACb,KAAK;EACT;EACA,UAAU;GACN,OAAO,CAAC,KAAK,SAAS,CAAC,KAAK;EAChC;EACA,IAAI,OAAO;GACP,OAAO,KAAK;EAChB;EACA,IAAI,QAAQ;GACR,OAAO,KAAK,OAAO;EACvB;EACA,IAAI,OAAO;GACP,OAAO,KAAK,OAAO;EACvB;EACA,IAAI,KAAK;GACL,OAAO,KAAK,KAAK,IAAI,GAAG;EAC5B;EACA,IAAI,KAAK,QAAQ,MAAM,MAAM;GACzB,MAAM,OAAO,KAAK,KAAK,IAAI,GAAG;GAC9B,IAAI,CAAC,MACD;GAEJ,IAAI,UAAU,MAAM,MAChB,KAAK,MAAM,MAAM,KAAK;GAE1B,OAAO,KAAK;EAChB;EACA,IAAI,KAAK,OAAO,QAAQ,MAAM,MAAM;GAChC,IAAI,OAAO,KAAK,KAAK,IAAI,GAAG;GAC5B,IAAI,MAAM;IACN,KAAK,QAAQ;IACb,IAAI,UAAU,MAAM,MAChB,KAAK,MAAM,MAAM,KAAK;GAE9B,OACK;IACD,OAAO;KAAE;KAAK;KAAO,MAAM,KAAA;KAAW,UAAU,KAAA;IAAU;IAC1D,QAAQ,OAAR;KACI,KAAK,MAAM;MACP,KAAK,YAAY,IAAI;MACrB;KACJ,KAAK,MAAM;MACP,KAAK,aAAa,IAAI;MACtB;KACJ,KAAK,MAAM;MACP,KAAK,YAAY,IAAI;MACrB;KACJ;MACI,KAAK,YAAY,IAAI;MACrB;IACR;IACA,KAAK,KAAK,IAAI,KAAK,IAAI;IACvB,KAAK;GACT;GACA,OAAO;EACX;EACA,OAAO,KAAK;GACR,OAAO,CAAC,CAAC,KAAK,OAAO,GAAG;EAC5B;EACA,OAAO,KAAK;GACR,MAAM,OAAO,KAAK,KAAK,IAAI,GAAG;GAC9B,IAAI,CAAC,MACD;GAEJ,KAAK,KAAK,OAAO,GAAG;GACpB,KAAK,WAAW,IAAI;GACpB,KAAK;GACL,OAAO,KAAK;EAChB;EACA,QAAQ;GACJ,IAAI,CAAC,KAAK,SAAS,CAAC,KAAK,OACrB;GAEJ,IAAI,CAAC,KAAK,SAAS,CAAC,KAAK,OACrB,MAAM,IAAI,MAAM,cAAc;GAElC,MAAM,OAAO,KAAK;GAClB,KAAK,KAAK,OAAO,KAAK,GAAG;GACzB,KAAK,WAAW,IAAI;GACpB,KAAK;GACL,OAAO,KAAK;EAChB;EACA,QAAQ,YAAY,SAAS;GACzB,MAAM,QAAQ,KAAK;GACnB,IAAI,UAAU,KAAK;GACnB,OAAO,SAAS;IACZ,IAAI,SACA,WAAW,KAAK,OAAO,CAAC,CAAC,QAAQ,OAAO,QAAQ,KAAK,IAAI;SAGzD,WAAW,QAAQ,OAAO,QAAQ,KAAK,IAAI;IAE/C,IAAI,KAAK,WAAW,OAChB,MAAM,IAAI,MAAM,0CAA0C;IAE9D,UAAU,QAAQ;GACtB;EACJ;EACA,OAAO;GACH,MAAM,QAAQ,KAAK;GACnB,IAAI,UAAU,KAAK;GACnB,MAAM,WAAW;KACZ,OAAO,iBAAiB;KACrB,OAAO;IACX;IACA,YAAY;KACR,IAAI,KAAK,WAAW,OAChB,MAAM,IAAI,MAAM,0CAA0C;KAE9D,IAAI,SAAS;MACT,MAAM,SAAS;OAAE,OAAO,QAAQ;OAAK,MAAM;MAAM;MACjD,UAAU,QAAQ;MAClB,OAAO;KACX,OAEI,OAAO;MAAE,OAAO,KAAA;MAAW,MAAM;KAAK;IAE9C;GACJ;GACA,OAAO;EACX;EACA,SAAS;GACL,MAAM,QAAQ,KAAK;GACnB,IAAI,UAAU,KAAK;GACnB,MAAM,WAAW;KACZ,OAAO,iBAAiB;KACrB,OAAO;IACX;IACA,YAAY;KACR,IAAI,KAAK,WAAW,OAChB,MAAM,IAAI,MAAM,0CAA0C;KAE9D,IAAI,SAAS;MACT,MAAM,SAAS;OAAE,OAAO,QAAQ;OAAO,MAAM;MAAM;MACnD,UAAU,QAAQ;MAClB,OAAO;KACX,OAEI,OAAO;MAAE,OAAO,KAAA;MAAW,MAAM;KAAK;IAE9C;GACJ;GACA,OAAO;EACX;EACA,UAAU;GACN,MAAM,QAAQ,KAAK;GACnB,IAAI,UAAU,KAAK;GACnB,MAAM,WAAW;KACZ,OAAO,iBAAiB;KACrB,OAAO;IACX;IACA,YAAY;KACR,IAAI,KAAK,WAAW,OAChB,MAAM,IAAI,MAAM,0CAA0C;KAE9D,IAAI,SAAS;MACT,MAAM,SAAS;OAAE,OAAO,CAAC,QAAQ,KAAK,QAAQ,KAAK;OAAG,MAAM;MAAM;MAClE,UAAU,QAAQ;MAClB,OAAO;KACX,OAEI,OAAO;MAAE,OAAO,KAAA;MAAW,MAAM;KAAK;IAE9C;GACJ;GACA,OAAO;EACX;EACA,EAAE,KAAK,OAAO,aAAa,OAAO,aAAa;GAC3C,OAAO,KAAK,QAAQ;EACxB;EACA,QAAQ,SAAS;GACb,IAAI,WAAW,KAAK,MAChB;GAEJ,IAAI,YAAY,GAAG;IACf,KAAK,MAAM;IACX;GACJ;GACA,IAAI,UAAU,KAAK;GACnB,IAAI,cAAc,KAAK;GACvB,OAAO,WAAW,cAAc,SAAS;IACrC,KAAK,KAAK,OAAO,QAAQ,GAAG;IAC5B,UAAU,QAAQ;IAClB;GACJ;GACA,KAAK,QAAQ;GACb,KAAK,QAAQ;GACb,IAAI,SACA,QAAQ,WAAW,KAAA;GAEvB,KAAK;EACT;EACA,aAAa,MAAM;GAEf,IAAI,CAAC,KAAK,SAAS,CAAC,KAAK,OACrB,KAAK,QAAQ;QAEZ,IAAI,CAAC,KAAK,OACX,MAAM,IAAI,MAAM,cAAc;QAE7B;IACD,KAAK,OAAO,KAAK;IACjB,KAAK,MAAM,WAAW;GAC1B;GACA,KAAK,QAAQ;GACb,KAAK;EACT;EACA,YAAY,MAAM;GAEd,IAAI,CAAC,KAAK,SAAS,CAAC,KAAK,OACrB,KAAK,QAAQ;QAEZ,IAAI,CAAC,KAAK,OACX,MAAM,IAAI,MAAM,cAAc;QAE7B;IACD,KAAK,WAAW,KAAK;IACrB,KAAK,MAAM,OAAO;GACtB;GACA,KAAK,QAAQ;GACb,KAAK;EACT;EACA,WAAW,MAAM;GACb,IAAI,SAAS,KAAK,SAAS,SAAS,KAAK,OAAO;IAC5C,KAAK,QAAQ,KAAA;IACb,KAAK,QAAQ,KAAA;GACjB,OACK,IAAI,SAAS,KAAK,OAAO;IAG1B,IAAI,CAAC,KAAK,MACN,MAAM,IAAI,MAAM,cAAc;IAElC,KAAK,KAAK,WAAW,KAAA;IACrB,KAAK,QAAQ,KAAK;GACtB,OACK,IAAI,SAAS,KAAK,OAAO;IAG1B,IAAI,CAAC,KAAK,UACN,MAAM,IAAI,MAAM,cAAc;IAElC,KAAK,SAAS,OAAO,KAAA;IACrB,KAAK,QAAQ,KAAK;GACtB,OACK;IACD,MAAM,OAAO,KAAK;IAClB,MAAM,WAAW,KAAK;IACtB,IAAI,CAAC,QAAQ,CAAC,UACV,MAAM,IAAI,MAAM,cAAc;IAElC,KAAK,WAAW;IAChB,SAAS,OAAO;GACpB;GACA,KAAK,OAAO,KAAA;GACZ,KAAK,WAAW,KAAA;GAChB,KAAK;EACT;EACA,MAAM,MAAM,OAAO;GACf,IAAI,CAAC,KAAK,SAAS,CAAC,KAAK,OACrB,MAAM,IAAI,MAAM,cAAc;GAElC,IAAK,UAAU,MAAM,SAAS,UAAU,MAAM,MAC1C;GAEJ,IAAI,UAAU,MAAM,OAAO;IACvB,IAAI,SAAS,KAAK,OACd;IAEJ,MAAM,OAAO,KAAK;IAClB,MAAM,WAAW,KAAK;IAEtB,IAAI,SAAS,KAAK,OAAO;KAGrB,SAAS,OAAO,KAAA;KAChB,KAAK,QAAQ;IACjB,OACK;KAED,KAAK,WAAW;KAChB,SAAS,OAAO;IACpB;IAEA,KAAK,WAAW,KAAA;IAChB,KAAK,OAAO,KAAK;IACjB,KAAK,MAAM,WAAW;IACtB,KAAK,QAAQ;IACb,KAAK;GACT,OACK,IAAI,UAAU,MAAM,MAAM;IAC3B,IAAI,SAAS,KAAK,OACd;IAEJ,MAAM,OAAO,KAAK;IAClB,MAAM,WAAW,KAAK;IAEtB,IAAI,SAAS,KAAK,OAAO;KAGrB,KAAK,WAAW,KAAA;KAChB,KAAK,QAAQ;IACjB,OACK;KAED,KAAK,WAAW;KAChB,SAAS,OAAO;IACpB;IACA,KAAK,OAAO,KAAA;IACZ,KAAK,WAAW,KAAK;IACrB,KAAK,MAAM,OAAO;IAClB,KAAK,QAAQ;IACb,KAAK;GACT;EACJ;EACA,SAAS;GACL,MAAM,OAAO,CAAC;GACd,KAAK,SAAS,OAAO,QAAQ;IACzB,KAAK,KAAK,CAAC,KAAK,KAAK,CAAC;GAC1B,CAAC;GACD,OAAO;EACX;EACA,SAAS,MAAM;GACX,KAAK,MAAM;GACX,KAAK,MAAM,CAAC,KAAK,UAAU,MACvB,KAAK,IAAI,KAAK,KAAK;EAE3B;CACJ;CACA,QAAQ,YAAY;CACpB,IAAM,WAAN,cAAuB,UAAU;EAC7B,YAAY,OAAO,QAAQ,GAAG;GAC1B,MAAM;GACN,KAAK,SAAS;GACd,KAAK,SAAS,KAAK,IAAI,KAAK,IAAI,GAAG,KAAK,GAAG,CAAC;EAChD;EACA,IAAI,QAAQ;GACR,OAAO,KAAK;EAChB;EACA,IAAI,MAAM,OAAO;GACb,KAAK,SAAS;GACd,KAAK,UAAU;EACnB;EACA,IAAI,QAAQ;GACR,OAAO,KAAK;EAChB;EACA,IAAI,MAAM,OAAO;GACb,KAAK,SAAS,KAAK,IAAI,KAAK,IAAI,GAAG,KAAK,GAAG,CAAC;GAC5C,KAAK,UAAU;EACnB;EACA,IAAI,KAAK,QAAQ,MAAM,OAAO;GAC1B,OAAO,MAAM,IAAI,KAAK,KAAK;EAC/B;EACA,KAAK,KAAK;GACN,OAAO,MAAM,IAAI,KAAK,MAAM,IAAI;EACpC;EACA,IAAI,KAAK,OAAO;GACZ,MAAM,IAAI,KAAK,OAAO,MAAM,IAAI;GAChC,KAAK,UAAU;GACf,OAAO;EACX;EACA,YAAY;GACR,IAAI,KAAK,OAAO,KAAK,QACjB,KAAK,QAAQ,KAAK,MAAM,KAAK,SAAS,KAAK,MAAM,CAAC;EAE1D;CACJ;CACA,QAAQ,WAAW;;;;;CCxYnB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;CAC5D,QAAQ,aAAa,KAAK;CAC1B,IAAI;CACJ,CAAC,SAAU,YAAY;EACnB,SAAS,OAAO,MAAM;GAClB,OAAO,EACH,SAAS,KACb;EACJ;EACA,WAAW,SAAS;CACxB,EAAA,CAAG,eAAe,QAAQ,aAAa,aAAa,CAAC,EAAE;;;;;CCVvD,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;CAC5D,IAAI;CACJ,SAAS,MAAM;EACX,IAAI,SAAS,KAAA,GACT,MAAM,IAAI,MAAM,wCAAwC;EAE5D,OAAO;CACX;CACA,CAAC,SAAU,KAAK;EACZ,SAAS,QAAQ,KAAK;GAClB,IAAI,QAAQ,KAAA,GACR,MAAM,IAAI,MAAM,uCAAuC;GAE3D,OAAO;EACX;EACA,IAAI,UAAU;CAClB,EAAA,CAAG,QAAQ,MAAM,CAAC,EAAE;CACpB,QAAQ,UAAU;;;;;CCjBlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;CAC5D,QAAQ,UAAU,QAAQ,QAAQ,KAAK;CACvC,IAAM,QAAA,YAAA;CACN,IAAI;CACJ,CAAC,SAAU,OAAO;EACd,MAAM,cAAc,EAAE,UAAU,CAAE,EAAE;EACpC,MAAM,OAAO,WAAY;GAAE,OAAO;EAAa;CACnD,EAAA,CAAG,UAAU,QAAQ,QAAQ,QAAQ,CAAC,EAAE;CACxC,IAAM,eAAN,MAAmB;EACf,IAAI,UAAU,UAAU,MAAM,QAAQ;GAClC,IAAI,CAAC,KAAK,YAAY;IAClB,KAAK,aAAa,CAAC;IACnB,KAAK,YAAY,CAAC;GACtB;GACA,KAAK,WAAW,KAAK,QAAQ;GAC7B,KAAK,UAAU,KAAK,OAAO;GAC3B,IAAI,MAAM,QAAQ,MAAM,GACpB,OAAO,KAAK,EAAE,eAAe,KAAK,OAAO,UAAU,OAAO,EAAE,CAAC;EAErE;EACA,OAAO,UAAU,UAAU,MAAM;GAC7B,IAAI,CAAC,KAAK,YACN;GAEJ,IAAI,oCAAoC;GACxC,KAAK,IAAI,IAAI,GAAG,MAAM,KAAK,WAAW,QAAQ,IAAI,KAAK,KACnD,IAAI,KAAK,WAAW,OAAO,UACvB,IAAI,KAAK,UAAU,OAAO,SAAS;IAE/B,KAAK,WAAW,OAAO,GAAG,CAAC;IAC3B,KAAK,UAAU,OAAO,GAAG,CAAC;IAC1B;GACJ,OAEI,oCAAoC;GAIhD,IAAI,mCACA,MAAM,IAAI,MAAM,mFAAmF;EAE3G;EACA,OAAO,GAAG,MAAM;GACZ,IAAI,CAAC,KAAK,YACN,OAAO,CAAC;GAEZ,MAAM,MAAM,CAAC,GAAG,YAAY,KAAK,WAAW,MAAM,CAAC,GAAG,WAAW,KAAK,UAAU,MAAM,CAAC;GACvF,KAAK,IAAI,IAAI,GAAG,MAAM,UAAU,QAAQ,IAAI,KAAK,KAC7C,IAAI;IACA,IAAI,KAAK,UAAU,EAAE,CAAC,MAAM,SAAS,IAAI,IAAI,CAAC;GAClD,SACO,GAAG;IAEN,CAAC,GAAG,MAAM,QAAA,CAAS,CAAC,CAAC,QAAQ,MAAM,CAAC;GACxC;GAEJ,OAAO;EACX;EACA,UAAU;GACN,OAAO,CAAC,KAAK,cAAc,KAAK,WAAW,WAAW;EAC1D;EACA,UAAU;GACN,KAAK,aAAa,KAAA;GAClB,KAAK,YAAY,KAAA;EACrB;CACJ;CACA,IAAM,UAAN,MAAM,QAAQ;EACV,YAAY,UAAU;GAClB,KAAK,WAAW;EACpB;;;;;EAKA,IAAI,QAAQ;GACR,IAAI,CAAC,KAAK,QACN,KAAK,UAAU,UAAU,UAAU,gBAAgB;IAC/C,IAAI,CAAC,KAAK,YACN,KAAK,aAAa,IAAI,aAAa;IAEvC,IAAI,KAAK,YAAY,KAAK,SAAS,sBAAsB,KAAK,WAAW,QAAQ,GAC7E,KAAK,SAAS,mBAAmB,IAAI;IAEzC,KAAK,WAAW,IAAI,UAAU,QAAQ;IACtC,MAAM,SAAS,EACX,eAAe;KACX,IAAI,CAAC,KAAK,YAEN;KAEJ,KAAK,WAAW,OAAO,UAAU,QAAQ;KACzC,OAAO,UAAU,QAAQ;KACzB,IAAI,KAAK,YAAY,KAAK,SAAS,wBAAwB,KAAK,WAAW,QAAQ,GAC/E,KAAK,SAAS,qBAAqB,IAAI;IAE/C,EACJ;IACA,IAAI,MAAM,QAAQ,WAAW,GACzB,YAAY,KAAK,MAAM;IAE3B,OAAO;GACX;GAEJ,OAAO,KAAK;EAChB;;;;;EAKA,KAAK,OAAO;GACR,IAAI,KAAK,YACL,KAAK,WAAW,OAAO,KAAK,KAAK,YAAY,KAAK;EAE1D;EACA,UAAU;GACN,IAAI,KAAK,YAAY;IACjB,KAAK,WAAW,QAAQ;IACxB,KAAK,aAAa,KAAA;GACtB;EACJ;CACJ;CACA,QAAQ,UAAU;CAClB,QAAQ,QAAQ,WAAY,CAAE;;;;;CC1H9B,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;CAC5D,QAAQ,0BAA0B,QAAQ,oBAAoB,KAAK;CACnE,IAAM,QAAA,YAAA;CACN,IAAM,KAAA,WAAA;CACN,IAAM,WAAA,eAAA;CACN,IAAI;CACJ,CAAC,SAAU,mBAAmB;EAC1B,kBAAkB,OAAO,OAAO,OAAO;GACnC,yBAAyB;GACzB,yBAAyB,SAAS,MAAM;EAC5C,CAAC;EACD,kBAAkB,YAAY,OAAO,OAAO;GACxC,yBAAyB;GACzB,yBAAyB,SAAS,MAAM;EAC5C,CAAC;EACD,SAAS,GAAG,OAAO;GACf,MAAM,YAAY;GAClB,OAAO,cAAc,cAAc,kBAAkB,QAC9C,cAAc,kBAAkB,aAC/B,GAAG,QAAQ,UAAU,uBAAuB,KAAK,CAAC,CAAC,UAAU;EACzE;EACA,kBAAkB,KAAK;CAC3B,EAAA,CAAG,sBAAsB,QAAQ,oBAAoB,oBAAoB,CAAC,EAAE;CAC5E,IAAM,gBAAgB,OAAO,OAAO,SAAU,UAAU,SAAS;EAC7D,MAAM,UAAU,GAAG,MAAM,QAAA,CAAS,CAAC,CAAC,MAAM,WAAW,SAAS,KAAK,OAAO,GAAG,CAAC;EAC9E,OAAO,EAAE,UAAU;GAAE,OAAO,QAAQ;EAAG,EAAE;CAC7C,CAAC;CACD,IAAM,eAAN,MAAmB;EACf,cAAc;GACV,KAAK,eAAe;EACxB;EACA,SAAS;GACL,IAAI,CAAC,KAAK,cAAc;IACpB,KAAK,eAAe;IACpB,IAAI,KAAK,UAAU;KACf,KAAK,SAAS,KAAK,KAAA,CAAS;KAC5B,KAAK,QAAQ;IACjB;GACJ;EACJ;EACA,IAAI,0BAA0B;GAC1B,OAAO,KAAK;EAChB;EACA,IAAI,0BAA0B;GAC1B,IAAI,KAAK,cACL,OAAO;GAEX,IAAI,CAAC,KAAK,UACN,KAAK,WAAW,IAAI,SAAS,QAAQ;GAEzC,OAAO,KAAK,SAAS;EACzB;EACA,UAAU;GACN,IAAI,KAAK,UAAU;IACf,KAAK,SAAS,QAAQ;IACtB,KAAK,WAAW,KAAA;GACpB;EACJ;CACJ;CACA,IAAM,0BAAN,MAA8B;EAC1B,IAAI,QAAQ;GACR,IAAI,CAAC,KAAK,QAGN,KAAK,SAAS,IAAI,aAAa;GAEnC,OAAO,KAAK;EAChB;EACA,SAAS;GACL,IAAI,CAAC,KAAK,QAIN,KAAK,SAAS,kBAAkB;QAGhC,KAAK,OAAO,OAAO;EAE3B;EACA,UAAU;GACN,IAAI,CAAC,KAAK,QAEN,KAAK,SAAS,kBAAkB;QAE/B,IAAI,KAAK,kBAAkB,cAE5B,KAAK,OAAO,QAAQ;EAE5B;CACJ;CACA,QAAQ,0BAA0B;;;;;CC1FlC,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;CAC5D,QAAQ,8BAA8B,QAAQ,4BAA4B,KAAK;CAC/E,IAAM,iBAAA,qBAAA;CACN,IAAI;CACJ,CAAC,SAAU,mBAAmB;EAC1B,kBAAkB,WAAW;EAC7B,kBAAkB,YAAY;CAClC,EAAA,CAAG,sBAAsB,oBAAoB,CAAC,EAAE;CAChD,IAAM,4BAAN,MAAgC;EAC5B,cAAc;GACV,KAAK,0BAAU,IAAI,IAAI;EAC3B;EACA,mBAAmB,SAAS;GACxB,IAAI,QAAQ,OAAO,MACf;GAEJ,MAAM,SAAS,IAAI,kBAAkB,CAAC;GACtC,MAAM,OAAO,IAAI,WAAW,QAAQ,GAAG,CAAC;GACxC,KAAK,KAAK,kBAAkB;GAC5B,KAAK,QAAQ,IAAI,QAAQ,IAAI,MAAM;GACnC,QAAQ,oBAAoB;EAChC;EACA,MAAM,iBAAiB,OAAO,IAAI;GAC9B,MAAM,SAAS,KAAK,QAAQ,IAAI,EAAE;GAClC,IAAI,WAAW,KAAA,GACX;GAEJ,MAAM,OAAO,IAAI,WAAW,QAAQ,GAAG,CAAC;GACxC,QAAQ,MAAM,MAAM,GAAG,kBAAkB,SAAS;EACtD;EACA,QAAQ,IAAI;GACR,KAAK,QAAQ,OAAO,EAAE;EAC1B;EACA,UAAU;GACN,KAAK,QAAQ,MAAM;EACvB;CACJ;CACA,QAAQ,4BAA4B;CACpC,IAAM,qCAAN,MAAyC;EACrC,YAAY,QAAQ;GAChB,KAAK,OAAO,IAAI,WAAW,QAAQ,GAAG,CAAC;EAC3C;EACA,IAAI,0BAA0B;GAC1B,OAAO,QAAQ,KAAK,KAAK,MAAM,CAAC,MAAM,kBAAkB;EAC5D;EACA,IAAI,0BAA0B;GAC1B,MAAM,IAAI,MAAM,yEAAyE;EAC7F;CACJ;CACA,IAAM,2CAAN,MAA+C;EAC3C,YAAY,QAAQ;GAChB,KAAK,QAAQ,IAAI,mCAAmC,MAAM;EAC9D;EACA,SAAS,CACT;EACA,UAAU,CACV;CACJ;CACA,IAAM,8BAAN,MAAkC;EAC9B,cAAc;GACV,KAAK,OAAO;EAChB;EACA,8BAA8B,SAAS;GACnC,MAAM,SAAS,QAAQ;GACvB,IAAI,WAAW,KAAA,GACX,OAAO,IAAI,eAAe,wBAAwB;GAEtD,OAAO,IAAI,yCAAyC,MAAM;EAC9D;CACJ;CACA,QAAQ,8BAA8B;;;;;CCtEtC,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;CAC5D,QAAQ,YAAY,KAAK;CACzB,IAAM,QAAA,YAAA;CACN,IAAM,YAAN,MAAgB;EACZ,YAAY,WAAW,GAAG;GACtB,IAAI,YAAY,GACZ,MAAM,IAAI,MAAM,iCAAiC;GAErD,KAAK,YAAY;GACjB,KAAK,UAAU;GACf,KAAK,WAAW,CAAC;EACrB;EACA,KAAK,OAAO;GACR,OAAO,IAAI,SAAS,SAAS,WAAW;IACpC,KAAK,SAAS,KAAK;KAAE;KAAO;KAAS;IAAO,CAAC;IAC7C,KAAK,QAAQ;GACjB,CAAC;EACL;EACA,IAAI,SAAS;GACT,OAAO,KAAK;EAChB;EACA,UAAU;GACN,IAAI,KAAK,SAAS,WAAW,KAAK,KAAK,YAAY,KAAK,WACpD;GAEJ,CAAC,GAAG,MAAM,QAAA,CAAS,CAAC,CAAC,MAAM,mBAAmB,KAAK,UAAU,CAAC;EAClE;EACA,YAAY;GACR,IAAI,KAAK,SAAS,WAAW,KAAK,KAAK,YAAY,KAAK,WACpD;GAEJ,MAAM,OAAO,KAAK,SAAS,MAAM;GACjC,KAAK;GACL,IAAI,KAAK,UAAU,KAAK,WACpB,MAAM,IAAI,MAAM,uBAAuB;GAE3C,IAAI;IACA,MAAM,SAAS,KAAK,MAAM;IAC1B,IAAI,kBAAkB,SAClB,OAAO,MAAM,UAAU;KACnB,KAAK;KACL,KAAK,QAAQ,KAAK;KAClB,KAAK,QAAQ;IACjB,IAAI,QAAQ;KACR,KAAK;KACL,KAAK,OAAO,GAAG;KACf,KAAK,QAAQ;IACjB,CAAC;SAEA;KACD,KAAK;KACL,KAAK,QAAQ,MAAM;KACnB,KAAK,QAAQ;IACjB;GACJ,SACO,KAAK;IACR,KAAK;IACL,KAAK,OAAO,GAAG;IACf,KAAK,QAAQ;GACjB;EACJ;CACJ;CACA,QAAQ,YAAY;;;;;CC9DpB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;CAC5D,QAAQ,8BAA8B,QAAQ,wBAAwB,QAAQ,gBAAgB,KAAK;CACnG,IAAM,QAAA,YAAA;CACN,IAAM,KAAA,WAAA;CACN,IAAM,WAAA,eAAA;CACN,IAAM,cAAA,kBAAA;CACN,IAAI;CACJ,CAAC,SAAU,eAAe;EACtB,SAAS,GAAG,OAAO;GACf,IAAI,YAAY;GAChB,OAAO,aAAa,GAAG,KAAK,UAAU,MAAM,KAAK,GAAG,KAAK,UAAU,OAAO,KACtE,GAAG,KAAK,UAAU,OAAO,KAAK,GAAG,KAAK,UAAU,OAAO,KAAK,GAAG,KAAK,UAAU,gBAAgB;EACtG;EACA,cAAc,KAAK;CACvB,EAAA,CAAG,kBAAkB,QAAQ,gBAAgB,gBAAgB,CAAC,EAAE;CAChE,IAAM,wBAAN,MAA4B;EACxB,cAAc;GACV,KAAK,eAAe,IAAI,SAAS,QAAQ;GACzC,KAAK,eAAe,IAAI,SAAS,QAAQ;GACzC,KAAK,wBAAwB,IAAI,SAAS,QAAQ;EACtD;EACA,UAAU;GACN,KAAK,aAAa,QAAQ;GAC1B,KAAK,aAAa,QAAQ;EAC9B;EACA,IAAI,UAAU;GACV,OAAO,KAAK,aAAa;EAC7B;EACA,UAAU,OAAO;GACb,KAAK,aAAa,KAAK,KAAK,QAAQ,KAAK,CAAC;EAC9C;EACA,IAAI,UAAU;GACV,OAAO,KAAK,aAAa;EAC7B;EACA,YAAY;GACR,KAAK,aAAa,KAAK,KAAA,CAAS;EACpC;EACA,IAAI,mBAAmB;GACnB,OAAO,KAAK,sBAAsB;EACtC;EACA,mBAAmB,MAAM;GACrB,KAAK,sBAAsB,KAAK,IAAI;EACxC;EACA,QAAQ,OAAO;GACX,IAAI,iBAAiB,OACjB,OAAO;QAGP,uBAAO,IAAI,MAAM,kCAAkC,GAAG,OAAO,MAAM,OAAO,IAAI,MAAM,UAAU,WAAW;EAEjH;CACJ;CACA,QAAQ,wBAAwB;CAChC,IAAI;CACJ,CAAC,SAAU,8BAA8B;EACrC,SAAS,YAAY,SAAS;GAC1B,IAAI;GAEJ,IAAI;GACJ,MAAM,kCAAkB,IAAI,IAAI;GAChC,IAAI;GACJ,MAAM,sCAAsB,IAAI,IAAI;GACpC,IAAI,YAAY,KAAA,KAAa,OAAO,YAAY,UAC5C,UAAU,WAAW;QAEpB;IACD,UAAU,QAAQ,WAAW;IAC7B,IAAI,QAAQ,mBAAmB,KAAA,GAAW;KACtC,iBAAiB,QAAQ;KACzB,gBAAgB,IAAI,eAAe,MAAM,cAAc;IAC3D;IACA,IAAI,QAAQ,oBAAoB,KAAA,GAC5B,KAAK,MAAM,WAAW,QAAQ,iBAC1B,gBAAgB,IAAI,QAAQ,MAAM,OAAO;IAGjD,IAAI,QAAQ,uBAAuB,KAAA,GAAW;KAC1C,qBAAqB,QAAQ;KAC7B,oBAAoB,IAAI,mBAAmB,MAAM,kBAAkB;IACvE;IACA,IAAI,QAAQ,wBAAwB,KAAA,GAChC,KAAK,MAAM,WAAW,QAAQ,qBAC1B,oBAAoB,IAAI,QAAQ,MAAM,OAAO;GAGzD;GACA,IAAI,uBAAuB,KAAA,GAAW;IAClC,sBAAsB,GAAG,MAAM,QAAA,CAAS,CAAC,CAAC,gBAAgB;IAC1D,oBAAoB,IAAI,mBAAmB,MAAM,kBAAkB;GACvE;GACA,OAAO;IAAE;IAAS;IAAgB;IAAiB;IAAoB;GAAoB;EAC/F;EACA,6BAA6B,cAAc;CAC/C,EAAA,CAAG,iCAAiC,+BAA+B,CAAC,EAAE;CACtE,IAAM,8BAAN,cAA0C,sBAAsB;EAC5D,YAAY,UAAU,SAAS;GAC3B,MAAM;GACN,KAAK,WAAW;GAChB,KAAK,UAAU,6BAA6B,YAAY,OAAO;GAC/D,KAAK,UAAU,GAAG,MAAM,QAAA,CAAS,CAAC,CAAC,cAAc,OAAO,KAAK,QAAQ,OAAO;GAC5E,KAAK,yBAAyB;GAC9B,KAAK,oBAAoB;GACzB,KAAK,eAAe;GACpB,KAAK,gBAAgB,IAAI,YAAY,UAAU,CAAC;EACpD;EACA,IAAI,sBAAsB,SAAS;GAC/B,KAAK,yBAAyB;EAClC;EACA,IAAI,wBAAwB;GACxB,OAAO,KAAK;EAChB;EACA,OAAO,UAAU;GACb,KAAK,oBAAoB;GACzB,KAAK,eAAe;GACpB,KAAK,sBAAsB,KAAA;GAC3B,KAAK,WAAW;GAChB,MAAM,SAAS,KAAK,SAAS,QAAQ,SAAS;IAC1C,KAAK,OAAO,IAAI;GACpB,CAAC;GACD,KAAK,SAAS,SAAS,UAAU,KAAK,UAAU,KAAK,CAAC;GACtD,KAAK,SAAS,cAAc,KAAK,UAAU,CAAC;GAC5C,OAAO;EACX;EACA,OAAO,MAAM;GACT,IAAI;IACA,KAAK,OAAO,OAAO,IAAI;IACvB,OAAO,MAAM;KACT,IAAI,KAAK,sBAAsB,IAAI;MAC/B,MAAM,UAAU,KAAK,OAAO,eAAe,IAAI;MAC/C,IAAI,CAAC,SACD;MAEJ,MAAM,gBAAgB,QAAQ,IAAI,gBAAgB;MAClD,IAAI,CAAC,eAAe;OAChB,KAAK,0BAAU,IAAI,MAAM,mDAAmD,KAAK,UAAU,OAAO,YAAY,OAAO,CAAC,GAAG,CAAC;OAC1H;MACJ;MACA,MAAM,SAAS,SAAS,aAAa;MACrC,IAAI,MAAM,MAAM,GAAG;OACf,KAAK,0BAAU,IAAI,MAAM,8CAA8C,eAAe,CAAC;OACvF;MACJ;MACA,KAAK,oBAAoB;KAC7B;KACA,MAAM,OAAO,KAAK,OAAO,YAAY,KAAK,iBAAiB;KAC3D,IAAI,SAAS,KAAA,GAAW;;MAEpB,KAAK,uBAAuB;MAC5B;KACJ;KACA,KAAK,yBAAyB;KAC9B,KAAK,oBAAoB;KAKzB,KAAK,cAAc,KAAK,YAAY;MAChC,MAAM,QAAQ,KAAK,QAAQ,mBAAmB,KAAA,IACxC,MAAM,KAAK,QAAQ,eAAe,OAAO,IAAI,IAC7C;MACN,MAAM,UAAU,MAAM,KAAK,QAAQ,mBAAmB,OAAO,OAAO,KAAK,OAAO;MAChF,KAAK,SAAS,OAAO;KACzB,CAAC,CAAC,CAAC,OAAO,UAAU;MAChB,KAAK,UAAU,KAAK;KACxB,CAAC;IACL;GACJ,SACO,OAAO;IACV,KAAK,UAAU,KAAK;GACxB;EACJ;EACA,2BAA2B;GACvB,IAAI,KAAK,qBAAqB;IAC1B,KAAK,oBAAoB,QAAQ;IACjC,KAAK,sBAAsB,KAAA;GAC/B;EACJ;EACA,yBAAyB;GACrB,KAAK,yBAAyB;GAC9B,IAAI,KAAK,0BAA0B,GAC/B;GAEJ,KAAK,uBAAuB,GAAG,MAAM,QAAA,CAAS,CAAC,CAAC,MAAM,YAAY,OAAO,YAAY;IACjF,KAAK,sBAAsB,KAAA;IAC3B,IAAI,UAAU,KAAK,cAAc;KAC7B,KAAK,mBAAmB;MAAE,cAAc;MAAO,aAAa;KAAQ,CAAC;KACrE,KAAK,uBAAuB;IAChC;GACJ,GAAG,KAAK,wBAAwB,KAAK,cAAc,KAAK,sBAAsB;EAClF;CACJ;CACA,QAAQ,8BAA8B;;;;;CC/LtC,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;CAC5D,QAAQ,+BAA+B,QAAQ,wBAAwB,QAAQ,gBAAgB,KAAK;CACpG,IAAM,QAAA,YAAA;CACN,IAAM,KAAA,WAAA;CACN,IAAM,cAAA,kBAAA;CACN,IAAM,WAAA,eAAA;CACN,IAAM,gBAAgB;CACtB,IAAM,OAAO;CACb,IAAI;CACJ,CAAC,SAAU,eAAe;EACtB,SAAS,GAAG,OAAO;GACf,IAAI,YAAY;GAChB,OAAO,aAAa,GAAG,KAAK,UAAU,OAAO,KAAK,GAAG,KAAK,UAAU,OAAO,KACvE,GAAG,KAAK,UAAU,OAAO,KAAK,GAAG,KAAK,UAAU,KAAK;EAC7D;EACA,cAAc,KAAK;CACvB,EAAA,CAAG,kBAAkB,QAAQ,gBAAgB,gBAAgB,CAAC,EAAE;CAChE,IAAM,wBAAN,MAA4B;EACxB,cAAc;GACV,KAAK,eAAe,IAAI,SAAS,QAAQ;GACzC,KAAK,eAAe,IAAI,SAAS,QAAQ;EAC7C;EACA,UAAU;GACN,KAAK,aAAa,QAAQ;GAC1B,KAAK,aAAa,QAAQ;EAC9B;EACA,IAAI,UAAU;GACV,OAAO,KAAK,aAAa;EAC7B;EACA,UAAU,OAAO,SAAS,OAAO;GAC7B,KAAK,aAAa,KAAK;IAAC,KAAK,QAAQ,KAAK;IAAG;IAAS;GAAK,CAAC;EAChE;EACA,IAAI,UAAU;GACV,OAAO,KAAK,aAAa;EAC7B;EACA,YAAY;GACR,KAAK,aAAa,KAAK,KAAA,CAAS;EACpC;EACA,QAAQ,OAAO;GACX,IAAI,iBAAiB,OACjB,OAAO;QAGP,uBAAO,IAAI,MAAM,kCAAkC,GAAG,OAAO,MAAM,OAAO,IAAI,MAAM,UAAU,WAAW;EAEjH;CACJ;CACA,QAAQ,wBAAwB;CAChC,IAAI;CACJ,CAAC,SAAU,8BAA8B;EACrC,SAAS,YAAY,SAAS;GAC1B,IAAI,YAAY,KAAA,KAAa,OAAO,YAAY,UAC5C,OAAO;IAAE,SAAS,WAAW;IAAS,qBAAqB,GAAG,MAAM,QAAA,CAAS,CAAC,CAAC,gBAAgB;GAAQ;QAGvG,OAAO;IAAE,SAAS,QAAQ,WAAW;IAAS,gBAAgB,QAAQ;IAAgB,oBAAoB,QAAQ,uBAAuB,GAAG,MAAM,QAAA,CAAS,CAAC,CAAC,gBAAgB;GAAQ;EAE7L;EACA,6BAA6B,cAAc;CAC/C,EAAA,CAAG,iCAAiC,+BAA+B,CAAC,EAAE;CACtE,IAAM,+BAAN,cAA2C,sBAAsB;EAC7D,YAAY,UAAU,SAAS;GAC3B,MAAM;GACN,KAAK,WAAW;GAChB,KAAK,UAAU,6BAA6B,YAAY,OAAO;GAC/D,KAAK,aAAa;GAClB,KAAK,iBAAiB,IAAI,YAAY,UAAU,CAAC;GACjD,KAAK,SAAS,SAAS,UAAU,KAAK,UAAU,KAAK,CAAC;GACtD,KAAK,SAAS,cAAc,KAAK,UAAU,CAAC;EAChD;EACA,MAAM,MAAM,KAAK;GACb,OAAO,KAAK,eAAe,KAAK,YAAY;IASxC,OARgB,KAAK,QAAQ,mBAAmB,OAAO,KAAK,KAAK,OAAO,CAAC,CAAC,MAAM,WAAW;KACvF,IAAI,KAAK,QAAQ,mBAAmB,KAAA,GAChC,OAAO,KAAK,QAAQ,eAAe,OAAO,MAAM;UAGhD,OAAO;IAEf,CACa,CAAC,CAAC,MAAM,WAAW;KAC5B,MAAM,UAAU,CAAC;KACjB,QAAQ,KAAK,eAAe,OAAO,WAAW,SAAS,GAAG,IAAI;KAC9D,QAAQ,KAAK,IAAI;KACjB,OAAO,KAAK,QAAQ,KAAK,SAAS,MAAM;IAC5C,IAAI,UAAU;KACV,KAAK,UAAU,KAAK;KACpB,MAAM;IACV,CAAC;GACL,CAAC;EACL;EACA,MAAM,QAAQ,KAAK,SAAS,MAAM;GAC9B,IAAI;IACA,MAAM,KAAK,SAAS,MAAM,QAAQ,KAAK,EAAE,GAAG,OAAO;IACnD,OAAO,KAAK,SAAS,MAAM,IAAI;GACnC,SACO,OAAO;IACV,KAAK,YAAY,OAAO,GAAG;IAC3B,OAAO,QAAQ,OAAO,KAAK;GAC/B;EACJ;EACA,YAAY,OAAO,KAAK;GACpB,KAAK;GACL,KAAK,UAAU,OAAO,KAAK,KAAK,UAAU;EAC9C;EACA,MAAM;GACF,KAAK,SAAS,IAAI;EACtB;CACJ;CACA,QAAQ,+BAA+B;;;;;CC7GvC,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;CAC5D,QAAQ,wBAAwB,KAAK;CACrC,IAAM,KAAK;CACX,IAAM,KAAK;CACX,IAAM,OAAO;CACb,IAAM,wBAAN,MAA4B;EACxB,YAAY,WAAW,SAAS;GAC5B,KAAK,YAAY;GACjB,KAAK,UAAU,CAAC;GAChB,KAAK,eAAe;EACxB;EACA,IAAI,WAAW;GACX,OAAO,KAAK;EAChB;EACA,OAAO,OAAO;GACV,MAAM,WAAW,OAAO,UAAU,WAAW,KAAK,WAAW,OAAO,KAAK,SAAS,IAAI;GACtF,KAAK,QAAQ,KAAK,QAAQ;GAC1B,KAAK,gBAAgB,SAAS;EAClC;EACA,eAAe,gBAAgB,OAAO;GAClC,IAAI,KAAK,QAAQ,WAAW,GACxB;GAEJ,IAAI,QAAQ;GACZ,IAAI,aAAa;GACjB,IAAI,SAAS;GACb,IAAI,iBAAiB;GACrB,KAAK,OAAO,aAAa,KAAK,QAAQ,QAAQ;IAC1C,MAAM,QAAQ,KAAK,QAAQ;IAC3B,SAAS;IACT,QAAQ,OAAO,SAAS,MAAM,QAAQ;KAElC,QADc,MAAM,SACpB;MACI,KAAK;OACD,QAAQ,OAAR;QACI,KAAK;SACD,QAAQ;SACR;QACJ,KAAK;SACD,QAAQ;SACR;QACJ,SACI,QAAQ;OAChB;OACA;MACJ,KAAK;OACD,QAAQ,OAAR;QACI,KAAK;SACD,QAAQ;SACR;QACJ,KAAK;SACD,QAAQ;SACR;SACA,MAAM;QACV,SACI,QAAQ;OAChB;OACA;MACJ,SACI,QAAQ;KAChB;KACA;IACJ;IACA,kBAAkB,MAAM;IACxB;GACJ;GACA,IAAI,UAAU,GACV;GAIJ,MAAM,SAAS,KAAK,MAAM,iBAAiB,MAAM;GACjD,MAAM,yBAAS,IAAI,IAAI;GACvB,MAAM,UAAU,KAAK,SAAS,QAAQ,OAAO,CAAC,CAAC,MAAM,IAAI;GACzD,IAAI,QAAQ,SAAS,GACjB,OAAO;GAEX,KAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,SAAS,GAAG,KAAK;IACzC,MAAM,SAAS,QAAQ;IACvB,MAAM,QAAQ,OAAO,QAAQ,GAAG;IAChC,IAAI,UAAU,IACV,MAAM,IAAI,MAAM,yDAAyD,QAAQ;IAErF,MAAM,MAAM,OAAO,OAAO,GAAG,KAAK;IAClC,MAAM,QAAQ,OAAO,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK;IAC5C,OAAO,IAAI,gBAAgB,IAAI,YAAY,IAAI,KAAK,KAAK;GAC7D;GACA,OAAO;EACX;EACA,YAAY,QAAQ;GAChB,IAAI,KAAK,eAAe,QACpB;GAEJ,OAAO,KAAK,MAAM,MAAM;EAC5B;EACA,IAAI,gBAAgB;GAChB,OAAO,KAAK;EAChB;EACA,MAAM,WAAW;GACb,IAAI,cAAc,GACd,OAAO,KAAK,YAAY;GAE5B,IAAI,YAAY,KAAK,cACjB,MAAM,IAAI,MAAM,4BAA4B;GAEhD,IAAI,KAAK,QAAQ,EAAE,CAAC,eAAe,WAAW;IAE1C,MAAM,QAAQ,KAAK,QAAQ;IAC3B,KAAK,QAAQ,MAAM;IACnB,KAAK,gBAAgB;IACrB,OAAO,KAAK,SAAS,KAAK;GAC9B;GACA,IAAI,KAAK,QAAQ,EAAE,CAAC,aAAa,WAAW;IAExC,MAAM,QAAQ,KAAK,QAAQ;IAC3B,MAAM,SAAS,KAAK,SAAS,OAAO,SAAS;IAC7C,KAAK,QAAQ,KAAK,MAAM,MAAM,SAAS;IACvC,KAAK,gBAAgB;IACrB,OAAO;GACX;GACA,MAAM,SAAS,KAAK,YAAY,SAAS;GACzC,IAAI,eAAe;GACnB,IAAI,aAAa;GACjB,OAAO,YAAY,GAAG;IAClB,MAAM,QAAQ,KAAK,QAAQ;IAC3B,IAAI,MAAM,aAAa,WAAW;KAE9B,MAAM,YAAY,MAAM,MAAM,GAAG,SAAS;KAC1C,OAAO,IAAI,WAAW,YAAY;KAClC,gBAAgB;KAChB,KAAK,QAAQ,cAAc,MAAM,MAAM,SAAS;KAChD,KAAK,gBAAgB;KACrB,aAAa;IACjB,OACK;KAED,OAAO,IAAI,OAAO,YAAY;KAC9B,gBAAgB,MAAM;KACtB,KAAK,QAAQ,MAAM;KACnB,KAAK,gBAAgB,MAAM;KAC3B,aAAa,MAAM;IACvB;GACJ;GACA,OAAO;EACX;CACJ;CACA,QAAQ,wBAAwB;;;;;CClJhC,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;CAC5D,QAAQ,0BAA0B,QAAQ,oBAAoB,QAAQ,kBAAkB,QAAQ,uBAAuB,QAAQ,6BAA6B,QAAQ,+BAA+B,QAAQ,sCAAsC,QAAQ,iCAAiC,QAAQ,qBAAqB,QAAQ,kBAAkB,QAAQ,mBAAmB,QAAQ,uBAAuB,QAAQ,uBAAuB,QAAQ,cAAc,QAAQ,cAAc,QAAQ,QAAQ,QAAQ,aAAa,QAAQ,eAAe,QAAQ,gBAAgB,KAAK;CAC/iB,IAAM,QAAA,YAAA;CACN,IAAM,KAAA,WAAA;CACN,IAAM,aAAA,iBAAA;CACN,IAAM,cAAA,kBAAA;CACN,IAAM,WAAA,eAAA;CACN,IAAM,iBAAA,qBAAA;CACN,IAAI;CACJ,CAAC,SAAU,oBAAoB;EAC3B,mBAAmB,OAAO,IAAI,WAAW,iBAAiB,iBAAiB;CAC/E,EAAA,CAAG,uBAAuB,qBAAqB,CAAC,EAAE;CAClD,IAAI;CACJ,CAAC,SAAU,eAAe;EACtB,SAAS,GAAG,OAAO;GACf,OAAO,OAAO,UAAU,YAAY,OAAO,UAAU;EACzD;EACA,cAAc,KAAK;CACvB,EAAA,CAAG,kBAAkB,QAAQ,gBAAgB,gBAAgB,CAAC,EAAE;CAChE,IAAI;CACJ,CAAC,SAAU,sBAAsB;EAC7B,qBAAqB,OAAO,IAAI,WAAW,iBAAiB,YAAY;CAC5E,EAAA,CAAG,yBAAyB,uBAAuB,CAAC,EAAE;CACtD,IAAM,eAAN,MAAmB;EACf,cAAc,CACd;CACJ;CACA,QAAQ,eAAe;CACvB,IAAI;CACJ,CAAC,SAAU,oBAAoB;EAC3B,SAAS,GAAG,OAAO;GACf,OAAO,GAAG,KAAK,KAAK;EACxB;EACA,mBAAmB,KAAK;CAC5B,EAAA,CAAG,uBAAuB,qBAAqB,CAAC,EAAE;CAClD,QAAQ,aAAa,OAAO,OAAO;EAC/B,aAAa,CAAE;EACf,YAAY,CAAE;EACd,YAAY,CAAE;EACd,WAAW,CAAE;CACjB,CAAC;CACD,IAAI;CACJ,CAAC,SAAU,OAAO;EACd,MAAM,MAAM,SAAS,KAAK;EAC1B,MAAM,MAAM,cAAc,KAAK;EAC/B,MAAM,MAAM,aAAa,KAAK;EAC9B,MAAM,MAAM,aAAa,KAAK;CAClC,EAAA,CAAG,UAAU,QAAQ,QAAQ,QAAQ,CAAC,EAAE;CACxC,IAAI;CACJ,CAAC,SAAU,aAAa;;;;EAIpB,YAAY,MAAM;;;;EAIlB,YAAY,WAAW;;;;EAIvB,YAAY,UAAU;;;;EAItB,YAAY,UAAU;CAC1B,EAAA,CAAG,gBAAgB,QAAQ,cAAc,cAAc,CAAC,EAAE;CAC1D,CAAC,SAAU,OAAO;EACd,SAAS,WAAW,OAAO;GACvB,IAAI,CAAC,GAAG,OAAO,KAAK,GAChB,OAAO,MAAM;GAEjB,QAAQ,MAAM,YAAY;GAC1B,QAAQ,OAAR;IACI,KAAK,OACD,OAAO,MAAM;IACjB,KAAK,YACD,OAAO,MAAM;IACjB,KAAK,WACD,OAAO,MAAM;IACjB,KAAK,WACD,OAAO,MAAM;IACjB,SACI,OAAO,MAAM;GACrB;EACJ;EACA,MAAM,aAAa;EACnB,SAAS,SAAS,OAAO;GACrB,QAAQ,OAAR;IACI,KAAK,MAAM,KACP,OAAO;IACX,KAAK,MAAM,UACP,OAAO;IACX,KAAK,MAAM,SACP,OAAO;IACX,KAAK,MAAM,SACP,OAAO;IACX,SACI,OAAO;GACf;EACJ;EACA,MAAM,WAAW;CACrB,EAAA,CAAG,UAAU,QAAQ,QAAQ,QAAQ,CAAC,EAAE;CACxC,IAAI;CACJ,CAAC,SAAU,aAAa;EACpB,YAAY,UAAU;EACtB,YAAY,UAAU;CAC1B,EAAA,CAAG,gBAAgB,QAAQ,cAAc,cAAc,CAAC,EAAE;CAC1D,CAAC,SAAU,aAAa;EACpB,SAAS,WAAW,OAAO;GACvB,IAAI,CAAC,GAAG,OAAO,KAAK,GAChB,OAAO,YAAY;GAEvB,QAAQ,MAAM,YAAY;GAC1B,IAAI,UAAU,QACV,OAAO,YAAY;QAGnB,OAAO,YAAY;EAE3B;EACA,YAAY,aAAa;CAC7B,EAAA,CAAG,gBAAgB,QAAQ,cAAc,cAAc,CAAC,EAAE;CAC1D,IAAI;CACJ,CAAC,SAAU,sBAAsB;EAC7B,qBAAqB,OAAO,IAAI,WAAW,iBAAiB,YAAY;CAC5E,EAAA,CAAG,yBAAyB,QAAQ,uBAAuB,uBAAuB,CAAC,EAAE;CACrF,IAAI;CACJ,CAAC,SAAU,sBAAsB;EAC7B,qBAAqB,OAAO,IAAI,WAAW,iBAAiB,YAAY;CAC5E,EAAA,CAAG,yBAAyB,QAAQ,uBAAuB,uBAAuB,CAAC,EAAE;CACrF,IAAI;CACJ,CAAC,SAAU,kBAAkB;;;;EAIzB,iBAAiB,iBAAiB,YAAY,KAAK;;;;EAInD,iBAAiB,iBAAiB,cAAc,KAAK;;;;EAIrD,iBAAiB,iBAAiB,sBAAsB,KAAK;CACjE,EAAA,CAAG,qBAAqB,QAAQ,mBAAmB,mBAAmB,CAAC,EAAE;CACzE,IAAM,kBAAN,MAAM,wBAAwB,MAAM;EAChC,YAAY,MAAM,SAAS;GACvB,MAAM,OAAO;GACb,KAAK,OAAO;GACZ,OAAO,eAAe,MAAM,gBAAgB,SAAS;EACzD;CACJ;CACA,QAAQ,kBAAkB;CAC1B,IAAI;CACJ,CAAC,SAAU,oBAAoB;EAC3B,SAAS,GAAG,OAAO;GACf,MAAM,YAAY;GAClB,OAAO,aAAa,GAAG,KAAK,UAAU,kBAAkB;EAC5D;EACA,mBAAmB,KAAK;CAC5B,EAAA,CAAG,uBAAuB,QAAQ,qBAAqB,qBAAqB,CAAC,EAAE;CAC/E,IAAI;CACJ,CAAC,SAAU,gCAAgC;EACvC,SAAS,GAAG,OAAO;GACf,MAAM,YAAY;GAClB,OAAO,cAAc,UAAU,SAAS,KAAA,KAAa,UAAU,SAAS,SAAS,GAAG,KAAK,UAAU,6BAA6B,MAAM,UAAU,YAAY,KAAA,KAAa,GAAG,KAAK,UAAU,OAAO;EACtM;EACA,+BAA+B,KAAK;CACxC,EAAA,CAAG,mCAAmC,QAAQ,iCAAiC,iCAAiC,CAAC,EAAE;CACnH,IAAI;CACJ,CAAC,SAAU,qCAAqC;EAC5C,SAAS,GAAG,OAAO;GACf,MAAM,YAAY;GAClB,OAAO,aAAa,UAAU,SAAS,aAAa,GAAG,KAAK,UAAU,6BAA6B,MAAM,UAAU,YAAY,KAAA,KAAa,GAAG,KAAK,UAAU,OAAO;EACzK;EACA,oCAAoC,KAAK;CAC7C,EAAA,CAAG,wCAAwC,QAAQ,sCAAsC,sCAAsC,CAAC,EAAE;CAClI,IAAI;CACJ,CAAC,SAAU,8BAA8B;EACrC,6BAA6B,UAAU,OAAO,OAAO,EACjD,8BAA8B,GAAG;GAC7B,OAAO,IAAI,eAAe,wBAAwB;EACtD,EACJ,CAAC;EACD,SAAS,GAAG,OAAO;GACf,OAAO,+BAA+B,GAAG,KAAK,KAAK,oCAAoC,GAAG,KAAK;EACnG;EACA,6BAA6B,KAAK;CACtC,EAAA,CAAG,iCAAiC,QAAQ,+BAA+B,+BAA+B,CAAC,EAAE;CAC7G,IAAI;CACJ,CAAC,SAAU,4BAA4B;EACnC,2BAA2B,UAAU,OAAO,OAAO;GAC/C,iBAAiB,MAAM,IAAI;IACvB,OAAO,KAAK,iBAAiB,mBAAmB,MAAM,EAAE,GAAG,CAAC;GAChE;GACA,QAAQ,GAAG,CAAE;EACjB,CAAC;EACD,SAAS,GAAG,OAAO;GACf,MAAM,YAAY;GAClB,OAAO,aAAa,GAAG,KAAK,UAAU,gBAAgB,KAAK,GAAG,KAAK,UAAU,OAAO;EACxF;EACA,2BAA2B,KAAK;CACpC,EAAA,CAAG,+BAA+B,QAAQ,6BAA6B,6BAA6B,CAAC,EAAE;CACvG,IAAI;CACJ,CAAC,SAAU,sBAAsB;EAC7B,qBAAqB,UAAU,OAAO,OAAO;GACzC,UAAU,6BAA6B;GACvC,QAAQ,2BAA2B;EACvC,CAAC;EACD,SAAS,GAAG,OAAO;GACf,MAAM,YAAY;GAClB,OAAO,aAAa,6BAA6B,GAAG,UAAU,QAAQ,KAAK,2BAA2B,GAAG,UAAU,MAAM;EAC7H;EACA,qBAAqB,KAAK;CAC9B,EAAA,CAAG,yBAAyB,QAAQ,uBAAuB,uBAAuB,CAAC,EAAE;CACrF,IAAI;CACJ,CAAC,SAAU,iBAAiB;EACxB,SAAS,GAAG,OAAO;GACf,MAAM,YAAY;GAClB,OAAO,aAAa,GAAG,KAAK,UAAU,aAAa;EACvD;EACA,gBAAgB,KAAK;CACzB,EAAA,CAAG,oBAAoB,QAAQ,kBAAkB,kBAAkB,CAAC,EAAE;CACtE,IAAI;CACJ,CAAC,SAAU,mBAAmB;EAC1B,SAAS,GAAG,OAAO;GACf,MAAM,YAAY;GAClB,OAAO,cAAc,qBAAqB,GAAG,UAAU,oBAAoB,KAAK,mBAAmB,GAAG,UAAU,kBAAkB,KAAK,gBAAgB,GAAG,UAAU,eAAe;EACvL;EACA,kBAAkB,KAAK;CAC3B,EAAA,CAAG,sBAAsB,QAAQ,oBAAoB,oBAAoB,CAAC,EAAE;CAC5E,IAAI;CACJ,CAAC,SAAU,iBAAiB;EACxB,gBAAgB,gBAAgB,SAAS,KAAK;EAC9C,gBAAgB,gBAAgB,eAAe,KAAK;EACpD,gBAAgB,gBAAgB,YAAY,KAAK;EACjD,gBAAgB,gBAAgB,cAAc,KAAK;CACvD,EAAA,CAAG,oBAAoB,kBAAkB,CAAC,EAAE;CAC5C,SAAS,wBAAwB,eAAe,eAAe,SAAS,SAAS;EAC7E,MAAM,SAAS,YAAY,KAAA,IAAY,UAAU,QAAQ;EACzD,IAAI,iBAAiB;EACrB,IAAI,6BAA6B;EACjC,IAAI,gCAAgC;EACpC,MAAM,UAAU;EAChB,IAAI,qBAAqB,KAAA;EACzB,MAAM,kCAAkB,IAAI,IAAI;EAChC,IAAI,0BAA0B,KAAA;EAC9B,MAAM,uCAAuB,IAAI,IAAI;EACrC,MAAM,mCAAmB,IAAI,IAAI;EACjC,IAAI;EACJ,IAAI,eAAe,IAAI,YAAY,UAAU;EAC7C,IAAI,mCAAmB,IAAI,IAAI;EAC/B,IAAI,wCAAwB,IAAI,IAAI;EACpC,IAAI,gCAAgB,IAAI,IAAI;EAC5B,IAAI,QAAQ,MAAM;EAClB,IAAI,cAAc,YAAY;EAC9B,IAAI;EACJ,IAAI,QAAQ,gBAAgB;EAC5B,MAAM,eAAe,IAAI,SAAS,QAAQ;EAC1C,MAAM,eAAe,IAAI,SAAS,QAAQ;EAC1C,MAAM,+BAA+B,IAAI,SAAS,QAAQ;EAC1D,MAAM,2BAA2B,IAAI,SAAS,QAAQ;EACtD,MAAM,iBAAiB,IAAI,SAAS,QAAQ;EAC5C,MAAM,uBAAwB,WAAW,QAAQ,uBAAwB,QAAQ,uBAAuB,qBAAqB;EAC7H,SAAS,sBAAsB,IAAI;GAC/B,IAAI,OAAO,MACP,MAAM,IAAI,MAAM,0EAA0E;GAE9F,OAAO,SAAS,GAAG,SAAS;EAChC;EACA,SAAS,uBAAuB,IAAI;GAChC,IAAI,OAAO,MACP,OAAO,kBAAkB,EAAE,8BAAA,CAA+B,SAAS;QAGnE,OAAO,SAAS,GAAG,SAAS;EAEpC;EACA,SAAS,6BAA6B;GAClC,OAAO,UAAU,EAAE,2BAAA,CAA4B,SAAS;EAC5D;EACA,SAAS,kBAAkB,OAAO,SAAS;GACvC,IAAI,WAAW,QAAQ,UAAU,OAAO,GACpC,MAAM,IAAI,sBAAsB,QAAQ,EAAE,GAAG,OAAO;QAEnD,IAAI,WAAW,QAAQ,WAAW,OAAO,GAC1C,MAAM,IAAI,uBAAuB,QAAQ,EAAE,GAAG,OAAO;QAGrD,MAAM,IAAI,2BAA2B,GAAG,OAAO;EAEvD;EACA,SAAS,mBAAmB,UAAU,CAEtC;EACA,SAAS,cAAc;GACnB,OAAO,UAAU,gBAAgB;EACrC;EACA,SAAS,WAAW;GAChB,OAAO,UAAU,gBAAgB;EACrC;EACA,SAAS,aAAa;GAClB,OAAO,UAAU,gBAAgB;EACrC;EACA,SAAS,eAAe;GACpB,IAAI,UAAU,gBAAgB,OAAO,UAAU,gBAAgB,WAAW;IACtE,QAAQ,gBAAgB;IACxB,aAAa,KAAK,KAAA,CAAS;GAC/B;EAEJ;EACA,SAAS,iBAAiB,OAAO;GAC7B,aAAa,KAAK;IAAC;IAAO,KAAA;IAAW,KAAA;GAAS,CAAC;EACnD;EACA,SAAS,kBAAkB,MAAM;GAC7B,aAAa,KAAK,IAAI;EAC1B;EACA,cAAc,QAAQ,YAAY;EAClC,cAAc,QAAQ,gBAAgB;EACtC,cAAc,QAAQ,YAAY;EAClC,cAAc,QAAQ,iBAAiB;EACvC,SAAS,sBAAsB;GAC3B,IAAI,SAAS,aAAa,SAAS,GAC/B;GAEJ,SAAS,GAAG,MAAM,QAAA,CAAS,CAAC,CAAC,MAAM,mBAAmB;IAClD,QAAQ,KAAA;IACR,oBAAoB;GACxB,CAAC;EACL;EACA,SAAS,cAAc,SAAS;GAC5B,IAAI,WAAW,QAAQ,UAAU,OAAO,GACpC,cAAc,OAAO;QAEpB,IAAI,WAAW,QAAQ,eAAe,OAAO,GAC9C,mBAAmB,OAAO;QAEzB,IAAI,WAAW,QAAQ,WAAW,OAAO,GAC1C,eAAe,OAAO;QAGtB,qBAAqB,OAAO;EAEpC;EACA,SAAS,sBAAsB;GAC3B,IAAI,aAAa,SAAS,GACtB;GAEJ,MAAM,UAAU,aAAa,MAAM;GACnC,IAAI;IACA,MAAM,kBAAkB,SAAS;IACjC,IAAI,gBAAgB,GAAG,eAAe,GAClC,gBAAgB,cAAc,SAAS,aAAa;SAGpD,cAAc,OAAO;GAE7B,UACQ;IACJ,oBAAoB;GACxB;EACJ;EACA,MAAM,YAAY,YAAY;GAC1B,IAAI;IAGA,IAAI,WAAW,QAAQ,eAAe,OAAO,KAAK,QAAQ,WAAW,mBAAmB,KAAK,QAAQ;KACjG,MAAM,WAAW,QAAQ,OAAO;KAChC,MAAM,MAAM,sBAAsB,QAAQ;KAC1C,MAAM,WAAW,aAAa,IAAI,GAAG;KACrC,IAAI,WAAW,QAAQ,UAAU,QAAQ,GAAG;MACxC,MAAM,WAAW,SAAS;MAC1B,MAAM,WAAY,YAAY,SAAS,qBAAsB,SAAS,mBAAmB,UAAU,kBAAkB,IAAI,KAAA;MACzH,IAAI,aAAa,SAAS,UAAU,KAAA,KAAa,SAAS,WAAW,KAAA,IAAY;OAC7E,aAAa,OAAO,GAAG;OACvB,cAAc,OAAO,QAAQ;OAC7B,SAAS,KAAK,SAAS;OACvB,qBAAqB,UAAU,QAAQ,QAAQ,KAAK,IAAI,CAAC;OACzD,cAAc,MAAM,QAAQ,CAAC,CAAC,YAAY,OAAO,MAAM,+CAA+C,CAAC;OACvG;MACJ;KACJ;KACA,MAAM,oBAAoB,cAAc,IAAI,QAAQ;KAEpD,IAAI,sBAAsB,KAAA,GAAW;MACjC,kBAAkB,OAAO;MACzB,0BAA0B,OAAO;MACjC;KACJ,OAII,sBAAsB,IAAI,QAAQ;IAE1C;IACA,kBAAkB,cAAc,OAAO;GAC3C,UACQ;IACJ,oBAAoB;GACxB;EACJ;EACA,SAAS,cAAc,gBAAgB;GACnC,IAAI,WAAW,GAGX;GAEJ,SAAS,MAAM,eAAe,QAAQ,WAAW;IAC7C,MAAM,UAAU;KACZ,SAAS;KACT,IAAI,eAAe;IACvB;IACA,IAAI,yBAAyB,WAAW,eACpC,QAAQ,QAAQ,cAAc,OAAO;SAGrC,QAAQ,SAAS,kBAAkB,KAAA,IAAY,OAAO;IAE1D,qBAAqB,SAAS,QAAQ,SAAS;IAC/C,cAAc,MAAM,OAAO,CAAC,CAAC,YAAY,OAAO,MAAM,0BAA0B,CAAC;GACrF;GACA,SAAS,WAAW,OAAO,QAAQ,WAAW;IAC1C,MAAM,UAAU;KACZ,SAAS;KACT,IAAI,eAAe;KACnB,OAAO,MAAM,OAAO;IACxB;IACA,qBAAqB,SAAS,QAAQ,SAAS;IAC/C,cAAc,MAAM,OAAO,CAAC,CAAC,YAAY,OAAO,MAAM,0BAA0B,CAAC;GACrF;GACA,SAAS,aAAa,QAAQ,QAAQ,WAAW;IAG7C,IAAI,WAAW,KAAA,GACX,SAAS;IAEb,MAAM,UAAU;KACZ,SAAS;KACT,IAAI,eAAe;KACX;IACZ;IACA,qBAAqB,SAAS,QAAQ,SAAS;IAC/C,cAAc,MAAM,OAAO,CAAC,CAAC,YAAY,OAAO,MAAM,0BAA0B,CAAC;GACrF;GACA,qBAAqB,cAAc;GACnC,MAAM,UAAU,gBAAgB,IAAI,eAAe,MAAM;GACzD,IAAI;GACJ,IAAI;GACJ,IAAI,SAAS;IACT,OAAO,QAAQ;IACf,iBAAiB,QAAQ;GAC7B;GACA,MAAM,YAAY,KAAK,IAAI;GAC3B,IAAI,kBAAkB,oBAAoB;IACtC,MAAM,WAAW,eAAe,MAAM,OAAO,KAAK,IAAI,CAAC;IACvD,MAAM,qBAAqB,+BAA+B,GAAG,qBAAqB,QAAQ,IACpF,qBAAqB,SAAS,8BAA8B,QAAQ,IACpE,qBAAqB,SAAS,8BAA8B,cAAc;IAChF,IAAI,eAAe,OAAO,QAAQ,sBAAsB,IAAI,eAAe,EAAE,GACzE,mBAAmB,OAAO;IAE9B,IAAI,eAAe,OAAO,MACtB,cAAc,IAAI,UAAU,kBAAkB;IAElD,IAAI;KACA,IAAI;KACJ,IAAI,gBACA,IAAI,eAAe,WAAW,KAAA,GAAW;MACrC,IAAI,SAAS,KAAA,KAAa,KAAK,mBAAmB,GAAG;OACjD,WAAW,IAAI,WAAW,cAAc,WAAW,WAAW,eAAe,WAAW,eAAe,OAAO,WAAW,KAAK,eAAe,2BAA2B,GAAG,eAAe,QAAQ,SAAS;OAC3M;MACJ;MACA,gBAAgB,eAAe,mBAAmB,KAAK;KAC3D,OACK,IAAI,MAAM,QAAQ,eAAe,MAAM,GAAG;MAC3C,IAAI,SAAS,KAAA,KAAa,KAAK,wBAAwB,WAAW,oBAAoB,QAAQ;OAC1F,WAAW,IAAI,WAAW,cAAc,WAAW,WAAW,eAAe,WAAW,eAAe,OAAO,gEAAgE,GAAG,eAAe,QAAQ,SAAS;OACjN;MACJ;MACA,gBAAgB,eAAe,GAAG,eAAe,QAAQ,mBAAmB,KAAK;KACrF,OACK;MACD,IAAI,SAAS,KAAA,KAAa,KAAK,wBAAwB,WAAW,oBAAoB,YAAY;OAC9F,WAAW,IAAI,WAAW,cAAc,WAAW,WAAW,eAAe,WAAW,eAAe,OAAO,gEAAgE,GAAG,eAAe,QAAQ,SAAS;OACjN;MACJ;MACA,gBAAgB,eAAe,eAAe,QAAQ,mBAAmB,KAAK;KAClF;UAEC,IAAI,oBACL,gBAAgB,mBAAmB,eAAe,QAAQ,eAAe,QAAQ,mBAAmB,KAAK;KAE7G,MAAM,UAAU;KAChB,IAAI,CAAC,eAAe;MAChB,cAAc,OAAO,QAAQ;MAC7B,aAAa,eAAe,eAAe,QAAQ,SAAS;KAChE,OACK,IAAI,QAAQ,MACb,QAAQ,MAAM,kBAAkB;MAC5B,cAAc,OAAO,QAAQ;MAC7B,MAAM,eAAe,eAAe,QAAQ,SAAS;KACzD,IAAG,UAAS;MACR,cAAc,OAAO,QAAQ;MAC7B,IAAI,iBAAiB,WAAW,eAC5B,WAAW,OAAO,eAAe,QAAQ,SAAS;WAEjD,IAAI,SAAS,GAAG,OAAO,MAAM,OAAO,GACrC,WAAW,IAAI,WAAW,cAAc,WAAW,WAAW,eAAe,WAAW,eAAe,OAAO,wBAAwB,MAAM,SAAS,GAAG,eAAe,QAAQ,SAAS;WAGxL,WAAW,IAAI,WAAW,cAAc,WAAW,WAAW,eAAe,WAAW,eAAe,OAAO,oDAAoD,GAAG,eAAe,QAAQ,SAAS;KAE7M,CAAC;UAEA;MACD,cAAc,OAAO,QAAQ;MAC7B,MAAM,eAAe,eAAe,QAAQ,SAAS;KACzD;IACJ,SACO,OAAO;KACV,cAAc,OAAO,QAAQ;KAC7B,IAAI,iBAAiB,WAAW,eAC5B,MAAM,OAAO,eAAe,QAAQ,SAAS;UAE5C,IAAI,SAAS,GAAG,OAAO,MAAM,OAAO,GACrC,WAAW,IAAI,WAAW,cAAc,WAAW,WAAW,eAAe,WAAW,eAAe,OAAO,wBAAwB,MAAM,SAAS,GAAG,eAAe,QAAQ,SAAS;UAGxL,WAAW,IAAI,WAAW,cAAc,WAAW,WAAW,eAAe,WAAW,eAAe,OAAO,oDAAoD,GAAG,eAAe,QAAQ,SAAS;IAE7M;GACJ,OAEI,WAAW,IAAI,WAAW,cAAc,WAAW,WAAW,gBAAgB,oBAAoB,eAAe,QAAQ,GAAG,eAAe,QAAQ,SAAS;EAEpK;EACA,SAAS,eAAe,iBAAiB;GACrC,IAAI,WAAW,GAEX;GAEJ,IAAI,gBAAgB,OAAO,MACvB,IAAI,gBAAgB,OAChB,OAAO,MAAM,qDAAqD,KAAK,UAAU,gBAAgB,OAAO,KAAA,GAAW,CAAC,GAAG;QAGvH,OAAO,MAAM,8EAA8E;QAG9F;IACD,MAAM,MAAM,gBAAgB;IAC5B,MAAM,kBAAkB,iBAAiB,IAAI,GAAG;IAChD,sBAAsB,iBAAiB,eAAe;IACtD,IAAI,oBAAoB,KAAA,GAAW;KAC/B,iBAAiB,OAAO,GAAG;KAC3B,IAAI;MACA,IAAI,gBAAgB,OAAO;OACvB,MAAM,QAAQ,gBAAgB;OAC9B,gBAAgB,OAAO,IAAI,WAAW,cAAc,MAAM,MAAM,MAAM,SAAS,MAAM,IAAI,CAAC;MAC9F,OACK,IAAI,gBAAgB,WAAW,KAAA,GAChC,gBAAgB,QAAQ,gBAAgB,MAAM;WAG9C,MAAM,IAAI,MAAM,sBAAsB;KAE9C,SACO,OAAO;MACV,IAAI,MAAM,SACN,OAAO,MAAM,qBAAqB,gBAAgB,OAAO,yBAAyB,MAAM,SAAS;WAGjG,OAAO,MAAM,qBAAqB,gBAAgB,OAAO,uBAAuB;KAExF;IACJ;GACJ;EACJ;EACA,SAAS,mBAAmB,SAAS;GACjC,IAAI,WAAW,GAEX;GAEJ,IAAI,OAAO,KAAA;GACX,IAAI;GACJ,IAAI,QAAQ,WAAW,mBAAmB,KAAK,QAAQ;IACnD,MAAM,WAAW,QAAQ,OAAO;IAChC,sBAAsB,OAAO,QAAQ;IACrC,0BAA0B,OAAO;IACjC;GACJ,OACK;IACD,MAAM,UAAU,qBAAqB,IAAI,QAAQ,MAAM;IACvD,IAAI,SAAS;KACT,sBAAsB,QAAQ;KAC9B,OAAO,QAAQ;IACnB;GACJ;GACA,IAAI,uBAAuB,yBACvB,IAAI;IACA,0BAA0B,OAAO;IACjC,IAAI,qBACA,IAAI,QAAQ,WAAW,KAAA,GAAW;KAC9B,IAAI,SAAS,KAAA;UACL,KAAK,mBAAmB,KAAK,KAAK,wBAAwB,WAAW,oBAAoB,QACzF,OAAO,MAAM,gBAAgB,QAAQ,OAAO,WAAW,KAAK,eAAe,2BAA2B;KAAA;KAG9G,oBAAoB;IACxB,OACK,IAAI,MAAM,QAAQ,QAAQ,MAAM,GAAG;KAGpC,MAAM,SAAS,QAAQ;KACvB,IAAI,QAAQ,WAAW,qBAAqB,KAAK,UAAU,OAAO,WAAW,KAAK,cAAc,GAAG,OAAO,EAAE,GACxG,oBAAoB;MAAE,OAAO,OAAO;MAAI,OAAO,OAAO;KAAG,CAAC;UAEzD;MACD,IAAI,SAAS,KAAA,GAAW;OACpB,IAAI,KAAK,wBAAwB,WAAW,oBAAoB,QAC5D,OAAO,MAAM,gBAAgB,QAAQ,OAAO,gEAAgE;OAEhH,IAAI,KAAK,mBAAmB,QAAQ,OAAO,QACvC,OAAO,MAAM,gBAAgB,QAAQ,OAAO,WAAW,KAAK,eAAe,uBAAuB,OAAO,OAAO,WAAW;MAEnI;MACA,oBAAoB,GAAG,MAAM;KACjC;IACJ,OACK;KACD,IAAI,SAAS,KAAA,KAAa,KAAK,wBAAwB,WAAW,oBAAoB,YAClF,OAAO,MAAM,gBAAgB,QAAQ,OAAO,gEAAgE;KAEhH,oBAAoB,QAAQ,MAAM;IACtC;SAEC,IAAI,yBACL,wBAAwB,QAAQ,QAAQ,QAAQ,MAAM;GAE9D,SACO,OAAO;IACV,IAAI,MAAM,SACN,OAAO,MAAM,yBAAyB,QAAQ,OAAO,yBAAyB,MAAM,SAAS;SAG7F,OAAO,MAAM,yBAAyB,QAAQ,OAAO,uBAAuB;GAEpF;QAGA,6BAA6B,KAAK,OAAO;EAEjD;EACA,SAAS,qBAAqB,SAAS;GACnC,IAAI,CAAC,SAAS;IACV,OAAO,MAAM,yBAAyB;IACtC;GACJ;GACA,OAAO,MAAM,6EAA6E,KAAK,UAAU,SAAS,MAAM,CAAC,GAAG;GAE5H,MAAM,kBAAkB;GACxB,IAAI,GAAG,OAAO,gBAAgB,EAAE,KAAK,GAAG,OAAO,gBAAgB,EAAE,GAAG;IAChE,MAAM,MAAM,gBAAgB;IAC5B,MAAM,kBAAkB,iBAAiB,IAAI,GAAG;IAChD,IAAI,iBACA,gBAAgB,uBAAO,IAAI,MAAM,mEAAmE,CAAC;GAE7G;EACJ;EACA,SAAS,eAAe,QAAQ;GAC5B,IAAI,WAAW,KAAA,KAAa,WAAW,MACnC;GAEJ,QAAQ,OAAR;IACI,KAAK,MAAM,SACP,OAAO,KAAK,UAAU,QAAQ,MAAM,CAAC;IACzC,KAAK,MAAM,SACP,OAAO,KAAK,UAAU,MAAM;IAChC,SACI;GACR;EACJ;EACA,SAAS,oBAAoB,SAAS;GAClC,IAAI,UAAU,MAAM,OAAO,CAAC,QACxB;GAEJ,IAAI,gBAAgB,YAAY,MAAM;IAClC,IAAI,OAAO,KAAA;IACX,KAAK,UAAU,MAAM,WAAW,UAAU,MAAM,YAAY,QAAQ,QAChE,OAAO,WAAW,eAAe,QAAQ,MAAM,EAAE;IAErD,OAAO,IAAI,oBAAoB,QAAQ,OAAO,MAAM,QAAQ,GAAG,MAAM,IAAI;GAC7E,OAEI,cAAc,gBAAgB,OAAO;EAE7C;EACA,SAAS,yBAAyB,SAAS;GACvC,IAAI,UAAU,MAAM,OAAO,CAAC,QACxB;GAEJ,IAAI,gBAAgB,YAAY,MAAM;IAClC,IAAI,OAAO,KAAA;IACX,IAAI,UAAU,MAAM,WAAW,UAAU,MAAM,SAC3C,IAAI,QAAQ,QACR,OAAO,WAAW,eAAe,QAAQ,MAAM,EAAE;SAGjD,OAAO;IAGf,OAAO,IAAI,yBAAyB,QAAQ,OAAO,KAAK,IAAI;GAChE,OAEI,cAAc,qBAAqB,OAAO;EAElD;EACA,SAAS,qBAAqB,SAAS,QAAQ,WAAW;GACtD,IAAI,UAAU,MAAM,OAAO,CAAC,QACxB;GAEJ,IAAI,gBAAgB,YAAY,MAAM;IAClC,IAAI,OAAO,KAAA;IACX,IAAI,UAAU,MAAM,WAAW,UAAU,MAAM;SACvC,QAAQ,SAAS,QAAQ,MAAM,MAC/B,OAAO,eAAe,eAAe,QAAQ,MAAM,IAAI,EAAE;UAGzD,IAAI,QAAQ,QACR,OAAO,WAAW,eAAe,QAAQ,MAAM,EAAE;UAEhD,IAAI,QAAQ,UAAU,KAAA,GACvB,OAAO;IAAA;IAInB,OAAO,IAAI,qBAAqB,OAAO,MAAM,QAAQ,GAAG,8BAA8B,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI;GAC1H,OAEI,cAAc,iBAAiB,OAAO;EAE9C;EACA,SAAS,qBAAqB,SAAS;GACnC,IAAI,UAAU,MAAM,OAAO,CAAC,QACxB;GAEJ,IAAI,gBAAgB,YAAY,MAAM;IAClC,IAAI,OAAO,KAAA;IACX,KAAK,UAAU,MAAM,WAAW,UAAU,MAAM,YAAY,QAAQ,QAChE,OAAO,WAAW,eAAe,QAAQ,MAAM,EAAE;IAErD,OAAO,IAAI,qBAAqB,QAAQ,OAAO,MAAM,QAAQ,GAAG,MAAM,IAAI;GAC9E,OAEI,cAAc,mBAAmB,OAAO;EAEhD;EACA,SAAS,0BAA0B,SAAS;GACxC,IAAI,UAAU,MAAM,OAAO,CAAC,UAAU,QAAQ,WAAW,qBAAqB,KAAK,QAC/E;GAEJ,IAAI,gBAAgB,YAAY,MAAM;IAClC,IAAI,OAAO,KAAA;IACX,IAAI,UAAU,MAAM,WAAW,UAAU,MAAM,SAC3C,IAAI,QAAQ,QACR,OAAO,WAAW,eAAe,QAAQ,MAAM,EAAE;SAGjD,OAAO;IAGf,OAAO,IAAI,0BAA0B,QAAQ,OAAO,KAAK,IAAI;GACjE,OAEI,cAAc,wBAAwB,OAAO;EAErD;EACA,SAAS,sBAAsB,SAAS,iBAAiB;GACrD,IAAI,UAAU,MAAM,OAAO,CAAC,QACxB;GAEJ,IAAI,gBAAgB,YAAY,MAAM;IAClC,IAAI,OAAO,KAAA;IACX,IAAI,UAAU,MAAM,WAAW,UAAU,MAAM;SACvC,QAAQ,SAAS,QAAQ,MAAM,MAC/B,OAAO,eAAe,eAAe,QAAQ,MAAM,IAAI,EAAE;UAGzD,IAAI,QAAQ,QACR,OAAO,WAAW,eAAe,QAAQ,MAAM,EAAE;UAEhD,IAAI,QAAQ,UAAU,KAAA,GACvB,OAAO;IAAA;IAInB,IAAI,iBAAiB;KACjB,MAAM,QAAQ,QAAQ,QAAQ,oBAAoB,QAAQ,MAAM,QAAQ,IAAI,QAAQ,MAAM,KAAK,MAAM;KACrG,OAAO,IAAI,sBAAsB,gBAAgB,OAAO,MAAM,QAAQ,GAAG,QAAQ,KAAK,IAAI,IAAI,gBAAgB,WAAW,KAAK,SAAS,IAAI;IAC/I,OAEI,OAAO,IAAI,qBAAqB,QAAQ,GAAG,oCAAoC,IAAI;GAE3F,OAEI,cAAc,oBAAoB,OAAO;EAEjD;EACA,SAAS,cAAc,MAAM,SAAS;GAClC,IAAI,CAAC,UAAU,UAAU,MAAM,KAC3B;GAEJ,MAAM,aAAa;IACf,cAAc;IACd;IACA;IACA,WAAW,KAAK,IAAI;GACxB;GACA,OAAO,IAAI,UAAU;EACzB;EACA,SAAS,0BAA0B;GAC/B,IAAI,SAAS,GACT,MAAM,IAAI,gBAAgB,iBAAiB,QAAQ,uBAAuB;GAE9E,IAAI,WAAW,GACX,MAAM,IAAI,gBAAgB,iBAAiB,UAAU,yBAAyB;EAEtF;EACA,SAAS,mBAAmB;GACxB,IAAI,YAAY,GACZ,MAAM,IAAI,gBAAgB,iBAAiB,kBAAkB,iCAAiC;EAEtG;EACA,SAAS,sBAAsB;GAC3B,IAAI,CAAC,YAAY,GACb,MAAM,IAAI,MAAM,sBAAsB;EAE9C;EACA,SAAS,gBAAgB,OAAO;GAC5B,IAAI,UAAU,KAAA,GACV,OAAO;QAGP,OAAO;EAEf;EACA,SAAS,gBAAgB,OAAO;GAC5B,IAAI,UAAU,MACV;QAGA,OAAO;EAEf;EACA,SAAS,aAAa,OAAO;GACzB,OAAO,UAAU,KAAA,KAAa,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK,KAAK,OAAO,UAAU;EAC9F;EACA,SAAS,mBAAmB,qBAAqB,OAAO;GACpD,QAAQ,qBAAR;IACI,KAAK,WAAW,oBAAoB,MAChC,IAAI,aAAa,KAAK,GAClB,OAAO,gBAAgB,KAAK;SAG5B,OAAO,CAAC,gBAAgB,KAAK,CAAC;IAEtC,KAAK,WAAW,oBAAoB;KAChC,IAAI,CAAC,aAAa,KAAK,GACnB,MAAM,IAAI,MAAM,iEAAiE;KAErF,OAAO,gBAAgB,KAAK;IAChC,KAAK,WAAW,oBAAoB,YAChC,OAAO,CAAC,gBAAgB,KAAK,CAAC;IAClC,SACI,MAAM,IAAI,MAAM,+BAA+B,oBAAoB,SAAS,GAAG;GACvF;EACJ;EACA,SAAS,qBAAqB,MAAM,QAAQ;GACxC,IAAI;GACJ,MAAM,iBAAiB,KAAK;GAC5B,QAAQ,gBAAR;IACI,KAAK;KACD,SAAS,KAAA;KACT;IACJ,KAAK;KACD,SAAS,mBAAmB,KAAK,qBAAqB,OAAO,EAAE;KAC/D;IACJ;KACI,SAAS,CAAC;KACV,KAAK,IAAI,IAAI,GAAG,IAAI,OAAO,UAAU,IAAI,gBAAgB,KACrD,OAAO,KAAK,gBAAgB,OAAO,EAAE,CAAC;KAE1C,IAAI,OAAO,SAAS,gBAChB,KAAK,IAAI,IAAI,OAAO,QAAQ,IAAI,gBAAgB,KAC5C,OAAO,KAAK,IAAI;KAGxB;GACR;GACA,OAAO;EACX;EACA,MAAM,aAAa;GACf,mBAAmB,MAAM,GAAG,SAAS;IACjC,wBAAwB;IACxB,IAAI;IACJ,IAAI;IACJ,IAAI,GAAG,OAAO,IAAI,GAAG;KACjB,SAAS;KACT,MAAM,QAAQ,KAAK;KACnB,IAAI,aAAa;KACjB,IAAI,sBAAsB,WAAW,oBAAoB;KACzD,IAAI,WAAW,oBAAoB,GAAG,KAAK,GAAG;MAC1C,aAAa;MACb,sBAAsB;KAC1B;KACA,IAAI,WAAW,KAAK;KACpB,MAAM,iBAAiB,WAAW;KAClC,QAAQ,gBAAR;MACI,KAAK;OACD,gBAAgB,KAAA;OAChB;MACJ,KAAK;OACD,gBAAgB,mBAAmB,qBAAqB,KAAK,WAAW;OACxE;MACJ;OACI,IAAI,wBAAwB,WAAW,oBAAoB,QACvD,MAAM,IAAI,MAAM,YAAY,eAAe,4DAA4D;OAE3G,gBAAgB,KAAK,MAAM,YAAY,QAAQ,CAAC,CAAC,KAAI,UAAS,gBAAgB,KAAK,CAAC;OACpF;KACR;IACJ,OACK;KACD,MAAM,SAAS;KACf,SAAS,KAAK;KACd,gBAAgB,qBAAqB,MAAM,MAAM;IACrD;IACA,MAAM,sBAAsB;KACxB,SAAS;KACD;KACR,QAAQ;IACZ;IACA,yBAAyB,mBAAmB;IAC5C,OAAO,cAAc,MAAM,mBAAmB,CAAC,CAAC,OAAO,UAAU;KAC7D,OAAO,MAAM,8BAA8B;KAC3C,MAAM;IACV,CAAC;GACL;GACA,iBAAiB,MAAM,YAAY;IAC/B,wBAAwB;IACxB,IAAI;IACJ,IAAI,GAAG,KAAK,IAAI,GACZ,0BAA0B;SAEzB,IAAI,SACL,IAAI,GAAG,OAAO,IAAI,GAAG;KACjB,SAAS;KACT,qBAAqB,IAAI,MAAM;MAAE,MAAM,KAAA;MAAW;KAAQ,CAAC;IAC/D,OACK;KACD,SAAS,KAAK;KACd,qBAAqB,IAAI,KAAK,QAAQ;MAAE;MAAM;KAAQ,CAAC;IAC3D;IAEJ,OAAO,EACH,eAAe;KACX,IAAI,WAAW,KAAA,GACX,qBAAqB,OAAO,MAAM;UAGlC,0BAA0B,KAAA;IAElC,EACJ;GACJ;GACA,aAAa,OAAO,OAAO,YAAY;IACnC,IAAI,iBAAiB,IAAI,KAAK,GAC1B,MAAM,IAAI,MAAM,8BAA8B,MAAM,oBAAoB;IAE5E,iBAAiB,IAAI,OAAO,OAAO;IACnC,OAAO,EACH,eAAe;KACX,iBAAiB,OAAO,KAAK;IACjC,EACJ;GACJ;GACA,eAAe,OAAO,OAAO,UAAU;IAGnC,OAAO,WAAW,iBAAiB,qBAAqB,MAAM;KAAE;KAAO;IAAM,CAAC;GAClF;GACA,qBAAqB,yBAAyB;GAC9C,cAAc,MAAM,GAAG,SAAS;IAC5B,wBAAwB;IACxB,oBAAoB;IACpB,IAAI;IACJ,IAAI;IACJ,IAAI,QAAQ,KAAA;IACZ,IAAI,GAAG,OAAO,IAAI,GAAG;KACjB,SAAS;KACT,MAAM,QAAQ,KAAK;KACnB,MAAM,OAAO,KAAK,KAAK,SAAS;KAChC,IAAI,aAAa;KACjB,IAAI,sBAAsB,WAAW,oBAAoB;KACzD,IAAI,WAAW,oBAAoB,GAAG,KAAK,GAAG;MAC1C,aAAa;MACb,sBAAsB;KAC1B;KACA,IAAI,WAAW,KAAK;KACpB,IAAI,eAAe,kBAAkB,GAAG,IAAI,GAAG;MAC3C,WAAW,WAAW;MACtB,QAAQ;KACZ;KACA,MAAM,iBAAiB,WAAW;KAClC,QAAQ,gBAAR;MACI,KAAK;OACD,gBAAgB,KAAA;OAChB;MACJ,KAAK;OACD,gBAAgB,mBAAmB,qBAAqB,KAAK,WAAW;OACxE;MACJ;OACI,IAAI,wBAAwB,WAAW,oBAAoB,QACvD,MAAM,IAAI,MAAM,YAAY,eAAe,uDAAuD;OAEtG,gBAAgB,KAAK,MAAM,YAAY,QAAQ,CAAC,CAAC,KAAI,UAAS,gBAAgB,KAAK,CAAC;OACpF;KACR;IACJ,OACK;KACD,MAAM,SAAS;KACf,SAAS,KAAK;KACd,gBAAgB,qBAAqB,MAAM,MAAM;KACjD,MAAM,iBAAiB,KAAK;KAC5B,QAAQ,eAAe,kBAAkB,GAAG,OAAO,eAAe,IAAI,OAAO,kBAAkB,KAAA;IACnG;IACA,MAAM,KAAK;IACX,IAAI;IACJ,IAAI,OACA,aAAa,MAAM,8BAA8B;KAC7C,MAAM,IAAI,qBAAqB,OAAO,iBAAiB,YAAY,EAAE;KACrE,IAAI,MAAM,KAAA,GAAW;MACjB,OAAO,IAAI,qEAAqE,IAAI;MACpF,OAAO,QAAQ,QAAQ;KAC3B,OAEI,OAAO,EAAE,YAAY;MACjB,OAAO,IAAI,wCAAwC,GAAG,QAAQ;KAClE,CAAC;IAET,CAAC;IAEL,MAAM,iBAAiB;KACnB,SAAS;KACL;KACI;KACR,QAAQ;IACZ;IACA,oBAAoB,cAAc;IAClC,IAAI,OAAO,qBAAqB,OAAO,uBAAuB,YAC1D,qBAAqB,OAAO,mBAAmB,cAAc;IAEjE,OAAO,IAAI,QAAQ,OAAO,SAAS,WAAW;KAC1C,MAAM,sBAAsB,MAAM;MAC9B,QAAQ,CAAC;MACT,qBAAqB,OAAO,QAAQ,EAAE;MACtC,YAAY,QAAQ;KACxB;KACA,MAAM,qBAAqB,MAAM;MAC7B,OAAO,CAAC;MACR,qBAAqB,OAAO,QAAQ,EAAE;MACtC,YAAY,QAAQ;KACxB;KACA,MAAM,kBAAkB;MAAU;MAAQ,YAAY,KAAK,IAAI;MAAG,SAAS;MAAoB,QAAQ;KAAkB;KACzH,IAAI;MACA,iBAAiB,IAAI,IAAI,eAAe;MACxC,MAAM,cAAc,MAAM,cAAc;KAC5C,SACO,OAAO;MAGV,iBAAiB,OAAO,EAAE;MAC1B,gBAAgB,OAAO,IAAI,WAAW,cAAc,WAAW,WAAW,mBAAmB,MAAM,UAAU,MAAM,UAAU,gBAAgB,CAAC;MAC9I,OAAO,MAAM,yBAAyB;MACtC,MAAM;KACV;IACJ,CAAC;GACL;GACA,YAAY,MAAM,YAAY;IAC1B,wBAAwB;IACxB,IAAI,SAAS;IACb,IAAI,mBAAmB,GAAG,IAAI,GAAG;KAC7B,SAAS,KAAA;KACT,qBAAqB;IACzB,OACK,IAAI,GAAG,OAAO,IAAI,GAAG;KACtB,SAAS;KACT,IAAI,YAAY,KAAA,GAAW;MACvB,SAAS;MACT,gBAAgB,IAAI,MAAM;OAAW;OAAS,MAAM,KAAA;MAAU,CAAC;KACnE;IACJ,OAEI,IAAI,YAAY,KAAA,GAAW;KACvB,SAAS,KAAK;KACd,gBAAgB,IAAI,KAAK,QAAQ;MAAE;MAAM;KAAQ,CAAC;IACtD;IAEJ,OAAO,EACH,eAAe;KACX,IAAI,WAAW,MACX;KAEJ,IAAI,WAAW,KAAA,GACX,gBAAgB,OAAO,MAAM;UAG7B,qBAAqB,KAAA;IAE7B,EACJ;GACJ;GACA,0BAA0B;IACtB,OAAO,iBAAiB,OAAO;GACnC;GACA,OAAO,OAAO,QAAQ,SAAS,mCAAmC;IAC9D,IAAI,oBAAoB;IACxB,IAAI,eAAe,YAAY;IAC/B,IAAI,mCAAmC,KAAA,GACnC,IAAI,GAAG,QAAQ,8BAA8B,GACzC,oBAAoB;SAEnB;KACD,oBAAoB,+BAA+B,oBAAoB;KACvE,eAAe,+BAA+B,eAAe,YAAY;IAC7E;IAEJ,QAAQ;IACR,cAAc;IACd,IAAI,UAAU,MAAM,KAChB,SAAS,KAAA;SAGT,SAAS;IAEb,IAAI,qBAAqB,CAAC,SAAS,KAAK,CAAC,WAAW,GAChD,MAAM,WAAW,iBAAiB,qBAAqB,MAAM,EAAE,OAAO,MAAM,SAAS,MAAM,EAAE,CAAC;GAEtG;GACA,SAAS,aAAa;GACtB,SAAS,aAAa;GACtB,yBAAyB,6BAA6B;GACtD,WAAW,eAAe;GAC1B,WAAW;IACP,cAAc,IAAI;GACtB;GACA,eAAe;IACX,IAAI,WAAW,GACX;IAEJ,QAAQ,gBAAgB;IACxB,eAAe,KAAK,KAAA,CAAS;IAC7B,MAAM,QAAQ,IAAI,WAAW,cAAc,WAAW,WAAW,yBAAyB,yDAAyD;IACnJ,KAAK,MAAM,WAAW,iBAAiB,OAAO,GAC1C,QAAQ,OAAO,KAAK;IAExB,mCAAmB,IAAI,IAAI;IAC3B,gCAAgB,IAAI,IAAI;IACxB,wCAAwB,IAAI,IAAI;IAChC,eAAe,IAAI,YAAY,UAAU;IAEzC,IAAI,GAAG,KAAK,cAAc,OAAO,GAC7B,cAAc,QAAQ;IAE1B,IAAI,GAAG,KAAK,cAAc,OAAO,GAC7B,cAAc,QAAQ;GAE9B;GACA,cAAc;IACV,wBAAwB;IACxB,iBAAiB;IACjB,QAAQ,gBAAgB;IACxB,cAAc,OAAO,QAAQ;GACjC;GACA,eAAe;IAEX,CAAC,GAAG,MAAM,QAAA,CAAS,CAAC,CAAC,QAAQ,IAAI,SAAS;GAC9C;EACJ;EACA,WAAW,eAAe,qBAAqB,OAAO,WAAW;GAC7D,IAAI,UAAU,MAAM,OAAO,CAAC,QACxB;GAEJ,MAAM,UAAU,UAAU,MAAM,WAAW,UAAU,MAAM;GAC3D,OAAO,IAAI,OAAO,SAAS,UAAU,OAAO,UAAU,KAAA,CAAS;EACnE,CAAC;EACD,WAAW,eAAe,qBAAqB,OAAO,WAAW;GAC7D,MAAM,UAAU,iBAAiB,IAAI,OAAO,KAAK;GACjD,IAAI,SACA,QAAQ,OAAO,KAAK;QAGpB,yBAAyB,KAAK,MAAM;EAE5C,CAAC;EACD,OAAO;CACX;CACA,QAAQ,0BAA0B;;;;;CCvrClC,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;CAC5D,QAAQ,eAAe,QAAQ,gBAAgB,QAAQ,0BAA0B,QAAQ,aAAa,QAAQ,oBAAoB,QAAQ,qBAAqB,QAAQ,wBAAwB,QAAQ,+BAA+B,QAAQ,wBAAwB,QAAQ,gBAAgB,QAAQ,8BAA8B,QAAQ,wBAAwB,QAAQ,gBAAgB,QAAQ,8BAA8B,QAAQ,4BAA4B,QAAQ,oBAAoB,QAAQ,0BAA0B,QAAQ,UAAU,QAAQ,QAAQ,QAAQ,aAAa,QAAQ,WAAW,QAAQ,QAAQ,QAAQ,YAAY,QAAQ,sBAAsB,QAAQ,oBAAoB,QAAQ,oBAAoB,QAAQ,oBAAoB,QAAQ,oBAAoB,QAAQ,oBAAoB,QAAQ,oBAAoB,QAAQ,oBAAoB,QAAQ,oBAAoB,QAAQ,oBAAoB,QAAQ,oBAAoB,QAAQ,mBAAmB,QAAQ,aAAa,QAAQ,gBAAgB,QAAQ,eAAe,QAAQ,eAAe,QAAQ,eAAe,QAAQ,eAAe,QAAQ,eAAe,QAAQ,eAAe,QAAQ,eAAe,QAAQ,eAAe,QAAQ,eAAe,QAAQ,eAAe,QAAQ,cAAc,QAAQ,UAAU,QAAQ,MAAM,KAAK;CACjxC,QAAQ,kBAAkB,QAAQ,uBAAuB,QAAQ,6BAA6B,QAAQ,+BAA+B,QAAQ,kBAAkB,QAAQ,mBAAmB,QAAQ,uBAAuB,QAAQ,uBAAuB,QAAQ,cAAc,QAAQ,cAAc,QAAQ,QAAQ,KAAK;CACzT,IAAM,aAAA,iBAAA;CACN,OAAO,eAAe,SAAS,WAAW;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAS;CAAE,CAAC;CAC/G,OAAO,eAAe,SAAS,eAAe;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAa;CAAE,CAAC;CACvH,OAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAc;CAAE,CAAC;CACzH,OAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAc;CAAE,CAAC;CACzH,OAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAc;CAAE,CAAC;CACzH,OAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAc;CAAE,CAAC;CACzH,OAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAc;CAAE,CAAC;CACzH,OAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAc;CAAE,CAAC;CACzH,OAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAc;CAAE,CAAC;CACzH,OAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAc;CAAE,CAAC;CACzH,OAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAc;CAAE,CAAC;CACzH,OAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAc;CAAE,CAAC;CACzH,OAAO,eAAe,SAAS,iBAAiB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAe;CAAE,CAAC;CAC3H,OAAO,eAAe,SAAS,cAAc;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAY;CAAE,CAAC;CACrH,OAAO,eAAe,SAAS,oBAAoB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAkB;CAAE,CAAC;CACjI,OAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAmB;CAAE,CAAC;CACnI,OAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAmB;CAAE,CAAC;CACnI,OAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAmB;CAAE,CAAC;CACnI,OAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAmB;CAAE,CAAC;CACnI,OAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAmB;CAAE,CAAC;CACnI,OAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAmB;CAAE,CAAC;CACnI,OAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAmB;CAAE,CAAC;CACnI,OAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAmB;CAAE,CAAC;CACnI,OAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAmB;CAAE,CAAC;CACnI,OAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAmB;CAAE,CAAC;CACnI,OAAO,eAAe,SAAS,uBAAuB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,WAAW;EAAqB;CAAE,CAAC;CACvI,IAAM,cAAA,kBAAA;CACN,OAAO,eAAe,SAAS,aAAa;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,YAAY;EAAW;CAAE,CAAC;CACpH,OAAO,eAAe,SAAS,YAAY;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,YAAY;EAAU;CAAE,CAAC;CAClH,OAAO,eAAe,SAAS,SAAS;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,YAAY;EAAO;CAAE,CAAC;CAC5G,IAAM,eAAA,mBAAA;CACN,OAAO,eAAe,SAAS,cAAc;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,aAAa;EAAY;CAAE,CAAC;CACvH,IAAM,WAAA,eAAA;CACN,OAAO,eAAe,SAAS,SAAS;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,SAAS;EAAO;CAAE,CAAC;CACzG,OAAO,eAAe,SAAS,WAAW;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,SAAS;EAAS;CAAE,CAAC;CAC7G,IAAM,iBAAA,qBAAA;CACN,OAAO,eAAe,SAAS,2BAA2B;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,eAAe;EAAyB;CAAE,CAAC;CACnJ,OAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,eAAe;EAAmB;CAAE,CAAC;CACvI,IAAM,4BAAA,gCAAA;CACN,OAAO,eAAe,SAAS,6BAA6B;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,0BAA0B;EAA2B;CAAE,CAAC;CAClK,OAAO,eAAe,SAAS,+BAA+B;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,0BAA0B;EAA6B;CAAE,CAAC;CACtK,IAAM,kBAAA,sBAAA;CACN,OAAO,eAAe,SAAS,iBAAiB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,gBAAgB;EAAe;CAAE,CAAC;CAChI,OAAO,eAAe,SAAS,yBAAyB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,gBAAgB;EAAuB;CAAE,CAAC;CAChJ,OAAO,eAAe,SAAS,+BAA+B;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,gBAAgB;EAA6B;CAAE,CAAC;CAC5J,IAAM,kBAAA,sBAAA;CACN,OAAO,eAAe,SAAS,iBAAiB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,gBAAgB;EAAe;CAAE,CAAC;CAChI,OAAO,eAAe,SAAS,yBAAyB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,gBAAgB;EAAuB;CAAE,CAAC;CAChJ,OAAO,eAAe,SAAS,gCAAgC;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,gBAAgB;EAA8B;CAAE,CAAC;CAC9J,IAAM,kBAAA,sBAAA;CACN,OAAO,eAAe,SAAS,yBAAyB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,gBAAgB;EAAuB;CAAE,CAAC;CAChJ,IAAM,eAAA,mBAAA;CACN,OAAO,eAAe,SAAS,sBAAsB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,aAAa;EAAoB;CAAE,CAAC;CACvI,OAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,aAAa;EAAmB;CAAE,CAAC;CACrI,OAAO,eAAe,SAAS,cAAc;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,aAAa;EAAY;CAAE,CAAC;CACvH,OAAO,eAAe,SAAS,2BAA2B;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,aAAa;EAAyB;CAAE,CAAC;CACjJ,OAAO,eAAe,SAAS,iBAAiB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,aAAa;EAAe;CAAE,CAAC;CAC7H,OAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,aAAa;EAAc;CAAE,CAAC;CAC3H,OAAO,eAAe,SAAS,SAAS;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,aAAa;EAAO;CAAE,CAAC;CAC7G,OAAO,eAAe,SAAS,eAAe;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,aAAa;EAAa;CAAE,CAAC;CACzH,OAAO,eAAe,SAAS,eAAe;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,aAAa;EAAa;CAAE,CAAC;CACzH,OAAO,eAAe,SAAS,wBAAwB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,aAAa;EAAsB;CAAE,CAAC;CAC3I,OAAO,eAAe,SAAS,wBAAwB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,aAAa;EAAsB;CAAE,CAAC;CAC3I,OAAO,eAAe,SAAS,oBAAoB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,aAAa;EAAkB;CAAE,CAAC;CACnI,OAAO,eAAe,SAAS,mBAAmB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,aAAa;EAAiB;CAAE,CAAC;CACjI,OAAO,eAAe,SAAS,gCAAgC;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,aAAa;EAA8B;CAAE,CAAC;CAC3J,OAAO,eAAe,SAAS,8BAA8B;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,aAAa;EAA4B;CAAE,CAAC;CACvJ,OAAO,eAAe,SAAS,wBAAwB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,aAAa;EAAsB;CAAE,CAAC;CAC3I,OAAO,eAAe,SAAS,mBAAmB;EAAE,YAAY;EAAM,KAAK,WAAY;GAAE,OAAO,aAAa;EAAiB;CAAE,CAAC;CAEjI,QAAQ,MADF,YACQ,CAAA,CAAM;;;;;CC3EpB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;CAC5D,IAAM,SAAA,UAAiB,MAAM;CAC7B,IAAM,QAAA,YAAA;CACN,IAAM,gBAAN,MAAM,sBAAsB,MAAM,sBAAsB;EACpD,YAAY,WAAW,SAAS;GAC5B,MAAM,QAAQ;EAClB;EACA,cAAc;GACV,OAAO,cAAc;EACzB;EACA,WAAW,OAAO,UAAU;GACxB,OAAO,OAAO,KAAK,OAAO,QAAQ;EACtC;EACA,SAAS,OAAO,UAAU;GACtB,IAAI,iBAAiB,QACjB,OAAO,MAAM,SAAS,QAAQ;QAG9B,OAAO,IAAI,OAAO,YAAY,QAAQ,CAAC,CAAC,OAAO,KAAK;EAE5D;EACA,SAAS,QAAQ,QAAQ;GACrB,IAAI,WAAW,KAAA,GACX,OAAO,kBAAkB,SAAS,SAAS,OAAO,KAAK,MAAM;QAG7D,OAAO,kBAAkB,SAAS,OAAO,MAAM,GAAG,MAAM,IAAI,OAAO,KAAK,QAAQ,GAAG,MAAM;EAEjG;EACA,YAAY,QAAQ;GAChB,OAAO,OAAO,YAAY,MAAM;EACpC;CACJ;CACA,cAAc,cAAc,OAAO,YAAY,CAAC;CAChD,IAAM,wBAAN,MAA4B;EACxB,YAAY,QAAQ;GAChB,KAAK,SAAS;EAClB;EACA,QAAQ,UAAU;GACd,KAAK,OAAO,GAAG,SAAS,QAAQ;GAChC,OAAO,MAAM,WAAW,aAAa,KAAK,OAAO,IAAI,SAAS,QAAQ,CAAC;EAC3E;EACA,QAAQ,UAAU;GACd,KAAK,OAAO,GAAG,SAAS,QAAQ;GAChC,OAAO,MAAM,WAAW,aAAa,KAAK,OAAO,IAAI,SAAS,QAAQ,CAAC;EAC3E;EACA,MAAM,UAAU;GACZ,KAAK,OAAO,GAAG,OAAO,QAAQ;GAC9B,OAAO,MAAM,WAAW,aAAa,KAAK,OAAO,IAAI,OAAO,QAAQ,CAAC;EACzE;EACA,OAAO,UAAU;GACb,KAAK,OAAO,GAAG,QAAQ,QAAQ;GAC/B,OAAO,MAAM,WAAW,aAAa,KAAK,OAAO,IAAI,QAAQ,QAAQ,CAAC;EAC1E;CACJ;CACA,IAAM,wBAAN,MAA4B;EACxB,YAAY,QAAQ;GAChB,KAAK,SAAS;EAClB;EACA,QAAQ,UAAU;GACd,KAAK,OAAO,GAAG,SAAS,QAAQ;GAChC,OAAO,MAAM,WAAW,aAAa,KAAK,OAAO,IAAI,SAAS,QAAQ,CAAC;EAC3E;EACA,QAAQ,UAAU;GACd,KAAK,OAAO,GAAG,SAAS,QAAQ;GAChC,OAAO,MAAM,WAAW,aAAa,KAAK,OAAO,IAAI,SAAS,QAAQ,CAAC;EAC3E;EACA,MAAM,UAAU;GACZ,KAAK,OAAO,GAAG,OAAO,QAAQ;GAC9B,OAAO,MAAM,WAAW,aAAa,KAAK,OAAO,IAAI,OAAO,QAAQ,CAAC;EACzE;EACA,MAAM,MAAM,UAAU;GAClB,OAAO,IAAI,SAAS,SAAS,WAAW;IACpC,MAAM,YAAY,UAAU;KACxB,IAAI,UAAU,KAAA,KAAa,UAAU,MACjC,QAAQ;UAGR,OAAO,KAAK;IAEpB;IACA,IAAI,OAAO,SAAS,UAChB,KAAK,OAAO,MAAM,MAAM,UAAU,QAAQ;SAG1C,KAAK,OAAO,MAAM,MAAM,QAAQ;GAExC,CAAC;EACL;EACA,MAAM;GACF,KAAK,OAAO,IAAI;EACpB;CACJ;CACA,IAAM,OAAO,OAAO,OAAO;EACvB,eAAe,OAAO,OAAO,EACzB,SAAS,aAAa,IAAI,cAAc,QAAQ,EACpD,CAAC;EACD,iBAAiB,OAAO,OAAO;GAC3B,SAAS,OAAO,OAAO;IACnB,MAAM;IACN,SAAS,KAAK,YAAY;KACtB,IAAI;MACA,OAAO,QAAQ,QAAQ,OAAO,KAAK,KAAK,UAAU,KAAK,KAAA,GAAW,CAAC,GAAG,QAAQ,OAAO,CAAC;KAC1F,SACO,KAAK;MACR,OAAO,QAAQ,OAAO,GAAG;KAC7B;IACJ;GACJ,CAAC;GACD,SAAS,OAAO,OAAO;IACnB,MAAM;IACN,SAAS,QAAQ,YAAY;KACzB,IAAI;MACA,IAAI,kBAAkB,QAClB,OAAO,QAAQ,QAAQ,KAAK,MAAM,OAAO,SAAS,QAAQ,OAAO,CAAC,CAAC;WAGnE,OAAO,QAAQ,QAAQ,KAAK,MAAM,IAAI,OAAO,YAAY,QAAQ,OAAO,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC;KAEjG,SACO,KAAK;MACR,OAAO,QAAQ,OAAO,GAAG;KAC7B;IACJ;GACJ,CAAC;EACL,CAAC;EACD,QAAQ,OAAO,OAAO;GAClB,mBAAmB,WAAW,IAAI,sBAAsB,MAAM;GAC9D,mBAAmB,WAAW,IAAI,sBAAsB,MAAM;EAClE,CAAC;EACQ;EACT,OAAO,OAAO,OAAO;GACjB,WAAW,UAAU,IAAI,GAAG,MAAM;IAC9B,MAAM,SAAS,WAAW,UAAU,IAAI,GAAG,IAAI;IAC/C,OAAO,EAAE,eAAe,aAAa,MAAM,EAAE;GACjD;GACA,aAAa,UAAU,GAAG,MAAM;IAC5B,MAAM,SAAS,aAAa,UAAU,GAAG,IAAI;IAC7C,OAAO,EAAE,eAAe,eAAe,MAAM,EAAE;GACnD;GACA,YAAY,UAAU,IAAI,GAAG,MAAM;IAC/B,MAAM,SAAS,YAAY,UAAU,IAAI,GAAG,IAAI;IAChD,OAAO,EAAE,eAAe,cAAc,MAAM,EAAE;GAClD;EACJ,CAAC;CACL,CAAC;CACD,SAAS,MAAM;EACX,OAAO;CACX;CACA,CAAC,SAAU,KAAK;EACZ,SAAS,UAAU;GACf,MAAM,IAAI,QAAQ,IAAI;EAC1B;EACA,IAAI,UAAU;CAClB,EAAA,CAAG,QAAQ,MAAM,CAAC,EAAE;CACpB,QAAQ,UAAU;;;;;CC/JlB,IAAI,kBAAA,WAAA,QAAgC,oBAAqB,OAAO,UAAU,SAAS,GAAG,GAAG,GAAG,IAAI;EAC5F,IAAI,OAAO,KAAA,GAAW,KAAK;EAC3B,IAAI,OAAO,OAAO,yBAAyB,GAAG,CAAC;EAC/C,IAAI,CAAC,SAAS,SAAS,OAAO,CAAC,EAAE,aAAa,KAAK,YAAY,KAAK,eAClE,OAAO;GAAE,YAAY;GAAM,KAAK,WAAW;IAAE,OAAO,EAAE;GAAI;EAAE;EAE9D,OAAO,eAAe,GAAG,IAAI,IAAI;CACrC,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI;EACxB,IAAI,OAAO,KAAA,GAAW,KAAK;EAC3B,EAAE,MAAM,EAAE;CACd;CACA,IAAI,eAAA,WAAA,QAA6B,gBAAiB,SAAS,GAAG,WAAS;EACnE,KAAK,IAAI,KAAK,GAAG,IAAI,MAAM,aAAa,CAAC,OAAO,UAAU,eAAe,KAAKA,WAAS,CAAC,GAAG,gBAAgBA,WAAS,GAAG,CAAC;CAC5H;CACA,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;CAC5D,QAAQ,0BAA0B,QAAQ,8BAA8B,QAAQ,8BAA8B,QAAQ,4BAA4B,QAAQ,4BAA4B,QAAQ,yBAAyB,QAAQ,sBAAsB,QAAQ,sBAAsB,QAAQ,sBAAsB,QAAQ,sBAAsB,QAAQ,oBAAoB,QAAQ,oBAAoB,QAAQ,mBAAmB,QAAQ,mBAAmB,KAAK;CAKlc,IAAM,QAAA,YAAA;CAEN,MAAM,QAAQ,QAAQ;CACtB,IAAMC,SAAAA,UAAe,MAAM;CAC3B,IAAM,KAAA,UAAa,IAAI;CACvB,IAAM,WAAA,UAAmB,QAAQ;CACjC,IAAM,QAAA,UAAgB,KAAK;CAC3B,IAAM,QAAA,YAAA;CACN,aAAA,YAAA,GAAuC,OAAO;CAC9C,IAAM,mBAAN,cAA+B,MAAM,sBAAsB;EACvD,YAAY,SAAS;GACjB,MAAM;GACN,KAAK,UAAU;GACf,IAAI,eAAe,KAAK;GACxB,aAAa,GAAG,UAAU,UAAU,KAAK,UAAU,KAAK,CAAC;GACzD,aAAa,GAAG,eAAe,KAAK,UAAU,CAAC;EACnD;EACA,OAAO,UAAU;GACb,KAAK,QAAQ,GAAG,WAAW,QAAQ;GACnC,OAAO,MAAM,WAAW,aAAa,KAAK,QAAQ,IAAI,WAAW,QAAQ,CAAC;EAC9E;CACJ;CACA,QAAQ,mBAAmB;CAC3B,IAAM,mBAAN,cAA+B,MAAM,sBAAsB;EACvD,YAAY,SAAS;GACjB,MAAM;GACN,KAAK,UAAU;GACf,KAAK,aAAa;GAClB,MAAM,eAAe,KAAK;GAC1B,aAAa,GAAG,UAAU,UAAU,KAAK,UAAU,KAAK,CAAC;GACzD,aAAa,GAAG,eAAe,KAAK,SAAS;EACjD;EACA,MAAM,KAAK;GACP,IAAI;IACA,IAAI,OAAO,KAAK,QAAQ,SAAS,YAC7B,KAAK,QAAQ,KAAK,KAAK,KAAA,GAAW,KAAA,IAAY,UAAU;KACpD,IAAI,OAAO;MACP,KAAK;MACL,KAAK,YAAY,OAAO,GAAG;KAC/B,OAEI,KAAK,aAAa;IAE1B,CAAC;IAEL,OAAO,QAAQ,QAAQ;GAC3B,SACO,OAAO;IACV,KAAK,YAAY,OAAO,GAAG;IAC3B,OAAO,QAAQ,OAAO,KAAK;GAC/B;EACJ;EACA,YAAY,OAAO,KAAK;GACpB,KAAK;GACL,KAAK,UAAU,OAAO,KAAK,KAAK,UAAU;EAC9C;EACA,MAAM,CACN;CACJ;CACA,QAAQ,mBAAmB;CAC3B,IAAM,oBAAN,cAAgC,MAAM,sBAAsB;EACxD,YAAY,MAAM;GACd,MAAM;GACN,KAAK,SAAS,IAAI,MAAM,QAAM;GAC9B,KAAK,GAAG,eAAe,KAAK,SAAS;GACrC,KAAK,GAAG,UAAU,UAAU,KAAK,UAAU,KAAK,CAAC;GACjD,KAAK,GAAG,YAAY,YAAY;IAC5B,KAAK,OAAO,KAAK,OAAO;GAC5B,CAAC;EACL;EACA,OAAO,UAAU;GACb,OAAO,KAAK,OAAO,MAAM,QAAQ;EACrC;CACJ;CACA,QAAQ,oBAAoB;CAC5B,IAAM,oBAAN,cAAgC,MAAM,sBAAsB;EACxD,YAAY,MAAM;GACd,MAAM;GACN,KAAK,OAAO;GACZ,KAAK,aAAa;GAClB,KAAK,GAAG,eAAe,KAAK,UAAU,CAAC;GACvC,KAAK,GAAG,UAAU,UAAU,KAAK,UAAU,KAAK,CAAC;EACrD;EACA,MAAM,KAAK;GACP,IAAI;IACA,KAAK,KAAK,YAAY,GAAG;IACzB,OAAO,QAAQ,QAAQ;GAC3B,SACO,OAAO;IACV,KAAK,YAAY,OAAO,GAAG;IAC3B,OAAO,QAAQ,OAAO,KAAK;GAC/B;EACJ;EACA,YAAY,OAAO,KAAK;GACpB,KAAK;GACL,KAAK,UAAU,OAAO,KAAK,KAAK,UAAU;EAC9C;EACA,MAAM,CACN;CACJ;CACA,QAAQ,oBAAoB;CAC5B,IAAM,sBAAN,cAAkC,MAAM,4BAA4B;EAChE,YAAY,QAAQ,WAAW,SAAS;GACpC,OAAO,GAAG,MAAM,QAAA,CAAS,CAAC,CAAC,OAAO,iBAAiB,MAAM,GAAG,QAAQ;EACxE;CACJ;CACA,QAAQ,sBAAsB;CAC9B,IAAM,sBAAN,cAAkC,MAAM,6BAA6B;EACjE,YAAY,QAAQ,SAAS;GACzB,OAAO,GAAG,MAAM,QAAA,CAAS,CAAC,CAAC,OAAO,iBAAiB,MAAM,GAAG,OAAO;GACnE,KAAK,SAAS;EAClB;EACA,UAAU;GACN,MAAM,QAAQ;GACd,KAAK,OAAO,QAAQ;EACxB;CACJ;CACA,QAAQ,sBAAsB;CAC9B,IAAM,sBAAN,cAAkC,MAAM,4BAA4B;EAChE,YAAY,UAAU,UAAU;GAC5B,OAAO,GAAG,MAAM,QAAA,CAAS,CAAC,CAAC,OAAO,iBAAiB,QAAQ,GAAG,QAAQ;EAC1E;CACJ;CACA,QAAQ,sBAAsB;CAC9B,IAAM,sBAAN,cAAkC,MAAM,6BAA6B;EACjE,YAAY,UAAU,SAAS;GAC3B,OAAO,GAAG,MAAM,QAAA,CAAS,CAAC,CAAC,OAAO,iBAAiB,QAAQ,GAAG,OAAO;EACzE;CACJ;CACA,QAAQ,sBAAsB;CAC9B,IAAM,kBAAkB,QAAQ,IAAI;CACpC,IAAM,qCAAqB,IAAI,IAAI,CAC/B,CAAC,SAAS,GAAG,GACb,CAAC,UAAU,GAAG,CAClB,CAAC;CACD,SAAS,yBAAyB;EAC9B,MAAM,gBAAgB,GAAG,SAAS,YAAA,CAAa,EAAE,CAAC,CAAC,SAAS,KAAK;EACjE,IAAI,QAAQ,aAAa,SACrB,OAAO,+BAA+B,aAAa;EAEvD,IAAI;EACJ,IAAI,iBACA,SAASA,OAAK,KAAK,iBAAiB,cAAc,aAAa,MAAM;OAGrE,SAASA,OAAK,KAAK,GAAG,OAAO,GAAG,UAAU,aAAa,MAAM;EAEjE,MAAM,QAAQ,mBAAmB,IAAI,QAAQ,QAAQ;EACrD,IAAI,UAAU,KAAA,KAAa,OAAO,SAAS,OACvC,CAAC,GAAG,MAAM,QAAA,CAAS,CAAC,CAAC,QAAQ,KAAK,wBAAwB,OAAO,mBAAmB,MAAM,aAAa;EAE3G,OAAO;CACX;CACA,QAAQ,yBAAyB;CACjC,SAAS,0BAA0B,UAAU,WAAW,SAAS;EAC7D,IAAI;EACJ,MAAM,YAAY,IAAI,SAAS,SAAS,YAAY;GAChD,iBAAiB;EACrB,CAAC;EACD,OAAO,IAAI,SAAS,SAAS,WAAW;GACpC,IAAI,UAAU,GAAG,MAAM,aAAA,EAAe,WAAW;IAC7C,OAAO,MAAM;IACb,eAAe,CACX,IAAI,oBAAoB,QAAQ,QAAQ,GACxC,IAAI,oBAAoB,QAAQ,QAAQ,CAC5C,CAAC;GACL,CAAC;GACD,OAAO,GAAG,SAAS,MAAM;GACzB,OAAO,OAAO,gBAAgB;IAC1B,OAAO,eAAe,SAAS,MAAM;IACrC,QAAQ,EACJ,mBAAmB;KAAE,OAAO;IAAW,EAC3C,CAAC;GACL,CAAC;EACL,CAAC;CACL;CACA,QAAQ,4BAA4B;CACpC,SAAS,0BAA0B,UAAU,WAAW,SAAS;EAC7D,MAAM,UAAU,GAAG,MAAM,iBAAA,CAAkB,QAAQ;EACnD,OAAO,CACH,IAAI,oBAAoB,QAAQ,QAAQ,GACxC,IAAI,oBAAoB,QAAQ,QAAQ,CAC5C;CACJ;CACA,QAAQ,4BAA4B;CACpC,SAAS,4BAA4B,MAAM,WAAW,SAAS;EAC3D,IAAI;EACJ,MAAM,YAAY,IAAI,SAAS,SAAS,YAAY;GAChD,iBAAiB;EACrB,CAAC;EACD,OAAO,IAAI,SAAS,SAAS,WAAW;GACpC,MAAM,UAAU,GAAG,MAAM,aAAA,EAAe,WAAW;IAC/C,OAAO,MAAM;IACb,eAAe,CACX,IAAI,oBAAoB,QAAQ,QAAQ,GACxC,IAAI,oBAAoB,QAAQ,QAAQ,CAC5C,CAAC;GACL,CAAC;GACD,OAAO,GAAG,SAAS,MAAM;GACzB,OAAO,OAAO,MAAM,mBAAmB;IACnC,OAAO,eAAe,SAAS,MAAM;IACrC,QAAQ,EACJ,mBAAmB;KAAE,OAAO;IAAW,EAC3C,CAAC;GACL,CAAC;EACL,CAAC;CACL;CACA,QAAQ,8BAA8B;CACtC,SAAS,4BAA4B,MAAM,WAAW,SAAS;EAC3D,MAAM,UAAU,GAAG,MAAM,iBAAA,CAAkB,MAAM,WAAW;EAC5D,OAAO,CACH,IAAI,oBAAoB,QAAQ,QAAQ,GACxC,IAAI,oBAAoB,QAAQ,QAAQ,CAC5C;CACJ;CACA,QAAQ,8BAA8B;CACtC,SAAS,iBAAiB,OAAO;EAC7B,MAAM,YAAY;EAClB,OAAO,UAAU,SAAS,KAAA,KAAa,UAAU,gBAAgB,KAAA;CACrE;CACA,SAAS,iBAAiB,OAAO;EAC7B,MAAM,YAAY;EAClB,OAAO,UAAU,UAAU,KAAA,KAAa,UAAU,gBAAgB,KAAA;CACtE;CACA,SAAS,wBAAwB,OAAO,QAAQ,QAAQ,SAAS;EAC7D,IAAI,CAAC,QACD,SAAS,MAAM;EAEnB,MAAM,SAAS,iBAAiB,KAAK,IAAI,IAAI,oBAAoB,KAAK,IAAI;EAC1E,MAAM,SAAS,iBAAiB,MAAM,IAAI,IAAI,oBAAoB,MAAM,IAAI;EAC5E,IAAI,MAAM,mBAAmB,GAAG,OAAO,GACnC,UAAU,EAAE,oBAAoB,QAAQ;EAE5C,QAAQ,GAAG,MAAM,wBAAA,CAAyB,QAAQ,QAAQ,QAAQ,OAAO;CAC7E;CACA,QAAQ,0BAA0B;;;;;CC9PlC,IAAMC,SAAAA,UAAe,MAAM;CAC3B,IAAM,YAAY;CAClB,IAAM,eAAe,KAAK,UAAU;CAEpC,IAAM,gCAAgC;;;;CAMtC,IAAM,cAAc;CACpB,IAAM,eAAe;CACrB,IAAM,gBAAgB;CACtB,IAAM,gBAAgB;CACtB,IAAM,WAAW;CACjB,IAAM,QAAQ;CACd,IAAM,aAAa,MAAM,cAAc;CACvC,IAAM,eAAe,QAAQ,cAAc;CAC3C,IAAM,aAAa,GAAG,YAAY,OAAO;CAQzC,IAAM,cAAc;EAClB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAA,MAhBmB,YAAY;EAiB/B,SAAA,MAhBoB,eAAe,WAAW;EAiB9C,cAAA,MAhByB,YAAY,OAAO,WAAW;EAiBvD,eAAA,MAhB0B,WAAW;EAiBrC,cAAA,MAhByB,cAAc;EAiBvC,MAAA,GAhBc,MAAM;EAiBpB;CACF;;;;CAMA,IAAM,gBAAgB;EACpB,GAAG;EAEH,eAAe,IAAI,UAAU;EAC7B,OAAO;EACP,MAAM,GAAG,aAAa;EACtB,YAAY,GAAG,YAAY,WAAW,UAAU;EAChD,QAAQ,MAAM,YAAY;EAC1B,SAAS,YAAY,UAAU,IAAI,YAAY,WAAW,UAAU;EACpE,cAAc,MAAM,YAAY,WAAW,UAAU;EACrD,eAAe,MAAM,YAAY,WAAW,UAAU;EACtD,cAAc,MAAM,UAAU;EAC9B,cAAc,SAAS,UAAU;EACjC,YAAY,OAAO,UAAU;CAC/B;CAwBA,OAAO,UAAU;EACf;EACA,YAAY,OAAO;EACnB;GApBA,WAAW;GACX,OAAO;GACP,OAAO;GACP,OAAO;GACP,OAAO;GACP,OAAO;GACP,OAAO;GACP,OAAO;GACP,OAAO;GACP,OAAO;GACP,OAAO;GACP,OAAO;GACP,OAAO;GACP,MAAM;GACN,QAAQ;EAMR;EAGA,iBAAiB;EACjB,yBAAyB;EACzB,qBAAqB;EACrB,6BAA6B;EAC7B,4BAA4B;EAC5B,wBAAwB;EAGxB,cAAc;GACZ,WAAW;GACX,OAAO;GACP,SAAS;GACT,YAAY;EACd;EAGA,QAAQ;EACR,QAAQ;EAGR,kBAAkB;EAClB,kBAAkB;EAClB,kBAAkB;EAClB,kBAAkB;EAElB,uBAAuB;EACvB,wBAAwB;EAExB,eAAe;EAGf,gBAAgB;EAChB,SAAS;EACT,qBAAqB;EACrB,sBAAsB;EACtB,wBAAwB;EACxB,YAAY;EACZ,YAAY;EACZ,UAAU;EACV,mBAAmB;EACnB,YAAY;EACZ,uBAAuB;EACvB,gBAAgB;EAChB,oBAAoB;EACpB,mBAAmB;EACnB,WAAW;EACX,mBAAmB;EACnB,yBAAyB;EACzB,uBAAuB;EACvB,0BAA0B;EAC1B,gBAAgB;EAChB,qBAAqB;EACrB,cAAc;EACd,WAAW;EACX,oBAAoB;EACpB,0BAA0B;EAC1B,wBAAwB;EACxB,2BAA2B;EAC3B,gBAAgB;EAChB,mBAAmB;EACnB,YAAY;EACZ,UAAU;EACV,iBAAiB;EACjB,oBAAoB;EACpB,+BAA+B;EAE/B,KAAKA,OAAK;;;;EAMV,aAAa,OAAO;GAClB,OAAO;IACL,KAAK;KAAE,MAAM;KAAU,MAAM;KAAa,OAAO,KAAK,MAAM,KAAK;IAAG;IACpE,KAAK;KAAE,MAAM;KAAS,MAAM;KAAO,OAAO;IAAK;IAC/C,KAAK;KAAE,MAAM;KAAQ,MAAM;KAAO,OAAO;IAAK;IAC9C,KAAK;KAAE,MAAM;KAAQ,MAAM;KAAO,OAAO;IAAK;IAC9C,KAAK;KAAE,MAAM;KAAM,MAAM;KAAO,OAAO;IAAI;GAC7C;EACF;;;;EAMA,UAAU,OAAO;GACf,OAAO,UAAU,OAAO,gBAAgB;EAC1C;CACF;;;;;CCrLA,IAAMC,SAAAA,UAAe,MAAM;CAC3B,IAAM,QAAQ,QAAQ,aAAa;CACnC,IAAM,EACJ,iBACA,wBACA,qBACA,+BAAA,kBAAA;CAGF,QAAQ,YAAW,QAAO,QAAQ,QAAQ,OAAO,QAAQ,YAAY,CAAC,MAAM,QAAQ,GAAG;CACvF,QAAQ,iBAAgB,QAAO,oBAAoB,KAAK,GAAG;CAC3D,QAAQ,eAAc,QAAO,IAAI,WAAW,KAAK,QAAQ,cAAc,GAAG;CAC1E,QAAQ,eAAc,QAAO,IAAI,QAAQ,4BAA4B,MAAM;CAC3E,QAAQ,kBAAiB,QAAO,IAAI,QAAQ,iBAAiB,GAAG;CAEhE,QAAQ,qBAAoB,QAAO;EACjC,OAAO,IAAI,QAAQ,yBAAwB,UAAS;GAClD,OAAO,UAAU,OAAO,KAAK;EAC/B,CAAC;CACH;CAEA,QAAQ,4BAA4B;EAClC,MAAM,OAAO,QAAQ,QAAQ,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,MAAM;EAC3D,IAAI,KAAK,WAAW,KAAK,KAAK,MAAM,KAAM,KAAK,OAAO,KAAK,KAAK,MAAM,IACpE,OAAO;EAET,OAAO;CACT;CAEA,QAAQ,aAAY,YAAW;EAC7B,IAAI,WAAW,OAAO,QAAQ,YAAY,WACxC,OAAO,QAAQ;EAEjB,OAAO,UAAU,QAAQA,OAAK,QAAQ;CACxC;CAEA,QAAQ,cAAc,OAAO,MAAM,YAAY;EAC7C,MAAM,MAAM,MAAM,YAAY,MAAM,OAAO;EAC3C,IAAI,QAAQ,IAAI,OAAO;EACvB,IAAI,MAAM,MAAM,OAAO,MAAM,OAAO,QAAQ,WAAW,OAAO,MAAM,MAAM,CAAC;EAC3E,OAAO,GAAG,MAAM,MAAM,GAAG,GAAG,EAAE,IAAI,MAAM,MAAM,GAAG;CACnD;CAEA,QAAQ,gBAAgB,OAAO,QAAQ,CAAC,MAAM;EAC5C,IAAI,SAAS;EACb,IAAI,OAAO,WAAW,IAAI,GAAG;GAC3B,SAAS,OAAO,MAAM,CAAC;GACvB,MAAM,SAAS;EACjB;EACA,OAAO;CACT;CAEA,QAAQ,cAAc,OAAO,QAAQ,CAAC,GAAG,UAAU,CAAC,MAAM;EAIxD,IAAI,SAAS,GAHG,QAAQ,WAAW,KAAK,IAGhB,KAAK,MAAM,GAFpB,QAAQ,WAAW,KAAK;EAGvC,IAAI,MAAM,YAAY,MACpB,SAAS,UAAU,OAAO;EAE5B,OAAO;CACT;;;;;CC7DA,IAAM,QAAA,cAAA;CACN,IAAM,EACJ,eACA,SACA,qBACA,YACA,UACA,uBACA,oBACA,uBACA,uBACA,0BACA,WACA,oBACA,wBACA,wBACA,8BAAA,kBAAA;CAGF,IAAM,mBAAkB,SAAQ;EAC9B,OAAO,SAAS,sBAAsB,SAAS;CACjD;CAEA,IAAM,SAAQ,UAAS;EACrB,IAAI,MAAM,aAAa,MACrB,MAAM,QAAQ,MAAM,aAAa,WAAW;CAEhD;;;;;;;;;;;;;;;;;CAmBA,IAAM,QAAQ,OAAO,YAAY;EAC/B,MAAM,OAAO,WAAW,CAAC;EAEzB,MAAM,SAAS,MAAM,SAAS;EAC9B,MAAM,YAAY,KAAK,UAAU,QAAQ,KAAK,cAAc;EAC5D,MAAM,UAAU,CAAC;EACjB,MAAM,SAAS,CAAC;EAChB,MAAM,QAAQ,CAAC;EAEf,IAAI,MAAM;EACV,IAAI,QAAQ;EACZ,IAAI,QAAQ;EACZ,IAAI,YAAY;EAChB,IAAI,UAAU;EACd,IAAI,YAAY;EAChB,IAAI,SAAS;EACb,IAAI,YAAY;EAChB,IAAI,aAAa;EACjB,IAAI,eAAe;EACnB,IAAI,cAAc;EAClB,IAAI,UAAU;EACd,IAAI,iBAAiB;EACrB,IAAI,WAAW;EACf,IAAI,SAAS;EACb,IAAI;EACJ,IAAI;EACJ,IAAI,QAAQ;GAAE,OAAO;GAAI,OAAO;GAAG,QAAQ;EAAM;EAEjD,MAAM,YAAY,SAAS;EAC3B,MAAM,aAAa,IAAI,WAAW,QAAQ,CAAC;EAC3C,MAAM,gBAAgB;GACpB,OAAO;GACP,OAAO,IAAI,WAAW,EAAE,KAAK;EAC/B;EAEA,OAAO,QAAQ,QAAQ;GACrB,OAAO,QAAQ;GACf,IAAI;GAEJ,IAAI,SAAS,qBAAqB;IAChC,cAAc,MAAM,cAAc;IAClC,OAAO,QAAQ;IAEf,IAAI,SAAS,uBACX,eAAe;IAEjB;GACF;GAEA,IAAI,iBAAiB,QAAQ,SAAS,uBAAuB;IAC3D;IAEA,OAAO,IAAI,MAAM,SAAS,OAAO,QAAQ,IAAI;KAC3C,IAAI,SAAS,qBAAqB;MAChC,cAAc,MAAM,cAAc;MAClC,QAAQ;MACR;KACF;KAEA,IAAI,SAAS,uBAAuB;MAClC;MACA;KACF;KAEA,IAAI,iBAAiB,QAAQ,SAAS,aAAa,OAAO,QAAQ,OAAO,UAAU;MACjF,UAAU,MAAM,UAAU;MAC1B,SAAS,MAAM,SAAS;MACxB,WAAW;MAEX,IAAI,cAAc,MAChB;MAGF;KACF;KAEA,IAAI,iBAAiB,QAAQ,SAAS,YAAY;MAChD,UAAU,MAAM,UAAU;MAC1B,SAAS,MAAM,SAAS;MACxB,WAAW;MAEX,IAAI,cAAc,MAChB;MAGF;KACF;KAEA,IAAI,SAAS,wBAAwB;MACnC;MAEA,IAAI,WAAW,GAAG;OAChB,eAAe;OACf,UAAU,MAAM,UAAU;OAC1B,WAAW;OACX;MACF;KACF;IACF;IAEA,IAAI,cAAc,MAChB;IAGF;GACF;GAEA,IAAI,SAAS,oBAAoB;IAC/B,QAAQ,KAAK,KAAK;IAClB,OAAO,KAAK,KAAK;IACjB,QAAQ;KAAE,OAAO;KAAI,OAAO;KAAG,QAAQ;IAAM;IAE7C,IAAI,aAAa,MAAM;IACvB,IAAI,SAAS,YAAY,UAAW,QAAQ,GAAI;KAC9C,SAAS;KACT;IACF;IAEA,YAAY,QAAQ;IACpB;GACF;GAEA,IAAI,KAAK,UAAU;SACK,SAAS,aAC1B,SAAS,WACT,SAAS,iBACT,SAAS,sBACT,SAAS,2BAEQ,QAAQ,KAAK,MAAM,uBAAuB;KAC9D,SAAS,MAAM,SAAS;KACxB,YAAY,MAAM,YAAY;KAC9B,WAAW;KACX,IAAI,SAAS,yBAAyB,UAAU,OAC9C,iBAAiB;KAGnB,IAAI,cAAc,MAAM;MACtB,OAAO,IAAI,MAAM,SAAS,OAAO,QAAQ,IAAI;OAC3C,IAAI,SAAS,qBAAqB;QAChC,cAAc,MAAM,cAAc;QAClC,OAAO,QAAQ;QACf;OACF;OAEA,IAAI,SAAS,wBAAwB;QACnC,SAAS,MAAM,SAAS;QACxB,WAAW;QACX;OACF;MACF;MACA;KACF;KACA;IACF;;GAGF,IAAI,SAAS,eAAe;IAC1B,IAAI,SAAS,eAAe,aAAa,MAAM,aAAa;IAC5D,SAAS,MAAM,SAAS;IACxB,WAAW;IAEX,IAAI,cAAc,MAChB;IAEF;GACF;GAEA,IAAI,SAAS,oBAAoB;IAC/B,SAAS,MAAM,SAAS;IACxB,WAAW;IAEX,IAAI,cAAc,MAChB;IAEF;GACF;GAEA,IAAI,SAAS,0BAA0B;IACrC,OAAO,IAAI,MAAM,SAAS,OAAO,QAAQ,IAAI;KAC3C,IAAI,SAAS,qBAAqB;MAChC,cAAc,MAAM,cAAc;MAClC,QAAQ;MACR;KACF;KAEA,IAAI,SAAS,2BAA2B;MACtC,YAAY,MAAM,YAAY;MAC9B,SAAS,MAAM,SAAS;MACxB,WAAW;MACX;KACF;IACF;IAEA,IAAI,cAAc,MAChB;IAGF;GACF;GAEA,IAAI,KAAK,aAAa,QAAQ,SAAS,yBAAyB,UAAU,OAAO;IAC/E,UAAU,MAAM,UAAU;IAC1B;IACA;GACF;GAEA,IAAI,KAAK,YAAY,QAAQ,SAAS,uBAAuB;IAC3D,SAAS,MAAM,SAAS;IAExB,IAAI,cAAc,MAAM;KACtB,OAAO,IAAI,MAAM,SAAS,OAAO,QAAQ,IAAI;MAC3C,IAAI,SAAS,uBAAuB;OAClC,cAAc,MAAM,cAAc;OAClC,OAAO,QAAQ;OACf;MACF;MAEA,IAAI,SAAS,wBAAwB;OACnC,WAAW;OACX;MACF;KACF;KACA;IACF;IACA;GACF;GAEA,IAAI,WAAW,MAAM;IACnB,WAAW;IAEX,IAAI,cAAc,MAChB;IAGF;GACF;EACF;EAEA,IAAI,KAAK,UAAU,MAAM;GACvB,YAAY;GACZ,SAAS;EACX;EAEA,IAAI,OAAO;EACX,IAAI,SAAS;EACb,IAAI,OAAO;EAEX,IAAI,QAAQ,GAAG;GACb,SAAS,IAAI,MAAM,GAAG,KAAK;GAC3B,MAAM,IAAI,MAAM,KAAK;GACrB,aAAa;EACf;EAEA,IAAI,QAAQ,WAAW,QAAQ,YAAY,GAAG;GAC5C,OAAO,IAAI,MAAM,GAAG,SAAS;GAC7B,OAAO,IAAI,MAAM,SAAS;EAC5B,OAAO,IAAI,WAAW,MAAM;GAC1B,OAAO;GACP,OAAO;EACT,OACE,OAAO;EAGT,IAAI,QAAQ,SAAS,MAAM,SAAS,OAAO,SAAS;OAC9C,gBAAgB,KAAK,WAAW,KAAK,SAAS,CAAC,CAAC,GAClD,OAAO,KAAK,MAAM,GAAG,EAAE;EAAA;EAI3B,IAAI,KAAK,aAAa,MAAM;GAC1B,IAAI,MAAM,OAAO,MAAM,kBAAkB,IAAI;GAE7C,IAAI,QAAQ,gBAAgB,MAC1B,OAAO,MAAM,kBAAkB,IAAI;EAEvC;EAEA,MAAM,QAAQ;GACZ;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF;EAEA,IAAI,KAAK,WAAW,MAAM;GACxB,MAAM,WAAW;GACjB,IAAI,CAAC,gBAAgB,IAAI,GACvB,OAAO,KAAK,KAAK;GAEnB,MAAM,SAAS;EACjB;EAEA,IAAI,KAAK,UAAU,QAAQ,KAAK,WAAW,MAAM;GAC/C,IAAI;GAEJ,KAAK,IAAI,MAAM,GAAG,MAAM,QAAQ,QAAQ,OAAO;IAC7C,MAAM,IAAI,YAAY,YAAY,IAAI;IACtC,MAAM,IAAI,QAAQ;IAClB,MAAM,QAAQ,MAAM,MAAM,GAAG,CAAC;IAC9B,IAAI,KAAK,QAAQ;KACf,IAAI,QAAQ,KAAK,UAAU,GAAG;MAC5B,OAAO,IAAI,CAAC,WAAW;MACvB,OAAO,IAAI,CAAC,QAAQ;KACtB,OACE,OAAO,IAAI,CAAC,QAAQ;KAEtB,MAAM,OAAO,IAAI;KACjB,MAAM,YAAY,OAAO,IAAI,CAAC;IAChC;IACA,IAAI,QAAQ,KAAK,UAAU,IACzB,MAAM,KAAK,KAAK;IAElB,YAAY;GACd;GAEA,IAAI,aAAa,YAAY,IAAI,MAAM,QAAQ;IAC7C,MAAM,QAAQ,MAAM,MAAM,YAAY,CAAC;IACvC,MAAM,KAAK,KAAK;IAEhB,IAAI,KAAK,QAAQ;KACf,OAAO,OAAO,SAAS,EAAE,CAAC,QAAQ;KAClC,MAAM,OAAO,OAAO,SAAS,EAAE;KAC/B,MAAM,YAAY,OAAO,OAAO,SAAS,EAAE,CAAC;IAC9C;GACF;GAEA,MAAM,UAAU;GAChB,MAAM,QAAQ;EAChB;EAEA,OAAO;CACT;CAEA,OAAO,UAAU;;;;;CCpYjB,IAAM,YAAA,kBAAA;CACN,IAAM,QAAA,cAAA;;;;CAMN,IAAM,EACJ,YACA,oBACA,yBACA,6BACA,iBACE;;;;CAMJ,IAAM,eAAe,MAAM,YAAY;EACrC,IAAI,OAAO,QAAQ,gBAAgB,YACjC,OAAO,QAAQ,YAAY,GAAG,MAAM,OAAO;EAG7C,KAAK,KAAK;EACV,MAAM,QAAQ,IAAI,KAAK,KAAK,GAAG,EAAE;EAEjC,IAAI;GAEF,IAAI,OAAO,KAAK;EAClB,SAAS,IAAI;GACX,OAAO,KAAK,KAAI,MAAK,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;EACtD;EAEA,OAAO;CACT;;;;CAMA,IAAM,eAAe,MAAM,SAAS;EAClC,OAAO,WAAW,KAAK,KAAK,KAAK,eAAe,KAAK;CACvD;CAEA,IAAM,iBAAgB,UAAS;EAC7B,MAAM,QAAQ,CAAC;EACf,IAAI,UAAU;EACd,IAAI,QAAQ;EACZ,IAAI,QAAQ;EACZ,IAAI,QAAQ;EACZ,IAAI,UAAU;EAEd,KAAK,MAAM,MAAM,OAAO;GACtB,IAAI,YAAY,MAAM;IACpB,SAAS;IACT,UAAU;IACV;GACF;GAEA,IAAI,OAAO,MAAM;IACf,SAAS;IACT,UAAU;IACV;GACF;GAEA,IAAI,OAAO,MAAK;IACd,QAAQ,UAAU,IAAI,IAAI;IAC1B,SAAS;IACT;GACF;GAEA,IAAI,UAAU;QACR,OAAO,KACT;SACK,IAAI,OAAO,OAAO,UAAU,GACjC;SACK,IAAI,YAAY;SACjB,OAAO,KACT;UACK,IAAI,OAAO,OAAO,QAAQ,GAC/B;UACK,IAAI,OAAO,OAAO,UAAU,GAAG;MACpC,MAAM,KAAK,KAAK;MAChB,QAAQ;MACR;KACF;;;GAIJ,SAAS;EACX;EAEA,MAAM,KAAK,KAAK;EAChB,OAAO;CACT;CAEA,IAAM,iBAAgB,WAAU;EAC9B,IAAI,UAAU;EAEd,KAAK,MAAM,MAAM,QAAQ;GACvB,IAAI,YAAY,MAAM;IACpB,UAAU;IACV;GACF;GAEA,IAAI,OAAO,MAAM;IACf,UAAU;IACV;GACF;GAEA,IAAI,iBAAiB,KAAK,EAAE,GAC1B,OAAO;EAEX;EAEA,OAAO;CACT;CAEA,IAAM,yBAAwB,WAAU;EACtC,IAAI,QAAQ,OAAO,KAAK;EACxB,IAAI,UAAU;EAEd,OAAO,YAAY,MAAM;GACvB,UAAU;GAEV,IAAI,wBAAwB,KAAK,KAAK,GAAG;IACvC,QAAQ,MAAM,MAAM,GAAG,EAAE;IACzB,UAAU;GACZ;EACF;EAEA,IAAI,CAAC,cAAc,KAAK,GACtB;EAGF,OAAO,MAAM,QAAQ,UAAU,IAAI;CACrC;CAEA,IAAM,gCAA+B,aAAY;EAC/C,MAAM,SAAS,SAAS,IAAI,qBAAqB,CAAC,CAAC,OAAO,OAAO;EAEjE,KAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KACjC,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;GAC1C,MAAM,IAAI,OAAO;GACjB,MAAM,IAAI,OAAO;GACjB,MAAM,OAAO,EAAE;GAEf,IAAI,CAAC,QAAQ,MAAM,KAAK,OAAO,EAAE,MAAM,KAAK,MAAM,KAAK,OAAO,EAAE,MAAM,GACpE;GAGF,IAAI,MAAM,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,GAC9C,OAAO;EAEX;EAGF,OAAO;CACT;CAEA,IAAM,wBAAwB,SAAS,aAAa,SAAS;EAC3D,IAAK,QAAQ,OAAO,OAAO,QAAQ,OAAO,OAAQ,QAAQ,OAAO,KAC/D;EAGF,IAAI,UAAU;EACd,IAAI,QAAQ;EACZ,IAAI,QAAQ;EACZ,IAAI,UAAU;EAEd,KAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;GACvC,MAAM,KAAK,QAAQ;GAEnB,IAAI,YAAY,MAAM;IACpB,UAAU;IACV;GACF;GAEA,IAAI,OAAO,MAAM;IACf,UAAU;IACV;GACF;GAEA,IAAI,OAAO,MAAK;IACd,QAAQ,UAAU,IAAI,IAAI;IAC1B;GACF;GAEA,IAAI,UAAU,GACZ;GAGF,IAAI,OAAO,KAAK;IACd;IACA;GACF;GAEA,IAAI,OAAO,OAAO,UAAU,GAAG;IAC7B;IACA;GACF;GAEA,IAAI,UAAU,GACZ;GAGF,IAAI,OAAO,KAAK;IACd;IACA;GACF;GAEA,IAAI,OAAO,KAAK;IACd;IAEA,IAAI,UAAU,GAAG;KACf,IAAI,eAAe,QAAQ,MAAM,QAAQ,SAAS,GAChD;KAGF,OAAO;MACL,MAAM,QAAQ;MACd,MAAM,QAAQ,MAAM,GAAG,CAAC;MACxB,KAAK;KACP;IACF;GACF;EACF;CACF;CAEA,IAAM,gCAA+B,YAAW;EAC9C,IAAI,QAAQ;EACZ,MAAM,QAAQ,CAAC;EAEf,OAAO,QAAQ,QAAQ,QAAQ;GAC7B,MAAM,QAAQ,qBAAqB,QAAQ,MAAM,KAAK,GAAG,KAAK;GAE9D,IAAI,CAAC,SAAS,MAAM,SAAS,KAC3B;GAGF,MAAM,WAAW,cAAc,MAAM,IAAI,CAAC,CAAC,KAAI,WAAU,OAAO,KAAK,CAAC;GACtE,IAAI,SAAS,WAAW,GACtB;GAGF,MAAM,SAAS,sBAAsB,SAAS,EAAE;GAChD,IAAI,CAAC,UAAU,OAAO,WAAW,GAC/B;GAGF,MAAM,KAAK,MAAM;GACjB,SAAS,MAAM,MAAM;EACvB;EAEA,IAAI,MAAM,SAAS,GACjB;EAOF,OAAO,GAJQ,MAAM,WAAW,IAC5B,MAAM,YAAY,MAAM,EAAE,IAC1B,IAAI,MAAM,KAAI,OAAM,MAAM,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,GAEvC;CACnB;CAEA,IAAM,4BAA2B,YAAW;EAC1C,IAAI,QAAQ;EACZ,IAAI,QAAQ,QAAQ,KAAK;EACzB,IAAI,QAAQ,qBAAqB,KAAK;EAEtC,OAAO,OAAO;GACZ;GACA,QAAQ,MAAM,KAAK,KAAK;GACxB,QAAQ,qBAAqB,KAAK;EACpC;EAEA,OAAO;CACT;CAEA,IAAM,0BAA0B,MAAM,YAAY;EAChD,IAAI,QAAQ,wBAAwB,OAClC,OAAO,EAAE,OAAO,MAAM;EAGxB,MAAM,MACJ,OAAO,QAAQ,wBAAwB,WACnC,QAAQ,sBACR,UAAU;EAEhB,MAAM,WAAW,cAAc,IAAI,CAAC,CAAC,KAAI,WAAU,OAAO,KAAK,CAAC;EAEhE,IAAI,SAAS,SAAS;OAElB,SAAS,MAAK,WAAU,WAAW,EAAE,KACrC,SAAS,MAAK,WAAU,UAAU,KAAK,MAAM,CAAC,KAC9C,6BAA6B,QAAQ,GAErC,OAAO,EAAE,OAAO,KAAK;EAAA;EAIzB,KAAK,MAAM,UAAU,UAAU;GAC7B,MAAM,aAAa,6BAA6B,MAAM;GACtD,IAAI,YACF,OAAO;IAAE,OAAO;IAAM;GAAW;GAGnC,IAAI,yBAAyB,MAAM,IAAI,KACrC,OAAO,EAAE,OAAO,KAAK;EAEzB;EAEA,OAAO,EAAE,OAAO,MAAM;CACxB;;;;;;;CASA,IAAM,SAAS,OAAO,YAAY;EAChC,IAAI,OAAO,UAAU,UACnB,MAAM,IAAI,UAAU,mBAAmB;EAGzC,QAAQ,aAAa,UAAU;EAE/B,MAAM,OAAO,EAAE,GAAG,QAAQ;EAC1B,MAAM,MAAM,OAAO,KAAK,cAAc,WAAW,KAAK,IAAI,YAAY,KAAK,SAAS,IAAI;EAExF,IAAI,MAAM,MAAM;EAChB,IAAI,MAAM,KACR,MAAM,IAAI,YAAY,iBAAiB,IAAI,oCAAoC,KAAK;EAGtF,MAAM,MAAM;GAAE,MAAM;GAAO,OAAO;GAAI,QAAQ,KAAK,WAAW;EAAG;EACjE,MAAM,SAAS,CAAC,GAAG;EAEnB,MAAM,UAAU,KAAK,UAAU,KAAK;EACpC,MAAM,QAAQ,MAAM,UAAU,OAAO;EAGrC,MAAM,iBAAiB,UAAU,UAAU,KAAK;EAChD,MAAM,gBAAgB,UAAU,aAAa,cAAc;EAE3D,MAAM,EACJ,aACA,cACA,eACA,UACA,YACA,QACA,cACA,eACA,OACA,cACA,MACA,iBACE;EAEJ,MAAM,YAAW,SAAQ;GACvB,OAAO,IAAI,QAAQ,QAAQ,eAAe,KAAK,MAAM,aAAa,YAAY;EAChF;EAEA,MAAM,QAAQ,KAAK,MAAM,KAAK;EAC9B,MAAM,aAAa,KAAK,MAAM,QAAQ;EACtC,IAAI,OAAO,KAAK,SAAS,OAAO,SAAS,IAAI,IAAI;EAEjD,IAAI,KAAK,SACP,OAAO,IAAI,KAAK;EAIlB,IAAI,OAAO,KAAK,UAAU,WACxB,KAAK,YAAY,KAAK;EAGxB,MAAM,QAAQ;GACZ;GACA,OAAO;GACP,OAAO;GACP,KAAK,KAAK,QAAQ;GAClB,UAAU;GACV,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,SAAS;GACT,UAAU;GACV,QAAQ;GACR,QAAQ;GACR,QAAQ;GACR,UAAU;GACV;EACF;EAEA,QAAQ,MAAM,aAAa,OAAO,KAAK;EACvC,MAAM,MAAM;EAEZ,MAAM,WAAW,CAAC;EAClB,MAAM,SAAS,CAAC;EAChB,MAAM,QAAQ,CAAC;EACf,IAAI,OAAO;EACX,IAAI;;;;EAMJ,MAAM,YAAY,MAAM,UAAU,MAAM;EACxC,MAAM,OAAO,MAAM,QAAQ,IAAI,MAAM,MAAM,MAAM,QAAQ;EACzD,MAAM,UAAU,MAAM,gBAAgB,MAAM,EAAE,MAAM,UAAU;EAC9D,MAAM,kBAAkB,MAAM,MAAM,MAAM,QAAQ,CAAC;EACnD,MAAM,WAAW,QAAQ,IAAI,MAAM,MAAM;GACvC,MAAM,YAAY;GAClB,MAAM,SAAS;EACjB;EAEA,MAAM,UAAS,UAAS;GACtB,MAAM,UAAU,MAAM,UAAU,OAAO,MAAM,SAAS,MAAM;GAC5D,QAAQ,MAAM,KAAK;EACrB;EAEA,MAAM,eAAe;GACnB,IAAI,QAAQ;GAEZ,OAAO,KAAK,MAAM,QAAQ,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,MAAM,MAAM;IAC7D,QAAQ;IACR,MAAM;IACN;GACF;GAEA,IAAI,QAAQ,MAAM,GAChB,OAAO;GAGT,MAAM,UAAU;GAChB,MAAM;GACN,OAAO;EACT;EAEA,MAAM,aAAY,SAAQ;GACxB,MAAM,KAAK;GACX,MAAM,KAAK,IAAI;EACjB;EAEA,MAAM,aAAY,SAAQ;GACxB,MAAM,KAAK;GACX,MAAM,IAAI;EACZ;;;;;;;;EAUA,MAAM,QAAO,QAAO;GAClB,IAAI,KAAK,SAAS,YAAY;IAC5B,MAAM,UAAU,MAAM,SAAS,MAAM,IAAI,SAAS,WAAW,IAAI,SAAS;IAC1E,MAAM,YAAY,IAAI,YAAY,QAAS,SAAS,WAAW,IAAI,SAAS,UAAU,IAAI,SAAS;IAEnG,IAAI,IAAI,SAAS,WAAW,IAAI,SAAS,WAAW,CAAC,WAAW,CAAC,WAAW;KAC1E,MAAM,SAAS,MAAM,OAAO,MAAM,GAAG,CAAC,KAAK,OAAO,MAAM;KACxD,KAAK,OAAO;KACZ,KAAK,QAAQ;KACb,KAAK,SAAS;KACd,MAAM,UAAU,KAAK;IACvB;GACF;GAEA,IAAI,SAAS,UAAU,IAAI,SAAS,SAClC,SAAS,SAAS,SAAS,EAAE,CAAC,SAAS,IAAI;GAG7C,IAAI,IAAI,SAAS,IAAI,QAAQ,OAAO,GAAG;GACvC,IAAI,QAAQ,KAAK,SAAS,UAAU,IAAI,SAAS,QAAQ;IACvD,KAAK,SAAS,IAAI;IAClB,KAAK,UAAU,KAAK,UAAU,MAAM,IAAI;IACxC;GACF;GAEA,IAAI,OAAO;GACX,OAAO,KAAK,GAAG;GACf,OAAO;EACT;EAEA,MAAM,eAAe,MAAM,UAAU;GACnC,MAAM,QAAQ;IAAE,GAAG,cAAc;IAAQ,YAAY;IAAG,OAAO;GAAG;GAElE,MAAM,OAAO;GACb,MAAM,SAAS,MAAM;GACrB,MAAM,SAAS,MAAM;GACrB,MAAM,aAAa,MAAM;GACzB,MAAM,cAAc,OAAO;GAC3B,MAAM,UAAU,KAAK,UAAU,MAAM,MAAM,MAAM;GAEjD,UAAU,QAAQ;GAClB,KAAK;IAAE;IAAM;IAAO,QAAQ,MAAM,SAAS,KAAK;GAAS,CAAC;GAC1D,KAAK;IAAE,MAAM;IAAS,SAAS;IAAM,OAAO,QAAQ;IAAG;GAAO,CAAC;GAC/D,SAAS,KAAK,KAAK;EACrB;EAEA,MAAM,gBAAe,UAAS;GAC5B,MAAM,UAAU,MAAM,MAAM,MAAM,YAAY,MAAM,QAAQ,CAAC;GAE7D,MAAM,WAAW,uBADJ,MAAM,MAAM,MAAM,aAAa,GAAG,MAAM,KACb,GAAM,IAAI;GAElD,KAAK,MAAM,SAAS,UAAU,MAAM,SAAS,WAAW,SAAS,OAAO;IACtE,MAAM,aAAa,SAAS,cACvB,MAAM,SAAS,KAAK,aAAa,KAAK,UAAU,IAAI,SAAS,WAAW,KAAK,SAAS,cACvF,KAAA;IACJ,MAAM,OAAO,OAAO,MAAM;IAE1B,KAAK,OAAO;IACZ,KAAK,QAAQ;IACb,KAAK,SAAS,cAAc,MAAM,YAAY,OAAO;IAErD,KAAK,IAAI,IAAI,MAAM,cAAc,GAAG,IAAI,OAAO,QAAQ,KAAK;KAC1D,OAAO,EAAE,CAAC,QAAQ;KAClB,OAAO,EAAE,CAAC,SAAS;KACnB,OAAO,OAAO,EAAE,CAAC;IACnB;IAEA,MAAM,SAAS,MAAM,SAAS,KAAK;IACnC,MAAM,YAAY;IAElB,KAAK;KAAE,MAAM;KAAS,SAAS;KAAM;KAAO,QAAQ;IAAG,CAAC;IACxD,UAAU,QAAQ;IAClB;GACF;GAEA,IAAI,SAAS,MAAM,SAAS,KAAK,UAAU,MAAM;GACjD,IAAI;GAEJ,IAAI,MAAM,SAAS,UAAU;IAC3B,IAAI,cAAc;IAElB,IAAI,MAAM,SAAS,MAAM,MAAM,SAAS,KAAK,MAAM,MAAM,SAAS,GAAG,GACnE,cAAc,SAAS,IAAI;IAG7B,IAAI,gBAAgB,QAAQ,IAAI,KAAK,QAAQ,KAAK,UAAU,CAAC,GAC3D,SAAS,MAAM,QAAQ,OAAO;IAGhC,IAAI,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,UAAU,MAAM,eAAe,KAAK,IAAI,GAQ/E,SAAS,MAAM,QAAQ,IAFJ,MAAM,MAAM;KAAE,GAAG;KAAS,WAAW;IAAM,CAAC,CAAC,CAAC,OAE3B,GAAG,YAAY;IAGvD,IAAI,MAAM,KAAK,SAAS,OACtB,MAAM,iBAAiB;GAE3B;GAEA,KAAK;IAAE,MAAM;IAAS,SAAS;IAAM;IAAO;GAAO,CAAC;GACpD,UAAU,QAAQ;EACpB;;;;EAMA,IAAI,KAAK,cAAc,SAAS,CAAC,sBAAsB,KAAK,KAAK,GAAG;GAClE,IAAI,cAAc;GAElB,IAAI,SAAS,MAAM,QAAQ,8BAA8B,GAAG,KAAK,OAAO,OAAO,MAAM,UAAU;IAC7F,IAAI,UAAU,MAAM;KAClB,cAAc;KACd,OAAO;IACT;IAEA,IAAI,UAAU,KAAK;KACjB,IAAI,KACF,OAAO,MAAM,SAAS,OAAO,MAAM,OAAO,KAAK,MAAM,IAAI;KAE3D,IAAI,UAAU,GACZ,OAAO,cAAc,OAAO,MAAM,OAAO,KAAK,MAAM,IAAI;KAE1D,OAAO,MAAM,OAAO,MAAM,MAAM;IAClC;IAEA,IAAI,UAAU,KACZ,OAAO,YAAY,OAAO,MAAM,MAAM;IAGxC,IAAI,UAAU,KAAK;KACjB,IAAI,KACF,OAAO,MAAM,SAAS,OAAO,OAAO;KAEtC,OAAO;IACT;IACA,OAAO,MAAM,IAAI,KAAK;GACxB,CAAC;GAED,IAAI,gBAAgB,MAClB,IAAI,KAAK,aAAa,MACpB,SAAS,OAAO,QAAQ,OAAO,EAAE;QAEjC,SAAS,OAAO,QAAQ,SAAQ,MAAK;IACnC,OAAO,EAAE,SAAS,MAAM,IAAI,SAAU,IAAI,OAAO;GACnD,CAAC;GAIL,IAAI,WAAW,SAAS,KAAK,aAAa,MAAM;IAC9C,MAAM,SAAS;IACf,OAAO;GACT;GAEA,MAAM,SAAS,MAAM,WAAW,QAAQ,OAAO,OAAO;GACtD,OAAO;EACT;;;;EAMA,OAAO,CAAC,IAAI,GAAG;GACb,QAAQ,QAAQ;GAEhB,IAAI,UAAU,MACZ;;;;GAOF,IAAI,UAAU,MAAM;IAClB,MAAM,OAAO,KAAK;IAElB,IAAI,SAAS,OAAO,KAAK,SAAS,MAChC;IAGF,IAAI,SAAS,OAAO,SAAS,KAC3B;IAGF,IAAI,CAAC,MAAM;KACT,SAAS;KACT,KAAK;MAAE,MAAM;MAAQ;KAAM,CAAC;KAC5B;IACF;IAGA,MAAM,QAAQ,OAAO,KAAK,UAAU,CAAC;IACrC,IAAI,UAAU;IAEd,IAAI,SAAS,MAAM,EAAE,CAAC,SAAS,GAAG;KAChC,UAAU,MAAM,EAAE,CAAC;KACnB,MAAM,SAAS;KACf,IAAI,UAAU,MAAM,GAClB,SAAS;IAEb;IAEA,IAAI,KAAK,aAAa,MACpB,QAAQ,QAAQ;SAEhB,SAAS,QAAQ;IAGnB,IAAI,MAAM,aAAa,GAAG;KACxB,KAAK;MAAE,MAAM;MAAQ;KAAM,CAAC;KAC5B;IACF;GACF;;;;;GAOA,IAAI,MAAM,WAAW,MAAM,UAAU,OAAO,KAAK,UAAU,OAAO,KAAK,UAAU,OAAO;IACtF,IAAI,KAAK,UAAU,SAAS,UAAU,KAAK;KACzC,MAAM,QAAQ,KAAK,MAAM,MAAM,CAAC;KAChC,IAAI,MAAM,SAAS,GAAG,GAAG;MACvB,KAAK,QAAQ;MAEb,IAAI,MAAM,SAAS,GAAG,GAAG;OACvB,MAAM,MAAM,KAAK,MAAM,YAAY,GAAG;OACtC,MAAM,MAAM,KAAK,MAAM,MAAM,GAAG,GAAG;OAEnC,MAAM,QAAQ,mBADD,KAAK,MAAM,MAAM,MAAM,CACH;OACjC,IAAI,OAAO;QACT,KAAK,QAAQ,MAAM;QACnB,MAAM,YAAY;QAClB,QAAQ;QAER,IAAI,CAAC,IAAI,UAAU,OAAO,QAAQ,IAAI,MAAM,GAC1C,IAAI,SAAS;QAEf;OACF;MACF;KACF;IACF;IAEA,IAAK,UAAU,OAAO,KAAK,MAAM,OAAS,UAAU,OAAO,KAAK,MAAM,KACpE,QAAQ,KAAK;IAGf,IAAI,UAAU,QAAQ,KAAK,UAAU,OAAO,KAAK,UAAU,OACzD,QAAQ,KAAK;IAGf,IAAI,KAAK,UAAU,QAAQ,UAAU,OAAO,KAAK,UAAU,KACzD,QAAQ;IAGV,KAAK,SAAS;IACd,OAAO,EAAE,MAAM,CAAC;IAChB;GACF;;;;;GAOA,IAAI,MAAM,WAAW,KAAK,UAAU,MAAK;IACvC,QAAQ,MAAM,YAAY,KAAK;IAC/B,KAAK,SAAS;IACd,OAAO,EAAE,MAAM,CAAC;IAChB;GACF;;;;GAMA,IAAI,UAAU,MAAK;IACjB,MAAM,SAAS,MAAM,WAAW,IAAI,IAAI;IACxC,IAAI,KAAK,eAAe,MACtB,KAAK;KAAE,MAAM;KAAQ;IAAM,CAAC;IAE9B;GACF;;;;GAMA,IAAI,UAAU,KAAK;IACjB,UAAU,QAAQ;IAClB,KAAK;KAAE,MAAM;KAAS;IAAM,CAAC;IAC7B;GACF;GAEA,IAAI,UAAU,KAAK;IACjB,IAAI,MAAM,WAAW,KAAK,KAAK,mBAAmB,MAChD,MAAM,IAAI,YAAY,YAAY,WAAW,GAAG,CAAC;IAGnD,MAAM,UAAU,SAAS,SAAS,SAAS;IAC3C,IAAI,WAAW,MAAM,WAAW,QAAQ,SAAS,GAAG;KAClD,aAAa,SAAS,IAAI,CAAC;KAC3B;IACF;IAEA,KAAK;KAAE,MAAM;KAAS;KAAO,QAAQ,MAAM,SAAS,MAAM;IAAM,CAAC;IACjE,UAAU,QAAQ;IAClB;GACF;;;;GAMA,IAAI,UAAU,KAAK;IACjB,IAAI,KAAK,cAAc,QAAQ,CAAC,UAAU,CAAC,CAAC,SAAS,GAAG,GAAG;KACzD,IAAI,KAAK,cAAc,QAAQ,KAAK,mBAAmB,MACrD,MAAM,IAAI,YAAY,YAAY,WAAW,GAAG,CAAC;KAGnD,QAAQ,KAAK;IACf,OACE,UAAU,UAAU;IAGtB,KAAK;KAAE,MAAM;KAAW;IAAM,CAAC;IAC/B;GACF;GAEA,IAAI,UAAU,KAAK;IACjB,IAAI,KAAK,cAAc,QAAS,QAAQ,KAAK,SAAS,aAAa,KAAK,MAAM,WAAW,GAAI;KAC3F,KAAK;MAAE,MAAM;MAAQ;MAAO,QAAQ,KAAK;KAAQ,CAAC;KAClD;IACF;IAEA,IAAI,MAAM,aAAa,GAAG;KACxB,IAAI,KAAK,mBAAmB,MAC1B,MAAM,IAAI,YAAY,YAAY,WAAW,GAAG,CAAC;KAGnD,KAAK;MAAE,MAAM;MAAQ;MAAO,QAAQ,KAAK;KAAQ,CAAC;KAClD;IACF;IAEA,UAAU,UAAU;IAEpB,MAAM,YAAY,KAAK,MAAM,MAAM,CAAC;IACpC,IAAI,KAAK,UAAU,QAAQ,UAAU,OAAO,OAAO,CAAC,UAAU,SAAS,GAAG,GACxE,QAAQ,IAAI;IAGd,KAAK,SAAS;IACd,OAAO,EAAE,MAAM,CAAC;IAIhB,IAAI,KAAK,oBAAoB,SAAS,MAAM,cAAc,SAAS,GACjE;IAGF,MAAM,UAAU,MAAM,YAAY,KAAK,KAAK;IAC5C,MAAM,SAAS,MAAM,OAAO,MAAM,GAAG,CAAC,KAAK,MAAM,MAAM;IAIvD,IAAI,KAAK,oBAAoB,MAAM;KACjC,MAAM,UAAU;KAChB,KAAK,QAAQ;KACb;IACF;IAGA,KAAK,QAAQ,IAAI,UAAU,QAAQ,GAAG,KAAK,MAAM;IACjD,MAAM,UAAU,KAAK;IACrB;GACF;;;;GAMA,IAAI,UAAU,OAAO,KAAK,YAAY,MAAM;IAC1C,UAAU,QAAQ;IAElB,MAAM,OAAO;KACX,MAAM;KACN;KACA,QAAQ;KACR,aAAa,MAAM,OAAO;KAC1B,aAAa,MAAM,OAAO;IAC5B;IAEA,OAAO,KAAK,IAAI;IAChB,KAAK,IAAI;IACT;GACF;GAEA,IAAI,UAAU,KAAK;IACjB,MAAM,QAAQ,OAAO,OAAO,SAAS;IAErC,IAAI,KAAK,YAAY,QAAQ,CAAC,OAAO;KACnC,KAAK;MAAE,MAAM;MAAQ;MAAO,QAAQ;KAAM,CAAC;KAC3C;IACF;IAEA,IAAI,SAAS;IAEb,IAAI,MAAM,SAAS,MAAM;KACvB,MAAM,MAAM,OAAO,MAAM;KACzB,MAAM,QAAQ,CAAC;KAEf,KAAK,IAAI,IAAI,IAAI,SAAS,GAAG,KAAK,GAAG,KAAK;MACxC,OAAO,IAAI;MACX,IAAI,IAAI,EAAE,CAAC,SAAS,SAClB;MAEF,IAAI,IAAI,EAAE,CAAC,SAAS,QAClB,MAAM,QAAQ,IAAI,EAAE,CAAC,KAAK;KAE9B;KAEA,SAAS,YAAY,OAAO,IAAI;KAChC,MAAM,YAAY;IACpB;IAEA,IAAI,MAAM,UAAU,QAAQ,MAAM,SAAS,MAAM;KAC/C,MAAM,MAAM,MAAM,OAAO,MAAM,GAAG,MAAM,WAAW;KACnD,MAAM,OAAO,MAAM,OAAO,MAAM,MAAM,WAAW;KACjD,MAAM,QAAQ,MAAM,SAAS;KAC7B,QAAQ,SAAS;KACjB,MAAM,SAAS;KACf,KAAK,MAAM,KAAK,MACd,MAAM,UAAW,EAAE,UAAU,EAAE;IAEnC;IAEA,KAAK;KAAE,MAAM;KAAS;KAAO;IAAO,CAAC;IACrC,UAAU,QAAQ;IAClB,OAAO,IAAI;IACX;GACF;;;;GAMA,IAAI,UAAU,KAAK;IACjB,IAAI,SAAS,SAAS,GACpB,SAAS,SAAS,SAAS,EAAE,CAAC;IAEhC,KAAK;KAAE,MAAM;KAAQ;IAAM,CAAC;IAC5B;GACF;;;;GAMA,IAAI,UAAU,KAAK;IACjB,IAAI,SAAS;IAEb,MAAM,QAAQ,OAAO,OAAO,SAAS;IACrC,IAAI,SAAS,MAAM,MAAM,SAAS,OAAO,UAAU;KACjD,MAAM,QAAQ;KACd,SAAS;IACX;IAEA,KAAK;KAAE,MAAM;KAAS;KAAO;IAAO,CAAC;IACrC;GACF;;;;GAMA,IAAI,UAAU,KAAK;IAKjB,IAAI,KAAK,SAAS,SAAS,MAAM,UAAU,MAAM,QAAQ,GAAG;KAC1D,MAAM,QAAQ,MAAM,QAAQ;KAC5B,MAAM,WAAW;KACjB,MAAM,SAAS;KACf,OAAO,IAAI;KACX,OAAO;KACP;IACF;IAEA,KAAK;KAAE,MAAM;KAAS;KAAO,QAAQ;IAAc,CAAC;IACpD;GACF;;;;GAMA,IAAI,UAAU,KAAK;IACjB,IAAI,MAAM,SAAS,KAAK,KAAK,SAAS,OAAO;KAC3C,IAAI,KAAK,UAAU,KAAK,KAAK,SAAS;KACtC,MAAM,QAAQ,OAAO,OAAO,SAAS;KACrC,KAAK,OAAO;KACZ,KAAK,UAAU;KACf,KAAK,SAAS;KACd,MAAM,OAAO;KACb;IACF;IAEA,IAAK,MAAM,SAAS,MAAM,WAAY,KAAK,KAAK,SAAS,SAAS,KAAK,SAAS,SAAS;KACvF,KAAK;MAAE,MAAM;MAAQ;MAAO,QAAQ;KAAY,CAAC;KACjD;IACF;IAEA,KAAK;KAAE,MAAM;KAAO;KAAO,QAAQ;IAAY,CAAC;IAChD;GACF;;;;GAMA,IAAI,UAAU,KAAK;IAEjB,IAAI,EADY,QAAQ,KAAK,UAAU,QACvB,KAAK,cAAc,QAAQ,KAAK,MAAM,OAAO,KAAK,CAAC,MAAM,KAAK;KAC5E,YAAY,SAAS,KAAK;KAC1B;IACF;IAEA,IAAI,QAAQ,KAAK,SAAS,SAAS;KACjC,MAAM,OAAO,KAAK;KAClB,IAAI,SAAS;KAEb,IAAI,SAAS,OAAO,CAAC,MAAM,oBAAoB,GAC7C,MAAM,IAAI,MAAM,yDAAyD;KAG3E,IAAK,KAAK,UAAU,OAAO,CAAC,SAAS,KAAK,IAAI,KAAO,SAAS,OAAO,CAAC,eAAe,KAAK,UAAU,CAAC,GACnG,SAAS,KAAK;KAGhB,KAAK;MAAE,MAAM;MAAQ;MAAO;KAAO,CAAC;KACpC;IACF;IAEA,IAAI,KAAK,QAAQ,SAAS,KAAK,SAAS,WAAW,KAAK,SAAS,QAAQ;KACvE,KAAK;MAAE,MAAM;MAAS;MAAO,QAAQ;KAAa,CAAC;KACnD;IACF;IAEA,KAAK;KAAE,MAAM;KAAS;KAAO,QAAQ;IAAM,CAAC;IAC5C;GACF;;;;GAMA,IAAI,UAAU,KAAK;IACjB,IAAI,KAAK,cAAc,QAAQ,KAAK,MAAM;SACpC,KAAK,CAAC,MAAM,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,GAAG;MAC9C,YAAY,UAAU,KAAK;MAC3B;KACF;;IAGF,IAAI,KAAK,aAAa,QAAQ,MAAM,UAAU,GAAG;KAC/C,OAAO;KACP;IACF;GACF;;;;GAMA,IAAI,UAAU,KAAK;IACjB,IAAI,KAAK,cAAc,QAAQ,KAAK,MAAM,OAAO,KAAK,CAAC,MAAM,KAAK;KAChE,YAAY,QAAQ,KAAK;KACzB;IACF;IAEA,IAAK,QAAQ,KAAK,UAAU,OAAQ,KAAK,UAAU,OAAO;KACxD,KAAK;MAAE,MAAM;MAAQ;MAAO,QAAQ;KAAa,CAAC;KAClD;IACF;IAEA,IAAK,SAAS,KAAK,SAAS,aAAa,KAAK,SAAS,WAAW,KAAK,SAAS,YAAa,MAAM,SAAS,GAAG;KAC7G,KAAK;MAAE,MAAM;MAAQ;KAAM,CAAC;KAC5B;IACF;IAEA,KAAK;KAAE,MAAM;KAAQ,OAAO;IAAa,CAAC;IAC1C;GACF;;;;GAMA,IAAI,UAAU,KAAK;IACjB,IAAI,KAAK,cAAc,QAAQ,KAAK,MAAM,OAAO,KAAK,CAAC,MAAM,KAAK;KAChE,KAAK;MAAE,MAAM;MAAM,SAAS;MAAM;MAAO,QAAQ;KAAG,CAAC;KACrD;IACF;IAEA,KAAK;KAAE,MAAM;KAAQ;IAAM,CAAC;IAC5B;GACF;;;;GAMA,IAAI,UAAU,KAAK;IACjB,IAAI,UAAU,OAAO,UAAU,KAC7B,QAAQ,KAAK;IAGf,MAAM,QAAQ,wBAAwB,KAAK,UAAU,CAAC;IACtD,IAAI,OAAO;KACT,SAAS,MAAM;KACf,MAAM,SAAS,MAAM,EAAE,CAAC;IAC1B;IAEA,KAAK;KAAE,MAAM;KAAQ;IAAM,CAAC;IAC5B;GACF;;;;GAMA,IAAI,SAAS,KAAK,SAAS,cAAc,KAAK,SAAS,OAAO;IAC5D,KAAK,OAAO;IACZ,KAAK,OAAO;IACZ,KAAK,SAAS;IACd,KAAK,SAAS;IACd,MAAM,YAAY;IAClB,MAAM,WAAW;IACjB,QAAQ,KAAK;IACb;GACF;GAEA,IAAI,OAAO,UAAU;GACrB,IAAI,KAAK,cAAc,QAAQ,UAAU,KAAK,IAAI,GAAG;IACnD,YAAY,QAAQ,KAAK;IACzB;GACF;GAEA,IAAI,KAAK,SAAS,QAAQ;IACxB,IAAI,KAAK,eAAe,MAAM;KAC5B,QAAQ,KAAK;KACb;IACF;IAEA,MAAM,QAAQ,KAAK;IACnB,MAAM,SAAS,MAAM;IACrB,MAAM,UAAU,MAAM,SAAS,WAAW,MAAM,SAAS;IACzD,MAAM,YAAY,WAAW,OAAO,SAAS,UAAU,OAAO,SAAS;IAEvE,IAAI,KAAK,SAAS,SAAS,CAAC,WAAY,KAAK,MAAM,KAAK,OAAO,MAAO;KACpE,KAAK;MAAE,MAAM;MAAQ;MAAO,QAAQ;KAAG,CAAC;KACxC;IACF;IAEA,MAAM,UAAU,MAAM,SAAS,MAAM,MAAM,SAAS,WAAW,MAAM,SAAS;IAC9E,MAAM,YAAY,SAAS,WAAW,MAAM,SAAS,UAAU,MAAM,SAAS;IAC9E,IAAI,CAAC,WAAW,MAAM,SAAS,WAAW,CAAC,WAAW,CAAC,WAAW;KAChE,KAAK;MAAE,MAAM;MAAQ;MAAO,QAAQ;KAAG,CAAC;KACxC;IACF;IAGA,OAAO,KAAK,MAAM,GAAG,CAAC,MAAM,OAAO;KACjC,MAAM,QAAQ,MAAM,MAAM,QAAQ;KAClC,IAAI,SAAS,UAAU,KACrB;KAEF,OAAO,KAAK,MAAM,CAAC;KACnB,QAAQ,OAAO,CAAC;IAClB;IAEA,IAAI,MAAM,SAAS,SAAS,IAAI,GAAG;KACjC,KAAK,OAAO;KACZ,KAAK,SAAS;KACd,KAAK,SAAS,SAAS,IAAI;KAC3B,MAAM,SAAS,KAAK;KACpB,MAAM,WAAW;KACjB,QAAQ,KAAK;KACb;IACF;IAEA,IAAI,MAAM,SAAS,WAAW,MAAM,KAAK,SAAS,SAAS,CAAC,aAAa,IAAI,GAAG;KAC9E,MAAM,SAAS,MAAM,OAAO,MAAM,GAAG,EAAE,MAAM,SAAS,KAAK,OAAA,CAAQ,MAAM;KACzE,MAAM,SAAS,MAAM,MAAM;KAE3B,KAAK,OAAO;KACZ,KAAK,SAAS,SAAS,IAAI,KAAK,KAAK,gBAAgB,MAAM;KAC3D,KAAK,SAAS;KACd,MAAM,WAAW;KACjB,MAAM,UAAU,MAAM,SAAS,KAAK;KACpC,QAAQ,KAAK;KACb;IACF;IAEA,IAAI,MAAM,SAAS,WAAW,MAAM,KAAK,SAAS,SAAS,KAAK,OAAO,KAAK;KAC1E,MAAM,MAAM,KAAK,OAAO,KAAK,IAAI,OAAO;KAExC,MAAM,SAAS,MAAM,OAAO,MAAM,GAAG,EAAE,MAAM,SAAS,KAAK,OAAA,CAAQ,MAAM;KACzE,MAAM,SAAS,MAAM,MAAM;KAE3B,KAAK,OAAO;KACZ,KAAK,SAAS,GAAG,SAAS,IAAI,IAAI,cAAc,GAAG,gBAAgB,IAAI;KACvE,KAAK,SAAS;KAEd,MAAM,UAAU,MAAM,SAAS,KAAK;KACpC,MAAM,WAAW;KAEjB,QAAQ,QAAQ,QAAQ,CAAC;KAEzB,KAAK;MAAE,MAAM;MAAS,OAAO;MAAK,QAAQ;KAAG,CAAC;KAC9C;IACF;IAEA,IAAI,MAAM,SAAS,SAAS,KAAK,OAAO,KAAK;KAC3C,KAAK,OAAO;KACZ,KAAK,SAAS;KACd,KAAK,SAAS,QAAQ,cAAc,GAAG,SAAS,IAAI,IAAI,cAAc;KACtE,MAAM,SAAS,KAAK;KACpB,MAAM,WAAW;KACjB,QAAQ,QAAQ,QAAQ,CAAC;KACzB,KAAK;MAAE,MAAM;MAAS,OAAO;MAAK,QAAQ;KAAG,CAAC;KAC9C;IACF;IAGA,MAAM,SAAS,MAAM,OAAO,MAAM,GAAG,CAAC,KAAK,OAAO,MAAM;IAGxD,KAAK,OAAO;IACZ,KAAK,SAAS,SAAS,IAAI;IAC3B,KAAK,SAAS;IAGd,MAAM,UAAU,KAAK;IACrB,MAAM,WAAW;IACjB,QAAQ,KAAK;IACb;GACF;GAEA,MAAM,QAAQ;IAAE,MAAM;IAAQ;IAAO,QAAQ;GAAK;GAElD,IAAI,KAAK,SAAS,MAAM;IACtB,MAAM,SAAS;IACf,IAAI,KAAK,SAAS,SAAS,KAAK,SAAS,SACvC,MAAM,SAAS,QAAQ,MAAM;IAE/B,KAAK,KAAK;IACV;GACF;GAEA,IAAI,SAAS,KAAK,SAAS,aAAa,KAAK,SAAS,YAAY,KAAK,UAAU,MAAM;IACrF,MAAM,SAAS;IACf,KAAK,KAAK;IACV;GACF;GAEA,IAAI,MAAM,UAAU,MAAM,SAAS,KAAK,SAAS,WAAW,KAAK,SAAS,OAAO;IAC/E,IAAI,KAAK,SAAS,OAAO;KACvB,MAAM,UAAU;KAChB,KAAK,UAAU;IAEjB,OAAO,IAAI,KAAK,QAAQ,MAAM;KAC5B,MAAM,UAAU;KAChB,KAAK,UAAU;IAEjB,OAAO;KACL,MAAM,UAAU;KAChB,KAAK,UAAU;IACjB;IAEA,IAAI,KAAK,MAAM,KAAK;KAClB,MAAM,UAAU;KAChB,KAAK,UAAU;IACjB;GACF;GAEA,KAAK,KAAK;EACZ;EAEA,OAAO,MAAM,WAAW,GAAG;GACzB,IAAI,KAAK,mBAAmB,MAAM,MAAM,IAAI,YAAY,YAAY,WAAW,GAAG,CAAC;GACnF,MAAM,SAAS,MAAM,WAAW,MAAM,QAAQ,GAAG;GACjD,UAAU,UAAU;EACtB;EAEA,OAAO,MAAM,SAAS,GAAG;GACvB,IAAI,KAAK,mBAAmB,MAAM,MAAM,IAAI,YAAY,YAAY,WAAW,GAAG,CAAC;GACnF,MAAM,SAAS,MAAM,WAAW,MAAM,QAAQ,GAAG;GACjD,UAAU,QAAQ;EACpB;EAEA,OAAO,MAAM,SAAS,GAAG;GACvB,IAAI,KAAK,mBAAmB,MAAM,MAAM,IAAI,YAAY,YAAY,WAAW,GAAG,CAAC;GACnF,MAAM,SAAS,MAAM,WAAW,MAAM,QAAQ,GAAG;GACjD,UAAU,QAAQ;EACpB;EAEA,IAAI,KAAK,kBAAkB,SAAS,KAAK,SAAS,UAAU,KAAK,SAAS,YACxE,KAAK;GAAE,MAAM;GAAe,OAAO;GAAI,QAAQ,GAAG,cAAc;EAAG,CAAC;EAItE,IAAI,MAAM,cAAc,MAAM;GAC5B,MAAM,SAAS;GAEf,KAAK,MAAM,SAAS,MAAM,QAAQ;IAChC,MAAM,UAAU,MAAM,UAAU,OAAO,MAAM,SAAS,MAAM;IAE5D,IAAI,MAAM,QACR,MAAM,UAAU,MAAM;GAE1B;EACF;EAEA,OAAO;CACT;;;;;;CAQA,MAAM,aAAa,OAAO,YAAY;EACpC,MAAM,OAAO,EAAE,GAAG,QAAQ;EAC1B,MAAM,MAAM,OAAO,KAAK,cAAc,WAAW,KAAK,IAAI,YAAY,KAAK,SAAS,IAAI;EACxF,MAAM,MAAM,MAAM;EAClB,IAAI,MAAM,KACR,MAAM,IAAI,YAAY,iBAAiB,IAAI,oCAAoC,KAAK;EAGtF,QAAQ,aAAa,UAAU;EAC/B,MAAM,QAAQ,MAAM,UAAU,OAAO;EAGrC,MAAM,EACJ,aACA,eACA,UACA,YACA,QACA,SACA,eACA,MACA,iBACE,UAAU,UAAU,KAAK;EAE7B,MAAM,QAAQ,KAAK,MAAM,UAAU;EACnC,MAAM,WAAW,KAAK,MAAM,gBAAgB;EAC5C,MAAM,UAAU,KAAK,UAAU,KAAK;EACpC,MAAM,QAAQ;GAAE,SAAS;GAAO,QAAQ;EAAG;EAC3C,IAAI,OAAO,KAAK,SAAS,OAAO,QAAQ;EAExC,IAAI,KAAK,SACP,OAAO,IAAI,KAAK;EAGlB,MAAM,YAAW,SAAQ;GACvB,IAAI,KAAK,eAAe,MAAM,OAAO;GACrC,OAAO,IAAI,QAAQ,QAAQ,eAAe,KAAK,MAAM,aAAa,YAAY;EAChF;EAEA,MAAM,UAAS,QAAO;GACpB,QAAQ,KAAR;IACE,KAAK,KACH,OAAO,GAAG,QAAQ,WAAW;IAE/B,KAAK,MACH,OAAO,GAAG,cAAc,WAAW;IAErC,KAAK,OACH,OAAO,GAAG,QAAQ,OAAO,cAAc,WAAW;IAEpD,KAAK,OACH,OAAO,GAAG,QAAQ,OAAO,gBAAgB,WAAW,WAAW;IAEjE,KAAK,MACH,OAAO,QAAQ,SAAS,IAAI;IAE9B,KAAK,QACH,OAAO,MAAM,QAAQ,SAAS,IAAI,IAAI,cAAc,IAAI,WAAW,WAAW;IAEhF,KAAK,UACH,OAAO,MAAM,QAAQ,SAAS,IAAI,IAAI,cAAc,IAAI,WAAW,OAAO,cAAc,WAAW;IAErG,KAAK,SACH,OAAO,MAAM,QAAQ,SAAS,IAAI,IAAI,cAAc,IAAI,cAAc,WAAW;IAEnF,SAAS;KACP,MAAM,QAAQ,iBAAiB,KAAK,GAAG;KACvC,IAAI,CAAC,OAAO;KAEZ,MAAM,SAAS,OAAO,MAAM,EAAE;KAC9B,IAAI,CAAC,QAAQ;KAEb,OAAO,SAAS,cAAc,MAAM;IACtC;GACF;EACF;EAGA,IAAI,SAAS,OADE,MAAM,aAAa,OAAO,KAChB,CAAC;EAE1B,IAAI,UAAU,KAAK,kBAAkB,MACnC,UAAU,GAAG,cAAc;EAG7B,OAAO;CACT;CAEA,OAAO,UAAU;;;;;CC72CjB,IAAMC,SAAAA,UAAe,MAAM;CAC3B,IAAM,OAAA,aAAA;CACN,IAAM,QAAA,gBAAA;CACN,IAAM,QAAA,cAAA;CACN,IAAM,YAAA,kBAAA;CACN,IAAM,YAAW,QAAO,OAAO,OAAO,QAAQ,YAAY,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;CAwB5E,IAAM,aAAa,MAAM,SAAS,cAAc,UAAU;EACxD,IAAI,MAAM,QAAQ,IAAI,GAAG;GACvB,MAAM,MAAM,KAAK,KAAI,UAAS,UAAU,OAAO,SAAS,WAAW,CAAC;GACpE,MAAM,gBAAe,QAAO;IAC1B,KAAK,MAAM,WAAW,KAAK;KACzB,MAAM,QAAQ,QAAQ,GAAG;KACzB,IAAI,OAAO,OAAO;IACpB;IACA,OAAO;GACT;GACA,OAAO;EACT;EAEA,MAAM,UAAU,SAAS,IAAI,KAAK,KAAK,UAAU,KAAK;EAEtD,IAAI,SAAS,MAAO,OAAO,SAAS,YAAY,CAAC,SAC/C,MAAM,IAAI,UAAU,2CAA2C;EAGjE,MAAM,OAAO,WAAW,CAAC;EACzB,MAAM,QAAQ,MAAM,UAAU,OAAO;EACrC,MAAM,QAAQ,UACV,UAAU,UAAU,MAAM,OAAO,IACjC,UAAU,OAAO,MAAM,SAAS,OAAO,IAAI;EAE/C,MAAM,QAAQ,MAAM;EACpB,OAAO,MAAM;EAEb,IAAI,kBAAkB;EACtB,IAAI,KAAK,QAAQ;GACf,MAAM,aAAa;IAAE,GAAG;IAAS,QAAQ;IAAM,SAAS;IAAM,UAAU;GAAK;GAC7E,YAAY,UAAU,KAAK,QAAQ,YAAY,WAAW;EAC5D;EAEA,MAAM,WAAW,OAAO,eAAe,UAAU;GAC/C,MAAM,EAAE,SAAS,OAAO,WAAW,UAAU,KAAK,OAAO,OAAO,SAAS;IAAE;IAAM;GAAM,CAAC;GACxF,MAAM,SAAS;IAAE;IAAM;IAAO;IAAO;IAAO;IAAO;IAAQ;IAAO;GAAQ;GAE1E,IAAI,OAAO,KAAK,aAAa,YAC3B,KAAK,SAAS,MAAM;GAGtB,IAAI,YAAY,OAAO;IACrB,OAAO,UAAU;IACjB,OAAO,eAAe,SAAS;GACjC;GAEA,IAAI,UAAU,KAAK,GAAG;IACpB,IAAI,OAAO,KAAK,aAAa,YAC3B,KAAK,SAAS,MAAM;IAEtB,OAAO,UAAU;IACjB,OAAO,eAAe,SAAS;GACjC;GAEA,IAAI,OAAO,KAAK,YAAY,YAC1B,KAAK,QAAQ,MAAM;GAErB,OAAO,eAAe,SAAS;EACjC;EAEA,IAAI,aACF,QAAQ,QAAQ;EAGlB,OAAO;CACT;;;;;;;;;;;;;;;;;CAmBA,UAAU,QAAQ,OAAO,OAAO,SAAS,EAAE,MAAM,UAAU,CAAC,MAAM;EAChE,IAAI,OAAO,UAAU,UACnB,MAAM,IAAI,UAAU,+BAA+B;EAGrD,IAAI,UAAU,IACZ,OAAO;GAAE,SAAS;GAAO,QAAQ;EAAG;EAGtC,MAAM,OAAO,WAAW,CAAC;EACzB,MAAM,SAAS,KAAK,WAAW,QAAQ,MAAM,iBAAiB;EAC9D,IAAI,QAAQ,UAAU;EACtB,IAAI,SAAU,SAAS,SAAU,OAAO,KAAK,IAAI;EAEjD,IAAI,UAAU,OAAO;GACnB,SAAS,SAAS,OAAO,KAAK,IAAI;GAClC,QAAQ,WAAW;EACrB;EAEA,IAAI,UAAU,SAAS,KAAK,YAAY,MACtC,IAAI,KAAK,cAAc,QAAQ,KAAK,aAAa,MAC/C,QAAQ,UAAU,UAAU,OAAO,OAAO,SAAS,KAAK;OAExD,QAAQ,MAAM,KAAK,MAAM;EAI7B,OAAO;GAAE,SAAS,QAAQ,KAAK;GAAG;GAAO;EAAO;CAClD;;;;;;;;;;;;;;CAgBA,UAAU,aAAa,OAAO,MAAM,SAAS,QAAQ,MAAM,UAAU,OAAO,MAAM;EAEhF,QADc,gBAAgB,SAAS,OAAO,UAAU,OAAO,MAAM,OAAO,EAAA,CAC/D,KAAKA,OAAK,SAAS,KAAK,CAAC;CACxC;;;;;;;;;;;;;;;;;CAmBA,UAAU,WAAW,KAAK,UAAU,YAAY,UAAU,UAAU,OAAO,CAAC,CAAC,GAAG;;;;;;;;;;;;;;CAgBhF,UAAU,SAAS,SAAS,YAAY;EACtC,IAAI,MAAM,QAAQ,OAAO,GAAG,OAAO,QAAQ,KAAI,MAAK,UAAU,MAAM,GAAG,OAAO,CAAC;EAC/E,OAAO,MAAM,SAAS;GAAE,GAAG;GAAS,WAAW;EAAM,CAAC;CACxD;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BA,UAAU,QAAQ,OAAO,YAAY,KAAK,OAAO,OAAO;;;;;;;;;;;;CAcxD,UAAU,aAAa,OAAO,SAAS,eAAe,OAAO,cAAc,UAAU;EACnF,IAAI,iBAAiB,MACnB,OAAO,MAAM;EAGf,MAAM,OAAO,WAAW,CAAC;EACzB,MAAM,UAAU,KAAK,WAAW,KAAK;EACrC,MAAM,SAAS,KAAK,WAAW,KAAK;EAEpC,IAAI,SAAS,GAAG,QAAQ,KAAK,MAAM,OAAO,GAAG;EAC7C,IAAI,SAAS,MAAM,YAAY,MAC7B,SAAS,OAAO,OAAO;EAGzB,MAAM,QAAQ,UAAU,QAAQ,QAAQ,OAAO;EAC/C,IAAI,gBAAgB,MAClB,MAAM,QAAQ;EAGhB,OAAO;CACT;;;;;;;;;;;;;;;;;;;CAqBA,UAAU,UAAU,OAAO,UAAU,CAAC,GAAG,eAAe,OAAO,cAAc,UAAU;EACrF,IAAI,CAAC,SAAS,OAAO,UAAU,UAC7B,MAAM,IAAI,UAAU,6BAA6B;EAGnD,IAAI,SAAS;GAAE,SAAS;GAAO,WAAW;EAAK;EAE/C,IAAI,QAAQ,cAAc,UAAU,MAAM,OAAO,OAAO,MAAM,OAAO,MACnE,OAAO,SAAS,MAAM,UAAU,OAAO,OAAO;EAGhD,IAAI,CAAC,OAAO,QACV,SAAS,MAAM,OAAO,OAAO;EAG/B,OAAO,UAAU,UAAU,QAAQ,SAAS,cAAc,WAAW;CACvE;;;;;;;;;;;;;;;;;CAmBA,UAAU,WAAW,QAAQ,YAAY;EACvC,IAAI;GACF,MAAM,OAAO,WAAW,CAAC;GACzB,OAAO,IAAI,OAAO,QAAQ,KAAK,UAAU,KAAK,SAAS,MAAM,GAAG;EAClE,SAAS,KAAK;GACZ,IAAI,WAAW,QAAQ,UAAU,MAAM,MAAM;GAC7C,OAAO;EACT;CACF;;;;;CAOA,UAAU,YAAY;;;;CAMtB,OAAO,UAAU;;;;;CCnVjB,OAAO,UAAA,oBAAA;;;;ACsCP,SAAgB,mBAAmB,WAAW;CAC1C,OAAO,IAAI,MAAM,OAAO,OAAO,IAAI,GAAG,EAClC,IAAI,SAAS,GAAG,WAAW;EACvB,OAAO,KAAK,YAAY,UAAU,KAAK,cAAc;CACzD,EACJ,CAAC;AACL;AACA,SAAgB,eAAe,eAAe,KAAK;CAC/C,OAAO,cAAc,aAAa,MAAK,gBAAeC,mBAAAA,QAAU,QAAQ,IAAI,MAAM,WAAW,CAAC;AAClG;;;;CAxCA,CAAC,SAAU,+BAA+B;;;;EAItC,8BAA8B,UAAU;;;;EAIxC,8BAA8B,sBAAsB;;;;EAIpD,8BAA8B,qBAAqB;CACvD,EAAA,CAAG,kCAAkC,gCAAgC,CAAC,EAAE;CAElE,gBAAgB;EAClB,wBAAwB,CAAA,IAA6B;EACrD,6BAA6B;GACzB;GACA;GACA;GACA;GACA;GACA;GACA;EACJ;EACA,cAAc,CACV,SACA,oBACJ;CACJ;;;;;CCtCA,IAAI,YAAY,OAAO;CACvB,IAAI,mBAAmB,OAAO;CAC9B,IAAI,oBAAoB,OAAO;CAC/B,IAAI,eAAe,OAAO,UAAU;CACpC,IAAI,YAAY,QAAQ,QAAQ;EAC9B,KAAK,IAAI,QAAQ,KACf,UAAU,QAAQ,MAAM;GAAE,KAAK,IAAI;GAAO,YAAY;EAAK,CAAC;CAChE;CACA,IAAI,eAAe,IAAI,MAAM,QAAQ,SAAS;EAC5C,IAAI,QAAQ,OAAO,SAAS,YAAY,OAAO,SAAS;QACjD,IAAI,OAAO,kBAAkB,IAAI,GACpC,IAAI,CAAC,aAAa,KAAK,IAAI,GAAG,KAAK,QAAQ,QACzC,UAAU,IAAI,KAAK;IAAE,WAAW,KAAK;IAAM,YAAY,EAAE,OAAO,iBAAiB,MAAM,GAAG,MAAM,KAAK;GAAW,CAAC;EAAA;EAEvH,OAAO;CACT;CACA,IAAI,gBAAgB,QAAQ,YAAY,UAAU,CAAC,GAAG,cAAc,EAAE,OAAO,KAAK,CAAC,GAAG,GAAG;CAGzF,IAAI,eAAe,CAAC;CACpB,SAAS,cAAc;EACrB,cAAc;EACd,SAAS;CACX,CAAC;CACD,OAAO,UAAU,aAAa,YAAY;CAG1C,IAAI,YAAA,UAAoB,IAAI;CAC5B,IAAI,kBAAA,UAA0B,aAAa;CAC3C,eAAe,gBAAgB,KAAK;EAClC,IAAI,IAAI,aAAa,SACnB,OAAO,OAAO,GAAG,gBAAgB,SAAA,CAAU,KAAK,MAAM;EAExD,IAAI,IAAI,aAAa,WAAW,IAAI,aAAa,UAAU;GACzD,MAAM,MAAM,MAAM,MAAM,IAAI,SAAS,GAAG;IACtC,SAAS;KACP,mBAAmB;KACnB,UAAU;IACZ;IACA,UAAU;GACZ,CAAC;GACD,IAAI,CAAC,IAAI,IAAI;IACX,IAAI,QAAQ,cAAc,IAAI,OAAO,iCAAiC;IACtE,IAAI;KACF,SAAS,KAAK,MAAM,IAAI,KAAK;IAC/B,QAAQ,CACR;IACA,MAAM,IAAI,MAAM,KAAK;GACvB;GAEA,OAAO,MADe,IAAI,KAAK;EAEjC;EACA,MAAM,IAAI,MAAM,sBAAsB;CACxC;CACA,SAAS,mBAAmB,QAAQ;EAClC,QAAQ,GAAG,UAAU,aAAA,CAAc,QAAQ,MAAM;CACnD;CAGA,IAAI;CACJ,SAAS,OAAO,SAAS;EACvB,IAAI,cAAc,SAAS;GACzB,IAAI,OAAO,QAAQ,aAAa,UAC9B,SAAS,KAAK,MAAM,QAAQ,QAAQ;QAEpC,SAAS,QAAQ;GAEnB;EACF;EACA,IAAI,YAAY,SAAS;GACvB,MAAM,cAAc,mBAAmB,QAAQ,MAAM;GACrD,MAAM,UAAU,KAAK,MAAM,WAAW;GACtC,SAAS,mBAAmB,OAAO,IAAI,QAAQ,SAAS,SAAS;GACjE;EACF;EACA,IAAI,QAAQ,KAAK;GACf,IAAI,MAAM,QAAQ;GAClB,IAAI,OAAO,QAAQ,QAAQ,UACzB,MAAM,IAAI,IAAI,QAAQ,GAAG;GAE3B,OAAO,IAAI,SAAS,SAAS,WAAW;IACtC,gBAAgB,GAAG,CAAC,CAAC,MAAM,eAAe;KACxC,IAAI;MACF,MAAM,UAAU,KAAK,MAAM,UAAU;MACrC,SAAS,mBAAmB,OAAO,IAAI,QAAQ,SAAS,SAAS;MACjE,QAAQ;KACV,SAAS,KAAK;MACZ,OAAO,GAAG;KACZ;IACF,CAAC,CAAC,CAAC,OAAO,QAAQ;KAChB,OAAO,GAAG;IACZ,CAAC;GACH,CAAC;EACH;CACF;CACA,SAAS,EAAE,GAAG,MAAM;EAClB,MAAM,WAAW,KAAK;EACtB,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI,OAAO,aAAa,UAAU;GAChC,MAAM;GACN,UAAU;GACV,KAAK,OAAO,GAAG,CAAC;GAChB,aAAa,CAAC,QAAQ,OAAO,KAAK,OAAO,WAAW,OAAO,KAAK;EAClE,OAAO,IAAI,oBAAoB,OAAO;GACpC,MAAM,eAAe,KAAK,MAAM,CAAC;GACjC,IAAI,SAAS,WAAW,aAAa,SAAS,GAC5C,MAAM,IAAI,MAAM,mDAAmD;GAErE,IAAI,MAAM,SAAS;GACnB,KAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,KACnC,OAAO,IAAI,IAAI,EAAE,KAAK,SAAS;GAEjC,OAAO,EAAE,KAAK,GAAG,YAAY;EAC/B,OAAO;GACL,UAAU,SAAS;GACnB,MAAM;GACN,IAAI,SAAS,WAAW,SAAS,QAAQ,SAAS,GAChD,OAAO,IAAI,MAAM,QAAQ,SAAS,OAAO,IAAI,SAAS,QAAQ,KAAK,EAAE,IAAI,SAAS;GAEpF,aAAa,SAAS,QAAQ,CAAC;EACjC;EACA,MAAM,oBAAoB,SAAS;EACnC,IAAI,CAAC,mBACH,OAAO,OAAO,SAAS,UAAU;EAEnC,IAAI,OAAO,sBAAsB,UAC/B,OAAO,OAAO,mBAAmB,UAAU;EAE7C,IAAI,kBAAkB,SACpB,OAAO,OAAO,kBAAkB,SAAS,UAAU;EAErD,OAAO,OAAO,SAAS,UAAU;CACnC;CACA,IAAI,iBAAiB;CACrB,SAAS,OAAO,UAAU,QAAQ;EAChC,IAAI,OAAO,KAAK,MAAM,CAAC,CAAC,WAAW,GACjC,OAAO;EAET,OAAO,SAAS,QAAQ,iBAAiB,OAAO,UAAU,OAAO,UAAU,KAAK;CAClF;CACA,SAAS,mBAAmB,MAAM;EAChC,OAAO,CAAC,EAAE,OAAO,MAAM,UAAU,WAAW,YAAY,OAAO,MAAM,YAAY;CACnF;CAEA,MAAM,OAAO,UAAU;EACrB;EACA;CACF;;;;;;CCrJA,CAAC,SAAU,UAAU;EACjB,SAAS,SAAS,cAAc,KAAK;EACrC,SAAS,SAAS,cAAc,KAAK;EACrC,SAAS,SAAS,eAAe,KAAK;CAC1C,EAAA,CAAG,aAAa,WAAW,CAAC,EAAE;CAE9B,CAAC,SAAU,YAAY;;EAEnB,WAAW,WAAW,UAAU,KAAK;;EAErC,WAAW,WAAW,gBAAgB,KAAK;;EAE3C,WAAW,WAAW,cAAc,KAAK;CAC7C,EAAA,CAAG,eAAe,aAAa,CAAC,EAAE;CAIrB,oBAAb,MAA+B;EAC3B,OAAO,IAAI,iBAAiB;EAC5B,YAAY,OAAO;GACf,KAAK,MAAM,QAAQ,OACf,IAAI,KAAK,SAAS,WAAW;QACrB,CAAC,KAAKC,KAAK,IAAI,KAAK,IAAI,IAAI,GAC5B,KAAKA,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI;GAAA;EAIjD;EACA,CAAC,OAAO,YAAY;GAChB,OAAO,KAAKA,KAAK,OAAO,SAAS,CAAC;EACtC;EACA,OAAO,KAAK;GACR,OAAO,KAAKA,KAAK,OAAO,GAAG;EAC/B;CACJ;CAMa,mBAAb,MAA8B;EAC1B,uBAAO,IAAI,IAAI;EACf,IAAI,KAAK,MAAM;GACX,KAAKA,KAAK,IAAI,KAAKC,kBAAkB,GAAG,GAAG,IAAI;EACnD;EACA,OAAO,KAAK;GACR,OAAO,KAAKD,KAAK,IAAI,KAAKC,kBAAkB,GAAG,CAAC;EACpD;EACA,IAAI,KAAK;GACL,OAAO,KAAKD,KAAK,IAAI,KAAKC,kBAAkB,GAAG,CAAC;EACpD;EACA,CAAC,OAAO,YAAY;GAChB,OAAO,KAAKD,KAAK,OAAO;EAC5B;;;;;EAKA,kBAAkB,KAAK;GACnB,OAAO,IAAI,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY;EAC9C;CACJ;;;;AC1DA,SAAgB,kBAAkB,GAAG,GAAG;CACpC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE;AAClD;AACA,SAAgB,kBAAkB,KAAK,QAAQ;CAC3C,OAAO;EACH,MAAM,IAAI,QAAQ,OAAO,aAAa;EACtC,WAAW,IAAI,aAAa,OAAO,kBAAkB;CACzD;AACJ;AACA,SAAgB,SAAS,KAAK,OAAO;CACjC,IAAI,IAAI,OAAO,MAAM,MACjB,OAAO;CAEX,IAAI,MAAM,OAAO,IAAI,MACjB,OAAO;CAEX,OAAO,IAAI,YAAY,MAAM;AACjC;AACA,SAAgB,gBAAgB,KAAK,OAAO;CACxC,IAAI,IAAI,OAAO,MAAM,MACjB,OAAO;CAEX,IAAI,MAAM,OAAO,IAAI,MACjB,OAAO;CAEX,OAAO,IAAI,aAAa,MAAM;AAClC;AAIA,SAAgB,gBAAgB,GAAG,GAAG;CAClC,IAAI,EAAE,OAAO,EAAE,MACX,OAAO;MAEN,IAAI,EAAE,OAAO,EAAE,MAChB,OAAO;MAIP,IAAI,EAAE,YAAY,EAAE,WAChB,OAAO;MAEN,IAAI,EAAE,YAAY,EAAE,WACrB,OAAO;MAIP,OAAO;AAGnB;;;;AChDA,SAAgB,eAAe,GAAG,GAAG;CACjC,OAAO,kBAAkB,EAAE,OAAO,EAAE,KAAK,KAAK,kBAAkB,EAAE,KAAK,EAAE,GAAG;AAChF;AACA,SAAgB,YAAY,OAAO,OAAO,KAAK;CAC3C,OAAO;EACH,OAAO,SAAS,MAAM;EACtB,KAAK,OAAO,MAAM;CACtB;AACJ;AACA,SAAgB,cAAc,OAAO,OAAO;CACxC,IAAIE,eAAAA,MAAM,GAAG,KAAK,GACd,OAAO,cAAc,OAAO,MAAM,KAAK,KAAK,cAAc,OAAO,MAAM,GAAG;CAE9E,OAAO,CAAC,SAAS,OAAO,MAAM,KAAK,KAAK,CAAC,SAAS,MAAM,KAAK,KAAK;AACtE;AACA,SAAgB,gBAAgB,GAAG,GAAG;CAClC,IAAI,cAAc,GAAG,EAAE,KAAK,KAAK,cAAc,GAAG,EAAE,GAAG,GACnD,OAAO;CAGX,OAAO,cAAc,GAAG,EAAE,KAAK,KAAK,cAAc,GAAG,EAAE,GAAG;AAC9D;;;;eAtB2D;;;;;;;CCA9C,MAAMC,WAAAA,QAAI;CACV,QAAQA,WAAAA,QAAI;;;;;;CCGZ,aAAa;;;;ACF1B,SAAgB,QAAQ,KAAK,MAAM;CAC/B,OAAO,IAAI,QAAQC,eAAI,MAAM,OAAO,MAAM,GAAG,MAAM,UAAU,CAAC,CAAC,CAAC,QAAQ,UAAU,EAAE;AACxF;AACA,SAAgB,UAAU,KAAK;CAC3B,OAAO,IAAI,QAAQ,IAAI,MAAM,IAAI,GAAG;AACxC;;;;gBAP0C;aACI;;;;;;;CCDjC,uBAAb,MAAkC;EAC9B,WAAW,CAAC;EACZ,mBAAmB,CAAC;EACpB,QAAQ,UAAU,OAAO,SAAS;GAC9B,KAAKC,SAAS,UAAUC,eAAI,SAAS,QAAQ,OAAO,OAAO,CAAC;EAChE;EACA,OAAO,UAAU,UAAU,SAAS;GAChC,KAAKD,SAAS,UAAUC,eAAI,SAAS,OAAO,UAAU,OAAO,CAAC;EAClE;EACA,SAAS,UAAU,MAAM;GACrB,MAAM,cAAc,SAAS,SAAS;GACtC,IAAI,QAAQ,KAAKC,SAAS;GAC1B,IAAI,CAAC,OAAO;IACR,QAAQ,CAAC;IACT,KAAKA,SAAS,eAAe;GACjC;GACA,MAAM,KAAK,IAAI;EACnB;EACA,UAAU;GAKN,OAAO,EACH,iBAAiB,CAAC,GAJC,OAAO,QAAQ,KAAKA,QAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,WAAW;IACvE,OAAOD,eAAI,iBAAiB,OAAO;KAAE;KAAK,SAAS;IAAK,GAAG,KAAK;GACpE,CAEsC,GAAG,GAAG,KAAKE,gBAAgB,EACjE;EACJ;EACA,WAAW,WAAW,qBAAqB;GACvC,KAAKA,iBAAiB,KAAKF,eAAI,WAAW,OAAO,UAAU,SAAS,GAAG,oBAAoB,SAAS,CAAC,CAAC;EAC1G;CACJ;;;;;;CC/Ba,UAAU,OAAO,OAAO;EACjC,MAAM;EACN,UAAU;CACd,CAAC;;;;ACAD,SAAgB,eAAe,GAAG,GAAG;CACjC,OAAO,EAAE,SAAS,MAAM,EAAE,SAAS;AACvC;AACA,SAAgB,YAAY,QAAQ,YAAY;CAC5C,IAAI,OAAO,WAAW,WAAW,UAAU,OAAO,cAAc,WAAW,WAEvE,OAAO,CADU,KAAK,SAAS,OAAO,MAAM,WAAW,IACxC,CAAC,CAAC,WAAW,IAAI;CAEpC,OAAO;AACX;AACA,SAAgB,oBAAoB,SAAS,OAAO,iBAAiB,OAAO;CACxE,IAAI,QAAQ,WAAW,MAAM,UAAU,QAAQ,WAAW,QAAQ,UAAU;EACxE,MAAM,UAAU,MAAM,QAAQ,OAAO;EACrC,IAAI,UAAU,KAAK,MAAM,SAAS,QAAQ,MAAM,MAAM,IAAI;EAC1D,IAAI,kBAAkB,EAAE,QAAQ,WAAW,KAAK,KAAK,QAAQ,WAAW,MAAM,IAC1E,UAAU,OAAO;EAErB,OAAO;CACX;AAEJ;;;;;;AAMA,SAAgB,wBAAwB,eAAe,MAAM,QAAQ;CACjE,IAAI,KAAK,WAAW,OAAO,QACvB,OAAO;CAEX,OAAO,cAAc,uBAAuB,MAAK,QAAO,KAAK,KAAK,EAAE,MAAM,KAAK,OAAO,MAAM,IAAI,CAAC,CAAC,CAAC,WAAW,OAAO,MAAM;AAC/H;AACA,SAAgB,qBAAqB,QAAQ,kBAAkB;CAC3D,OAAO,qBAAqB,QAAQ,MAAM,QAAQ,gBAAgB,CAAC;AACvE;AACA,SAAgB,0BAA0B,QAAQ,UAAU;CACxD,OAAO,qBAAqB,QAAQ,KAAK,QAAQ,QAAQ,CAAC;AAC9D;AACA,SAAS,qBAAqB,QAAQ,QAAQ;CAC1C,OAAO,OAAO,uBAAuB,SAAS,OAAO,YAAY,CAAC,CAAC,QAAQ,KAAK,EAAE,CAAC;AACvF;;;;;;;;;;AAUA,SAAgB,8BAA8B,UAAU;CACpD,MAAM,QAAQ,SAAS,MAAM,yFAAyF;CACtH,IAAI,CAAC,OAAO,QACR;CAEJ,MAAM,YAAY,CAAC,MAAM,OAAO,eAAe;CAC/C,IAAI,MAAM,SAAS,GACf;CAEJ,MAAM,WAAW,CAAC,MAAM,OAAO,cAAc;CAC7C,MAAM,QAAQ;EAAE,MAAM;EAAW,WAAW,MAAM,QAAQ,IAAI,IAAI;CAAS;CAC3E,IAAI,MAAM,OAAO,eAAe,KAAA,GAAW;EACvC,MAAM,UAAU,CAAC,MAAM,OAAO,aAAa;EAC3C,IAAI,MAAM,OAAO,GACb;EAEJ,MAAM,SAAS,CAAC,MAAM,OAAO,YAAY;EAEzC,OAAO;GAAE;GAAO,KAAA;IADF,MAAM;IAAS,WAAW,MAAM,MAAM,IAAI,IAAI;GAC1C;EAAE;CACxB;CACA,OAAO;EAAE;EAAO,KAAK;CAAM;AAC/B;;cAzEsC;gBACA;;;;ACFtC,SAAgB,oBAAoB,KAAK;CACrC,OAAO,QAAQ,KAAK,GAAG;AAC3B;;;;;AAMA,SAAgB,cAAc,QAAQ,OAAO;CACzC,IAAI,OAAO,SAAS,MAAM,QACtB,OAAO;CAEX,MAAM,WAAW,MAAM;CACvB,MAAM,cAAc,OAAO,YAAY;CACvC,IAAI,QAAQ;CACZ,IAAI,cAAc;CAClB,OAAO,QAAQ,UAAU;EACrB,MAAM,UAAU,YAAY,QAAQ,MAAM,QAAQ,cAAc,CAAC;EACjE,IAAI,UAAU,GACV,OAAO;EAEX,cAAc;EACd;CACJ;CACA,OAAO;AACX;;;CAtBa,IAAI,OAAO;;;;ACgGxB,SAAgB,2BAA2B,KAAK,oBAAoB;CAChE,IAAI,CAAC,mBAAmB,QACpB;CAEJ,MAAM,UAAU,mBAAmB,mBAAmB,SAAS;CAE/D,IAAI,oBADc,IAAI,QAAQG,eAAI,MAAM,OAAO,QAAQ,OAAO,MAAM,IAAI,OAAO,GAAG,GAAA,YAAe,CAAC,CAClE,CAAC,GAAG;EAChC,IAAI,UAAU;EACd,KAAK,IAAI,IAAI,mBAAmB,SAAS,GAAG,KAAK,GAAG,EAAE,GAAG;GACrD,MAAM,MAAM,mBAAmB;GAC/B,IAAI,IAAI,OAAO,MAAM,MAAM,OAAO,QAAQ,OAAO,MAAM,MAAM,OAAO,GAChE;GAEJ,UAAU;EACd;EACA,OAAO;GACH,WAAW,QAAQ,OAAO,MAAM,MAAM;GACtC,SAAS,QAAQ,OAAO,MAAM,MAAM;EACxC;CACJ;AAEJ;;;;mBAvH+D;mBACb;aACJ;aACS;CAC1C,mCAAb,MAA8C;EAC1C;EACA,YAAY,cAAc;GACtB,KAAKC,gBAAgB;EACzB;EACA,MAAM,+BAA+B,KAAK,SAAS,OAAO;GACtD,MAAM,QAAQ,MAAM,KAAKA,cAAc,SAAS,GAAG;GACnD,IAAI,MAAM,yBACN,OAAO,CAAC;GAEZ,MAAM,cAAc,MAAM,MAAM,QAAO,SAAQ,KAAK,SAAS,WAAW,UAAU;GAClF,IAAI,CAAC,YAAY,QACb,OAAO,CAAC;GAEZ,MAAM,wBAAwB,2BAA2B,KAAK,WAAW;GACzE,MAAM,QAAQ,CAAC;GAEf,KAAK,MAAM,SAAS,KAAKC,0BAA0B,KAAK,WAAW,GAC/D,IAAI,CAAC,yBAAyB,MAAM,YAAY,sBAAsB,WAElE,MAAM,KAAK;IACP,SAAS;IACT,OAAOF,eAAI,MAAM,OAAO,MAAM,WAAW,GAAG,MAAM,SAAS,QAAQ,KAAK,MAAM,OAAO,CAAC,CAAC,MAAM;GACjG,CAAC;GAIT,MAAM,aAAa,CAAC,GAAG,WAAW;GAClC,WAAW,MAAM,GAAG,MAAM,EAAE,IAAI,KAAK,cAAc,EAAE,IAAI,IAAI,CAAC;GAC9D,MAAM,UAAU,WACX,QAAO,QAAO;IACf,IAAI,CAAC,QAAQ,cACT,OAAO;IAEX,OAAO,MAAM,MAAM,MAAK,SAAQ;KAC5B,OAAO,KAAK,SAAS,WAAW,QAAQ,KAAK,KAAK,SAAS,SAAS,aAAa,KAAK,KAAK,QAAQ,IAAI,IAAI;IAC/G,CAAC;GACL,CAAC;GACD,MAAM,WAAW,QACZ,MAAK,QAAO,IAAI,IAAI,IAAI,KAAK,KAAK,IAAI,OAAO,WAAW,CAAC,CACzD,KAAK,IAAI;GACd,IAAI,uBAAuB;IAEvB,MAAM,uBAAuB,sBAAsB,aAAa,KACzD,oBAAoB,QAAQ,KAAK,sBAAsB,YAAY,CAAC,CAAC;IAE5E,IAAI,CAAC,MAAM,UAAU,QAAQ,WAAW,YAAY,UAAU,YAAY,OAAO,KAAK,MAAM,IAAI,QAAQ,QAAQ,EAAE,CAAC,GAAG,GAClH,OAAO,CAAC;IAEZ,MAAM,KAAK;KACP,UAAU,uBAAuB,KAAK,QAAQ;KAC9C,OAAOA,eAAI,MAAM,OAAO,sBAAsB,WAAW,GAAG,sBAAsB,SAAS,QAAQ,KAAK,sBAAsB,OAAO,CAAC,CAAC,MAAM;IACjJ,CAAC;GACL,OACK;IACD,MAAM,OAAO,KAAKG,0BAA0B,KAAK,WAAW;IAC5D,MAAM,KAAK;KACP,UAAU,SAAS,IAAI,YAAY,IAAI,SAAS,QAAQ;KACxD,OAAOH,eAAI,MAAM,OAAO,OAAO,GAAG,GAAG,IAAI,WAAW,CAAC;IACzD,CAAC;GACL;GACA,OAAO;EACX;EACA,CAACE,0BAA0B,KAAK,aAAa;GACzC,IAAI,CAAC,YAAY,QACb;GAEJ,IAAI,IAAI;GACR,MAAM,WAAW,YAAY;GAC7B,IAAI,SAAS;GACb,OAAO,IAAI,YAAY,SAAS,GAAG,EAAE,GAAG;IACpC,MAAM,UAAU,YAAY,IAAI;IAChC,IAAI,QAAQ,OAAO,MAAM,MAAM,SAAS,OAAO,OAAO,MAAM,MAAM,OAAO,GACrE,SAAS;SAGT;GAER;GACA,MAAM;IAAE,WAAW,SAAS,OAAO,MAAM,MAAM;IAAM,SAAS,OAAO,OAAO,MAAM,MAAM;GAAK;GAC7F,OAAO,KAAKA,0BAA0B,KAAK,YAAY,MAAM,IAAI,CAAC,CAAC;EACvE;EACA,0BAA0B,KAAK,oBAAoB;GAC/C,MAAM,UAAU,mBAAmB,mBAAmB,SAAS;GAE/D,MAAM,QADY,IAAI,QAAQF,eAAI,MAAM,OAAO,QAAQ,OAAO,MAAM,IAAI,OAAO,GAAG,GAAG,YAAY,CAAC,CAC5E,CAAC,CAAC,MAAM,UAAU;GACxC,KAAK,IAAI,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG,EAAE,GACrC,IAAI,CAAC,oBAAoB,MAAM,EAAE,GAC7B,OAAO,QAAQ,OAAO,MAAM,MAAM,OAAO,IAAI;GAGrD,OAAO,QAAQ,OAAO,MAAM,MAAM;EACtC;CACJ;;;;AClGA,SAAgB,uBAAuB,OAAO,OAAO;CACjD,OAAO,UAAU,SAAS,MAAM,WAAW,QAAQ,GAAG;AAC1D;;;;AC2GA,SAAgB,wBAAwB,KAAK,qBAAqB,SAAS;CACvE,MAAM,WAAW,2BAA2B,KAAK,mBAAmB;CACpE,MAAM,aAAa,QAAQ,KAAK,EAAE,gBAAgB,kBAAkB,IAAI,YAAY,KAAK,gBAAgB,CAAC,CAAC,KAAK,IAAI;CACpH,IAAI,CAAC,UACD,OAAOI,eAAI,SAAS,OAAO;EAAE,MAAM,IAAI;EAAW,WAAW;CAAE,GAAG,SAAS,UAAU;MAEpF;EACD,MAAM,OAAO,QAAQ,KAAK,SAAS,OAAO;EAC1C,OAAOA,eAAI,SAAS,OAAO;GAAE,MAAM,SAAS;GAAS,WAAW,KAAK;EAAO,GAAG,OAAO,UAAU;CACpG;AACJ;AACA,SAAS,kBAAkB,KAAK,MAAM;CAClC,MAAM,iBAAiB,KAAK,SAAS,WAAW,WAC1C,KAAK,OAAO,cACZA,eAAI,MAAM,OAAO,kBAAkB,KAAK,OAAO,YAAY,OAAO,EAAE,gBAAgB,EAAE,CAAC,GAAG,kBAAkB,KAAK,OAAO,YAAY,KAAK,EAAE,gBAAgB,GAAG,CAAC,CAAC;CACtK,OAAO,IAAI,QAAQ,cAAc;AACrC;;;;;mBA1HkE;eACU;YACtB;mBACU;kBACA;WACb;uBACgB;WACjB;CACrC,4CAAb,MAAuD;EACnD,OAAO,eAAeC,eAAK,EAAE,4BAA4B;EACzD,OAAOC,QAAQF,eAAI,eAAe,kBAAkB;EACpD,OAAO,kBAAkB;GACrB,OAAO,KAAK;GACZ,MAAM,KAAKE;GACX,UAAU,EACN,QAAQD,eAAK,EAAE,aAAa,EAChC;EACJ;EACA,OAAO,uBAAuB;GAC1B,OAAO,KAAK;GACZ,MAAM,KAAKC;GACX,UAAU,EACN,QAAQD,eAAK,EAAE,6BAA6B,EAChD;EACJ;EACA;EACA,YAAY,cAAc;GACtB,KAAKE,gBAAgB;EACzB;EACA,MAAM,WAAW,KAAK,OAAO,SAAS,OAAO;GACzC,IAAI,CAAC,KAAKC,WAAW,OAAO,GACxB,OAAO,CAAC;GAEZ,MAAM,WAAW,MAAM,KAAKD,cAAc,SAAS,GAAG;GACtD,IAAI,MAAM,yBACN,OAAO,CAAC;GAEZ,MAAM,eAAe,SAAS,MAAM,QAAO,SAAQ,KAAK,SAAS,WAAW,cAAc,gBAAgB,OAAO,KAAK,OAAO,KAAK,CAAC;GACnI,IAAI,CAAC,aAAa,QACd,OAAO,CAACE,KAAG,eAAe;GAG9B,aAAa,MAAM,GAAG,MAAM,gBAAgB,EAAE,OAAO,MAAM,OAAO,EAAE,OAAO,MAAM,KAAK,CAAC;GAGvF,MAAM,aAAa,aAAa,MAAK,SAAQ,KAAK,KAAK,SAAS,SAAS,YAAY,KAAK,KAAK,SAAS,SAAS,QAAQ;GACzH,IAAI,CAAC,YACD,OAAO,CAACA,KAAG,oBAAoB;GAEnC,OAAO,CAAC,KAAKC,sBAAsB,KAAK,UAAU,UAAU,CAAC;EACjE;EACA,WAAW,SAAS;GAChB,IAAI,OAAO,QAAQ,SAAS,aACxB,OAAO;GAEX,OAAO,QAAQ,KAAK,MAAK,SAAQ,uBAAuBN,eAAI,eAAe,UAAU,IAAI,CAAC;EAC9F;EACA,sBAAsB,KAAK,UAAU,YAAY;GAC7C,MAAM,UAAU,IAAI,qBAAqB;GACzC,MAAM,WAAW,UAAU,GAAG;GAC9B,MAAM,cAAc,KAAKO,gBAAgB,SAAS,WAAW;GAE7D,KAAK,MAAM,QAAQ,SAAS,OACxB,IAAI,KAAK,SAAS,WAAW,QAAQ,KAAK,SAAS,WAAW;QACtD,KAAKC,aAAa,WAAW,MAAM,IAAI,GAAG;KAC1C,MAAM,cAAc,KAAK,SAAS,WAAW,WAAW,KAAK,OAAO,QAAQ,KAAK,OAAO;KACxF,QAAQ,QAAQ,UAAU,aAAa,IAAI,YAAY,EAAE;IAC7D;;GAGR,MAAM,iBAAiB,kBAAkB,KAAK,UAAU,CAAC,CAAC,KAAK;GAE/D,MAAM,UAAU,wBAAwB,KADpB,SAAS,MAAM,QAAO,SAAQ,KAAK,SAAS,WAAW,UACpB,GAAG,CAAC;IAAE;IAAgB;GAAY,CAAC,CAAC;GAC3F,QAAQ,OAAO,UAAU,QAAQ,MAAM,OAAO,QAAQ,OAAO;GAC7D,MAAM,iBAAiB,kBAAkB,WAAW,OAAO,YAAY,OAAO,EAAE,gBAAgB,EAAE,CAAC;GACnG,OAAO;IACH,OAAOH,KAAG;IACV,MAAMA,KAAGH;IACT,MAAM,QAAQ,QAAQ;IACtB,SAAS;KACL,SAAS;KACT,OAAO;KACP,WAAW,CAAC,UAAU,GAAG,GAAG,cAAc;IAC9C;GACJ;EACJ;EACA,gBAAgB,aAAa;GACzB,MAAM,OAAO;GACb,KAAK,IAAI,IAAI,IAAI,EAAE,GAAG;IAClB,MAAM,OAAO,MAAM,IAAI,OAAO,GAAG,OAAO;IACxC,IAAI,OAAO,YAAY,OAAO,IAAI,MAAM,aACpC,OAAO;GAEf;EACJ;EACA,aAAa,MAAM,MAAM;GACrB,IAAI,KAAK,KAAK,SAAS,SAAS,YAAY,KAAK,SAAS,SAAS,UAC/D,OAAO,eAAe,KAAK,KAAK,KAAK,KAAK,GAAG;GAEjD,IAAI,KAAK,KAAK,SAAS,SAAS,YAAY,KAAK,SAAS,SAAS,UAC/D,OAAO,eAAe,KAAK,KAAK,MAAM,KAAK,IAAI,KAAK,KAAK,KAAK,aAAa,KAAK;GAEpF,OAAO;EACX;CACJ;CACA,OAAK;;;;;;CCxGL,CAAC,SAAU,UAAU;;EAEjB,SAAS,SAAS,SAAS,KAAK;;EAEhC,SAAS,SAAS,WAAW,KAAK;;EAElC,SAAS,SAAS,WAAW,KAAK;CACtC,EAAA,CAAG,aAAa,WAAW,CAAC,EAAE;;;;ACJ9B,SAAgB,WAAW,aAAa;CACpC,MAAM,SAAS,CAAC;CAChB,KAAK,MAAM,cAAc,aACrB,IAAI;EACA,WAAW,QAAQ;CACvB,SACO,GAAG;EACN,OAAO,KAAK,CAAC;CACjB;CAEJ,IAAI,OAAO,WAAW,GAClB,MAAM,OAAO;MAEZ,IAAI,OAAO,SAAS,GACrB,MAAM,IAAI,kBAAkB,MAAM;AAE1C;;;CAvBa,oBAAb,cAAuC,MAAM;EACzC;EACA,YAAY,QAAQ;GAChB,MAAM,yDAAyD,OAAO,KAAK,IAAI,EAAE,EAAE;GACnF,KAAK,SAAS;EAClB;CACJ;CAkBa,aAAb,MAAwB;EACpB,cAAc;EACd,eAAe,CAAC;EAChB,UAAU;GACN,IAAI,KAAKO,aACL;GAEJ,KAAKA,cAAc;GACnB,WAAW,KAAK,YAAY;EAChC;EACA,UAAU,OAAO;GACb,IAAI,KAAKA,aACL,MAAM,QAAQ;QAGd,KAAK,aAAa,KAAK,KAAK;GAEhC,OAAO;EACX;EACA,IAAI,aAAa;GACb,OAAO,KAAKA;EAChB;CACJ;;;;;;CCxCa,UAAb,MAAqB;EACjB,QAAQ;EACR;EACA;EACA;EACA,YAAY,wBAAwB;GAChC,KAAKC,0BAA0B;GAC/B,KAAKC,uBAAuB,CAAC;GAC7B,KAAKC,mBAAmB;EAC5B;EACA,IAAI,OAAO;GACP,OAAO,KAAKC;EAChB;EACA,MAAM,SAAS;GACX,KAAKA;GACL,OAAO,IAAI,SAAS,GAAG,MAAM;IACzB,KAAKF,qBAAqB,KAAK;KAAE;KAAS;KAAG;IAAE,CAAC;IAChD,KAAKG,SAAS;GAClB,CAAC;EACL;EACA,WAAW;GACP,OAAO,KAAKH,qBAAqB,UAAU,KAAKC,mBAAmB,KAAKF,yBAAyB;IAC7F,MAAM,eAAe,KAAKC,qBAAqB,MAAM;IACrD,KAAKC;IACL,MAAM,UAAU,aAAa,QAAQ;IACrC,QAAQ,KAAK,aAAa,GAAG,aAAa,CAAC;IAC3C,QAAQ,WAAW,KAAKG,UAAU,SAAS,KAAKA,UAAU,CAAC;GAC/D;EACJ;EACA,YAAY;GACR,KAAKF;GACL,KAAKD;GACL,IAAI,KAAKD,qBAAqB,SAAS,GACnC,KAAKG,SAAS;EAEtB;CACJ;;;;;;CC1CM,wBAAwB,aAAa,SAAS,SAAS;CAChD,cAAb,MAAyB;EACrB,uBAAO,IAAI,IAAI;EACf;EACA,YAAY,QAAQ,sBAAsB;GACtC,KAAKE,SAAS;EAClB;EACA,IAAI,KAAK,OAAO;GACZ,KAAKC,KAAK,IAAI,KAAKD,OAAO,GAAG,GAAG;IAAE;IAAK;GAAM,CAAC;GAC9C,OAAO;EACX;EACA,IAAI,UAAU;GACV,OAAO,KAAKC,KAAK,IAAI,KAAKD,OAAO,QAAQ,CAAC,CAAC,EAAE;EACjD;EACA,IAAI,UAAU;GACV,OAAO,KAAKC,KAAK,IAAI,KAAKD,OAAO,QAAQ,CAAC;EAC9C;EACA,IAAI,OAAO;GACP,OAAO,KAAKC,KAAK;EACrB;EACA,QAAQ;GACJ,KAAKA,KAAK,MAAM;EACpB;EACA,OAAO,UAAU;GACb,OAAO,KAAKA,KAAK,OAAO,KAAKD,OAAO,QAAQ,CAAC;EACjD;EACA,CAAC,SAAS;GACN,KAAK,MAAM,SAAS,KAAKC,KAAK,OAAO,GACjC,MAAM,MAAM;EAEpB;EACA,CAAC,OAAO;GACJ,KAAK,MAAM,SAAS,KAAKA,KAAK,OAAO,GACjC,MAAM,MAAM;EAEpB;EACA,CAAC,UAAU;GACP,KAAK,MAAM,SAAS,KAAKA,KAAK,OAAO,GACjC,MAAM,CAAC,MAAM,KAAK,MAAM,KAAK;EAErC;EACA,CAAC,OAAO,YAAY;GAChB,OAAO,KAAK,QAAQ;EACxB;CACJ;;;;AC1CA,SAAgB,4BAA4B,WAAW;CACnD,OAAO,eAAe;AAC1B;AACA,SAAgB,mBAAmB,WAAW,QAAQ;CAClD,IAAI,UAAU,iBAAiB,WAAW,GACtC;CAGJ,MAAM,qBAAqB,UAAU,iBAChC,QAAO,WAAU,OAAO,WAAW,OAAO,UACxC,OAAO,cAAc,OAAO,cAC3B,OAAO,OAAO,WAAW,OAAO,SAAS,GAAG,KAAK,OAAO,OAAO,WAAW,OAAO,SAAS,IAAI,EAAE,CAAC,CACpG,MAAM,GAAG,MAAM,EAAE,OAAO,SAAS,EAAE,OAAO,MAAM;CACrD,IAAI,mBAAmB,QACnB,OAAO,mBAAmB;CAI9B,OAAO,UAAU,iBAAiB;AACtC;AACA,eAAsB,uBAAuB,QAAQ,WAAW,UAAU;CACtE,IAAI;EACA,MAAM,MAAM,MAAM,UAAU,qBAAqB,QAAQ;EACzD,IAAI,KACA,OAAO;CAEf,QACM,CAEN;CACA,MAAM,gBAAgB,+BAA+B,QAAQ,QAAQ;CACrE,IAAI,eACA,OAAO,UAAU,qBAAqB,aAAa;AAG3D;;;;;;AAMA,eAAsB,uBAAuB,QAAQ,WAAW,SAAS,eAAe;CACpF,MAAM,SAAS,OAAO,QAAQ;EAC1B,MAAM,SAAS,MAAM,UAAU,KAAK,GAAG;EACvC,eAAe,IAAI,KAAK,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC;EAC5C,OAAO,CAAC,CAAC;CACb;CACA,IAAI,MAAM,OAAO,OAAO,GACpB,OAAO;CAGX,MAAM,gBAAgB,+BAA+B,QAAQ,OAAO;CACpE,IAAI,iBAAiB,MAAM,OAAO,aAAa,GAC3C,OAAO;AAGf;AACA,SAAgB,+BAA+B,QAAQ,SAAS;CAC5D,MAAM,MAAM,MAAM,QAAQ,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,QAAQ,OAAO,EAAE;CAClE,IAAI,OAAO,uBAAuB,SAAS,GAAG,GAC1C,OAAO;CAEX,IAAI,QAAQ,MAAM,CAAC,OAAO,4BAA4B,SAAS,GAAG,GAC9D,OAAO,QAAQ,KAAK,EAAE,MAAM,QAAQ,OAAO,OAAO,OAAO,uBAAuB,MAAA,MAAoC,CAAC;AAG7H;;gBApE2C;aACe;;;;AC8B1D,SAAS,WAAW,OAAO;CACvB,QAAQ,OAAR;EACI,KAAK,gBAAgB,OAAO,OAAOC,eAAI,mBAAmB;EAC1D,KAAK,gBAAgB,SAAS,OAAOA,eAAI,mBAAmB;EAC5D,KAAK,gBAAgB,MAAM,OAAOA,eAAI,mBAAmB;EACzD,KAAK,gBAAgB,QAAQ;EAC7B,KAAK,KAAA,GAAW;CACpB;AACJ;;;;;;cApCwC;mBACyC;eACzB;YACT;mBACK;cACL;cACH;WACyD;kBACjD;gBACI;CAKxD,CAAC,SAAU,iBAAiB;;EAExB,gBAAgB,YAAY;;;;;;EAM5B,gBAAgB,UAAU;;EAE1B,gBAAgB,aAAa;;EAE7B,gBAAgB,WAAW;CAC/B,EAAA,CAAG,oBAAoB,kBAAkB,CAAC,EAAE;CAc5C,CAAC,SAAU,gBAAgB;;EAEvB,eAAe,2BAA2B;;EAE1C,eAAe,gCAAgC;;EAE/C,eAAe,qBAAqB;;EAEpC,eAAe,6BAA6B;;EAE5C,eAAe,2BAA2B;;EAE1C,eAAe,8BAA8B;CACjD,EAAA,CAAG,mBAAmB,iBAAiB,CAAC,EAAE;CAIpC,cAAN,MAAkB;EACd,mBAAmB,IAAI,YAAY;EACnC,YAAY,OAAO;GACf,KAAK,MAAM,QAAQ,OAAO;IACtB,IAAI,KAAK,KAAK,SAAS,SAAS,UAC5B;IAEJ,MAAM,oBAAoB,KAAKC,iBAAiB,IAAI,KAAK,KAAK,IAAI;IAClE,MAAM,WAAW;KAAE,QAAQ,KAAK;KAAQ,UAAU,KAAK,KAAK;IAAS;IACrE,IAAI,mBACA,kBAAkB,cAAc,KAAK,QAAQ;SAG7C,KAAKA,iBAAiB,IAAI,KAAK,KAAK,MAAM,EAAE,eAAe,CAAC,QAAQ,EAAE,CAAC;GAE/E;EACJ;EACA,IAAI,OAAO;GACP,OAAO,KAAKA,iBAAiB;EACjC;EACA,UAAU;GACN,OAAO,KAAKA,iBAAiB,QAAQ;EACzC;CACJ;CACa,qBAAb,MAAgC;EAC5B;EACA;EACA;EACA;EACA;EACA,YAAY,eAAe,WAAW,cAAc,aAAa,QAAQ;GACrE,KAAKC,iBAAiB;GACtB,KAAKC,aAAa;GAClB,KAAKC,gBAAgB;GACrB,KAAKC,eAAe;GACpB,KAAKC,UAAU;EACnB;EACA,MAAM,QAAQ,KAAK,SAAS,OAAO;GAC/B,KAAKA,QAAQ,IAAI,SAAS,OAAO,8BAA8B;IAAE,UAAU,IAAI;IAAK,SAAS,IAAI;GAAQ,CAAC;GAC1G,MAAM,EAAE,OAAO,gBAAgB,MAAM,KAAKF,cAAc,SAAS,GAAG;GACpE,MAAM,YAAY,IAAI,YAAY;GAClC,IAAI,MAAM,yBACN,OAAO;IAAE;IAAO,aAAa,CAAC;IAAG;GAAU;GAG/C,UAAU,IAAI,UAAU,GAAG,GAAG,EAAE,QAAQ,KAAK,CAAC;GAC9C,MAAM,eAAe,MAAM,QAAQ,IAAI;IACnC,KAAKG,mBAAmB,SAAS,OAAO,WAAW,KAAK;IACxD,KAAKC,uBAAuB,KAAK,SAAS,OAAO,KAAK;IACtD,MAAM,KAAK,KAAKC,wBAAwB,SAAS,OAAO,WAAW,CAAC;IACpE,MAAM,KAAK,KAAKC,+BAA+B,SAAS,KAAK,CAAC;IAC9D,MAAM,KAAK,KAAKC,kCAAkC,SAAS,KAAK,CAAC;GACrE,CAAC,EAAA,CAAG,KAAK;GACT,KAAKL,QAAQ,IAAI,SAAS,OAAO,uCAAuC;IAAE,UAAU,IAAI;IAAK,SAAS,IAAI;IAAS;GAAY,CAAC;GAChI,OAAO;IACI;IACP;IACa;GACjB;EACJ;EACA,MAAME,uBAAuB,KAAK,SAAS,OAAO,OAAO;GACrD,MAAM,WAAW,WAAW,QAAQ,qBAAqB;GACzD,IAAI,OAAO,aAAa,aACpB,OAAO,CAAC;GAEZ,MAAM,MAAM,MAAM,KAAKH,aAAa,eAAe,KAAK,EAAE,gBAAgB,KAAK,CAAC;GAChF,IAAI,MAAM,yBACN,OAAO,CAAC;GAEZ,MAAM,cAAc,CAAC;GACrB,KAAK,MAAM,QAAQ,OACf,IAAI,KAAK,KAAK,SAAS,SAAS,YACzB,KAAK,OAAO,SAAS,WAAW,GAAG,KACnC,eAAe,KAAK,KAAK,MAAM,UAAU,GAAG,CAAC,KAC7C,KAAK,KAAK,YACV,CAAC,IAAI,WAAW;IAAE,oBAAoB,KAAK,OAAO;IAAoB,UAAU,KAAK,KAAK;GAAS,CAAC,GAAG;IAE1G,IAAI,8BAA8B,KAAK,KAAK,QAAQ,GAChD;IAEJ,IAAI,CAAC,KAAKO,eAAe,SAAS,KAAK,OAAO,QAAQ,GAClD,YAAY,KAAK;KACb,MAAM,eAAe;KACrB,SAASC,eAAK,EAAE,0BAA4B,KAAK,KAAK,QAAQ;KAC9D,OAAO,KAAK,OAAO;KACnB;KACA,MAAM,EACF,UAAU,KAAK,OAAO,SAC1B;IACJ,CAAC;GAET;GAEJ,OAAO;EACX;EACA,CAACJ,wBAAwB,SAAS,OAAO,aAAa;GAClD,MAAM,WAAW,WAAW,QAAQ,kBAAkB;GACtD,IAAI,OAAO,aAAa,aACpB,OAAO,CAAC;GAEZ,KAAK,MAAM,QAAQ,OACf,IAAI,KAAK,KAAK,SAAS,SAAS,aAAa,CAAC,YAAY,OAAO,KAAK,KAAK,GAAG,GAC1E,MAAM;IACF,MAAM,eAAe;IACrB,SAASI,eAAK,EAAE,mCAAqC,KAAK,KAAK,GAAG;IAClE,OAAO,KAAK,OAAO;IACnB;IACA,MAAM,EACF,KAAK,KAAK,KAAK,IACnB;GACJ;EAGZ;EACA,CAACH,+BAA+B,SAAS,OAAO;GAC5C,MAAM,gBAAgB,WAAW,QAAQ,6BAA6B;GACtE,IAAI,OAAO,kBAAkB,aACzB;GAEJ,MAAM,WAAW,IAAI,iBAAiB;GACtC,KAAK,MAAM,QAAQ,OACf,IAAI,KAAK,SAAS,WAAW,QAAQ,KAAK,KAAK,SAAS,SAAS,WAC7D,SAAS,IAAI,KAAK,KAAK,KAAK,IAAI;GAGxC,KAAK,MAAM,QAAQ,OACf,IAAI,KAAK,SAAS,WAAW,cAAc,CAAC,SAAS,OAAO,KAAK,IAAI,IAAI,GACrE,MAAM;IACF,MAAM,eAAe;IACrB,SAASG,eAAK,EAAE,2BAA2B;IAC3C,OAAO,KAAK,OAAO;IACnB,UAAU;IACV,MAAM,CACFb,eAAI,cAAc,WACtB;IACA,MAAM;GACV;EAGZ;EACA,CAACW,kCAAkC,SAAS,OAAO;GAC/C,MAAM,gBAAgB,WAAW,QAAQ,gCAAgC;GACzE,IAAI,OAAO,kBAAkB,aACzB;GAEJ,MAAM,qCAAqB,IAAI,IAAI;GACnC,KAAK,MAAM,QAAQ,OACf,IAAI,KAAK,SAAS,WAAW,YAAY;IACrC,MAAM,WAAW,mBAAmB,IAAI,KAAK,IAAI,IAAI;IACrD,IAAI,UACA,SAAS,KAAK,IAAI;SAGlB,mBAAmB,IAAI,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC;GAEpD;GAEJ,KAAK,MAAM,CAAC,KAAK,SAAS,oBAAoB;IAC1C,IAAI,KAAK,UAAU,GACf;IAEJ,KAAK,MAAM,gBAAgB,MACvB,MAAM;KACF,MAAM,eAAe;KACrB,SAASE,eAAK,EAAE,4CAA8C,GAAG;KACjE,OAAO,aAAa,IAAI;KACxB,UAAU;KACV,oBAAoB,KACf,QAAO,MAAK,MAAM,YAAY,CAAC,CAC/B,KAAI,QAAOb,eAAI,6BAA6B,OAAO;MAAE,KAAK,IAAI,OAAO,SAAS,SAAS;MAAG,OAAO,IAAI,IAAI;KAAM,GAAGa,eAAK,EAAE,2BAA2B,CAAC,CAAC;KAC3J,MAAM;IACV;GAER;EACJ;EACA,MAAMN,mBAAmB,SAAS,OAAO,WAAW,OAAO;GACvD,MAAM,oBAAoB,WAAW,QAAQ,iBAAiB;GAC9D,IAAI,OAAO,sBAAsB,aAC7B,OAAO,CAAC;GAEZ,MAAM,wBAAwB,WAAW,OAAO,QAAQ,sCAAsC,cAAc,QAAQ,wBAAwB,QAAQ,iCAAiC;GAErL,MAAM,UAAU,IAAI,YAAY,MAAM,QAAO,SAAQ,CAAC,KAAK,OAAO,SAAS,WAAW,GAAG,CAAC,CAAC;GAC3F,IAAI,QAAQ,SAAS,GACjB,OAAO,CAAC;GAEZ,MAAM,UAAU,IAAI,QAAQ,EAAE;GAC9B,MAAM,cAAc,CAAC;GACrB,MAAM,QAAQ,IAAI,MAAM,KAAK,QAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,eAAe,aAAa;IACtF,OAAO,QAAQ,MAAM,YAAY;KAC7B,IAAI,MAAM,yBACN;KAEJ,MAAM,mBAAmB,MAAM,uBAAuB,KAAKL,gBAAgB,KAAKC,YAAY,MAAM,SAAS;KAC3G,IAAI,MAAM,yBACN;KAEJ,IAAI,CAAC;WACI,MAAM,QAAQ,OACf,IAAI,CAAC,KAAKS,eAAe,SAAS,KAAK,OAAO,YAAY,GACtD,YAAY,KAAK;OACb,MAAM,eAAe;OACrB,SAASC,eAAK,EAAE,oCAAoC,KAAK,MAAM;OAC/D,OAAO,KAAK,OAAO;OACnB,UAAU;OACV,MAAM;QACF,QAAQ,KAAK;QACb,UAAU,KAAK,OAAO;OAC1B;MACJ,CAAC;KAAA,OAIR,IAAI,OAAO,0BAA0B,eAAe,KAAKC,gBAAgB,gBAAgB,GAAG;MAE7F,MAAM,gBAAgB,MAAM,QAAO,MAAK,EAAE,QAAQ;MAClD,IAAI,cAAc,QAAQ;OACtB,MAAM,MAAM,MAAM,KAAKT,aAAa,IAAI,kBAAkB,EAAE,gBAAgB,KAAK,CAAC;OAClF,IAAI,MAAM,yBACN;OAEJ,KAAK,MAAM,QAAQ,eAAe;QAE9B,IAAI,8BAA8B,KAAK,QAAQ,GAC3C;QAEJ,IAAI,EAAE,OAAO,IAAI,WAAW;SAAE,oBAAoB,KAAK,OAAO;SAAoB,UAAU,KAAK;QAAS,CAAC,MAAM,CAAC,KAAKO,eAAe,SAAS,KAAK,OAAO,YAAY,KAAK,CAAC,KAAKA,eAAe,SAAS,KAAK,OAAO,QAAQ,GAAG;SAC7N,MAAM,SAAS,KAAK,OAAO,qBAAqB,YAAY,KAAK,OAAO,mBAAmB,kBAAkB,KAAK,OAAO,kBAAkB,OAAO,EAAE,gBAAgB,GAAG,CAAC,GAAG,KAAA,CAAS,MAAM,KAAK,OAAO;SACtM,YAAY,KAAK;UACb,MAAM,eAAe;UACrB,SAASC,eAAK,EAAE,sCAAsC,KAAK,QAAQ;UAC5D;UACP,UAAU;UACV,MAAM;WACF,UAAU,KAAK;WACf,UAAU,KAAK,OAAO;UAC1B;SACJ,CAAC;QACL;OACJ;MACJ;KACJ;IACJ,CAAC;GACL,CAAC,CAAC;GACF,OAAO;EACX;EACA,gBAAgB,kBAAkB;GAC9B,OAAO,KAAKV,WAAW,oBAAoB,gBAAgB,KAAK,qBAAqB,KAAKD,gBAAgB,gBAAgB;EAC9H;EACA,eAAe,SAAS,MAAM;GAC1B,OAAO,QAAQ,YAAY,MAAK,SAAQa,iBAAAA,QAAU,QAAQ,MAAM,IAAI,CAAC;EACzE;CACJ;CACM,gBAAN,cAA4B,WAAW;EACnC,2BAA2B,KAAK,UAAU,IAAIf,eAAI,QAAM,CAAC;;;;EAIzD,0BAA0B,KAAKgB,yBAAyB;EACxD,gBAAgB,IAAI,YAAY;EAChC;EACA;EACA,YAAY,WAAW,QAAQ;GAC3B,MAAM;GACN,KAAKb,aAAa;GAClB,KAAKG,UAAU;EACnB;EACA,UAAU;GACN,MAAM,QAAQ;GACd,KAAK,MAAM,SAAS,KAAKW,cAAc,OAAO,GAC1C,MAAM,QAAQ,QAAQ;GAE1B,KAAKA,cAAc,MAAM;EAC7B;;;;EAIA,uBAAuB,UAAU,OAAO,WAAW;GAC/C,MAAM,mBAAmB,IAAI,IAAI,MAC5B,QAAO,SAAQ,KAAK,KAAK,SAAS,SAAS,QAAQ,CAAC,CACpD,KAAI,UAAS;IAAE,MAAM,KAAK,KAAK;IAAM,QAAQ,CAAC,CAAE,UAAU,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;GAAQ,EAAE,CAAC;GAE/F,KAAK,MAAM,SAAS,KAAKA,cAAc,OAAO,GAC1C,MAAM,UAAU,OAAO,QAAQ;GAGnC,KAAK,MAAM,EAAE,MAAM,YAAY,kBAAkB;IAC7C,IAAI,QAAQ,KAAKA,cAAc,IAAI,IAAI;IACvC,IAAI,CAAC,OAAO;KACR,QAAQ;MACJ,SAAS,KAAKC,eAAe,IAAI;MACjC,WAAW,IAAI,YAAY;MAC3B;KACJ;KACA,KAAKD,cAAc,IAAI,MAAM,KAAK;IACtC;IACA,MAAM,UAAU,IAAI,UAAU,QAAQ;GAC1C;GAEA,KAAK,MAAM,CAAC,KAAK,UAAU,KAAKA,eAC5B,IAAI,MAAM,UAAU,SAAS,GAAG;IAC5B,MAAM,QAAQ,QAAQ;IACtB,KAAKA,cAAc,OAAO,GAAG;GACjC;EAER;EACA,eAAe,UAAU;GACrB,KAAK,uBAAuB,UAAU,CAAC,GAAG,IAAI,YAAY,CAAC;EAC/D;EACA,gBAAgB,MAAM;GAClB,MAAM,QAAQ,KAAKA,cAAc,IAAI,IAAI;GACzC,IAAI,CAAC,OACD;GAEJ,OAAO,EAAE,QAAQ,MAAM,OAAO;EAClC;EACA,eAAe,MAAM;GACjB,MAAM,UAAU,KAAKd,WAAW,UAAU,MAAM,EAAE,cAAc,KAAK,CAAC;GACtE,MAAM,YAAY,QAAQ,aAAa,aAAa,KAAKgB,yBAAyB,UAAU,KAAK,CAAC;GAClG,MAAM,YAAY,QAAQ,aAAa,aAAa,KAAKA,yBAAyB,UAAU,IAAI,CAAC;GACjG,OAAO,EACH,eAAe;IACX,QAAQ,QAAQ;IAChB,UAAU,QAAQ;IAClB,UAAU,QAAQ;GACtB,EACJ;EACJ;EACA,yBAAyB,UAAU,QAAQ;GACvC,KAAKb,QAAQ,IAAI,SAAS,OAAO,yCAAyC;IAAE;IAAU;GAAO,CAAC;GAC9F,MAAM,QAAQ,KAAKW,cAAc,IAAI,QAAQ;GAC7C,IAAI,OAAO;IACP,MAAM,SAAS;IACf,KAAKD,yBAAyB,KAAK;KAC/B,iBAAiB;KACjB,cAAc,MAAM,UAAU,OAAO;KACrC;IACJ,CAAC;GACL;EACJ;CACJ;CACa,qBAAb,cAAwC,WAAW;EAC/C;EACA;EACA,yBAAyB,KAAK,UAAU,IAAIhB,eAAI,QAAQ,CAAC;EACzD,wBAAwB,KAAKoB,uBAAuB;EACpD,YAAY,eAAe,WAAW,cAAc,aAAa,QAAQ;GACrE,MAAM;GACN,MAAM,cAAc,IAAI,cAAc,WAAW,MAAM;GACvD,KAAKC,eAAe,KAAK,UAAU,WAAW;GAC9C,KAAK,UAAU,KAAKA,aAAa,yBAAwB,MAAK;IAC1D,OAAO,IAAI,SAAS,OAAO,8CAA8C,EAAE,UAAU,EAAE,gBAAgB,CAAC;IACxG,KAAKD,uBAAuB,KAAK;KAC7B,iBAAiB,EAAE;KACnB,kBAAkB,MAAM,KAAK,EAAE,YAAY;IAC/C,CAAC;GACL,CAAC,CAAC;GACF,MAAM,uBAAuB,IAAI,MAAM,WAAW,EAC9C,IAAI,QAAQ,GAAG,UAAU;IACrB,IAAI,MAAM,QAAQ;KACd,MAAM,QAAQ,QAAQ,IAAI,QAAQ,GAAG,QAAQ;KAC7C,OAAO,OAAO,UAAU,aAAa,MAAM,KAAK,SAAS,IAAI;IACjE;IACA,OAAO,eAAgB,UAAU;KAC7B,MAAM,OAAO,YAAY,gBAAgB,QAAQ;KACjD,IAAI,MACA,IAAI,KAAK,QACL,OAAO,EAAE,aAAa,MAAM;UAG5B;KAGR,OAAO,UAAU,KAAK,KAAK,SAAS,WAAW,SAAS,MAAM,QAAQ;IAC1E;GACJ,EACJ,CAAC;GACD,KAAKE,YAAY,IAAI,mBAAmB,eAAe,sBAAsB,cAAc,aAAa,MAAM;GAC9G,KAAK,UAAU,UAAU,6BAA4B,QAAO;IACxD,KAAKD,aAAa,eAAe,GAAG;GACxC,CAAC,CAAC;EACN;EACA,MAAM,mBAAmB,KAAK,SAAS,OAAO;GAC1C,MAAM,UAAU,MAAM,KAAKC,UAAU,QAAQ,KAAK,SAAS,KAAK;GAChE,IAAI,MAAM,yBACN,OAAO,CAAC;GAEZ,KAAKD,aAAa,uBAAuB,UAAU,GAAG,GAAG,QAAQ,OAAO,QAAQ,SAAS;GACzF,OAAO,QAAQ;EACnB;EACA,yBAAyB,KAAK;GAC1B,KAAKA,aAAa,eAAe,GAAG;EACxC;CACJ;;;;;;;;YCpcsD;mBACC;kBACS;kBACd;WACA;CACrC,2CAAb,MAAa,yCAAyC;EAClD,OAAOE,wBAAwBC,eAAK,EAAE,+BAA+B;EACrE,OAAOC,2BAA2BD,eAAK,EAAE,kCAAkC;EAC3E,CAAC,WAAW,KAAK,OAAO,SAAS;GAC7B,IAAI,CAAC,KAAKE,WAAW,OAAO,GACxB;GAEJ,MAAM,wCAAwB,IAAI,IAAI;GACtC,KAAK,MAAM,QAAQ,QAAQ,aACvB,IAAI,KAAK,SAAS,eAAe,yBAAyB,KAAK,QAAQ,gBAAgB,KAAK,OAAO,KAAK,GAAG;IACvG,MAAM,OAAO,KAAK;IAClB,MAAM,KAAKC,2BAA2B,KAAK,MAAM,yCAAyCJ,qBAAqB;IAC/G,sBAAsB,IAAI,KAAK,OAAO,MAAM,MAAM,IAAI;GAC1D;GAEJ,KAAK,MAAM,QAAQ,QAAQ,aACvB,IAAI,KAAK,SAAS,eAAe,4BAA4B,KAAK,QAAQ,gBAAgB,KAAK,OAAO,KAAK,GAAG;IAC1G,MAAM,OAAO,KAAK;IAClB,IAAI,CAAC,sBAAsB,IAAI,KAAK,OAAO,MAAM,MAAM,IAAI,GACvD,MAAM,KAAKI,2BAA2B,KAAK,MAAM,yCAAyCF,wBAAwB;GAE1H;EAER;EACA,WAAW,SAAS;GAChB,IAAI,OAAO,QAAQ,SAAS,aACxB,OAAO;GAEX,OAAO,QAAQ,KAAK,MAAK,SAAQ,uBAAuBG,eAAI,eAAe,UAAU,IAAI,CAAC;EAC9F;EACA,2BAA2B,KAAK,YAAY,OAAO;GAC/C,MAAM,UAAU,IAAI,qBAAqB;GACzC,MAAM,QAAQ,WAAW,OAAO;GAChC,QAAQ,QAAQ,UAAU,GAAG,GAAGA,eAAI,MAAM,OAAO,MAAM,MAAM,MAAM,GAAG,MAAM,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE;GAClG,OAAO;IAAE;IAAO,MAAMA,eAAI,eAAe;IAAU,MAAM,QAAQ,QAAQ;GAAE;EAC/E;CACJ;;;;;;mBC/CkF;YACjC;gBACO;CAC3C,uBAAb,MAAkC;EAC9B;EACA;EACA;EACA;EACA,YAAY,eAAe,WAAW,aAAa,WAAW;GAC1D,KAAKC,iBAAiB;GACtB,KAAKC,aAAa;GAClB,KAAKC,eAAe;GACpB,KAAKC,aAAa;EACtB;EACA,MAAM,kBAAkB,UAAU,UAAU,OAAO;GAC/C,MAAM,MAAM,MAAM,KAAKD,aAAa,eAAe,QAAQ;GAC3D,IAAI,MAAM,yBACN,OAAO,CAAC;GAEZ,MAAM,kBAAkB,IAAI,QAAQ,MAAK,UAAS,cAAc,MAAM,oBAAoB,OAAO,QAAQ,CAAC;GAC1G,IAAI,iBACA,OAAO,gBAAgB;GAE3B,OAAO,KAAKE,+BAA+B,UAAU,UAAU,KAAK;EACxE;EACA,MAAMA,+BAA+B,UAAU,UAAU,OAAO;GAC5D,MAAM,YAAY,MAAM,KAAKD,WAAW,WAAW,CAAC,QAAQ,CAAC,EAAA,CAAG;GAChE,KAAK,MAAM,QAAQ,UAAU;IACzB,IAAI,KAAK,SAAS,WAAW,cAAc,cAAc,KAAK,IAAI,OAAO,QAAQ,GAC7E,OAAO,KAAKE,oBAAoB,KAAK,IAAI,MAAM,QAAQ;IAE3D,IAAI,cAAc,KAAK,OAAO,WAAW,QAAQ,GAC7C,OAAO,KAAKC,qBAAqB,MAAM,UAAU,KAAK;GAE9D;EAEJ;EACA,MAAMA,qBAAqB,YAAY,gBAAgB,OAAO;GAC1D,IAAI,WAAW,KAAK,SAAS,SAAS,WAClC,OAAO,KAAKD,oBAAoB,WAAW,KAAK,KAAK,cAAc;GAEvE,IAAI,WAAW,KAAK,SAAS,SAAS,YAAY,CAAC,WAAW,KAAK,UAC/D;GAEJ,MAAM,mBAAmB,MAAM,uBAAuB,KAAKL,gBAAgB,KAAKC,YAAY,WAAW,KAAK,IAAI;GAChH,IAAI,CAAC,oBAAoB,MAAM,yBAC3B;GAGJ,QAAO,MADW,KAAKC,aAAa,IAAI,gBAAgB,EAAA,EAC5C,iBAAiB,WAAW,KAAK,QAAQ,CAAC,EAAE;EAC5D;EACA,oBAAoB,KAAK,gBAAgB;GAErC,MAAM,MAAM,IADe,kBAAkB,cACpB,CAAC,CAAC,OAAO,GAAG;GACrC,OAAO,MAAM;IAAE,OAAO,IAAI,OAAO;IAAO,KAAK,IAAI,OAAO,SAAS,SAAS;GAAE,IAAI,KAAA;EACpF;CACJ;;;;;;CCvDC,CAAC,SAAS,MAAM;EAGhB,IAAI,cAAc,OAAO,WAAW,YAAY;EAGhD,IAAI,aAAa,OAAO,UAAU,YAAY,UAC7C,OAAO,WAAW,eAAe;EAIlC,IAAI,aAAa,OAAO,UAAU,YAAY;EAC9C,IAAI,WAAW,WAAW,cAAc,WAAW,WAAW,YAC7D,OAAO;EAMR,IAAI,qBAAqB;EAIzB,IAAI,sBAAsB;EAI1B,IAAI,oBAAoB;EAExB,IAAI,sBAAsB;EAC1B,IAAI,YAAY;GAAC,KAAO;GAAM,KAAS;GAAO,KAAS;GAAM,KAAS;GAAM,KAAS;GAAK,KAAS;GAAK,KAAS;GAAK,KAAS;GAAM,KAAS;GAAiB,KAAS;GAAU,KAAS;GAAY,KAAS;GAAO,KAAS;GAAS,KAAK;GAAM,MAAK;GAAU,KAAS;GAAS,KAAS;GAAc,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAO,KAAS;GAAS,KAAS;GAAO,KAAS;GAAQ,QAAO;GAAO,MAAe;GAAa,KAAS;GAAQ,KAAI;GAAS,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAS,KAAI;GAAQ,KAAI;GAAO,KAAS;GAAQ,KAAI;GAAQ,KAAS;GAAS,KAAI;GAAO,KAAO;GAAQ,KAAI;GAAQ,KAAO;GAAS,KAAI;GAAS,KAAS;GAAO,KAAS;GAAO,KAAO;GAAS,KAAK;GAAO,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAS,MAAI;GAAO,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAO;GAAQ,KAAO;GAAQ,KAAI;GAAO,KAAI;GAAO,KAAI;GAAO,KAAI;GAAO,KAAI;GAAO,KAAI;GAAO,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAU,KAAS;GAAU,KAAS;GAAU,KAAS;GAAU,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAO,KAAS;GAAO,KAAS;GAAO,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAO,KAAO;GAAO,KAAO;GAAO,KAAI;GAAS,KAAI;GAAM,KAAI;GAAM,aAAY;GAAK,KAAI;GAAM,KAAI;GAAM,KAAI;GAAS,KAAS;GAAS,KAAS;GAAU,KAAS;GAAS,KAAS;GAAS,KAAS;GAAO,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAQ,KAAI;GAAQ,KAAO;GAAQ,KAAS;GAAQ,KAAI;GAAM,KAAO;GAAO,KAAS;GAAQ,KAAS;GAAM,KAAO;GAAM,KAAS;GAAO,KAAS;GAAQ,KAAO;GAAQ,KAAS;GAAO,KAAS;GAAO,KAAS;GAAQ,KAAO;GAAM,KAAO;GAAO,KAAO;GAAM,KAAS;GAAS,KAAS;GAAK,KAAS;GAAK,KAAS;GAAM,KAAS;GAAQ,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAO,KAAS;GAAO,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,MAAe;GAAS,KAAS;GAAO,KAAS;GAAO,KAAS;GAAO,KAAS;GAAO,KAAS;GAAS,KAAS;GAAS,KAAS;GAAa,KAAS;GAAW,KAAS;GAAM,KAAS;GAAa,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAM,KAAS;GAAM,KAAS;GAAO,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAO,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAO,KAAS;GAAM,KAAS;GAAQ,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAU,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAO,KAAS;GAAO,MAAe;GAAQ,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAM,KAAS;GAAK,KAAS;GAAQ,KAAS;GAAK,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAO,KAAS;GAAS,KAAS;GAAM,KAAI;GAAO,KAAO;GAAK,KAAO;GAAM,KAAO;GAAQ,KAAI;GAAK,KAAS;GAAM,MAAU;GAAO,KAAI;GAAS,KAAS;GAAK,MAAU;GAAM,KAAS;GAAQ,KAAI;GAAK,KAAS;GAAM,MAAU;GAAO,KAAO;GAAM,KAAI;GAAO,KAAO;GAAS,KAAS;GAAQ,KAAS;GAAK,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAS,KAAS;GAAO,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAM,MAAe;GAAO,KAAS;GAAS,KAAS;GAAS,KAAS;GAAM,KAAS;GAAO,KAAS;GAAM,KAAS;GAAO,KAAS;GAAM,KAAS;GAAK,KAAS;GAAM,MAAe;GAAO,KAAS;GAAM,MAAe;GAAO,KAAS;GAAM,KAAS;GAAM,KAAS;GAAO,KAAS;GAAO,KAAS;GAAO,KAAS;GAAS,KAAS;GAAU,KAAS;GAAQ,KAAS;GAAW,KAAS;GAAW,KAAS;GAAS,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAM,KAAS;GAAO,MAAe;GAAQ,KAAS;GAAO,MAAe;GAAO,KAAS;GAAK,MAAe;GAAM,KAAS;GAAM,KAAS;GAAK,KAAS;GAAO,MAAe;GAAQ,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAK,KAAS;GAAM,KAAS;GAAM,KAAS;GAAO,MAAe;GAAQ,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAY,MAAe;GAAO,KAAS;GAAO,MAAe;GAAQ,KAAS;GAAQ,MAAe;GAAS,KAAS;GAAQ,MAAe;GAAQ,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAS,KAAS;GAAO,KAAS;GAAO,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAO,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAS,MAAe;GAAU,KAAS;GAAK,KAAS;GAAM,MAAe;GAAO,KAAS;GAAK,KAAS;GAAM,MAAe;GAAO,KAAS;GAAK,MAAe;GAAM,KAAS;GAAK,MAAe;GAAM,MAAe;GAAO,KAAS;GAAM,KAAS;GAAM,MAAe;GAAO,KAAS;GAAK,MAAe;GAAO,MAAe;GAAM,KAAS;GAAK,MAAe;GAAO,MAAe;GAAM,KAAS;GAAQ,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAK,KAAS;GAAO,KAAS;GAAK,KAAS;GAAO,KAAS;GAAK,KAAS;GAAM,KAAS;GAAK,KAAS;GAAM,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAQ,MAAe;GAAmB,KAAS;GAAM,KAAS;GAAO,MAAe;GAAQ,KAAS;GAAM,KAAS;GAAO,MAAe;GAAQ,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAO,KAAS;GAAQ,MAAe;GAAS,KAAS;GAAQ,MAAe;GAAS,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAQ,MAAe;GAAkB,KAAS;GAAQ,MAAe;GAAoB,KAAS;GAAS,KAAS;GAAU,KAAS;GAAS,KAAS;GAAU,KAAS;GAAQ,MAAe;GAAS,KAAS;GAAQ,MAAe;GAAS,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAS,KAAS;GAAO,KAAS;GAAO,KAAS;GAAO,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAM,KAAS;GAAM,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAS,MAAe;GAAU,KAAS;GAAQ,KAAS;GAAS,MAAe;GAAU,KAAS;GAAS,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAU,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAM,KAAS;GAAO,KAAS;GAAO,KAAS;GAAO,KAAS;GAAO,KAAS;GAAO,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAM,KAAS;GAAM,KAAS;GAAM,KAAS;GAAM,KAAS;GAAO,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAK,MAAe;GAAM,KAAS;GAAK,MAAe;GAAM,MAAe;GAAO,KAAS;GAAM,KAAS;GAAM,MAAe;GAAO,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAU,MAAe;GAAW,KAAS;GAAU,KAAS;GAAU,KAAS;GAAQ,MAAe;GAAS,KAAS;GAAO,KAAS;GAAO,KAAS;GAAM,KAAS;GAAU,KAAS;GAAU,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAO,KAAS;GAAW,KAAS;GAAW,KAAS;GAAS,KAAS;GAAS,KAAS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AAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,MAAe;GAAO,MAAe;GAAO,MAAe;GAAM,MAAe;GAAO,MAAe;GAAM,MAAe;GAAO,KAAO;GAAO,KAAO;GAAS,KAAO;GAAS,KAAO;GAAS,KAAO;GAAS,KAAS;GAAS,KAAS;GAAS,KAAO;GAAQ,KAAO;GAAQ,KAAO;GAAQ,KAAO;GAAQ,KAAO;GAAO,KAAO;GAAO,KAAO;GAAS,KAAO;GAAS,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAO;GAAQ,KAAO;GAAQ,MAAe;GAAO,MAAe;GAAO,MAAe;GAAM,MAAe;GAAO,KAAS;GAAO,MAAe;GAAM,MAAe;GAAM,MAAe;GAAO,MAAe;GAAO,KAAS;GAAM,MAAe;GAAO,KAAS;GAAO,KAAS;GAAS,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAS,KAAS;GAAO,KAAS;GAAO,KAAO;GAAS,KAAO;GAAS,KAAS;GAAS,MAAe;GAAM,KAAS;GAAK,MAAe;GAAO,MAAe;GAAO,MAAe;GAAO,MAAe;GAAM,KAAS;GAAK,MAAe;GAAO,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAO;GAAM,KAAO;GAAM,KAAS;GAAK,KAAS;GAAO,MAAe;GAAM,MAAe;GAAO,KAAS;GAAO,MAAe;GAAM,MAAe;GAAO,KAAO;GAAS,KAAO;GAAS,KAAO;GAAS,KAAO;GAAS,KAAO;GAAQ,KAAO;GAAQ,KAAS;GAAS,KAAS;GAAS,KAAO;GAAO,KAAO;GAAO,KAAS;GAAO,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,MAAe;GAAM,MAAe;GAAO,MAAe;GAAO,MAAe;GAAM,MAAe;GAAO,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAS,KAAS;GAAQ,MAAK;GAAQ,KAAS;GAAQ,KAAS;GAAO,KAAS;GAAO,MAAe;GAAO,MAAe;GAAM,MAAe;GAAO,MAAe;GAAO,MAAe;GAAM,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAO,KAAS;GAAO,KAAS;GAAS,MAAe;GAAM,KAAS;GAAU,MAAe;GAAO,MAAe;GAAO,KAAS;GAAO,KAAS;GAAM,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAO,KAAS;GAAS,KAAS;GAAS,MAAe;GAAO,MAAe;GAAM,MAAe;GAAO,KAAS;GAAK,MAAe;GAAO,KAAS;GAAO,KAAS;GAAK,KAAO;GAAS,KAAO;GAAS,KAAO;GAAS,KAAO;GAAS,KAAO;GAAQ,KAAO;GAAQ,KAAO;GAAO,KAAO;GAAO,KAAS;GAAS,KAAS;GAAS,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,MAAe;GAAO,MAAe;GAAO,MAAe;GAAM,MAAe;GAAO,MAAe;GAAM,MAAe;GAAO,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,MAAe;GAAO,MAAe;GAAO,MAAe;GAAM,MAAe;GAAO,MAAe;GAAO,MAAe;GAAM,KAAS;GAAS,KAAS;GAAS,MAAe;GAAM,MAAe;GAAO,KAAS;GAAM,MAAe;GAAO,KAAS;GAAO,MAAe;GAAM,MAAe;GAAO,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,MAAe;GAAM,MAAe;GAAO,MAAe;GAAO,MAAe;GAAM,MAAe;GAAO,KAAS;GAAO,MAAe;GAAM,MAAe;GAAO,MAAe;GAAO,KAAS;GAAO,MAAe;GAAO,MAAe;GAAM,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAO;GAAS,KAAO;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAM,KAAS;GAAM,MAAe;GAAO,MAAe;GAAM,KAAS;GAAO,MAAe;GAAO,MAAe;GAAM,MAAe;GAAO,KAAO;GAAO,KAAO;GAAS,KAAO;GAAS,KAAO;GAAS,KAAO;GAAS,KAAO;GAAQ,KAAO;GAAQ,KAAO;GAAO,KAAO;GAAO,KAAS;GAAS,KAAS;GAAS,KAAO;GAAS,KAAO;GAAS,KAAO;GAAS,KAAO;GAAS,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,MAAe;GAAM,MAAe;GAAO,MAAe;GAAO,KAAS;GAAO,MAAe;GAAM,MAAe;GAAO,MAAe;GAAO,MAAe;GAAM,MAAe;GAAO,MAAe;GAAO,MAAe;GAAM,KAAS;GAAO,KAAS;GAAS,MAAe;GAAM,MAAe;GAAO,MAAe;GAAO,KAAS;GAAO,KAAS;GAAK,KAAS;GAAO,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,MAAe;GAAO,MAAe;GAAO,MAAe;GAAM,MAAe;GAAO,MAAe;GAAM,MAAe;GAAO,KAAS;GAAK,KAAS;GAAS,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAO;GAAQ,MAAe;GAAM,MAAe;GAAO,MAAe;GAAO,MAAe;GAAO,MAAe;GAAM,MAAe;GAAO,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAS,MAAe;GAAO,MAAe;GAAO,MAAe;GAAM,MAAe;GAAO,MAAe;GAAM,MAAe;GAAO,KAAO;GAAS,KAAO;GAAS,KAAO;GAAS,KAAO;GAAS,KAAS;GAAS,KAAS;GAAS,KAAO;GAAQ,KAAO;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAO;GAAO,KAAO;GAAO,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,MAAe;GAAM,MAAe;GAAO,MAAe;GAAO,MAAe;GAAM,MAAe;GAAO,MAAe;GAAO,MAAe;GAAO,MAAe;GAAO,MAAe;GAAM,MAAe;GAAO,MAAe;GAAO,MAAe;GAAM,KAAS;GAAQ,KAAS;GAAQ,MAAe;GAAM,MAAe;GAAO,MAAe;GAAO,MAAe;GAAO,MAAe;GAAM,MAAe;GAAO,MAAe;GAAM,MAAe;GAAO,MAAe;GAAO,MAAe;GAAO,MAAe;GAAM,MAAe;GAAO,KAAO;GAAS,KAAO;GAAS,KAAS;GAAQ,KAAS;GAAQ,KAAO;GAAO,KAAS;GAAO,MAAe;GAAO,MAAe;GAAM,MAAe;GAAO,KAAS;GAAM,KAAS;GAAO,MAAe;GAAO,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAS,KAAS;GAAO,KAAS;GAAO,KAAS;GAAQ,KAAO;GAAQ,KAAO;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAO,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAU,KAAS;GAAS,KAAS;GAAS,KAAS;GAAO,KAAS;GAAO,KAAS;GAAM,KAAS;GAAM,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAO,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAS,KAAS;GAAK,KAAO;GAAQ,KAAS;GAAK,KAAS;GAAK,KAAS;GAAK,KAAS;GAAK,KAAS;GAAK,KAAS;GAAU,KAAS;GAAU,KAAS;GAAK,KAAS;GAAM,KAAS;GAAK,KAAS;GAAM,KAAS;GAAO,KAAS;GAAM,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAS,KAAS;GAAM,KAAS;GAAM,KAAS;GAAO,KAAS;GAAU,KAAS;GAAO,KAAS;GAAM,KAAS;GAAO,KAAS;GAAM,KAAS;GAAM,KAAS;GAAM,KAAS;GAAM,KAAS;GAAM,KAAS;GAAQ,KAAS;GAAM,KAAS;GAAM,KAAS;GAAM,KAAS;GAAM,KAAS;GAAM,KAAS;GAAM,KAAS;GAAM,KAAS;GAAM,KAAS;GAAM,KAAS;GAAO,KAAS;GAAO,KAAS;GAAM,KAAS;GAAM,KAAS;GAAO,KAAS;GAAO,KAAS;GAAO,KAAS;GAAO,KAAS;GAAO,KAAS;GAAO,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAO,KAAS;GAAO,KAAS;GAAM,KAAS;GAAM,KAAS;GAAO,KAAS;GAAO,KAAS;GAAM,KAAS;GAAM,KAAS;GAAQ,KAAS;GAAQ,KAAS;GAAO,KAAS;GAAO,KAAS;GAAM,KAAS;GAAM,KAAS;GAAS,KAAS;GAAS,KAAS;GAAM,KAAS;GAAM,KAAS;GAAO,KAAS;GAAO,KAAS;GAAM,KAAS;GAAM,KAAS;GAAO,KAAS;GAAO,KAAS;GAAM,KAAS;GAAM,KAAS;GAAM,KAAS;GAAM,KAAS;GAAO,KAAS;GAAO,KAAS;GAAM,KAAS;GAAM,KAAS;GAAM,KAAS;GAAM,KAAS;GAAM,K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AAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,QAAQ;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,QAAQ;EAAG,CAAC,GAAG,OAAO;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,QAAQ;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,QAAQ;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,QAAQ;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,QAAQ;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,QAAQ;EAAG,CAAC,GAAG,OAAO;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,QAAQ;EAAG,CAAC,GAAG,OAAO;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,QAAQ;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,QAAQ;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,QAAQ;EAAG,CAAC,GAAG,QAAQ;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,QAAQ;EAAG,CAAC,GAAG,QAAQ;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,QAAQ;EAAG,CAAC,GAAG,QAAQ;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,QAAQ;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,OAAO;EAAG,CAAC,GAAG,OAAO;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,SAAS;EAAG,CAAC,GAAG,QAAQ;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,QAAQ;EAAG,CAAC,GAAG,QAAQ;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,GAAG,UAAU;EAAG,CAAC,IAAI,QAAQ;EAAG,CAAC,IAAI,SAAS;EAAG,CAAC,IAAI,UAAU;E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AAG,QAAQ;GAAG,CAAC,GAAG,QAAQ;GAAG,CAAC,GAAG,QAAQ;GAAG,CAAC,GAAG,QAAQ;GAAG,CAAC,GAAG,QAAQ;GAAG,CAAC,GAAG,QAAQ;GAAG,CAAC,GAAG,QAAQ;GAAG,CAAC,GAAG,QAAQ;GAAG,CAAC,GAAG,QAAQ;GAAG,CAAC,GAAG,QAAQ;GAAG,CAAC,GAAG,QAAQ;GAAG,CAAC,GAAG,QAAQ;GAAG,CAAC,GAAG,QAAQ;GAAG,CAAC,GAAG,QAAQ;GAAG,CAAC,GAAG,QAAQ;GAAG,CAAC,GAAG,QAAQ;GAAG,CAAC,GAAG,QAAQ;GAAG,CAAC,GAAG,QAAQ;GAAG,CAAC,GAAG,QAAQ;GAAG,CAAC,GAAG,QAAQ;GAAG,CAAC,GAAG,QAAQ;GAAG,CAAC,IAAI,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,GAAG,OAAO;GAAG,CAAC,G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"}
|