/* * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). * This devtool is neither made for production nor for readable output files. * It uses "eval()" calls to create a separate source file in the browser devtools. * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) * or disable the default devtool with "devtool: false". * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). */ /******/ (() => { // webpackBootstrap /******/ "use strict"; /******/ var __webpack_modules__ = ({ /***/ "./node_modules/monaco-editor/esm/vs/base/common/arrays.js": /*!*****************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/base/common/arrays.js ***! \*****************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"tail\": () => (/* binding */ tail),\n/* harmony export */ \"tail2\": () => (/* binding */ tail2),\n/* harmony export */ \"equals\": () => (/* binding */ equals),\n/* harmony export */ \"binarySearch\": () => (/* binding */ binarySearch),\n/* harmony export */ \"findFirstInSorted\": () => (/* binding */ findFirstInSorted),\n/* harmony export */ \"quickSelect\": () => (/* binding */ quickSelect),\n/* harmony export */ \"mergeSort\": () => (/* binding */ mergeSort),\n/* harmony export */ \"groupBy\": () => (/* binding */ groupBy),\n/* harmony export */ \"coalesce\": () => (/* binding */ coalesce),\n/* harmony export */ \"isFalsyOrEmpty\": () => (/* binding */ isFalsyOrEmpty),\n/* harmony export */ \"isNonEmptyArray\": () => (/* binding */ isNonEmptyArray),\n/* harmony export */ \"distinct\": () => (/* binding */ distinct),\n/* harmony export */ \"distinctES6\": () => (/* binding */ distinctES6),\n/* harmony export */ \"firstOrDefault\": () => (/* binding */ firstOrDefault),\n/* harmony export */ \"flatten\": () => (/* binding */ flatten),\n/* harmony export */ \"range\": () => (/* binding */ range),\n/* harmony export */ \"arrayInsert\": () => (/* binding */ arrayInsert),\n/* harmony export */ \"pushToStart\": () => (/* binding */ pushToStart),\n/* harmony export */ \"pushToEnd\": () => (/* binding */ pushToEnd),\n/* harmony export */ \"asArray\": () => (/* binding */ asArray)\n/* harmony export */ });\n/**\r\n * Returns the last element of an array.\r\n * @param array The array.\r\n * @param n Which element from the end (default is zero).\r\n */\r\nfunction tail(array, n = 0) {\r\n return array[array.length - (1 + n)];\r\n}\r\nfunction tail2(arr) {\r\n if (arr.length === 0) {\r\n throw new Error('Invalid tail call');\r\n }\r\n return [arr.slice(0, arr.length - 1), arr[arr.length - 1]];\r\n}\r\nfunction equals(one, other, itemEquals = (a, b) => a === b) {\r\n if (one === other) {\r\n return true;\r\n }\r\n if (!one || !other) {\r\n return false;\r\n }\r\n if (one.length !== other.length) {\r\n return false;\r\n }\r\n for (let i = 0, len = one.length; i < len; i++) {\r\n if (!itemEquals(one[i], other[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction binarySearch(array, key, comparator) {\r\n let low = 0, high = array.length - 1;\r\n while (low <= high) {\r\n const mid = ((low + high) / 2) | 0;\r\n const comp = comparator(array[mid], key);\r\n if (comp < 0) {\r\n low = mid + 1;\r\n }\r\n else if (comp > 0) {\r\n high = mid - 1;\r\n }\r\n else {\r\n return mid;\r\n }\r\n }\r\n return -(low + 1);\r\n}\r\n/**\r\n * Takes a sorted array and a function p. The array is sorted in such a way that all elements where p(x) is false\r\n * are located before all elements where p(x) is true.\r\n * @returns the least x for which p(x) is true or array.length if no element fullfills the given function.\r\n */\r\nfunction findFirstInSorted(array, p) {\r\n let low = 0, high = array.length;\r\n if (high === 0) {\r\n return 0; // no children\r\n }\r\n while (low < high) {\r\n const mid = Math.floor((low + high) / 2);\r\n if (p(array[mid])) {\r\n high = mid;\r\n }\r\n else {\r\n low = mid + 1;\r\n }\r\n }\r\n return low;\r\n}\r\nfunction quickSelect(nth, data, compare) {\r\n nth = nth | 0;\r\n if (nth >= data.length) {\r\n throw new TypeError('invalid index');\r\n }\r\n let pivotValue = data[Math.floor(data.length * Math.random())];\r\n let lower = [];\r\n let higher = [];\r\n let pivots = [];\r\n for (let value of data) {\r\n const val = compare(value, pivotValue);\r\n if (val < 0) {\r\n lower.push(value);\r\n }\r\n else if (val > 0) {\r\n higher.push(value);\r\n }\r\n else {\r\n pivots.push(value);\r\n }\r\n }\r\n if (nth < lower.length) {\r\n return quickSelect(nth, lower, compare);\r\n }\r\n else if (nth < lower.length + pivots.length) {\r\n return pivots[0];\r\n }\r\n else {\r\n return quickSelect(nth - (lower.length + pivots.length), higher, compare);\r\n }\r\n}\r\n/**\r\n * Like `Array#sort` but always stable. Usually runs a little slower `than Array#sort`\r\n * so only use this when actually needing stable sort.\r\n */\r\nfunction mergeSort(data, compare) {\r\n _sort(data, compare, 0, data.length - 1, []);\r\n return data;\r\n}\r\nfunction _merge(a, compare, lo, mid, hi, aux) {\r\n let leftIdx = lo, rightIdx = mid + 1;\r\n for (let i = lo; i <= hi; i++) {\r\n aux[i] = a[i];\r\n }\r\n for (let i = lo; i <= hi; i++) {\r\n if (leftIdx > mid) {\r\n // left side consumed\r\n a[i] = aux[rightIdx++];\r\n }\r\n else if (rightIdx > hi) {\r\n // right side consumed\r\n a[i] = aux[leftIdx++];\r\n }\r\n else if (compare(aux[rightIdx], aux[leftIdx]) < 0) {\r\n // right element is less -> comes first\r\n a[i] = aux[rightIdx++];\r\n }\r\n else {\r\n // left element comes first (less or equal)\r\n a[i] = aux[leftIdx++];\r\n }\r\n }\r\n}\r\nfunction _sort(a, compare, lo, hi, aux) {\r\n if (hi <= lo) {\r\n return;\r\n }\r\n const mid = lo + ((hi - lo) / 2) | 0;\r\n _sort(a, compare, lo, mid, aux);\r\n _sort(a, compare, mid + 1, hi, aux);\r\n if (compare(a[mid], a[mid + 1]) <= 0) {\r\n // left and right are sorted and if the last-left element is less\r\n // or equals than the first-right element there is nothing else\r\n // to do\r\n return;\r\n }\r\n _merge(a, compare, lo, mid, hi, aux);\r\n}\r\nfunction groupBy(data, compare) {\r\n const result = [];\r\n let currentGroup = undefined;\r\n for (const element of mergeSort(data.slice(0), compare)) {\r\n if (!currentGroup || compare(currentGroup[0], element) !== 0) {\r\n currentGroup = [element];\r\n result.push(currentGroup);\r\n }\r\n else {\r\n currentGroup.push(element);\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * @returns New array with all falsy values removed. The original array IS NOT modified.\r\n */\r\nfunction coalesce(array) {\r\n return array.filter(e => !!e);\r\n}\r\n/**\r\n * @returns false if the provided object is an array and not empty.\r\n */\r\nfunction isFalsyOrEmpty(obj) {\r\n return !Array.isArray(obj) || obj.length === 0;\r\n}\r\nfunction isNonEmptyArray(obj) {\r\n return Array.isArray(obj) && obj.length > 0;\r\n}\r\n/**\r\n * Removes duplicates from the given array. The optional keyFn allows to specify\r\n * how elements are checked for equalness by returning a unique string for each.\r\n */\r\nfunction distinct(array, keyFn) {\r\n if (!keyFn) {\r\n return array.filter((element, position) => {\r\n return array.indexOf(element) === position;\r\n });\r\n }\r\n const seen = Object.create(null);\r\n return array.filter((elem) => {\r\n const key = keyFn(elem);\r\n if (seen[key]) {\r\n return false;\r\n }\r\n seen[key] = true;\r\n return true;\r\n });\r\n}\r\nfunction distinctES6(array) {\r\n const seen = new Set();\r\n return array.filter(element => {\r\n if (seen.has(element)) {\r\n return false;\r\n }\r\n seen.add(element);\r\n return true;\r\n });\r\n}\r\nfunction firstOrDefault(array, notFoundValue) {\r\n return array.length > 0 ? array[0] : notFoundValue;\r\n}\r\nfunction flatten(arr) {\r\n return [].concat(...arr);\r\n}\r\nfunction range(arg, to) {\r\n let from = typeof to === 'number' ? arg : 0;\r\n if (typeof to === 'number') {\r\n from = arg;\r\n }\r\n else {\r\n from = 0;\r\n to = arg;\r\n }\r\n const result = [];\r\n if (from <= to) {\r\n for (let i = from; i < to; i++) {\r\n result.push(i);\r\n }\r\n }\r\n else {\r\n for (let i = from; i > to; i--) {\r\n result.push(i);\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Insert `insertArr` inside `target` at `insertIndex`.\r\n * Please don't touch unless you understand https://jsperf.com/inserting-an-array-within-an-array\r\n */\r\nfunction arrayInsert(target, insertIndex, insertArr) {\r\n const before = target.slice(0, insertIndex);\r\n const after = target.slice(insertIndex);\r\n return before.concat(insertArr, after);\r\n}\r\n/**\r\n * Pushes an element to the start of the array, if found.\r\n */\r\nfunction pushToStart(arr, value) {\r\n const index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n arr.unshift(value);\r\n }\r\n}\r\n/**\r\n * Pushes an element to the end of the array, if found.\r\n */\r\nfunction pushToEnd(arr, value) {\r\n const index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n arr.push(value);\r\n }\r\n}\r\nfunction asArray(x) {\r\n return Array.isArray(x) ? x : [x];\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/base/common/arrays.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/base/common/cancellation.js": /*!***********************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/base/common/cancellation.js ***! \***********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"CancellationToken\": () => (/* binding */ CancellationToken),\n/* harmony export */ \"CancellationTokenSource\": () => (/* binding */ CancellationTokenSource)\n/* harmony export */ });\n/* harmony import */ var _event_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nconst shortcutEvent = Object.freeze(function (callback, context) {\r\n const handle = setTimeout(callback.bind(context), 0);\r\n return { dispose() { clearTimeout(handle); } };\r\n});\r\nvar CancellationToken;\r\n(function (CancellationToken) {\r\n function isCancellationToken(thing) {\r\n if (thing === CancellationToken.None || thing === CancellationToken.Cancelled) {\r\n return true;\r\n }\r\n if (thing instanceof MutableToken) {\r\n return true;\r\n }\r\n if (!thing || typeof thing !== 'object') {\r\n return false;\r\n }\r\n return typeof thing.isCancellationRequested === 'boolean'\r\n && typeof thing.onCancellationRequested === 'function';\r\n }\r\n CancellationToken.isCancellationToken = isCancellationToken;\r\n CancellationToken.None = Object.freeze({\r\n isCancellationRequested: false,\r\n onCancellationRequested: _event_js__WEBPACK_IMPORTED_MODULE_0__.Event.None\r\n });\r\n CancellationToken.Cancelled = Object.freeze({\r\n isCancellationRequested: true,\r\n onCancellationRequested: shortcutEvent\r\n });\r\n})(CancellationToken || (CancellationToken = {}));\r\nclass MutableToken {\r\n constructor() {\r\n this._isCancelled = false;\r\n this._emitter = null;\r\n }\r\n cancel() {\r\n if (!this._isCancelled) {\r\n this._isCancelled = true;\r\n if (this._emitter) {\r\n this._emitter.fire(undefined);\r\n this.dispose();\r\n }\r\n }\r\n }\r\n get isCancellationRequested() {\r\n return this._isCancelled;\r\n }\r\n get onCancellationRequested() {\r\n if (this._isCancelled) {\r\n return shortcutEvent;\r\n }\r\n if (!this._emitter) {\r\n this._emitter = new _event_js__WEBPACK_IMPORTED_MODULE_0__.Emitter();\r\n }\r\n return this._emitter.event;\r\n }\r\n dispose() {\r\n if (this._emitter) {\r\n this._emitter.dispose();\r\n this._emitter = null;\r\n }\r\n }\r\n}\r\nclass CancellationTokenSource {\r\n constructor(parent) {\r\n this._token = undefined;\r\n this._parentListener = undefined;\r\n this._parentListener = parent && parent.onCancellationRequested(this.cancel, this);\r\n }\r\n get token() {\r\n if (!this._token) {\r\n // be lazy and create the token only when\r\n // actually needed\r\n this._token = new MutableToken();\r\n }\r\n return this._token;\r\n }\r\n cancel() {\r\n if (!this._token) {\r\n // save an object by returning the default\r\n // cancelled token when cancellation happens\r\n // before someone asks for the token\r\n this._token = CancellationToken.Cancelled;\r\n }\r\n else if (this._token instanceof MutableToken) {\r\n // actually cancel\r\n this._token.cancel();\r\n }\r\n }\r\n dispose(cancel = false) {\r\n if (cancel) {\r\n this.cancel();\r\n }\r\n if (this._parentListener) {\r\n this._parentListener.dispose();\r\n }\r\n if (!this._token) {\r\n // ensure to initialize with an empty token if we had none\r\n this._token = CancellationToken.None;\r\n }\r\n else if (this._token instanceof MutableToken) {\r\n // actually dispose\r\n this._token.dispose();\r\n }\r\n }\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/base/common/cancellation.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/base/common/diff/diff.js": /*!********************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/base/common/diff/diff.js ***! \********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"StringDiffSequence\": () => (/* binding */ StringDiffSequence),\n/* harmony export */ \"stringDiff\": () => (/* binding */ stringDiff),\n/* harmony export */ \"Debug\": () => (/* binding */ Debug),\n/* harmony export */ \"MyArray\": () => (/* binding */ MyArray),\n/* harmony export */ \"LcsDiff\": () => (/* binding */ LcsDiff)\n/* harmony export */ });\n/* harmony import */ var _diffChange_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./diffChange.js */ \"./node_modules/monaco-editor/esm/vs/base/common/diff/diffChange.js\");\n/* harmony import */ var _hash_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../hash.js */ \"./node_modules/monaco-editor/esm/vs/base/common/hash.js\");\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n\r\nclass StringDiffSequence {\r\n constructor(source) {\r\n this.source = source;\r\n }\r\n getElements() {\r\n const source = this.source;\r\n const characters = new Int32Array(source.length);\r\n for (let i = 0, len = source.length; i < len; i++) {\r\n characters[i] = source.charCodeAt(i);\r\n }\r\n return characters;\r\n }\r\n}\r\nfunction stringDiff(original, modified, pretty) {\r\n return new LcsDiff(new StringDiffSequence(original), new StringDiffSequence(modified)).ComputeDiff(pretty).changes;\r\n}\r\n//\r\n// The code below has been ported from a C# implementation in VS\r\n//\r\nclass Debug {\r\n static Assert(condition, message) {\r\n if (!condition) {\r\n throw new Error(message);\r\n }\r\n }\r\n}\r\nclass MyArray {\r\n /**\r\n * Copies a range of elements from an Array starting at the specified source index and pastes\r\n * them to another Array starting at the specified destination index. The length and the indexes\r\n * are specified as 64-bit integers.\r\n * sourceArray:\r\n *\t\tThe Array that contains the data to copy.\r\n * sourceIndex:\r\n *\t\tA 64-bit integer that represents the index in the sourceArray at which copying begins.\r\n * destinationArray:\r\n *\t\tThe Array that receives the data.\r\n * destinationIndex:\r\n *\t\tA 64-bit integer that represents the index in the destinationArray at which storing begins.\r\n * length:\r\n *\t\tA 64-bit integer that represents the number of elements to copy.\r\n */\r\n static Copy(sourceArray, sourceIndex, destinationArray, destinationIndex, length) {\r\n for (let i = 0; i < length; i++) {\r\n destinationArray[destinationIndex + i] = sourceArray[sourceIndex + i];\r\n }\r\n }\r\n static Copy2(sourceArray, sourceIndex, destinationArray, destinationIndex, length) {\r\n for (let i = 0; i < length; i++) {\r\n destinationArray[destinationIndex + i] = sourceArray[sourceIndex + i];\r\n }\r\n }\r\n}\r\n/**\r\n * A utility class which helps to create the set of DiffChanges from\r\n * a difference operation. This class accepts original DiffElements and\r\n * modified DiffElements that are involved in a particular change. The\r\n * MarktNextChange() method can be called to mark the separation between\r\n * distinct changes. At the end, the Changes property can be called to retrieve\r\n * the constructed changes.\r\n */\r\nclass DiffChangeHelper {\r\n /**\r\n * Constructs a new DiffChangeHelper for the given DiffSequences.\r\n */\r\n constructor() {\r\n this.m_changes = [];\r\n this.m_originalStart = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n this.m_modifiedStart = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n this.m_originalCount = 0;\r\n this.m_modifiedCount = 0;\r\n }\r\n /**\r\n * Marks the beginning of the next change in the set of differences.\r\n */\r\n MarkNextChange() {\r\n // Only add to the list if there is something to add\r\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) {\r\n // Add the new change to our list\r\n this.m_changes.push(new _diffChange_js__WEBPACK_IMPORTED_MODULE_0__.DiffChange(this.m_originalStart, this.m_originalCount, this.m_modifiedStart, this.m_modifiedCount));\r\n }\r\n // Reset for the next change\r\n this.m_originalCount = 0;\r\n this.m_modifiedCount = 0;\r\n this.m_originalStart = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n this.m_modifiedStart = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n }\r\n /**\r\n * Adds the original element at the given position to the elements\r\n * affected by the current change. The modified index gives context\r\n * to the change position with respect to the original sequence.\r\n * @param originalIndex The index of the original element to add.\r\n * @param modifiedIndex The index of the modified element that provides corresponding position in the modified sequence.\r\n */\r\n AddOriginalElement(originalIndex, modifiedIndex) {\r\n // The 'true' start index is the smallest of the ones we've seen\r\n this.m_originalStart = Math.min(this.m_originalStart, originalIndex);\r\n this.m_modifiedStart = Math.min(this.m_modifiedStart, modifiedIndex);\r\n this.m_originalCount++;\r\n }\r\n /**\r\n * Adds the modified element at the given position to the elements\r\n * affected by the current change. The original index gives context\r\n * to the change position with respect to the modified sequence.\r\n * @param originalIndex The index of the original element that provides corresponding position in the original sequence.\r\n * @param modifiedIndex The index of the modified element to add.\r\n */\r\n AddModifiedElement(originalIndex, modifiedIndex) {\r\n // The 'true' start index is the smallest of the ones we've seen\r\n this.m_originalStart = Math.min(this.m_originalStart, originalIndex);\r\n this.m_modifiedStart = Math.min(this.m_modifiedStart, modifiedIndex);\r\n this.m_modifiedCount++;\r\n }\r\n /**\r\n * Retrieves all of the changes marked by the class.\r\n */\r\n getChanges() {\r\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) {\r\n // Finish up on whatever is left\r\n this.MarkNextChange();\r\n }\r\n return this.m_changes;\r\n }\r\n /**\r\n * Retrieves all of the changes marked by the class in the reverse order\r\n */\r\n getReverseChanges() {\r\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) {\r\n // Finish up on whatever is left\r\n this.MarkNextChange();\r\n }\r\n this.m_changes.reverse();\r\n return this.m_changes;\r\n }\r\n}\r\n/**\r\n * An implementation of the difference algorithm described in\r\n * \"An O(ND) Difference Algorithm and its variations\" by Eugene W. Myers\r\n */\r\nclass LcsDiff {\r\n /**\r\n * Constructs the DiffFinder\r\n */\r\n constructor(originalSequence, modifiedSequence, continueProcessingPredicate = null) {\r\n this.ContinueProcessingPredicate = continueProcessingPredicate;\r\n const [originalStringElements, originalElementsOrHash, originalHasStrings] = LcsDiff._getElements(originalSequence);\r\n const [modifiedStringElements, modifiedElementsOrHash, modifiedHasStrings] = LcsDiff._getElements(modifiedSequence);\r\n this._hasStrings = (originalHasStrings && modifiedHasStrings);\r\n this._originalStringElements = originalStringElements;\r\n this._originalElementsOrHash = originalElementsOrHash;\r\n this._modifiedStringElements = modifiedStringElements;\r\n this._modifiedElementsOrHash = modifiedElementsOrHash;\r\n this.m_forwardHistory = [];\r\n this.m_reverseHistory = [];\r\n }\r\n static _isStringArray(arr) {\r\n return (arr.length > 0 && typeof arr[0] === 'string');\r\n }\r\n static _getElements(sequence) {\r\n const elements = sequence.getElements();\r\n if (LcsDiff._isStringArray(elements)) {\r\n const hashes = new Int32Array(elements.length);\r\n for (let i = 0, len = elements.length; i < len; i++) {\r\n hashes[i] = (0,_hash_js__WEBPACK_IMPORTED_MODULE_1__.stringHash)(elements[i], 0);\r\n }\r\n return [elements, hashes, true];\r\n }\r\n if (elements instanceof Int32Array) {\r\n return [[], elements, false];\r\n }\r\n return [[], new Int32Array(elements), false];\r\n }\r\n ElementsAreEqual(originalIndex, newIndex) {\r\n if (this._originalElementsOrHash[originalIndex] !== this._modifiedElementsOrHash[newIndex]) {\r\n return false;\r\n }\r\n return (this._hasStrings ? this._originalStringElements[originalIndex] === this._modifiedStringElements[newIndex] : true);\r\n }\r\n OriginalElementsAreEqual(index1, index2) {\r\n if (this._originalElementsOrHash[index1] !== this._originalElementsOrHash[index2]) {\r\n return false;\r\n }\r\n return (this._hasStrings ? this._originalStringElements[index1] === this._originalStringElements[index2] : true);\r\n }\r\n ModifiedElementsAreEqual(index1, index2) {\r\n if (this._modifiedElementsOrHash[index1] !== this._modifiedElementsOrHash[index2]) {\r\n return false;\r\n }\r\n return (this._hasStrings ? this._modifiedStringElements[index1] === this._modifiedStringElements[index2] : true);\r\n }\r\n ComputeDiff(pretty) {\r\n return this._ComputeDiff(0, this._originalElementsOrHash.length - 1, 0, this._modifiedElementsOrHash.length - 1, pretty);\r\n }\r\n /**\r\n * Computes the differences between the original and modified input\r\n * sequences on the bounded range.\r\n * @returns An array of the differences between the two input sequences.\r\n */\r\n _ComputeDiff(originalStart, originalEnd, modifiedStart, modifiedEnd, pretty) {\r\n const quitEarlyArr = [false];\r\n let changes = this.ComputeDiffRecursive(originalStart, originalEnd, modifiedStart, modifiedEnd, quitEarlyArr);\r\n if (pretty) {\r\n // We have to clean up the computed diff to be more intuitive\r\n // but it turns out this cannot be done correctly until the entire set\r\n // of diffs have been computed\r\n changes = this.PrettifyChanges(changes);\r\n }\r\n return {\r\n quitEarly: quitEarlyArr[0],\r\n changes: changes\r\n };\r\n }\r\n /**\r\n * Private helper method which computes the differences on the bounded range\r\n * recursively.\r\n * @returns An array of the differences between the two input sequences.\r\n */\r\n ComputeDiffRecursive(originalStart, originalEnd, modifiedStart, modifiedEnd, quitEarlyArr) {\r\n quitEarlyArr[0] = false;\r\n // Find the start of the differences\r\n while (originalStart <= originalEnd && modifiedStart <= modifiedEnd && this.ElementsAreEqual(originalStart, modifiedStart)) {\r\n originalStart++;\r\n modifiedStart++;\r\n }\r\n // Find the end of the differences\r\n while (originalEnd >= originalStart && modifiedEnd >= modifiedStart && this.ElementsAreEqual(originalEnd, modifiedEnd)) {\r\n originalEnd--;\r\n modifiedEnd--;\r\n }\r\n // In the special case where we either have all insertions or all deletions or the sequences are identical\r\n if (originalStart > originalEnd || modifiedStart > modifiedEnd) {\r\n let changes;\r\n if (modifiedStart <= modifiedEnd) {\r\n Debug.Assert(originalStart === originalEnd + 1, 'originalStart should only be one more than originalEnd');\r\n // All insertions\r\n changes = [\r\n new _diffChange_js__WEBPACK_IMPORTED_MODULE_0__.DiffChange(originalStart, 0, modifiedStart, modifiedEnd - modifiedStart + 1)\r\n ];\r\n }\r\n else if (originalStart <= originalEnd) {\r\n Debug.Assert(modifiedStart === modifiedEnd + 1, 'modifiedStart should only be one more than modifiedEnd');\r\n // All deletions\r\n changes = [\r\n new _diffChange_js__WEBPACK_IMPORTED_MODULE_0__.DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, 0)\r\n ];\r\n }\r\n else {\r\n Debug.Assert(originalStart === originalEnd + 1, 'originalStart should only be one more than originalEnd');\r\n Debug.Assert(modifiedStart === modifiedEnd + 1, 'modifiedStart should only be one more than modifiedEnd');\r\n // Identical sequences - No differences\r\n changes = [];\r\n }\r\n return changes;\r\n }\r\n // This problem can be solved using the Divide-And-Conquer technique.\r\n const midOriginalArr = [0];\r\n const midModifiedArr = [0];\r\n const result = this.ComputeRecursionPoint(originalStart, originalEnd, modifiedStart, modifiedEnd, midOriginalArr, midModifiedArr, quitEarlyArr);\r\n const midOriginal = midOriginalArr[0];\r\n const midModified = midModifiedArr[0];\r\n if (result !== null) {\r\n // Result is not-null when there was enough memory to compute the changes while\r\n // searching for the recursion point\r\n return result;\r\n }\r\n else if (!quitEarlyArr[0]) {\r\n // We can break the problem down recursively by finding the changes in the\r\n // First Half: (originalStart, modifiedStart) to (midOriginal, midModified)\r\n // Second Half: (midOriginal + 1, minModified + 1) to (originalEnd, modifiedEnd)\r\n // NOTE: ComputeDiff() is inclusive, therefore the second range starts on the next point\r\n const leftChanges = this.ComputeDiffRecursive(originalStart, midOriginal, modifiedStart, midModified, quitEarlyArr);\r\n let rightChanges = [];\r\n if (!quitEarlyArr[0]) {\r\n rightChanges = this.ComputeDiffRecursive(midOriginal + 1, originalEnd, midModified + 1, modifiedEnd, quitEarlyArr);\r\n }\r\n else {\r\n // We did't have time to finish the first half, so we don't have time to compute this half.\r\n // Consider the entire rest of the sequence different.\r\n rightChanges = [\r\n new _diffChange_js__WEBPACK_IMPORTED_MODULE_0__.DiffChange(midOriginal + 1, originalEnd - (midOriginal + 1) + 1, midModified + 1, modifiedEnd - (midModified + 1) + 1)\r\n ];\r\n }\r\n return this.ConcatenateChanges(leftChanges, rightChanges);\r\n }\r\n // If we hit here, we quit early, and so can't return anything meaningful\r\n return [\r\n new _diffChange_js__WEBPACK_IMPORTED_MODULE_0__.DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, modifiedEnd - modifiedStart + 1)\r\n ];\r\n }\r\n WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr) {\r\n let forwardChanges = null;\r\n let reverseChanges = null;\r\n // First, walk backward through the forward diagonals history\r\n let changeHelper = new DiffChangeHelper();\r\n let diagonalMin = diagonalForwardStart;\r\n let diagonalMax = diagonalForwardEnd;\r\n let diagonalRelative = (midOriginalArr[0] - midModifiedArr[0]) - diagonalForwardOffset;\r\n let lastOriginalIndex = -1073741824 /* MIN_SAFE_SMALL_INTEGER */;\r\n let historyIndex = this.m_forwardHistory.length - 1;\r\n do {\r\n // Get the diagonal index from the relative diagonal number\r\n const diagonal = diagonalRelative + diagonalForwardBase;\r\n // Figure out where we came from\r\n if (diagonal === diagonalMin || (diagonal < diagonalMax && forwardPoints[diagonal - 1] < forwardPoints[diagonal + 1])) {\r\n // Vertical line (the element is an insert)\r\n originalIndex = forwardPoints[diagonal + 1];\r\n modifiedIndex = originalIndex - diagonalRelative - diagonalForwardOffset;\r\n if (originalIndex < lastOriginalIndex) {\r\n changeHelper.MarkNextChange();\r\n }\r\n lastOriginalIndex = originalIndex;\r\n changeHelper.AddModifiedElement(originalIndex + 1, modifiedIndex);\r\n diagonalRelative = (diagonal + 1) - diagonalForwardBase; //Setup for the next iteration\r\n }\r\n else {\r\n // Horizontal line (the element is a deletion)\r\n originalIndex = forwardPoints[diagonal - 1] + 1;\r\n modifiedIndex = originalIndex - diagonalRelative - diagonalForwardOffset;\r\n if (originalIndex < lastOriginalIndex) {\r\n changeHelper.MarkNextChange();\r\n }\r\n lastOriginalIndex = originalIndex - 1;\r\n changeHelper.AddOriginalElement(originalIndex, modifiedIndex + 1);\r\n diagonalRelative = (diagonal - 1) - diagonalForwardBase; //Setup for the next iteration\r\n }\r\n if (historyIndex >= 0) {\r\n forwardPoints = this.m_forwardHistory[historyIndex];\r\n diagonalForwardBase = forwardPoints[0]; //We stored this in the first spot\r\n diagonalMin = 1;\r\n diagonalMax = forwardPoints.length - 1;\r\n }\r\n } while (--historyIndex >= -1);\r\n // Ironically, we get the forward changes as the reverse of the\r\n // order we added them since we technically added them backwards\r\n forwardChanges = changeHelper.getReverseChanges();\r\n if (quitEarlyArr[0]) {\r\n // TODO: Calculate a partial from the reverse diagonals.\r\n // For now, just assume everything after the midOriginal/midModified point is a diff\r\n let originalStartPoint = midOriginalArr[0] + 1;\r\n let modifiedStartPoint = midModifiedArr[0] + 1;\r\n if (forwardChanges !== null && forwardChanges.length > 0) {\r\n const lastForwardChange = forwardChanges[forwardChanges.length - 1];\r\n originalStartPoint = Math.max(originalStartPoint, lastForwardChange.getOriginalEnd());\r\n modifiedStartPoint = Math.max(modifiedStartPoint, lastForwardChange.getModifiedEnd());\r\n }\r\n reverseChanges = [\r\n new _diffChange_js__WEBPACK_IMPORTED_MODULE_0__.DiffChange(originalStartPoint, originalEnd - originalStartPoint + 1, modifiedStartPoint, modifiedEnd - modifiedStartPoint + 1)\r\n ];\r\n }\r\n else {\r\n // Now walk backward through the reverse diagonals history\r\n changeHelper = new DiffChangeHelper();\r\n diagonalMin = diagonalReverseStart;\r\n diagonalMax = diagonalReverseEnd;\r\n diagonalRelative = (midOriginalArr[0] - midModifiedArr[0]) - diagonalReverseOffset;\r\n lastOriginalIndex = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n historyIndex = (deltaIsEven) ? this.m_reverseHistory.length - 1 : this.m_reverseHistory.length - 2;\r\n do {\r\n // Get the diagonal index from the relative diagonal number\r\n const diagonal = diagonalRelative + diagonalReverseBase;\r\n // Figure out where we came from\r\n if (diagonal === diagonalMin || (diagonal < diagonalMax && reversePoints[diagonal - 1] >= reversePoints[diagonal + 1])) {\r\n // Horizontal line (the element is a deletion))\r\n originalIndex = reversePoints[diagonal + 1] - 1;\r\n modifiedIndex = originalIndex - diagonalRelative - diagonalReverseOffset;\r\n if (originalIndex > lastOriginalIndex) {\r\n changeHelper.MarkNextChange();\r\n }\r\n lastOriginalIndex = originalIndex + 1;\r\n changeHelper.AddOriginalElement(originalIndex + 1, modifiedIndex + 1);\r\n diagonalRelative = (diagonal + 1) - diagonalReverseBase; //Setup for the next iteration\r\n }\r\n else {\r\n // Vertical line (the element is an insertion)\r\n originalIndex = reversePoints[diagonal - 1];\r\n modifiedIndex = originalIndex - diagonalRelative - diagonalReverseOffset;\r\n if (originalIndex > lastOriginalIndex) {\r\n changeHelper.MarkNextChange();\r\n }\r\n lastOriginalIndex = originalIndex;\r\n changeHelper.AddModifiedElement(originalIndex + 1, modifiedIndex + 1);\r\n diagonalRelative = (diagonal - 1) - diagonalReverseBase; //Setup for the next iteration\r\n }\r\n if (historyIndex >= 0) {\r\n reversePoints = this.m_reverseHistory[historyIndex];\r\n diagonalReverseBase = reversePoints[0]; //We stored this in the first spot\r\n diagonalMin = 1;\r\n diagonalMax = reversePoints.length - 1;\r\n }\r\n } while (--historyIndex >= -1);\r\n // There are cases where the reverse history will find diffs that\r\n // are correct, but not intuitive, so we need shift them.\r\n reverseChanges = changeHelper.getChanges();\r\n }\r\n return this.ConcatenateChanges(forwardChanges, reverseChanges);\r\n }\r\n /**\r\n * Given the range to compute the diff on, this method finds the point:\r\n * (midOriginal, midModified)\r\n * that exists in the middle of the LCS of the two sequences and\r\n * is the point at which the LCS problem may be broken down recursively.\r\n * This method will try to keep the LCS trace in memory. If the LCS recursion\r\n * point is calculated and the full trace is available in memory, then this method\r\n * will return the change list.\r\n * @param originalStart The start bound of the original sequence range\r\n * @param originalEnd The end bound of the original sequence range\r\n * @param modifiedStart The start bound of the modified sequence range\r\n * @param modifiedEnd The end bound of the modified sequence range\r\n * @param midOriginal The middle point of the original sequence range\r\n * @param midModified The middle point of the modified sequence range\r\n * @returns The diff changes, if available, otherwise null\r\n */\r\n ComputeRecursionPoint(originalStart, originalEnd, modifiedStart, modifiedEnd, midOriginalArr, midModifiedArr, quitEarlyArr) {\r\n let originalIndex = 0, modifiedIndex = 0;\r\n let diagonalForwardStart = 0, diagonalForwardEnd = 0;\r\n let diagonalReverseStart = 0, diagonalReverseEnd = 0;\r\n // To traverse the edit graph and produce the proper LCS, our actual\r\n // start position is just outside the given boundary\r\n originalStart--;\r\n modifiedStart--;\r\n // We set these up to make the compiler happy, but they will\r\n // be replaced before we return with the actual recursion point\r\n midOriginalArr[0] = 0;\r\n midModifiedArr[0] = 0;\r\n // Clear out the history\r\n this.m_forwardHistory = [];\r\n this.m_reverseHistory = [];\r\n // Each cell in the two arrays corresponds to a diagonal in the edit graph.\r\n // The integer value in the cell represents the originalIndex of the furthest\r\n // reaching point found so far that ends in that diagonal.\r\n // The modifiedIndex can be computed mathematically from the originalIndex and the diagonal number.\r\n const maxDifferences = (originalEnd - originalStart) + (modifiedEnd - modifiedStart);\r\n const numDiagonals = maxDifferences + 1;\r\n const forwardPoints = new Int32Array(numDiagonals);\r\n const reversePoints = new Int32Array(numDiagonals);\r\n // diagonalForwardBase: Index into forwardPoints of the diagonal which passes through (originalStart, modifiedStart)\r\n // diagonalReverseBase: Index into reversePoints of the diagonal which passes through (originalEnd, modifiedEnd)\r\n const diagonalForwardBase = (modifiedEnd - modifiedStart);\r\n const diagonalReverseBase = (originalEnd - originalStart);\r\n // diagonalForwardOffset: Geometric offset which allows modifiedIndex to be computed from originalIndex and the\r\n // diagonal number (relative to diagonalForwardBase)\r\n // diagonalReverseOffset: Geometric offset which allows modifiedIndex to be computed from originalIndex and the\r\n // diagonal number (relative to diagonalReverseBase)\r\n const diagonalForwardOffset = (originalStart - modifiedStart);\r\n const diagonalReverseOffset = (originalEnd - modifiedEnd);\r\n // delta: The difference between the end diagonal and the start diagonal. This is used to relate diagonal numbers\r\n // relative to the start diagonal with diagonal numbers relative to the end diagonal.\r\n // The Even/Oddn-ness of this delta is important for determining when we should check for overlap\r\n const delta = diagonalReverseBase - diagonalForwardBase;\r\n const deltaIsEven = (delta % 2 === 0);\r\n // Here we set up the start and end points as the furthest points found so far\r\n // in both the forward and reverse directions, respectively\r\n forwardPoints[diagonalForwardBase] = originalStart;\r\n reversePoints[diagonalReverseBase] = originalEnd;\r\n // Remember if we quit early, and thus need to do a best-effort result instead of a real result.\r\n quitEarlyArr[0] = false;\r\n // A couple of points:\r\n // --With this method, we iterate on the number of differences between the two sequences.\r\n // The more differences there actually are, the longer this will take.\r\n // --Also, as the number of differences increases, we have to search on diagonals further\r\n // away from the reference diagonal (which is diagonalForwardBase for forward, diagonalReverseBase for reverse).\r\n // --We extend on even diagonals (relative to the reference diagonal) only when numDifferences\r\n // is even and odd diagonals only when numDifferences is odd.\r\n for (let numDifferences = 1; numDifferences <= (maxDifferences / 2) + 1; numDifferences++) {\r\n let furthestOriginalIndex = 0;\r\n let furthestModifiedIndex = 0;\r\n // Run the algorithm in the forward direction\r\n diagonalForwardStart = this.ClipDiagonalBound(diagonalForwardBase - numDifferences, numDifferences, diagonalForwardBase, numDiagonals);\r\n diagonalForwardEnd = this.ClipDiagonalBound(diagonalForwardBase + numDifferences, numDifferences, diagonalForwardBase, numDiagonals);\r\n for (let diagonal = diagonalForwardStart; diagonal <= diagonalForwardEnd; diagonal += 2) {\r\n // STEP 1: We extend the furthest reaching point in the present diagonal\r\n // by looking at the diagonals above and below and picking the one whose point\r\n // is further away from the start point (originalStart, modifiedStart)\r\n if (diagonal === diagonalForwardStart || (diagonal < diagonalForwardEnd && forwardPoints[diagonal - 1] < forwardPoints[diagonal + 1])) {\r\n originalIndex = forwardPoints[diagonal + 1];\r\n }\r\n else {\r\n originalIndex = forwardPoints[diagonal - 1] + 1;\r\n }\r\n modifiedIndex = originalIndex - (diagonal - diagonalForwardBase) - diagonalForwardOffset;\r\n // Save the current originalIndex so we can test for false overlap in step 3\r\n const tempOriginalIndex = originalIndex;\r\n // STEP 2: We can continue to extend the furthest reaching point in the present diagonal\r\n // so long as the elements are equal.\r\n while (originalIndex < originalEnd && modifiedIndex < modifiedEnd && this.ElementsAreEqual(originalIndex + 1, modifiedIndex + 1)) {\r\n originalIndex++;\r\n modifiedIndex++;\r\n }\r\n forwardPoints[diagonal] = originalIndex;\r\n if (originalIndex + modifiedIndex > furthestOriginalIndex + furthestModifiedIndex) {\r\n furthestOriginalIndex = originalIndex;\r\n furthestModifiedIndex = modifiedIndex;\r\n }\r\n // STEP 3: If delta is odd (overlap first happens on forward when delta is odd)\r\n // and diagonal is in the range of reverse diagonals computed for numDifferences-1\r\n // (the previous iteration; we haven't computed reverse diagonals for numDifferences yet)\r\n // then check for overlap.\r\n if (!deltaIsEven && Math.abs(diagonal - diagonalReverseBase) <= (numDifferences - 1)) {\r\n if (originalIndex >= reversePoints[diagonal]) {\r\n midOriginalArr[0] = originalIndex;\r\n midModifiedArr[0] = modifiedIndex;\r\n if (tempOriginalIndex <= reversePoints[diagonal] && 1447 /* MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* MaxDifferencesHistory */ + 1)) {\r\n // BINGO! We overlapped, and we have the full trace in memory!\r\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\r\n }\r\n else {\r\n // Either false overlap, or we didn't have enough memory for the full trace\r\n // Just return the recursion point\r\n return null;\r\n }\r\n }\r\n }\r\n }\r\n // Check to see if we should be quitting early, before moving on to the next iteration.\r\n const matchLengthOfLongest = ((furthestOriginalIndex - originalStart) + (furthestModifiedIndex - modifiedStart) - numDifferences) / 2;\r\n if (this.ContinueProcessingPredicate !== null && !this.ContinueProcessingPredicate(furthestOriginalIndex, matchLengthOfLongest)) {\r\n // We can't finish, so skip ahead to generating a result from what we have.\r\n quitEarlyArr[0] = true;\r\n // Use the furthest distance we got in the forward direction.\r\n midOriginalArr[0] = furthestOriginalIndex;\r\n midModifiedArr[0] = furthestModifiedIndex;\r\n if (matchLengthOfLongest > 0 && 1447 /* MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* MaxDifferencesHistory */ + 1)) {\r\n // Enough of the history is in memory to walk it backwards\r\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\r\n }\r\n else {\r\n // We didn't actually remember enough of the history.\r\n //Since we are quiting the diff early, we need to shift back the originalStart and modified start\r\n //back into the boundary limits since we decremented their value above beyond the boundary limit.\r\n originalStart++;\r\n modifiedStart++;\r\n return [\r\n new _diffChange_js__WEBPACK_IMPORTED_MODULE_0__.DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, modifiedEnd - modifiedStart + 1)\r\n ];\r\n }\r\n }\r\n // Run the algorithm in the reverse direction\r\n diagonalReverseStart = this.ClipDiagonalBound(diagonalReverseBase - numDifferences, numDifferences, diagonalReverseBase, numDiagonals);\r\n diagonalReverseEnd = this.ClipDiagonalBound(diagonalReverseBase + numDifferences, numDifferences, diagonalReverseBase, numDiagonals);\r\n for (let diagonal = diagonalReverseStart; diagonal <= diagonalReverseEnd; diagonal += 2) {\r\n // STEP 1: We extend the furthest reaching point in the present diagonal\r\n // by looking at the diagonals above and below and picking the one whose point\r\n // is further away from the start point (originalEnd, modifiedEnd)\r\n if (diagonal === diagonalReverseStart || (diagonal < diagonalReverseEnd && reversePoints[diagonal - 1] >= reversePoints[diagonal + 1])) {\r\n originalIndex = reversePoints[diagonal + 1] - 1;\r\n }\r\n else {\r\n originalIndex = reversePoints[diagonal - 1];\r\n }\r\n modifiedIndex = originalIndex - (diagonal - diagonalReverseBase) - diagonalReverseOffset;\r\n // Save the current originalIndex so we can test for false overlap\r\n const tempOriginalIndex = originalIndex;\r\n // STEP 2: We can continue to extend the furthest reaching point in the present diagonal\r\n // as long as the elements are equal.\r\n while (originalIndex > originalStart && modifiedIndex > modifiedStart && this.ElementsAreEqual(originalIndex, modifiedIndex)) {\r\n originalIndex--;\r\n modifiedIndex--;\r\n }\r\n reversePoints[diagonal] = originalIndex;\r\n // STEP 4: If delta is even (overlap first happens on reverse when delta is even)\r\n // and diagonal is in the range of forward diagonals computed for numDifferences\r\n // then check for overlap.\r\n if (deltaIsEven && Math.abs(diagonal - diagonalForwardBase) <= numDifferences) {\r\n if (originalIndex <= forwardPoints[diagonal]) {\r\n midOriginalArr[0] = originalIndex;\r\n midModifiedArr[0] = modifiedIndex;\r\n if (tempOriginalIndex >= forwardPoints[diagonal] && 1447 /* MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* MaxDifferencesHistory */ + 1)) {\r\n // BINGO! We overlapped, and we have the full trace in memory!\r\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\r\n }\r\n else {\r\n // Either false overlap, or we didn't have enough memory for the full trace\r\n // Just return the recursion point\r\n return null;\r\n }\r\n }\r\n }\r\n }\r\n // Save current vectors to history before the next iteration\r\n if (numDifferences <= 1447 /* MaxDifferencesHistory */) {\r\n // We are allocating space for one extra int, which we fill with\r\n // the index of the diagonal base index\r\n let temp = new Int32Array(diagonalForwardEnd - diagonalForwardStart + 2);\r\n temp[0] = diagonalForwardBase - diagonalForwardStart + 1;\r\n MyArray.Copy2(forwardPoints, diagonalForwardStart, temp, 1, diagonalForwardEnd - diagonalForwardStart + 1);\r\n this.m_forwardHistory.push(temp);\r\n temp = new Int32Array(diagonalReverseEnd - diagonalReverseStart + 2);\r\n temp[0] = diagonalReverseBase - diagonalReverseStart + 1;\r\n MyArray.Copy2(reversePoints, diagonalReverseStart, temp, 1, diagonalReverseEnd - diagonalReverseStart + 1);\r\n this.m_reverseHistory.push(temp);\r\n }\r\n }\r\n // If we got here, then we have the full trace in history. We just have to convert it to a change list\r\n // NOTE: This part is a bit messy\r\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\r\n }\r\n /**\r\n * Shifts the given changes to provide a more intuitive diff.\r\n * While the first element in a diff matches the first element after the diff,\r\n * we shift the diff down.\r\n *\r\n * @param changes The list of changes to shift\r\n * @returns The shifted changes\r\n */\r\n PrettifyChanges(changes) {\r\n // Shift all the changes down first\r\n for (let i = 0; i < changes.length; i++) {\r\n const change = changes[i];\r\n const originalStop = (i < changes.length - 1) ? changes[i + 1].originalStart : this._originalElementsOrHash.length;\r\n const modifiedStop = (i < changes.length - 1) ? changes[i + 1].modifiedStart : this._modifiedElementsOrHash.length;\r\n const checkOriginal = change.originalLength > 0;\r\n const checkModified = change.modifiedLength > 0;\r\n while (change.originalStart + change.originalLength < originalStop &&\r\n change.modifiedStart + change.modifiedLength < modifiedStop &&\r\n (!checkOriginal || this.OriginalElementsAreEqual(change.originalStart, change.originalStart + change.originalLength)) &&\r\n (!checkModified || this.ModifiedElementsAreEqual(change.modifiedStart, change.modifiedStart + change.modifiedLength))) {\r\n change.originalStart++;\r\n change.modifiedStart++;\r\n }\r\n let mergedChangeArr = [null];\r\n if (i < changes.length - 1 && this.ChangesOverlap(changes[i], changes[i + 1], mergedChangeArr)) {\r\n changes[i] = mergedChangeArr[0];\r\n changes.splice(i + 1, 1);\r\n i--;\r\n continue;\r\n }\r\n }\r\n // Shift changes back up until we hit empty or whitespace-only lines\r\n for (let i = changes.length - 1; i >= 0; i--) {\r\n const change = changes[i];\r\n let originalStop = 0;\r\n let modifiedStop = 0;\r\n if (i > 0) {\r\n const prevChange = changes[i - 1];\r\n if (prevChange.originalLength > 0) {\r\n originalStop = prevChange.originalStart + prevChange.originalLength;\r\n }\r\n if (prevChange.modifiedLength > 0) {\r\n modifiedStop = prevChange.modifiedStart + prevChange.modifiedLength;\r\n }\r\n }\r\n const checkOriginal = change.originalLength > 0;\r\n const checkModified = change.modifiedLength > 0;\r\n let bestDelta = 0;\r\n let bestScore = this._boundaryScore(change.originalStart, change.originalLength, change.modifiedStart, change.modifiedLength);\r\n for (let delta = 1;; delta++) {\r\n const originalStart = change.originalStart - delta;\r\n const modifiedStart = change.modifiedStart - delta;\r\n if (originalStart < originalStop || modifiedStart < modifiedStop) {\r\n break;\r\n }\r\n if (checkOriginal && !this.OriginalElementsAreEqual(originalStart, originalStart + change.originalLength)) {\r\n break;\r\n }\r\n if (checkModified && !this.ModifiedElementsAreEqual(modifiedStart, modifiedStart + change.modifiedLength)) {\r\n break;\r\n }\r\n const score = this._boundaryScore(originalStart, change.originalLength, modifiedStart, change.modifiedLength);\r\n if (score > bestScore) {\r\n bestScore = score;\r\n bestDelta = delta;\r\n }\r\n }\r\n change.originalStart -= bestDelta;\r\n change.modifiedStart -= bestDelta;\r\n }\r\n // There could be multiple longest common substrings.\r\n // Give preference to the ones containing longer lines\r\n if (this._hasStrings) {\r\n for (let i = 1, len = changes.length; i < len; i++) {\r\n const aChange = changes[i - 1];\r\n const bChange = changes[i];\r\n const matchedLength = bChange.originalStart - aChange.originalStart - aChange.originalLength;\r\n const aOriginalStart = aChange.originalStart;\r\n const bOriginalEnd = bChange.originalStart + bChange.originalLength;\r\n const abOriginalLength = bOriginalEnd - aOriginalStart;\r\n const aModifiedStart = aChange.modifiedStart;\r\n const bModifiedEnd = bChange.modifiedStart + bChange.modifiedLength;\r\n const abModifiedLength = bModifiedEnd - aModifiedStart;\r\n // Avoid wasting a lot of time with these searches\r\n if (matchedLength < 5 && abOriginalLength < 20 && abModifiedLength < 20) {\r\n const t = this._findBetterContiguousSequence(aOriginalStart, abOriginalLength, aModifiedStart, abModifiedLength, matchedLength);\r\n if (t) {\r\n const [originalMatchStart, modifiedMatchStart] = t;\r\n if (originalMatchStart !== aChange.originalStart + aChange.originalLength || modifiedMatchStart !== aChange.modifiedStart + aChange.modifiedLength) {\r\n // switch to another sequence that has a better score\r\n aChange.originalLength = originalMatchStart - aChange.originalStart;\r\n aChange.modifiedLength = modifiedMatchStart - aChange.modifiedStart;\r\n bChange.originalStart = originalMatchStart + matchedLength;\r\n bChange.modifiedStart = modifiedMatchStart + matchedLength;\r\n bChange.originalLength = bOriginalEnd - bChange.originalStart;\r\n bChange.modifiedLength = bModifiedEnd - bChange.modifiedStart;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return changes;\r\n }\r\n _findBetterContiguousSequence(originalStart, originalLength, modifiedStart, modifiedLength, desiredLength) {\r\n if (originalLength < desiredLength || modifiedLength < desiredLength) {\r\n return null;\r\n }\r\n const originalMax = originalStart + originalLength - desiredLength + 1;\r\n const modifiedMax = modifiedStart + modifiedLength - desiredLength + 1;\r\n let bestScore = 0;\r\n let bestOriginalStart = 0;\r\n let bestModifiedStart = 0;\r\n for (let i = originalStart; i < originalMax; i++) {\r\n for (let j = modifiedStart; j < modifiedMax; j++) {\r\n const score = this._contiguousSequenceScore(i, j, desiredLength);\r\n if (score > 0 && score > bestScore) {\r\n bestScore = score;\r\n bestOriginalStart = i;\r\n bestModifiedStart = j;\r\n }\r\n }\r\n }\r\n if (bestScore > 0) {\r\n return [bestOriginalStart, bestModifiedStart];\r\n }\r\n return null;\r\n }\r\n _contiguousSequenceScore(originalStart, modifiedStart, length) {\r\n let score = 0;\r\n for (let l = 0; l < length; l++) {\r\n if (!this.ElementsAreEqual(originalStart + l, modifiedStart + l)) {\r\n return 0;\r\n }\r\n score += this._originalStringElements[originalStart + l].length;\r\n }\r\n return score;\r\n }\r\n _OriginalIsBoundary(index) {\r\n if (index <= 0 || index >= this._originalElementsOrHash.length - 1) {\r\n return true;\r\n }\r\n return (this._hasStrings && /^\\s*$/.test(this._originalStringElements[index]));\r\n }\r\n _OriginalRegionIsBoundary(originalStart, originalLength) {\r\n if (this._OriginalIsBoundary(originalStart) || this._OriginalIsBoundary(originalStart - 1)) {\r\n return true;\r\n }\r\n if (originalLength > 0) {\r\n const originalEnd = originalStart + originalLength;\r\n if (this._OriginalIsBoundary(originalEnd - 1) || this._OriginalIsBoundary(originalEnd)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n _ModifiedIsBoundary(index) {\r\n if (index <= 0 || index >= this._modifiedElementsOrHash.length - 1) {\r\n return true;\r\n }\r\n return (this._hasStrings && /^\\s*$/.test(this._modifiedStringElements[index]));\r\n }\r\n _ModifiedRegionIsBoundary(modifiedStart, modifiedLength) {\r\n if (this._ModifiedIsBoundary(modifiedStart) || this._ModifiedIsBoundary(modifiedStart - 1)) {\r\n return true;\r\n }\r\n if (modifiedLength > 0) {\r\n const modifiedEnd = modifiedStart + modifiedLength;\r\n if (this._ModifiedIsBoundary(modifiedEnd - 1) || this._ModifiedIsBoundary(modifiedEnd)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n _boundaryScore(originalStart, originalLength, modifiedStart, modifiedLength) {\r\n const originalScore = (this._OriginalRegionIsBoundary(originalStart, originalLength) ? 1 : 0);\r\n const modifiedScore = (this._ModifiedRegionIsBoundary(modifiedStart, modifiedLength) ? 1 : 0);\r\n return (originalScore + modifiedScore);\r\n }\r\n /**\r\n * Concatenates the two input DiffChange lists and returns the resulting\r\n * list.\r\n * @param The left changes\r\n * @param The right changes\r\n * @returns The concatenated list\r\n */\r\n ConcatenateChanges(left, right) {\r\n let mergedChangeArr = [];\r\n if (left.length === 0 || right.length === 0) {\r\n return (right.length > 0) ? right : left;\r\n }\r\n else if (this.ChangesOverlap(left[left.length - 1], right[0], mergedChangeArr)) {\r\n // Since we break the problem down recursively, it is possible that we\r\n // might recurse in the middle of a change thereby splitting it into\r\n // two changes. Here in the combining stage, we detect and fuse those\r\n // changes back together\r\n const result = new Array(left.length + right.length - 1);\r\n MyArray.Copy(left, 0, result, 0, left.length - 1);\r\n result[left.length - 1] = mergedChangeArr[0];\r\n MyArray.Copy(right, 1, result, left.length, right.length - 1);\r\n return result;\r\n }\r\n else {\r\n const result = new Array(left.length + right.length);\r\n MyArray.Copy(left, 0, result, 0, left.length);\r\n MyArray.Copy(right, 0, result, left.length, right.length);\r\n return result;\r\n }\r\n }\r\n /**\r\n * Returns true if the two changes overlap and can be merged into a single\r\n * change\r\n * @param left The left change\r\n * @param right The right change\r\n * @param mergedChange The merged change if the two overlap, null otherwise\r\n * @returns True if the two changes overlap\r\n */\r\n ChangesOverlap(left, right, mergedChangeArr) {\r\n Debug.Assert(left.originalStart <= right.originalStart, 'Left change is not less than or equal to right change');\r\n Debug.Assert(left.modifiedStart <= right.modifiedStart, 'Left change is not less than or equal to right change');\r\n if (left.originalStart + left.originalLength >= right.originalStart || left.modifiedStart + left.modifiedLength >= right.modifiedStart) {\r\n const originalStart = left.originalStart;\r\n let originalLength = left.originalLength;\r\n const modifiedStart = left.modifiedStart;\r\n let modifiedLength = left.modifiedLength;\r\n if (left.originalStart + left.originalLength >= right.originalStart) {\r\n originalLength = right.originalStart + right.originalLength - left.originalStart;\r\n }\r\n if (left.modifiedStart + left.modifiedLength >= right.modifiedStart) {\r\n modifiedLength = right.modifiedStart + right.modifiedLength - left.modifiedStart;\r\n }\r\n mergedChangeArr[0] = new _diffChange_js__WEBPACK_IMPORTED_MODULE_0__.DiffChange(originalStart, originalLength, modifiedStart, modifiedLength);\r\n return true;\r\n }\r\n else {\r\n mergedChangeArr[0] = null;\r\n return false;\r\n }\r\n }\r\n /**\r\n * Helper method used to clip a diagonal index to the range of valid\r\n * diagonals. This also decides whether or not the diagonal index,\r\n * if it exceeds the boundary, should be clipped to the boundary or clipped\r\n * one inside the boundary depending on the Even/Odd status of the boundary\r\n * and numDifferences.\r\n * @param diagonal The index of the diagonal to clip.\r\n * @param numDifferences The current number of differences being iterated upon.\r\n * @param diagonalBaseIndex The base reference diagonal.\r\n * @param numDiagonals The total number of diagonals.\r\n * @returns The clipped diagonal index.\r\n */\r\n ClipDiagonalBound(diagonal, numDifferences, diagonalBaseIndex, numDiagonals) {\r\n if (diagonal >= 0 && diagonal < numDiagonals) {\r\n // Nothing to clip, its in range\r\n return diagonal;\r\n }\r\n // diagonalsBelow: The number of diagonals below the reference diagonal\r\n // diagonalsAbove: The number of diagonals above the reference diagonal\r\n const diagonalsBelow = diagonalBaseIndex;\r\n const diagonalsAbove = numDiagonals - diagonalBaseIndex - 1;\r\n const diffEven = (numDifferences % 2 === 0);\r\n if (diagonal < 0) {\r\n const lowerBoundEven = (diagonalsBelow % 2 === 0);\r\n return (diffEven === lowerBoundEven) ? 0 : 1;\r\n }\r\n else {\r\n const upperBoundEven = (diagonalsAbove % 2 === 0);\r\n return (diffEven === upperBoundEven) ? numDiagonals - 1 : numDiagonals - 2;\r\n }\r\n }\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/base/common/diff/diff.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/base/common/diff/diffChange.js": /*!**************************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/base/common/diff/diffChange.js ***! \**************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"DiffChange\": () => (/* binding */ DiffChange)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * Represents information about a specific difference between two sequences.\r\n */\r\nclass DiffChange {\r\n /**\r\n * Constructs a new DiffChange with the given sequence information\r\n * and content.\r\n */\r\n constructor(originalStart, originalLength, modifiedStart, modifiedLength) {\r\n //Debug.Assert(originalLength > 0 || modifiedLength > 0, \"originalLength and modifiedLength cannot both be <= 0\");\r\n this.originalStart = originalStart;\r\n this.originalLength = originalLength;\r\n this.modifiedStart = modifiedStart;\r\n this.modifiedLength = modifiedLength;\r\n }\r\n /**\r\n * The end point (exclusive) of the change in the original sequence.\r\n */\r\n getOriginalEnd() {\r\n return this.originalStart + this.originalLength;\r\n }\r\n /**\r\n * The end point (exclusive) of the change in the modified sequence.\r\n */\r\n getModifiedEnd() {\r\n return this.modifiedStart + this.modifiedLength;\r\n }\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/base/common/diff/diffChange.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/base/common/errors.js": /*!*****************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/base/common/errors.js ***! \*****************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ErrorHandler\": () => (/* binding */ ErrorHandler),\n/* harmony export */ \"errorHandler\": () => (/* binding */ errorHandler),\n/* harmony export */ \"onUnexpectedError\": () => (/* binding */ onUnexpectedError),\n/* harmony export */ \"onUnexpectedExternalError\": () => (/* binding */ onUnexpectedExternalError),\n/* harmony export */ \"transformErrorForSerialization\": () => (/* binding */ transformErrorForSerialization),\n/* harmony export */ \"isPromiseCanceledError\": () => (/* binding */ isPromiseCanceledError),\n/* harmony export */ \"canceled\": () => (/* binding */ canceled),\n/* harmony export */ \"illegalArgument\": () => (/* binding */ illegalArgument),\n/* harmony export */ \"illegalState\": () => (/* binding */ illegalState)\n/* harmony export */ });\n// Avoid circular dependency on EventEmitter by implementing a subset of the interface.\r\nclass ErrorHandler {\r\n constructor() {\r\n this.listeners = [];\r\n this.unexpectedErrorHandler = function (e) {\r\n setTimeout(() => {\r\n if (e.stack) {\r\n throw new Error(e.message + '\\n\\n' + e.stack);\r\n }\r\n throw e;\r\n }, 0);\r\n };\r\n }\r\n emit(e) {\r\n this.listeners.forEach((listener) => {\r\n listener(e);\r\n });\r\n }\r\n onUnexpectedError(e) {\r\n this.unexpectedErrorHandler(e);\r\n this.emit(e);\r\n }\r\n // For external errors, we don't want the listeners to be called\r\n onUnexpectedExternalError(e) {\r\n this.unexpectedErrorHandler(e);\r\n }\r\n}\r\nconst errorHandler = new ErrorHandler();\r\nfunction onUnexpectedError(e) {\r\n // ignore errors from cancelled promises\r\n if (!isPromiseCanceledError(e)) {\r\n errorHandler.onUnexpectedError(e);\r\n }\r\n return undefined;\r\n}\r\nfunction onUnexpectedExternalError(e) {\r\n // ignore errors from cancelled promises\r\n if (!isPromiseCanceledError(e)) {\r\n errorHandler.onUnexpectedExternalError(e);\r\n }\r\n return undefined;\r\n}\r\nfunction transformErrorForSerialization(error) {\r\n if (error instanceof Error) {\r\n let { name, message } = error;\r\n const stack = error.stacktrace || error.stack;\r\n return {\r\n $isError: true,\r\n name,\r\n message,\r\n stack\r\n };\r\n }\r\n // return as is\r\n return error;\r\n}\r\nconst canceledName = 'Canceled';\r\n/**\r\n * Checks if the given error is a promise in canceled state\r\n */\r\nfunction isPromiseCanceledError(error) {\r\n return error instanceof Error && error.name === canceledName && error.message === canceledName;\r\n}\r\n/**\r\n * Returns an error that signals cancellation.\r\n */\r\nfunction canceled() {\r\n const error = new Error(canceledName);\r\n error.name = error.message;\r\n return error;\r\n}\r\nfunction illegalArgument(name) {\r\n if (name) {\r\n return new Error(`Illegal argument: ${name}`);\r\n }\r\n else {\r\n return new Error('Illegal argument');\r\n }\r\n}\r\nfunction illegalState(name) {\r\n if (name) {\r\n return new Error(`Illegal state: ${name}`);\r\n }\r\n else {\r\n return new Error('Illegal state');\r\n }\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/base/common/errors.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/base/common/event.js": /*!****************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/base/common/event.js ***! \****************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Event\": () => (/* binding */ Event),\n/* harmony export */ \"Emitter\": () => (/* binding */ Emitter),\n/* harmony export */ \"PauseableEmitter\": () => (/* binding */ PauseableEmitter),\n/* harmony export */ \"EventBufferer\": () => (/* binding */ EventBufferer),\n/* harmony export */ \"Relay\": () => (/* binding */ Relay)\n/* harmony export */ });\n/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./errors.js */ \"./node_modules/monaco-editor/esm/vs/base/common/errors.js\");\n/* harmony import */ var _lifecycle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _linkedList_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./linkedList.js */ \"./node_modules/monaco-editor/esm/vs/base/common/linkedList.js\");\n/* harmony import */ var _stopwatch_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stopwatch.js */ \"./node_modules/monaco-editor/esm/vs/base/common/stopwatch.js\");\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n\r\n\r\n\r\nvar Event;\r\n(function (Event) {\r\n Event.None = () => _lifecycle_js__WEBPACK_IMPORTED_MODULE_1__.Disposable.None;\r\n /**\r\n * Given an event, returns another event which only fires once.\r\n */\r\n function once(event) {\r\n return (listener, thisArgs = null, disposables) => {\r\n // we need this, in case the event fires during the listener call\r\n let didFire = false;\r\n let result;\r\n result = event(e => {\r\n if (didFire) {\r\n return;\r\n }\r\n else if (result) {\r\n result.dispose();\r\n }\r\n else {\r\n didFire = true;\r\n }\r\n return listener.call(thisArgs, e);\r\n }, null, disposables);\r\n if (didFire) {\r\n result.dispose();\r\n }\r\n return result;\r\n };\r\n }\r\n Event.once = once;\r\n /**\r\n * Given an event and a `map` function, returns another event which maps each element\r\n * through the mapping function.\r\n */\r\n function map(event, map) {\r\n return snapshot((listener, thisArgs = null, disposables) => event(i => listener.call(thisArgs, map(i)), null, disposables));\r\n }\r\n Event.map = map;\r\n /**\r\n * Given an event and an `each` function, returns another identical event and calls\r\n * the `each` function per each element.\r\n */\r\n function forEach(event, each) {\r\n return snapshot((listener, thisArgs = null, disposables) => event(i => { each(i); listener.call(thisArgs, i); }, null, disposables));\r\n }\r\n Event.forEach = forEach;\r\n function filter(event, filter) {\r\n return snapshot((listener, thisArgs = null, disposables) => event(e => filter(e) && listener.call(thisArgs, e), null, disposables));\r\n }\r\n Event.filter = filter;\r\n /**\r\n * Given an event, returns the same event but typed as `Event`.\r\n */\r\n function signal(event) {\r\n return event;\r\n }\r\n Event.signal = signal;\r\n function any(...events) {\r\n return (listener, thisArgs = null, disposables) => (0,_lifecycle_js__WEBPACK_IMPORTED_MODULE_1__.combinedDisposable)(...events.map(event => event(e => listener.call(thisArgs, e), null, disposables)));\r\n }\r\n Event.any = any;\r\n /**\r\n * Given an event and a `merge` function, returns another event which maps each element\r\n * and the cumulative result through the `merge` function. Similar to `map`, but with memory.\r\n */\r\n function reduce(event, merge, initial) {\r\n let output = initial;\r\n return map(event, e => {\r\n output = merge(output, e);\r\n return output;\r\n });\r\n }\r\n Event.reduce = reduce;\r\n /**\r\n * Given a chain of event processing functions (filter, map, etc), each\r\n * function will be invoked per event & per listener. Snapshotting an event\r\n * chain allows each function to be invoked just once per event.\r\n */\r\n function snapshot(event) {\r\n let listener;\r\n const emitter = new Emitter({\r\n onFirstListenerAdd() {\r\n listener = event(emitter.fire, emitter);\r\n },\r\n onLastListenerRemove() {\r\n listener.dispose();\r\n }\r\n });\r\n return emitter.event;\r\n }\r\n Event.snapshot = snapshot;\r\n function debounce(event, merge, delay = 100, leading = false, leakWarningThreshold) {\r\n let subscription;\r\n let output = undefined;\r\n let handle = undefined;\r\n let numDebouncedCalls = 0;\r\n const emitter = new Emitter({\r\n leakWarningThreshold,\r\n onFirstListenerAdd() {\r\n subscription = event(cur => {\r\n numDebouncedCalls++;\r\n output = merge(output, cur);\r\n if (leading && !handle) {\r\n emitter.fire(output);\r\n output = undefined;\r\n }\r\n clearTimeout(handle);\r\n handle = setTimeout(() => {\r\n const _output = output;\r\n output = undefined;\r\n handle = undefined;\r\n if (!leading || numDebouncedCalls > 1) {\r\n emitter.fire(_output);\r\n }\r\n numDebouncedCalls = 0;\r\n }, delay);\r\n });\r\n },\r\n onLastListenerRemove() {\r\n subscription.dispose();\r\n }\r\n });\r\n return emitter.event;\r\n }\r\n Event.debounce = debounce;\r\n /**\r\n * Given an event, it returns another event which fires only once and as soon as\r\n * the input event emits. The event data is the number of millis it took for the\r\n * event to fire.\r\n */\r\n function stopwatch(event) {\r\n const start = new Date().getTime();\r\n return map(once(event), _ => new Date().getTime() - start);\r\n }\r\n Event.stopwatch = stopwatch;\r\n /**\r\n * Given an event, it returns another event which fires only when the event\r\n * element changes.\r\n */\r\n function latch(event) {\r\n let firstCall = true;\r\n let cache;\r\n return filter(event, value => {\r\n const shouldEmit = firstCall || value !== cache;\r\n firstCall = false;\r\n cache = value;\r\n return shouldEmit;\r\n });\r\n }\r\n Event.latch = latch;\r\n /**\r\n * Buffers the provided event until a first listener comes\r\n * along, at which point fire all the events at once and\r\n * pipe the event from then on.\r\n *\r\n * ```typescript\r\n * const emitter = new Emitter();\r\n * const event = emitter.event;\r\n * const bufferedEvent = buffer(event);\r\n *\r\n * emitter.fire(1);\r\n * emitter.fire(2);\r\n * emitter.fire(3);\r\n * // nothing...\r\n *\r\n * const listener = bufferedEvent(num => console.log(num));\r\n * // 1, 2, 3\r\n *\r\n * emitter.fire(4);\r\n * // 4\r\n * ```\r\n */\r\n function buffer(event, nextTick = false, _buffer = []) {\r\n let buffer = _buffer.slice();\r\n let listener = event(e => {\r\n if (buffer) {\r\n buffer.push(e);\r\n }\r\n else {\r\n emitter.fire(e);\r\n }\r\n });\r\n const flush = () => {\r\n if (buffer) {\r\n buffer.forEach(e => emitter.fire(e));\r\n }\r\n buffer = null;\r\n };\r\n const emitter = new Emitter({\r\n onFirstListenerAdd() {\r\n if (!listener) {\r\n listener = event(e => emitter.fire(e));\r\n }\r\n },\r\n onFirstListenerDidAdd() {\r\n if (buffer) {\r\n if (nextTick) {\r\n setTimeout(flush);\r\n }\r\n else {\r\n flush();\r\n }\r\n }\r\n },\r\n onLastListenerRemove() {\r\n if (listener) {\r\n listener.dispose();\r\n }\r\n listener = null;\r\n }\r\n });\r\n return emitter.event;\r\n }\r\n Event.buffer = buffer;\r\n class ChainableEvent {\r\n constructor(event) {\r\n this.event = event;\r\n }\r\n map(fn) {\r\n return new ChainableEvent(map(this.event, fn));\r\n }\r\n forEach(fn) {\r\n return new ChainableEvent(forEach(this.event, fn));\r\n }\r\n filter(fn) {\r\n return new ChainableEvent(filter(this.event, fn));\r\n }\r\n reduce(merge, initial) {\r\n return new ChainableEvent(reduce(this.event, merge, initial));\r\n }\r\n latch() {\r\n return new ChainableEvent(latch(this.event));\r\n }\r\n debounce(merge, delay = 100, leading = false, leakWarningThreshold) {\r\n return new ChainableEvent(debounce(this.event, merge, delay, leading, leakWarningThreshold));\r\n }\r\n on(listener, thisArgs, disposables) {\r\n return this.event(listener, thisArgs, disposables);\r\n }\r\n once(listener, thisArgs, disposables) {\r\n return once(this.event)(listener, thisArgs, disposables);\r\n }\r\n }\r\n function chain(event) {\r\n return new ChainableEvent(event);\r\n }\r\n Event.chain = chain;\r\n function fromNodeEventEmitter(emitter, eventName, map = id => id) {\r\n const fn = (...args) => result.fire(map(...args));\r\n const onFirstListenerAdd = () => emitter.on(eventName, fn);\r\n const onLastListenerRemove = () => emitter.removeListener(eventName, fn);\r\n const result = new Emitter({ onFirstListenerAdd, onLastListenerRemove });\r\n return result.event;\r\n }\r\n Event.fromNodeEventEmitter = fromNodeEventEmitter;\r\n function fromDOMEventEmitter(emitter, eventName, map = id => id) {\r\n const fn = (...args) => result.fire(map(...args));\r\n const onFirstListenerAdd = () => emitter.addEventListener(eventName, fn);\r\n const onLastListenerRemove = () => emitter.removeEventListener(eventName, fn);\r\n const result = new Emitter({ onFirstListenerAdd, onLastListenerRemove });\r\n return result.event;\r\n }\r\n Event.fromDOMEventEmitter = fromDOMEventEmitter;\r\n function fromPromise(promise) {\r\n const emitter = new Emitter();\r\n let shouldEmit = false;\r\n promise\r\n .then(undefined, () => null)\r\n .then(() => {\r\n if (!shouldEmit) {\r\n setTimeout(() => emitter.fire(undefined), 0);\r\n }\r\n else {\r\n emitter.fire(undefined);\r\n }\r\n });\r\n shouldEmit = true;\r\n return emitter.event;\r\n }\r\n Event.fromPromise = fromPromise;\r\n function toPromise(event) {\r\n return new Promise(resolve => once(event)(resolve));\r\n }\r\n Event.toPromise = toPromise;\r\n})(Event || (Event = {}));\r\nclass EventProfiling {\r\n constructor(name) {\r\n this._listenerCount = 0;\r\n this._invocationCount = 0;\r\n this._elapsedOverall = 0;\r\n this._name = `${name}_${EventProfiling._idPool++}`;\r\n }\r\n start(listenerCount) {\r\n this._stopWatch = new _stopwatch_js__WEBPACK_IMPORTED_MODULE_3__.StopWatch(true);\r\n this._listenerCount = listenerCount;\r\n }\r\n stop() {\r\n if (this._stopWatch) {\r\n const elapsed = this._stopWatch.elapsed();\r\n this._elapsedOverall += elapsed;\r\n this._invocationCount += 1;\r\n console.info(`did FIRE ${this._name}: elapsed_ms: ${elapsed.toFixed(5)}, listener: ${this._listenerCount} (elapsed_overall: ${this._elapsedOverall.toFixed(2)}, invocations: ${this._invocationCount})`);\r\n this._stopWatch = undefined;\r\n }\r\n }\r\n}\r\nEventProfiling._idPool = 0;\r\nlet _globalLeakWarningThreshold = -1;\r\nclass LeakageMonitor {\r\n constructor(customThreshold, name = Math.random().toString(18).slice(2, 5)) {\r\n this.customThreshold = customThreshold;\r\n this.name = name;\r\n this._warnCountdown = 0;\r\n }\r\n dispose() {\r\n if (this._stacks) {\r\n this._stacks.clear();\r\n }\r\n }\r\n check(listenerCount) {\r\n let threshold = _globalLeakWarningThreshold;\r\n if (typeof this.customThreshold === 'number') {\r\n threshold = this.customThreshold;\r\n }\r\n if (threshold <= 0 || listenerCount < threshold) {\r\n return undefined;\r\n }\r\n if (!this._stacks) {\r\n this._stacks = new Map();\r\n }\r\n const stack = new Error().stack.split('\\n').slice(3).join('\\n');\r\n const count = (this._stacks.get(stack) || 0);\r\n this._stacks.set(stack, count + 1);\r\n this._warnCountdown -= 1;\r\n if (this._warnCountdown <= 0) {\r\n // only warn on first exceed and then every time the limit\r\n // is exceeded by 50% again\r\n this._warnCountdown = threshold * 0.5;\r\n // find most frequent listener and print warning\r\n let topStack;\r\n let topCount = 0;\r\n for (const [stack, count] of this._stacks) {\r\n if (!topStack || topCount < count) {\r\n topStack = stack;\r\n topCount = count;\r\n }\r\n }\r\n console.warn(`[${this.name}] potential listener LEAK detected, having ${listenerCount} listeners already. MOST frequent listener (${topCount}):`);\r\n console.warn(topStack);\r\n }\r\n return () => {\r\n const count = (this._stacks.get(stack) || 0);\r\n this._stacks.set(stack, count - 1);\r\n };\r\n }\r\n}\r\n/**\r\n * The Emitter can be used to expose an Event to the public\r\n * to fire it from the insides.\r\n * Sample:\r\n class Document {\r\n\r\n private readonly _onDidChange = new Emitter<(value:string)=>any>();\r\n\r\n public onDidChange = this._onDidChange.event;\r\n\r\n // getter-style\r\n // get onDidChange(): Event<(value:string)=>any> {\r\n // \treturn this._onDidChange.event;\r\n // }\r\n\r\n private _doIt() {\r\n //...\r\n this._onDidChange.fire(value);\r\n }\r\n }\r\n */\r\nclass Emitter {\r\n constructor(options) {\r\n var _a;\r\n this._disposed = false;\r\n this._options = options;\r\n this._leakageMon = _globalLeakWarningThreshold > 0 ? new LeakageMonitor(this._options && this._options.leakWarningThreshold) : undefined;\r\n this._perfMon = ((_a = this._options) === null || _a === void 0 ? void 0 : _a._profName) ? new EventProfiling(this._options._profName) : undefined;\r\n }\r\n /**\r\n * For the public to allow to subscribe\r\n * to events from this Emitter\r\n */\r\n get event() {\r\n if (!this._event) {\r\n this._event = (listener, thisArgs, disposables) => {\r\n var _a;\r\n if (!this._listeners) {\r\n this._listeners = new _linkedList_js__WEBPACK_IMPORTED_MODULE_2__.LinkedList();\r\n }\r\n const firstListener = this._listeners.isEmpty();\r\n if (firstListener && this._options && this._options.onFirstListenerAdd) {\r\n this._options.onFirstListenerAdd(this);\r\n }\r\n const remove = this._listeners.push(!thisArgs ? listener : [listener, thisArgs]);\r\n if (firstListener && this._options && this._options.onFirstListenerDidAdd) {\r\n this._options.onFirstListenerDidAdd(this);\r\n }\r\n if (this._options && this._options.onListenerDidAdd) {\r\n this._options.onListenerDidAdd(this, listener, thisArgs);\r\n }\r\n // check and record this emitter for potential leakage\r\n const removeMonitor = (_a = this._leakageMon) === null || _a === void 0 ? void 0 : _a.check(this._listeners.size);\r\n let result;\r\n result = {\r\n dispose: () => {\r\n if (removeMonitor) {\r\n removeMonitor();\r\n }\r\n result.dispose = Emitter._noop;\r\n if (!this._disposed) {\r\n remove();\r\n if (this._options && this._options.onLastListenerRemove) {\r\n const hasListeners = (this._listeners && !this._listeners.isEmpty());\r\n if (!hasListeners) {\r\n this._options.onLastListenerRemove(this);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n if (disposables instanceof _lifecycle_js__WEBPACK_IMPORTED_MODULE_1__.DisposableStore) {\r\n disposables.add(result);\r\n }\r\n else if (Array.isArray(disposables)) {\r\n disposables.push(result);\r\n }\r\n return result;\r\n };\r\n }\r\n return this._event;\r\n }\r\n /**\r\n * To be kept private to fire an event to\r\n * subscribers\r\n */\r\n fire(event) {\r\n var _a, _b;\r\n if (this._listeners) {\r\n // put all [listener,event]-pairs into delivery queue\r\n // then emit all event. an inner/nested event might be\r\n // the driver of this\r\n if (!this._deliveryQueue) {\r\n this._deliveryQueue = new _linkedList_js__WEBPACK_IMPORTED_MODULE_2__.LinkedList();\r\n }\r\n for (let listener of this._listeners) {\r\n this._deliveryQueue.push([listener, event]);\r\n }\r\n // start/stop performance insight collection\r\n (_a = this._perfMon) === null || _a === void 0 ? void 0 : _a.start(this._deliveryQueue.size);\r\n while (this._deliveryQueue.size > 0) {\r\n const [listener, event] = this._deliveryQueue.shift();\r\n try {\r\n if (typeof listener === 'function') {\r\n listener.call(undefined, event);\r\n }\r\n else {\r\n listener[0].call(listener[1], event);\r\n }\r\n }\r\n catch (e) {\r\n (0,_errors_js__WEBPACK_IMPORTED_MODULE_0__.onUnexpectedError)(e);\r\n }\r\n }\r\n (_b = this._perfMon) === null || _b === void 0 ? void 0 : _b.stop();\r\n }\r\n }\r\n dispose() {\r\n var _a, _b, _c;\r\n (_a = this._listeners) === null || _a === void 0 ? void 0 : _a.clear();\r\n (_b = this._deliveryQueue) === null || _b === void 0 ? void 0 : _b.clear();\r\n (_c = this._leakageMon) === null || _c === void 0 ? void 0 : _c.dispose();\r\n this._disposed = true;\r\n }\r\n}\r\nEmitter._noop = function () { };\r\nclass PauseableEmitter extends Emitter {\r\n constructor(options) {\r\n super(options);\r\n this._isPaused = 0;\r\n this._eventQueue = new _linkedList_js__WEBPACK_IMPORTED_MODULE_2__.LinkedList();\r\n this._mergeFn = options === null || options === void 0 ? void 0 : options.merge;\r\n }\r\n pause() {\r\n this._isPaused++;\r\n }\r\n resume() {\r\n if (this._isPaused !== 0 && --this._isPaused === 0) {\r\n if (this._mergeFn) {\r\n // use the merge function to create a single composite\r\n // event. make a copy in case firing pauses this emitter\r\n const events = Array.from(this._eventQueue);\r\n this._eventQueue.clear();\r\n super.fire(this._mergeFn(events));\r\n }\r\n else {\r\n // no merging, fire each event individually and test\r\n // that this emitter isn't paused halfway through\r\n while (!this._isPaused && this._eventQueue.size !== 0) {\r\n super.fire(this._eventQueue.shift());\r\n }\r\n }\r\n }\r\n }\r\n fire(event) {\r\n if (this._listeners) {\r\n if (this._isPaused !== 0) {\r\n this._eventQueue.push(event);\r\n }\r\n else {\r\n super.fire(event);\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * The EventBufferer is useful in situations in which you want\r\n * to delay firing your events during some code.\r\n * You can wrap that code and be sure that the event will not\r\n * be fired during that wrap.\r\n *\r\n * ```\r\n * const emitter: Emitter;\r\n * const delayer = new EventDelayer();\r\n * const delayedEvent = delayer.wrapEvent(emitter.event);\r\n *\r\n * delayedEvent(console.log);\r\n *\r\n * delayer.bufferEvents(() => {\r\n * emitter.fire(); // event will not be fired yet\r\n * });\r\n *\r\n * // event will only be fired at this point\r\n * ```\r\n */\r\nclass EventBufferer {\r\n constructor() {\r\n this.buffers = [];\r\n }\r\n wrapEvent(event) {\r\n return (listener, thisArgs, disposables) => {\r\n return event(i => {\r\n const buffer = this.buffers[this.buffers.length - 1];\r\n if (buffer) {\r\n buffer.push(() => listener.call(thisArgs, i));\r\n }\r\n else {\r\n listener.call(thisArgs, i);\r\n }\r\n }, undefined, disposables);\r\n };\r\n }\r\n bufferEvents(fn) {\r\n const buffer = [];\r\n this.buffers.push(buffer);\r\n const r = fn();\r\n this.buffers.pop();\r\n buffer.forEach(flush => flush());\r\n return r;\r\n }\r\n}\r\n/**\r\n * A Relay is an event forwarder which functions as a replugabble event pipe.\r\n * Once created, you can connect an input event to it and it will simply forward\r\n * events from that input event through its own `event` property. The `input`\r\n * can be changed at any point in time.\r\n */\r\nclass Relay {\r\n constructor() {\r\n this.listening = false;\r\n this.inputEvent = Event.None;\r\n this.inputEventListener = _lifecycle_js__WEBPACK_IMPORTED_MODULE_1__.Disposable.None;\r\n this.emitter = new Emitter({\r\n onFirstListenerDidAdd: () => {\r\n this.listening = true;\r\n this.inputEventListener = this.inputEvent(this.emitter.fire, this.emitter);\r\n },\r\n onLastListenerRemove: () => {\r\n this.listening = false;\r\n this.inputEventListener.dispose();\r\n }\r\n });\r\n this.event = this.emitter.event;\r\n }\r\n set input(event) {\r\n this.inputEvent = event;\r\n if (this.listening) {\r\n this.inputEventListener.dispose();\r\n this.inputEventListener = event(this.emitter.fire, this.emitter);\r\n }\r\n }\r\n dispose() {\r\n this.inputEventListener.dispose();\r\n this.emitter.dispose();\r\n }\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/base/common/event.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/base/common/hash.js": /*!***************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/base/common/hash.js ***! \***************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"hash\": () => (/* binding */ hash),\n/* harmony export */ \"doHash\": () => (/* binding */ doHash),\n/* harmony export */ \"stringHash\": () => (/* binding */ stringHash),\n/* harmony export */ \"toHexString\": () => (/* binding */ toHexString),\n/* harmony export */ \"StringSHA1\": () => (/* binding */ StringSHA1)\n/* harmony export */ });\n/* harmony import */ var _strings_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./strings.js */ \"./node_modules/monaco-editor/esm/vs/base/common/strings.js\");\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n/**\r\n * Return a hash value for an object.\r\n */\r\nfunction hash(obj) {\r\n return doHash(obj, 0);\r\n}\r\nfunction doHash(obj, hashVal) {\r\n switch (typeof obj) {\r\n case 'object':\r\n if (obj === null) {\r\n return numberHash(349, hashVal);\r\n }\r\n else if (Array.isArray(obj)) {\r\n return arrayHash(obj, hashVal);\r\n }\r\n return objectHash(obj, hashVal);\r\n case 'string':\r\n return stringHash(obj, hashVal);\r\n case 'boolean':\r\n return booleanHash(obj, hashVal);\r\n case 'number':\r\n return numberHash(obj, hashVal);\r\n case 'undefined':\r\n return numberHash(937, hashVal);\r\n default:\r\n return numberHash(617, hashVal);\r\n }\r\n}\r\nfunction numberHash(val, initialHashVal) {\r\n return (((initialHashVal << 5) - initialHashVal) + val) | 0; // hashVal * 31 + ch, keep as int32\r\n}\r\nfunction booleanHash(b, initialHashVal) {\r\n return numberHash(b ? 433 : 863, initialHashVal);\r\n}\r\nfunction stringHash(s, hashVal) {\r\n hashVal = numberHash(149417, hashVal);\r\n for (let i = 0, length = s.length; i < length; i++) {\r\n hashVal = numberHash(s.charCodeAt(i), hashVal);\r\n }\r\n return hashVal;\r\n}\r\nfunction arrayHash(arr, initialHashVal) {\r\n initialHashVal = numberHash(104579, initialHashVal);\r\n return arr.reduce((hashVal, item) => doHash(item, hashVal), initialHashVal);\r\n}\r\nfunction objectHash(obj, initialHashVal) {\r\n initialHashVal = numberHash(181387, initialHashVal);\r\n return Object.keys(obj).sort().reduce((hashVal, key) => {\r\n hashVal = stringHash(key, hashVal);\r\n return doHash(obj[key], hashVal);\r\n }, initialHashVal);\r\n}\r\nfunction leftRotate(value, bits, totalBits = 32) {\r\n // delta + bits = totalBits\r\n const delta = totalBits - bits;\r\n // All ones, expect `delta` zeros aligned to the right\r\n const mask = ~((1 << delta) - 1);\r\n // Join (value left-shifted `bits` bits) with (masked value right-shifted `delta` bits)\r\n return ((value << bits) | ((mask & value) >>> delta)) >>> 0;\r\n}\r\nfunction fill(dest, index = 0, count = dest.byteLength, value = 0) {\r\n for (let i = 0; i < count; i++) {\r\n dest[index + i] = value;\r\n }\r\n}\r\nfunction leftPad(value, length, char = '0') {\r\n while (value.length < length) {\r\n value = char + value;\r\n }\r\n return value;\r\n}\r\nfunction toHexString(bufferOrValue, bitsize = 32) {\r\n if (bufferOrValue instanceof ArrayBuffer) {\r\n return Array.from(new Uint8Array(bufferOrValue)).map(b => b.toString(16).padStart(2, '0')).join('');\r\n }\r\n return leftPad((bufferOrValue >>> 0).toString(16), bitsize / 4);\r\n}\r\n/**\r\n * A SHA1 implementation that works with strings and does not allocate.\r\n */\r\nclass StringSHA1 {\r\n constructor() {\r\n this._h0 = 0x67452301;\r\n this._h1 = 0xEFCDAB89;\r\n this._h2 = 0x98BADCFE;\r\n this._h3 = 0x10325476;\r\n this._h4 = 0xC3D2E1F0;\r\n this._buff = new Uint8Array(64 /* BLOCK_SIZE */ + 3 /* to fit any utf-8 */);\r\n this._buffDV = new DataView(this._buff.buffer);\r\n this._buffLen = 0;\r\n this._totalLen = 0;\r\n this._leftoverHighSurrogate = 0;\r\n this._finished = false;\r\n }\r\n update(str) {\r\n const strLen = str.length;\r\n if (strLen === 0) {\r\n return;\r\n }\r\n const buff = this._buff;\r\n let buffLen = this._buffLen;\r\n let leftoverHighSurrogate = this._leftoverHighSurrogate;\r\n let charCode;\r\n let offset;\r\n if (leftoverHighSurrogate !== 0) {\r\n charCode = leftoverHighSurrogate;\r\n offset = -1;\r\n leftoverHighSurrogate = 0;\r\n }\r\n else {\r\n charCode = str.charCodeAt(0);\r\n offset = 0;\r\n }\r\n while (true) {\r\n let codePoint = charCode;\r\n if (_strings_js__WEBPACK_IMPORTED_MODULE_0__.isHighSurrogate(charCode)) {\r\n if (offset + 1 < strLen) {\r\n const nextCharCode = str.charCodeAt(offset + 1);\r\n if (_strings_js__WEBPACK_IMPORTED_MODULE_0__.isLowSurrogate(nextCharCode)) {\r\n offset++;\r\n codePoint = _strings_js__WEBPACK_IMPORTED_MODULE_0__.computeCodePoint(charCode, nextCharCode);\r\n }\r\n else {\r\n // illegal => unicode replacement character\r\n codePoint = 65533 /* UNICODE_REPLACEMENT */;\r\n }\r\n }\r\n else {\r\n // last character is a surrogate pair\r\n leftoverHighSurrogate = charCode;\r\n break;\r\n }\r\n }\r\n else if (_strings_js__WEBPACK_IMPORTED_MODULE_0__.isLowSurrogate(charCode)) {\r\n // illegal => unicode replacement character\r\n codePoint = 65533 /* UNICODE_REPLACEMENT */;\r\n }\r\n buffLen = this._push(buff, buffLen, codePoint);\r\n offset++;\r\n if (offset < strLen) {\r\n charCode = str.charCodeAt(offset);\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n this._buffLen = buffLen;\r\n this._leftoverHighSurrogate = leftoverHighSurrogate;\r\n }\r\n _push(buff, buffLen, codePoint) {\r\n if (codePoint < 0x0080) {\r\n buff[buffLen++] = codePoint;\r\n }\r\n else if (codePoint < 0x0800) {\r\n buff[buffLen++] = 0b11000000 | ((codePoint & 0b00000000000000000000011111000000) >>> 6);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000000000111111) >>> 0);\r\n }\r\n else if (codePoint < 0x10000) {\r\n buff[buffLen++] = 0b11100000 | ((codePoint & 0b00000000000000001111000000000000) >>> 12);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000111111000000) >>> 6);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000000000111111) >>> 0);\r\n }\r\n else {\r\n buff[buffLen++] = 0b11110000 | ((codePoint & 0b00000000000111000000000000000000) >>> 18);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000111111000000000000) >>> 12);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000111111000000) >>> 6);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000000000111111) >>> 0);\r\n }\r\n if (buffLen >= 64 /* BLOCK_SIZE */) {\r\n this._step();\r\n buffLen -= 64 /* BLOCK_SIZE */;\r\n this._totalLen += 64 /* BLOCK_SIZE */;\r\n // take last 3 in case of UTF8 overflow\r\n buff[0] = buff[64 /* BLOCK_SIZE */ + 0];\r\n buff[1] = buff[64 /* BLOCK_SIZE */ + 1];\r\n buff[2] = buff[64 /* BLOCK_SIZE */ + 2];\r\n }\r\n return buffLen;\r\n }\r\n digest() {\r\n if (!this._finished) {\r\n this._finished = true;\r\n if (this._leftoverHighSurrogate) {\r\n // illegal => unicode replacement character\r\n this._leftoverHighSurrogate = 0;\r\n this._buffLen = this._push(this._buff, this._buffLen, 65533 /* UNICODE_REPLACEMENT */);\r\n }\r\n this._totalLen += this._buffLen;\r\n this._wrapUp();\r\n }\r\n return toHexString(this._h0) + toHexString(this._h1) + toHexString(this._h2) + toHexString(this._h3) + toHexString(this._h4);\r\n }\r\n _wrapUp() {\r\n this._buff[this._buffLen++] = 0x80;\r\n fill(this._buff, this._buffLen);\r\n if (this._buffLen > 56) {\r\n this._step();\r\n fill(this._buff);\r\n }\r\n // this will fit because the mantissa can cover up to 52 bits\r\n const ml = 8 * this._totalLen;\r\n this._buffDV.setUint32(56, Math.floor(ml / 4294967296), false);\r\n this._buffDV.setUint32(60, ml % 4294967296, false);\r\n this._step();\r\n }\r\n _step() {\r\n const bigBlock32 = StringSHA1._bigBlock32;\r\n const data = this._buffDV;\r\n for (let j = 0; j < 64 /* 16*4 */; j += 4) {\r\n bigBlock32.setUint32(j, data.getUint32(j, false), false);\r\n }\r\n for (let j = 64; j < 320 /* 80*4 */; j += 4) {\r\n bigBlock32.setUint32(j, leftRotate((bigBlock32.getUint32(j - 12, false) ^ bigBlock32.getUint32(j - 32, false) ^ bigBlock32.getUint32(j - 56, false) ^ bigBlock32.getUint32(j - 64, false)), 1), false);\r\n }\r\n let a = this._h0;\r\n let b = this._h1;\r\n let c = this._h2;\r\n let d = this._h3;\r\n let e = this._h4;\r\n let f, k;\r\n let temp;\r\n for (let j = 0; j < 80; j++) {\r\n if (j < 20) {\r\n f = (b & c) | ((~b) & d);\r\n k = 0x5A827999;\r\n }\r\n else if (j < 40) {\r\n f = b ^ c ^ d;\r\n k = 0x6ED9EBA1;\r\n }\r\n else if (j < 60) {\r\n f = (b & c) | (b & d) | (c & d);\r\n k = 0x8F1BBCDC;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0xCA62C1D6;\r\n }\r\n temp = (leftRotate(a, 5) + f + e + k + bigBlock32.getUint32(j * 4, false)) & 0xffffffff;\r\n e = d;\r\n d = c;\r\n c = leftRotate(b, 30);\r\n b = a;\r\n a = temp;\r\n }\r\n this._h0 = (this._h0 + a) & 0xffffffff;\r\n this._h1 = (this._h1 + b) & 0xffffffff;\r\n this._h2 = (this._h2 + c) & 0xffffffff;\r\n this._h3 = (this._h3 + d) & 0xffffffff;\r\n this._h4 = (this._h4 + e) & 0xffffffff;\r\n }\r\n}\r\nStringSHA1._bigBlock32 = new DataView(new ArrayBuffer(320)); // 80 * 4 = 320\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/base/common/hash.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/base/common/iterator.js": /*!*******************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/base/common/iterator.js ***! \*******************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Iterable\": () => (/* binding */ Iterable)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar Iterable;\r\n(function (Iterable) {\r\n function is(thing) {\r\n return thing && typeof thing === 'object' && typeof thing[Symbol.iterator] === 'function';\r\n }\r\n Iterable.is = is;\r\n const _empty = Object.freeze([]);\r\n function empty() {\r\n return _empty;\r\n }\r\n Iterable.empty = empty;\r\n function* single(element) {\r\n yield element;\r\n }\r\n Iterable.single = single;\r\n function from(iterable) {\r\n return iterable || _empty;\r\n }\r\n Iterable.from = from;\r\n function isEmpty(iterable) {\r\n return !iterable || iterable[Symbol.iterator]().next().done === true;\r\n }\r\n Iterable.isEmpty = isEmpty;\r\n function first(iterable) {\r\n return iterable[Symbol.iterator]().next().value;\r\n }\r\n Iterable.first = first;\r\n function some(iterable, predicate) {\r\n for (const element of iterable) {\r\n if (predicate(element)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n Iterable.some = some;\r\n function find(iterable, predicate) {\r\n for (const element of iterable) {\r\n if (predicate(element)) {\r\n return element;\r\n }\r\n }\r\n return undefined;\r\n }\r\n Iterable.find = find;\r\n function* filter(iterable, predicate) {\r\n for (const element of iterable) {\r\n if (predicate(element)) {\r\n yield element;\r\n }\r\n }\r\n }\r\n Iterable.filter = filter;\r\n function* map(iterable, fn) {\r\n for (const element of iterable) {\r\n yield fn(element);\r\n }\r\n }\r\n Iterable.map = map;\r\n function* concat(...iterables) {\r\n for (const iterable of iterables) {\r\n for (const element of iterable) {\r\n yield element;\r\n }\r\n }\r\n }\r\n Iterable.concat = concat;\r\n function* concatNested(iterables) {\r\n for (const iterable of iterables) {\r\n for (const element of iterable) {\r\n yield element;\r\n }\r\n }\r\n }\r\n Iterable.concatNested = concatNested;\r\n function reduce(iterable, reducer, initialValue) {\r\n let value = initialValue;\r\n for (const element of iterable) {\r\n value = reducer(value, element);\r\n }\r\n return value;\r\n }\r\n Iterable.reduce = reduce;\r\n /**\r\n * Returns an iterable slice of the array, with the same semantics as `array.slice()`.\r\n */\r\n function* slice(arr, from, to = arr.length) {\r\n if (from < 0) {\r\n from += arr.length;\r\n }\r\n if (to < 0) {\r\n to += arr.length;\r\n }\r\n else if (to > arr.length) {\r\n to = arr.length;\r\n }\r\n for (; from < to; from++) {\r\n yield arr[from];\r\n }\r\n }\r\n Iterable.slice = slice;\r\n /**\r\n * Consumes `atMost` elements from iterable and returns the consumed elements,\r\n * and an iterable for the rest of the elements.\r\n */\r\n function consume(iterable, atMost = Number.POSITIVE_INFINITY) {\r\n const consumed = [];\r\n if (atMost === 0) {\r\n return [consumed, iterable];\r\n }\r\n const iterator = iterable[Symbol.iterator]();\r\n for (let i = 0; i < atMost; i++) {\r\n const next = iterator.next();\r\n if (next.done) {\r\n return [consumed, Iterable.empty()];\r\n }\r\n consumed.push(next.value);\r\n }\r\n return [consumed, { [Symbol.iterator]() { return iterator; } }];\r\n }\r\n Iterable.consume = consume;\r\n /**\r\n * Returns whether the iterables are the same length and all items are\r\n * equal using the comparator function.\r\n */\r\n function equals(a, b, comparator = (at, bt) => at === bt) {\r\n const ai = a[Symbol.iterator]();\r\n const bi = b[Symbol.iterator]();\r\n while (true) {\r\n const an = ai.next();\r\n const bn = bi.next();\r\n if (an.done !== bn.done) {\r\n return false;\r\n }\r\n else if (an.done) {\r\n return true;\r\n }\r\n else if (!comparator(an.value, bn.value)) {\r\n return false;\r\n }\r\n }\r\n }\r\n Iterable.equals = equals;\r\n})(Iterable || (Iterable = {}));\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/base/common/iterator.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/base/common/keyCodes.js": /*!*******************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/base/common/keyCodes.js ***! \*******************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"KeyCodeUtils\": () => (/* binding */ KeyCodeUtils),\n/* harmony export */ \"KeyChord\": () => (/* binding */ KeyChord),\n/* harmony export */ \"createKeybinding\": () => (/* binding */ createKeybinding),\n/* harmony export */ \"createSimpleKeybinding\": () => (/* binding */ createSimpleKeybinding),\n/* harmony export */ \"SimpleKeybinding\": () => (/* binding */ SimpleKeybinding),\n/* harmony export */ \"ChordKeybinding\": () => (/* binding */ ChordKeybinding),\n/* harmony export */ \"ResolvedKeybindingPart\": () => (/* binding */ ResolvedKeybindingPart),\n/* harmony export */ \"ResolvedKeybinding\": () => (/* binding */ ResolvedKeybinding)\n/* harmony export */ });\n/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./errors.js */ \"./node_modules/monaco-editor/esm/vs/base/common/errors.js\");\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nclass KeyCodeStrMap {\r\n constructor() {\r\n this._keyCodeToStr = [];\r\n this._strToKeyCode = Object.create(null);\r\n }\r\n define(keyCode, str) {\r\n this._keyCodeToStr[keyCode] = str;\r\n this._strToKeyCode[str.toLowerCase()] = keyCode;\r\n }\r\n keyCodeToStr(keyCode) {\r\n return this._keyCodeToStr[keyCode];\r\n }\r\n strToKeyCode(str) {\r\n return this._strToKeyCode[str.toLowerCase()] || 0 /* Unknown */;\r\n }\r\n}\r\nconst uiMap = new KeyCodeStrMap();\r\nconst userSettingsUSMap = new KeyCodeStrMap();\r\nconst userSettingsGeneralMap = new KeyCodeStrMap();\r\n(function () {\r\n function define(keyCode, uiLabel, usUserSettingsLabel = uiLabel, generalUserSettingsLabel = usUserSettingsLabel) {\r\n uiMap.define(keyCode, uiLabel);\r\n userSettingsUSMap.define(keyCode, usUserSettingsLabel);\r\n userSettingsGeneralMap.define(keyCode, generalUserSettingsLabel);\r\n }\r\n define(0 /* Unknown */, 'unknown');\r\n define(1 /* Backspace */, 'Backspace');\r\n define(2 /* Tab */, 'Tab');\r\n define(3 /* Enter */, 'Enter');\r\n define(4 /* Shift */, 'Shift');\r\n define(5 /* Ctrl */, 'Ctrl');\r\n define(6 /* Alt */, 'Alt');\r\n define(7 /* PauseBreak */, 'PauseBreak');\r\n define(8 /* CapsLock */, 'CapsLock');\r\n define(9 /* Escape */, 'Escape');\r\n define(10 /* Space */, 'Space');\r\n define(11 /* PageUp */, 'PageUp');\r\n define(12 /* PageDown */, 'PageDown');\r\n define(13 /* End */, 'End');\r\n define(14 /* Home */, 'Home');\r\n define(15 /* LeftArrow */, 'LeftArrow', 'Left');\r\n define(16 /* UpArrow */, 'UpArrow', 'Up');\r\n define(17 /* RightArrow */, 'RightArrow', 'Right');\r\n define(18 /* DownArrow */, 'DownArrow', 'Down');\r\n define(19 /* Insert */, 'Insert');\r\n define(20 /* Delete */, 'Delete');\r\n define(21 /* KEY_0 */, '0');\r\n define(22 /* KEY_1 */, '1');\r\n define(23 /* KEY_2 */, '2');\r\n define(24 /* KEY_3 */, '3');\r\n define(25 /* KEY_4 */, '4');\r\n define(26 /* KEY_5 */, '5');\r\n define(27 /* KEY_6 */, '6');\r\n define(28 /* KEY_7 */, '7');\r\n define(29 /* KEY_8 */, '8');\r\n define(30 /* KEY_9 */, '9');\r\n define(31 /* KEY_A */, 'A');\r\n define(32 /* KEY_B */, 'B');\r\n define(33 /* KEY_C */, 'C');\r\n define(34 /* KEY_D */, 'D');\r\n define(35 /* KEY_E */, 'E');\r\n define(36 /* KEY_F */, 'F');\r\n define(37 /* KEY_G */, 'G');\r\n define(38 /* KEY_H */, 'H');\r\n define(39 /* KEY_I */, 'I');\r\n define(40 /* KEY_J */, 'J');\r\n define(41 /* KEY_K */, 'K');\r\n define(42 /* KEY_L */, 'L');\r\n define(43 /* KEY_M */, 'M');\r\n define(44 /* KEY_N */, 'N');\r\n define(45 /* KEY_O */, 'O');\r\n define(46 /* KEY_P */, 'P');\r\n define(47 /* KEY_Q */, 'Q');\r\n define(48 /* KEY_R */, 'R');\r\n define(49 /* KEY_S */, 'S');\r\n define(50 /* KEY_T */, 'T');\r\n define(51 /* KEY_U */, 'U');\r\n define(52 /* KEY_V */, 'V');\r\n define(53 /* KEY_W */, 'W');\r\n define(54 /* KEY_X */, 'X');\r\n define(55 /* KEY_Y */, 'Y');\r\n define(56 /* KEY_Z */, 'Z');\r\n define(57 /* Meta */, 'Meta');\r\n define(58 /* ContextMenu */, 'ContextMenu');\r\n define(59 /* F1 */, 'F1');\r\n define(60 /* F2 */, 'F2');\r\n define(61 /* F3 */, 'F3');\r\n define(62 /* F4 */, 'F4');\r\n define(63 /* F5 */, 'F5');\r\n define(64 /* F6 */, 'F6');\r\n define(65 /* F7 */, 'F7');\r\n define(66 /* F8 */, 'F8');\r\n define(67 /* F9 */, 'F9');\r\n define(68 /* F10 */, 'F10');\r\n define(69 /* F11 */, 'F11');\r\n define(70 /* F12 */, 'F12');\r\n define(71 /* F13 */, 'F13');\r\n define(72 /* F14 */, 'F14');\r\n define(73 /* F15 */, 'F15');\r\n define(74 /* F16 */, 'F16');\r\n define(75 /* F17 */, 'F17');\r\n define(76 /* F18 */, 'F18');\r\n define(77 /* F19 */, 'F19');\r\n define(78 /* NumLock */, 'NumLock');\r\n define(79 /* ScrollLock */, 'ScrollLock');\r\n define(80 /* US_SEMICOLON */, ';', ';', 'OEM_1');\r\n define(81 /* US_EQUAL */, '=', '=', 'OEM_PLUS');\r\n define(82 /* US_COMMA */, ',', ',', 'OEM_COMMA');\r\n define(83 /* US_MINUS */, '-', '-', 'OEM_MINUS');\r\n define(84 /* US_DOT */, '.', '.', 'OEM_PERIOD');\r\n define(85 /* US_SLASH */, '/', '/', 'OEM_2');\r\n define(86 /* US_BACKTICK */, '`', '`', 'OEM_3');\r\n define(110 /* ABNT_C1 */, 'ABNT_C1');\r\n define(111 /* ABNT_C2 */, 'ABNT_C2');\r\n define(87 /* US_OPEN_SQUARE_BRACKET */, '[', '[', 'OEM_4');\r\n define(88 /* US_BACKSLASH */, '\\\\', '\\\\', 'OEM_5');\r\n define(89 /* US_CLOSE_SQUARE_BRACKET */, ']', ']', 'OEM_6');\r\n define(90 /* US_QUOTE */, '\\'', '\\'', 'OEM_7');\r\n define(91 /* OEM_8 */, 'OEM_8');\r\n define(92 /* OEM_102 */, 'OEM_102');\r\n define(93 /* NUMPAD_0 */, 'NumPad0');\r\n define(94 /* NUMPAD_1 */, 'NumPad1');\r\n define(95 /* NUMPAD_2 */, 'NumPad2');\r\n define(96 /* NUMPAD_3 */, 'NumPad3');\r\n define(97 /* NUMPAD_4 */, 'NumPad4');\r\n define(98 /* NUMPAD_5 */, 'NumPad5');\r\n define(99 /* NUMPAD_6 */, 'NumPad6');\r\n define(100 /* NUMPAD_7 */, 'NumPad7');\r\n define(101 /* NUMPAD_8 */, 'NumPad8');\r\n define(102 /* NUMPAD_9 */, 'NumPad9');\r\n define(103 /* NUMPAD_MULTIPLY */, 'NumPad_Multiply');\r\n define(104 /* NUMPAD_ADD */, 'NumPad_Add');\r\n define(105 /* NUMPAD_SEPARATOR */, 'NumPad_Separator');\r\n define(106 /* NUMPAD_SUBTRACT */, 'NumPad_Subtract');\r\n define(107 /* NUMPAD_DECIMAL */, 'NumPad_Decimal');\r\n define(108 /* NUMPAD_DIVIDE */, 'NumPad_Divide');\r\n})();\r\nvar KeyCodeUtils;\r\n(function (KeyCodeUtils) {\r\n function toString(keyCode) {\r\n return uiMap.keyCodeToStr(keyCode);\r\n }\r\n KeyCodeUtils.toString = toString;\r\n function fromString(key) {\r\n return uiMap.strToKeyCode(key);\r\n }\r\n KeyCodeUtils.fromString = fromString;\r\n function toUserSettingsUS(keyCode) {\r\n return userSettingsUSMap.keyCodeToStr(keyCode);\r\n }\r\n KeyCodeUtils.toUserSettingsUS = toUserSettingsUS;\r\n function toUserSettingsGeneral(keyCode) {\r\n return userSettingsGeneralMap.keyCodeToStr(keyCode);\r\n }\r\n KeyCodeUtils.toUserSettingsGeneral = toUserSettingsGeneral;\r\n function fromUserSettings(key) {\r\n return userSettingsUSMap.strToKeyCode(key) || userSettingsGeneralMap.strToKeyCode(key);\r\n }\r\n KeyCodeUtils.fromUserSettings = fromUserSettings;\r\n})(KeyCodeUtils || (KeyCodeUtils = {}));\r\nfunction KeyChord(firstPart, secondPart) {\r\n const chordPart = ((secondPart & 0x0000FFFF) << 16) >>> 0;\r\n return (firstPart | chordPart) >>> 0;\r\n}\r\nfunction createKeybinding(keybinding, OS) {\r\n if (keybinding === 0) {\r\n return null;\r\n }\r\n const firstPart = (keybinding & 0x0000FFFF) >>> 0;\r\n const chordPart = (keybinding & 0xFFFF0000) >>> 16;\r\n if (chordPart !== 0) {\r\n return new ChordKeybinding([\r\n createSimpleKeybinding(firstPart, OS),\r\n createSimpleKeybinding(chordPart, OS)\r\n ]);\r\n }\r\n return new ChordKeybinding([createSimpleKeybinding(firstPart, OS)]);\r\n}\r\nfunction createSimpleKeybinding(keybinding, OS) {\r\n const ctrlCmd = (keybinding & 2048 /* CtrlCmd */ ? true : false);\r\n const winCtrl = (keybinding & 256 /* WinCtrl */ ? true : false);\r\n const ctrlKey = (OS === 2 /* Macintosh */ ? winCtrl : ctrlCmd);\r\n const shiftKey = (keybinding & 1024 /* Shift */ ? true : false);\r\n const altKey = (keybinding & 512 /* Alt */ ? true : false);\r\n const metaKey = (OS === 2 /* Macintosh */ ? ctrlCmd : winCtrl);\r\n const keyCode = (keybinding & 255 /* KeyCode */);\r\n return new SimpleKeybinding(ctrlKey, shiftKey, altKey, metaKey, keyCode);\r\n}\r\nclass SimpleKeybinding {\r\n constructor(ctrlKey, shiftKey, altKey, metaKey, keyCode) {\r\n this.ctrlKey = ctrlKey;\r\n this.shiftKey = shiftKey;\r\n this.altKey = altKey;\r\n this.metaKey = metaKey;\r\n this.keyCode = keyCode;\r\n }\r\n equals(other) {\r\n return (this.ctrlKey === other.ctrlKey\r\n && this.shiftKey === other.shiftKey\r\n && this.altKey === other.altKey\r\n && this.metaKey === other.metaKey\r\n && this.keyCode === other.keyCode);\r\n }\r\n isModifierKey() {\r\n return (this.keyCode === 0 /* Unknown */\r\n || this.keyCode === 5 /* Ctrl */\r\n || this.keyCode === 57 /* Meta */\r\n || this.keyCode === 6 /* Alt */\r\n || this.keyCode === 4 /* Shift */);\r\n }\r\n toChord() {\r\n return new ChordKeybinding([this]);\r\n }\r\n /**\r\n * Does this keybinding refer to the key code of a modifier and it also has the modifier flag?\r\n */\r\n isDuplicateModifierCase() {\r\n return ((this.ctrlKey && this.keyCode === 5 /* Ctrl */)\r\n || (this.shiftKey && this.keyCode === 4 /* Shift */)\r\n || (this.altKey && this.keyCode === 6 /* Alt */)\r\n || (this.metaKey && this.keyCode === 57 /* Meta */));\r\n }\r\n}\r\nclass ChordKeybinding {\r\n constructor(parts) {\r\n if (parts.length === 0) {\r\n throw (0,_errors_js__WEBPACK_IMPORTED_MODULE_0__.illegalArgument)(`parts`);\r\n }\r\n this.parts = parts;\r\n }\r\n}\r\nclass ResolvedKeybindingPart {\r\n constructor(ctrlKey, shiftKey, altKey, metaKey, kbLabel, kbAriaLabel) {\r\n this.ctrlKey = ctrlKey;\r\n this.shiftKey = shiftKey;\r\n this.altKey = altKey;\r\n this.metaKey = metaKey;\r\n this.keyLabel = kbLabel;\r\n this.keyAriaLabel = kbAriaLabel;\r\n }\r\n}\r\n/**\r\n * A resolved keybinding. Can be a simple keybinding or a chord keybinding.\r\n */\r\nclass ResolvedKeybinding {\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/base/common/keyCodes.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js": /*!********************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js ***! \********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"trackDisposable\": () => (/* binding */ trackDisposable),\n/* harmony export */ \"MultiDisposeError\": () => (/* binding */ MultiDisposeError),\n/* harmony export */ \"isDisposable\": () => (/* binding */ isDisposable),\n/* harmony export */ \"dispose\": () => (/* binding */ dispose),\n/* harmony export */ \"combinedDisposable\": () => (/* binding */ combinedDisposable),\n/* harmony export */ \"toDisposable\": () => (/* binding */ toDisposable),\n/* harmony export */ \"DisposableStore\": () => (/* binding */ DisposableStore),\n/* harmony export */ \"Disposable\": () => (/* binding */ Disposable),\n/* harmony export */ \"MutableDisposable\": () => (/* binding */ MutableDisposable),\n/* harmony export */ \"ImmortalReference\": () => (/* binding */ ImmortalReference)\n/* harmony export */ });\n/* harmony import */ var _iterator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./iterator.js */ \"./node_modules/monaco-editor/esm/vs/base/common/iterator.js\");\n\r\n/**\r\n * Enables logging of potentially leaked disposables.\r\n *\r\n * A disposable is considered leaked if it is not disposed or not registered as the child of\r\n * another disposable. This tracking is very simple an only works for classes that either\r\n * extend Disposable or use a DisposableStore. This means there are a lot of false positives.\r\n */\r\nconst TRACK_DISPOSABLES = false;\r\nlet disposableTracker = null;\r\nif (TRACK_DISPOSABLES) {\r\n const __is_disposable_tracked__ = '__is_disposable_tracked__';\r\n disposableTracker = new class {\r\n trackDisposable(x) {\r\n const stack = new Error('Potentially leaked disposable').stack;\r\n setTimeout(() => {\r\n if (!x[__is_disposable_tracked__]) {\r\n console.log(stack);\r\n }\r\n }, 3000);\r\n }\r\n markTracked(x) {\r\n if (x && x !== Disposable.None) {\r\n try {\r\n x[__is_disposable_tracked__] = true;\r\n }\r\n catch (_a) {\r\n // noop\r\n }\r\n }\r\n }\r\n };\r\n}\r\nfunction markTracked(x) {\r\n if (!disposableTracker) {\r\n return;\r\n }\r\n disposableTracker.markTracked(x);\r\n}\r\nfunction trackDisposable(x) {\r\n if (!disposableTracker) {\r\n return x;\r\n }\r\n disposableTracker.trackDisposable(x);\r\n return x;\r\n}\r\nclass MultiDisposeError extends Error {\r\n constructor(errors) {\r\n super(`Encountered errors while disposing of store. Errors: [${errors.join(', ')}]`);\r\n this.errors = errors;\r\n }\r\n}\r\nfunction isDisposable(thing) {\r\n return typeof thing.dispose === 'function' && thing.dispose.length === 0;\r\n}\r\nfunction dispose(arg) {\r\n if (_iterator_js__WEBPACK_IMPORTED_MODULE_0__.Iterable.is(arg)) {\r\n let errors = [];\r\n for (const d of arg) {\r\n if (d) {\r\n markTracked(d);\r\n try {\r\n d.dispose();\r\n }\r\n catch (e) {\r\n errors.push(e);\r\n }\r\n }\r\n }\r\n if (errors.length === 1) {\r\n throw errors[0];\r\n }\r\n else if (errors.length > 1) {\r\n throw new MultiDisposeError(errors);\r\n }\r\n return Array.isArray(arg) ? [] : arg;\r\n }\r\n else if (arg) {\r\n markTracked(arg);\r\n arg.dispose();\r\n return arg;\r\n }\r\n}\r\nfunction combinedDisposable(...disposables) {\r\n disposables.forEach(markTracked);\r\n return toDisposable(() => dispose(disposables));\r\n}\r\nfunction toDisposable(fn) {\r\n const self = trackDisposable({\r\n dispose: () => {\r\n markTracked(self);\r\n fn();\r\n }\r\n });\r\n return self;\r\n}\r\nclass DisposableStore {\r\n constructor() {\r\n this._toDispose = new Set();\r\n this._isDisposed = false;\r\n }\r\n /**\r\n * Dispose of all registered disposables and mark this object as disposed.\r\n *\r\n * Any future disposables added to this object will be disposed of on `add`.\r\n */\r\n dispose() {\r\n if (this._isDisposed) {\r\n return;\r\n }\r\n markTracked(this);\r\n this._isDisposed = true;\r\n this.clear();\r\n }\r\n /**\r\n * Dispose of all registered disposables but do not mark this object as disposed.\r\n */\r\n clear() {\r\n try {\r\n dispose(this._toDispose.values());\r\n }\r\n finally {\r\n this._toDispose.clear();\r\n }\r\n }\r\n add(t) {\r\n if (!t) {\r\n return t;\r\n }\r\n if (t === this) {\r\n throw new Error('Cannot register a disposable on itself!');\r\n }\r\n markTracked(t);\r\n if (this._isDisposed) {\r\n if (!DisposableStore.DISABLE_DISPOSED_WARNING) {\r\n console.warn(new Error('Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!').stack);\r\n }\r\n }\r\n else {\r\n this._toDispose.add(t);\r\n }\r\n return t;\r\n }\r\n}\r\nDisposableStore.DISABLE_DISPOSED_WARNING = false;\r\nclass Disposable {\r\n constructor() {\r\n this._store = new DisposableStore();\r\n trackDisposable(this);\r\n }\r\n dispose() {\r\n markTracked(this);\r\n this._store.dispose();\r\n }\r\n _register(t) {\r\n if (t === this) {\r\n throw new Error('Cannot register a disposable on itself!');\r\n }\r\n return this._store.add(t);\r\n }\r\n}\r\nDisposable.None = Object.freeze({ dispose() { } });\r\n/**\r\n * Manages the lifecycle of a disposable value that may be changed.\r\n *\r\n * This ensures that when the disposable value is changed, the previously held disposable is disposed of. You can\r\n * also register a `MutableDisposable` on a `Disposable` to ensure it is automatically cleaned up.\r\n */\r\nclass MutableDisposable {\r\n constructor() {\r\n this._isDisposed = false;\r\n trackDisposable(this);\r\n }\r\n get value() {\r\n return this._isDisposed ? undefined : this._value;\r\n }\r\n set value(value) {\r\n var _a;\r\n if (this._isDisposed || value === this._value) {\r\n return;\r\n }\r\n (_a = this._value) === null || _a === void 0 ? void 0 : _a.dispose();\r\n if (value) {\r\n markTracked(value);\r\n }\r\n this._value = value;\r\n }\r\n clear() {\r\n this.value = undefined;\r\n }\r\n dispose() {\r\n var _a;\r\n this._isDisposed = true;\r\n markTracked(this);\r\n (_a = this._value) === null || _a === void 0 ? void 0 : _a.dispose();\r\n this._value = undefined;\r\n }\r\n}\r\nclass ImmortalReference {\r\n constructor(object) {\r\n this.object = object;\r\n }\r\n dispose() { }\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/base/common/linkedList.js": /*!*********************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/base/common/linkedList.js ***! \*********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"LinkedList\": () => (/* binding */ LinkedList)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nclass Node {\r\n constructor(element) {\r\n this.element = element;\r\n this.next = Node.Undefined;\r\n this.prev = Node.Undefined;\r\n }\r\n}\r\nNode.Undefined = new Node(undefined);\r\nclass LinkedList {\r\n constructor() {\r\n this._first = Node.Undefined;\r\n this._last = Node.Undefined;\r\n this._size = 0;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n isEmpty() {\r\n return this._first === Node.Undefined;\r\n }\r\n clear() {\r\n this._first = Node.Undefined;\r\n this._last = Node.Undefined;\r\n this._size = 0;\r\n }\r\n unshift(element) {\r\n return this._insert(element, false);\r\n }\r\n push(element) {\r\n return this._insert(element, true);\r\n }\r\n _insert(element, atTheEnd) {\r\n const newNode = new Node(element);\r\n if (this._first === Node.Undefined) {\r\n this._first = newNode;\r\n this._last = newNode;\r\n }\r\n else if (atTheEnd) {\r\n // push\r\n const oldLast = this._last;\r\n this._last = newNode;\r\n newNode.prev = oldLast;\r\n oldLast.next = newNode;\r\n }\r\n else {\r\n // unshift\r\n const oldFirst = this._first;\r\n this._first = newNode;\r\n newNode.next = oldFirst;\r\n oldFirst.prev = newNode;\r\n }\r\n this._size += 1;\r\n let didRemove = false;\r\n return () => {\r\n if (!didRemove) {\r\n didRemove = true;\r\n this._remove(newNode);\r\n }\r\n };\r\n }\r\n shift() {\r\n if (this._first === Node.Undefined) {\r\n return undefined;\r\n }\r\n else {\r\n const res = this._first.element;\r\n this._remove(this._first);\r\n return res;\r\n }\r\n }\r\n pop() {\r\n if (this._last === Node.Undefined) {\r\n return undefined;\r\n }\r\n else {\r\n const res = this._last.element;\r\n this._remove(this._last);\r\n return res;\r\n }\r\n }\r\n _remove(node) {\r\n if (node.prev !== Node.Undefined && node.next !== Node.Undefined) {\r\n // middle\r\n const anchor = node.prev;\r\n anchor.next = node.next;\r\n node.next.prev = anchor;\r\n }\r\n else if (node.prev === Node.Undefined && node.next === Node.Undefined) {\r\n // only node\r\n this._first = Node.Undefined;\r\n this._last = Node.Undefined;\r\n }\r\n else if (node.next === Node.Undefined) {\r\n // last\r\n this._last = this._last.prev;\r\n this._last.next = Node.Undefined;\r\n }\r\n else if (node.prev === Node.Undefined) {\r\n // first\r\n this._first = this._first.next;\r\n this._first.prev = Node.Undefined;\r\n }\r\n // done\r\n this._size -= 1;\r\n }\r\n *[Symbol.iterator]() {\r\n let node = this._first;\r\n while (node !== Node.Undefined) {\r\n yield node.element;\r\n node = node.next;\r\n }\r\n }\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/base/common/linkedList.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/base/common/path.js": /*!***************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/base/common/path.js ***! \***************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"win32\": () => (/* binding */ win32),\n/* harmony export */ \"posix\": () => (/* binding */ posix),\n/* harmony export */ \"normalize\": () => (/* binding */ normalize),\n/* harmony export */ \"resolve\": () => (/* binding */ resolve),\n/* harmony export */ \"relative\": () => (/* binding */ relative),\n/* harmony export */ \"dirname\": () => (/* binding */ dirname),\n/* harmony export */ \"basename\": () => (/* binding */ basename),\n/* harmony export */ \"extname\": () => (/* binding */ extname),\n/* harmony export */ \"sep\": () => (/* binding */ sep)\n/* harmony export */ });\n/* harmony import */ var _process_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./process.js */ \"./node_modules/monaco-editor/esm/vs/base/common/process.js\");\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n// NOTE: VSCode's copy of nodejs path library to be usable in common (non-node) namespace\r\n// Copied from: https://github.com/nodejs/node/blob/v12.8.1/lib/path.js\r\n/**\r\n * Copyright Joyent, Inc. and other Node contributors.\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a\r\n * copy of this software and associated documentation files (the\r\n * \"Software\"), to deal in the Software without restriction, including\r\n * without limitation the rights to use, copy, modify, merge, publish,\r\n * distribute, sublicense, and/or sell copies of the Software, and to permit\r\n * persons to whom the Software is furnished to do so, subject to the\r\n * following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included\r\n * in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\r\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\r\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\r\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\r\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\r\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n */\r\n\r\nconst CHAR_UPPERCASE_A = 65; /* A */\r\nconst CHAR_LOWERCASE_A = 97; /* a */\r\nconst CHAR_UPPERCASE_Z = 90; /* Z */\r\nconst CHAR_LOWERCASE_Z = 122; /* z */\r\nconst CHAR_DOT = 46; /* . */\r\nconst CHAR_FORWARD_SLASH = 47; /* / */\r\nconst CHAR_BACKWARD_SLASH = 92; /* \\ */\r\nconst CHAR_COLON = 58; /* : */\r\nconst CHAR_QUESTION_MARK = 63; /* ? */\r\nclass ErrorInvalidArgType extends Error {\r\n constructor(name, expected, actual) {\r\n // determiner: 'must be' or 'must not be'\r\n let determiner;\r\n if (typeof expected === 'string' && expected.indexOf('not ') === 0) {\r\n determiner = 'must not be';\r\n expected = expected.replace(/^not /, '');\r\n }\r\n else {\r\n determiner = 'must be';\r\n }\r\n const type = name.indexOf('.') !== -1 ? 'property' : 'argument';\r\n let msg = `The \"${name}\" ${type} ${determiner} of type ${expected}`;\r\n msg += `. Received type ${typeof actual}`;\r\n super(msg);\r\n this.code = 'ERR_INVALID_ARG_TYPE';\r\n }\r\n}\r\nfunction validateString(value, name) {\r\n if (typeof value !== 'string') {\r\n throw new ErrorInvalidArgType(name, 'string', value);\r\n }\r\n}\r\nfunction isPathSeparator(code) {\r\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\r\n}\r\nfunction isPosixPathSeparator(code) {\r\n return code === CHAR_FORWARD_SLASH;\r\n}\r\nfunction isWindowsDeviceRoot(code) {\r\n return code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z ||\r\n code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z;\r\n}\r\n// Resolves . and .. elements in a path with directory names\r\nfunction normalizeString(path, allowAboveRoot, separator, isPathSeparator) {\r\n let res = '';\r\n let lastSegmentLength = 0;\r\n let lastSlash = -1;\r\n let dots = 0;\r\n let code = 0;\r\n for (let i = 0; i <= path.length; ++i) {\r\n if (i < path.length) {\r\n code = path.charCodeAt(i);\r\n }\r\n else if (isPathSeparator(code)) {\r\n break;\r\n }\r\n else {\r\n code = CHAR_FORWARD_SLASH;\r\n }\r\n if (isPathSeparator(code)) {\r\n if (lastSlash === i - 1 || dots === 1) {\r\n // NOOP\r\n }\r\n else if (dots === 2) {\r\n if (res.length < 2 || lastSegmentLength !== 2 ||\r\n res.charCodeAt(res.length - 1) !== CHAR_DOT ||\r\n res.charCodeAt(res.length - 2) !== CHAR_DOT) {\r\n if (res.length > 2) {\r\n const lastSlashIndex = res.lastIndexOf(separator);\r\n if (lastSlashIndex === -1) {\r\n res = '';\r\n lastSegmentLength = 0;\r\n }\r\n else {\r\n res = res.slice(0, lastSlashIndex);\r\n lastSegmentLength = res.length - 1 - res.lastIndexOf(separator);\r\n }\r\n lastSlash = i;\r\n dots = 0;\r\n continue;\r\n }\r\n else if (res.length !== 0) {\r\n res = '';\r\n lastSegmentLength = 0;\r\n lastSlash = i;\r\n dots = 0;\r\n continue;\r\n }\r\n }\r\n if (allowAboveRoot) {\r\n res += res.length > 0 ? `${separator}..` : '..';\r\n lastSegmentLength = 2;\r\n }\r\n }\r\n else {\r\n if (res.length > 0) {\r\n res += `${separator}${path.slice(lastSlash + 1, i)}`;\r\n }\r\n else {\r\n res = path.slice(lastSlash + 1, i);\r\n }\r\n lastSegmentLength = i - lastSlash - 1;\r\n }\r\n lastSlash = i;\r\n dots = 0;\r\n }\r\n else if (code === CHAR_DOT && dots !== -1) {\r\n ++dots;\r\n }\r\n else {\r\n dots = -1;\r\n }\r\n }\r\n return res;\r\n}\r\nfunction _format(sep, pathObject) {\r\n if (pathObject === null || typeof pathObject !== 'object') {\r\n throw new ErrorInvalidArgType('pathObject', 'Object', pathObject);\r\n }\r\n const dir = pathObject.dir || pathObject.root;\r\n const base = pathObject.base ||\r\n `${pathObject.name || ''}${pathObject.ext || ''}`;\r\n if (!dir) {\r\n return base;\r\n }\r\n return dir === pathObject.root ? `${dir}${base}` : `${dir}${sep}${base}`;\r\n}\r\nconst win32 = {\r\n // path.resolve([from ...], to)\r\n resolve(...pathSegments) {\r\n let resolvedDevice = '';\r\n let resolvedTail = '';\r\n let resolvedAbsolute = false;\r\n for (let i = pathSegments.length - 1; i >= -1; i--) {\r\n let path;\r\n if (i >= 0) {\r\n path = pathSegments[i];\r\n validateString(path, 'path');\r\n // Skip empty entries\r\n if (path.length === 0) {\r\n continue;\r\n }\r\n }\r\n else if (resolvedDevice.length === 0) {\r\n path = _process_js__WEBPACK_IMPORTED_MODULE_0__.cwd();\r\n }\r\n else {\r\n // Windows has the concept of drive-specific current working\r\n // directories. If we've resolved a drive letter but not yet an\r\n // absolute path, get cwd for that drive, or the process cwd if\r\n // the drive cwd is not available. We're sure the device is not\r\n // a UNC path at this points, because UNC paths are always absolute.\r\n path = _process_js__WEBPACK_IMPORTED_MODULE_0__.env[`=${resolvedDevice}`] || _process_js__WEBPACK_IMPORTED_MODULE_0__.cwd();\r\n // Verify that a cwd was found and that it actually points\r\n // to our drive. If not, default to the drive's root.\r\n if (path === undefined ||\r\n path.slice(0, 2).toLowerCase() !== resolvedDevice.toLowerCase() &&\r\n path.charCodeAt(2) === CHAR_BACKWARD_SLASH) {\r\n path = `${resolvedDevice}\\\\`;\r\n }\r\n }\r\n const len = path.length;\r\n let rootEnd = 0;\r\n let device = '';\r\n let isAbsolute = false;\r\n const code = path.charCodeAt(0);\r\n // Try to match a root\r\n if (len === 1) {\r\n if (isPathSeparator(code)) {\r\n // `path` contains just a path separator\r\n rootEnd = 1;\r\n isAbsolute = true;\r\n }\r\n }\r\n else if (isPathSeparator(code)) {\r\n // Possible UNC root\r\n // If we started with a separator, we know we at least have an\r\n // absolute path of some kind (UNC or otherwise)\r\n isAbsolute = true;\r\n if (isPathSeparator(path.charCodeAt(1))) {\r\n // Matched double path separator at beginning\r\n let j = 2;\r\n let last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n const firstPart = path.slice(last, j);\r\n // Matched!\r\n last = j;\r\n // Match 1 or more path separators\r\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j === len || j !== last) {\r\n // We matched a UNC root\r\n device = `\\\\\\\\${firstPart}\\\\${path.slice(last, j)}`;\r\n rootEnd = j;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n rootEnd = 1;\r\n }\r\n }\r\n else if (isWindowsDeviceRoot(code) &&\r\n path.charCodeAt(1) === CHAR_COLON) {\r\n // Possible device root\r\n device = path.slice(0, 2);\r\n rootEnd = 2;\r\n if (len > 2 && isPathSeparator(path.charCodeAt(2))) {\r\n // Treat separator following drive name as an absolute path\r\n // indicator\r\n isAbsolute = true;\r\n rootEnd = 3;\r\n }\r\n }\r\n if (device.length > 0) {\r\n if (resolvedDevice.length > 0) {\r\n if (device.toLowerCase() !== resolvedDevice.toLowerCase()) {\r\n // This path points to another device so it is not applicable\r\n continue;\r\n }\r\n }\r\n else {\r\n resolvedDevice = device;\r\n }\r\n }\r\n if (resolvedAbsolute) {\r\n if (resolvedDevice.length > 0) {\r\n break;\r\n }\r\n }\r\n else {\r\n resolvedTail = `${path.slice(rootEnd)}\\\\${resolvedTail}`;\r\n resolvedAbsolute = isAbsolute;\r\n if (isAbsolute && resolvedDevice.length > 0) {\r\n break;\r\n }\r\n }\r\n }\r\n // At this point the path should be resolved to a full absolute path,\r\n // but handle relative paths to be safe (might happen when process.cwd()\r\n // fails)\r\n // Normalize the tail path\r\n resolvedTail = normalizeString(resolvedTail, !resolvedAbsolute, '\\\\', isPathSeparator);\r\n return resolvedAbsolute ?\r\n `${resolvedDevice}\\\\${resolvedTail}` :\r\n `${resolvedDevice}${resolvedTail}` || '.';\r\n },\r\n normalize(path) {\r\n validateString(path, 'path');\r\n const len = path.length;\r\n if (len === 0) {\r\n return '.';\r\n }\r\n let rootEnd = 0;\r\n let device;\r\n let isAbsolute = false;\r\n const code = path.charCodeAt(0);\r\n // Try to match a root\r\n if (len === 1) {\r\n // `path` contains just a single char, exit early to avoid\r\n // unnecessary work\r\n return isPosixPathSeparator(code) ? '\\\\' : path;\r\n }\r\n if (isPathSeparator(code)) {\r\n // Possible UNC root\r\n // If we started with a separator, we know we at least have an absolute\r\n // path of some kind (UNC or otherwise)\r\n isAbsolute = true;\r\n if (isPathSeparator(path.charCodeAt(1))) {\r\n // Matched double path separator at beginning\r\n let j = 2;\r\n let last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n const firstPart = path.slice(last, j);\r\n // Matched!\r\n last = j;\r\n // Match 1 or more path separators\r\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j === len) {\r\n // We matched a UNC root only\r\n // Return the normalized version of the UNC root since there\r\n // is nothing left to process\r\n return `\\\\\\\\${firstPart}\\\\${path.slice(last)}\\\\`;\r\n }\r\n if (j !== last) {\r\n // We matched a UNC root with leftovers\r\n device = `\\\\\\\\${firstPart}\\\\${path.slice(last, j)}`;\r\n rootEnd = j;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n rootEnd = 1;\r\n }\r\n }\r\n else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\r\n // Possible device root\r\n device = path.slice(0, 2);\r\n rootEnd = 2;\r\n if (len > 2 && isPathSeparator(path.charCodeAt(2))) {\r\n // Treat separator following drive name as an absolute path\r\n // indicator\r\n isAbsolute = true;\r\n rootEnd = 3;\r\n }\r\n }\r\n let tail = rootEnd < len ?\r\n normalizeString(path.slice(rootEnd), !isAbsolute, '\\\\', isPathSeparator) :\r\n '';\r\n if (tail.length === 0 && !isAbsolute) {\r\n tail = '.';\r\n }\r\n if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) {\r\n tail += '\\\\';\r\n }\r\n if (device === undefined) {\r\n return isAbsolute ? `\\\\${tail}` : tail;\r\n }\r\n return isAbsolute ? `${device}\\\\${tail}` : `${device}${tail}`;\r\n },\r\n isAbsolute(path) {\r\n validateString(path, 'path');\r\n const len = path.length;\r\n if (len === 0) {\r\n return false;\r\n }\r\n const code = path.charCodeAt(0);\r\n return isPathSeparator(code) ||\r\n // Possible device root\r\n len > 2 &&\r\n isWindowsDeviceRoot(code) &&\r\n path.charCodeAt(1) === CHAR_COLON &&\r\n isPathSeparator(path.charCodeAt(2));\r\n },\r\n join(...paths) {\r\n if (paths.length === 0) {\r\n return '.';\r\n }\r\n let joined;\r\n let firstPart;\r\n for (let i = 0; i < paths.length; ++i) {\r\n const arg = paths[i];\r\n validateString(arg, 'path');\r\n if (arg.length > 0) {\r\n if (joined === undefined) {\r\n joined = firstPart = arg;\r\n }\r\n else {\r\n joined += `\\\\${arg}`;\r\n }\r\n }\r\n }\r\n if (joined === undefined) {\r\n return '.';\r\n }\r\n // Make sure that the joined path doesn't start with two slashes, because\r\n // normalize() will mistake it for an UNC path then.\r\n //\r\n // This step is skipped when it is very clear that the user actually\r\n // intended to point at an UNC path. This is assumed when the first\r\n // non-empty string arguments starts with exactly two slashes followed by\r\n // at least one more non-slash character.\r\n //\r\n // Note that for normalize() to treat a path as an UNC path it needs to\r\n // have at least 2 components, so we don't filter for that here.\r\n // This means that the user can use join to construct UNC paths from\r\n // a server name and a share name; for example:\r\n // path.join('//server', 'share') -> '\\\\\\\\server\\\\share\\\\')\r\n let needsReplace = true;\r\n let slashCount = 0;\r\n if (typeof firstPart === 'string' && isPathSeparator(firstPart.charCodeAt(0))) {\r\n ++slashCount;\r\n const firstLen = firstPart.length;\r\n if (firstLen > 1 && isPathSeparator(firstPart.charCodeAt(1))) {\r\n ++slashCount;\r\n if (firstLen > 2) {\r\n if (isPathSeparator(firstPart.charCodeAt(2))) {\r\n ++slashCount;\r\n }\r\n else {\r\n // We matched a UNC path in the first part\r\n needsReplace = false;\r\n }\r\n }\r\n }\r\n }\r\n if (needsReplace) {\r\n // Find any more consecutive slashes we need to replace\r\n while (slashCount < joined.length &&\r\n isPathSeparator(joined.charCodeAt(slashCount))) {\r\n slashCount++;\r\n }\r\n // Replace the slashes if needed\r\n if (slashCount >= 2) {\r\n joined = `\\\\${joined.slice(slashCount)}`;\r\n }\r\n }\r\n return win32.normalize(joined);\r\n },\r\n // It will solve the relative path from `from` to `to`, for instance:\r\n // from = 'C:\\\\orandea\\\\test\\\\aaa'\r\n // to = 'C:\\\\orandea\\\\impl\\\\bbb'\r\n // The output of the function should be: '..\\\\..\\\\impl\\\\bbb'\r\n relative(from, to) {\r\n validateString(from, 'from');\r\n validateString(to, 'to');\r\n if (from === to) {\r\n return '';\r\n }\r\n const fromOrig = win32.resolve(from);\r\n const toOrig = win32.resolve(to);\r\n if (fromOrig === toOrig) {\r\n return '';\r\n }\r\n from = fromOrig.toLowerCase();\r\n to = toOrig.toLowerCase();\r\n if (from === to) {\r\n return '';\r\n }\r\n // Trim any leading backslashes\r\n let fromStart = 0;\r\n while (fromStart < from.length &&\r\n from.charCodeAt(fromStart) === CHAR_BACKWARD_SLASH) {\r\n fromStart++;\r\n }\r\n // Trim trailing backslashes (applicable to UNC paths only)\r\n let fromEnd = from.length;\r\n while (fromEnd - 1 > fromStart &&\r\n from.charCodeAt(fromEnd - 1) === CHAR_BACKWARD_SLASH) {\r\n fromEnd--;\r\n }\r\n const fromLen = fromEnd - fromStart;\r\n // Trim any leading backslashes\r\n let toStart = 0;\r\n while (toStart < to.length &&\r\n to.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) {\r\n toStart++;\r\n }\r\n // Trim trailing backslashes (applicable to UNC paths only)\r\n let toEnd = to.length;\r\n while (toEnd - 1 > toStart &&\r\n to.charCodeAt(toEnd - 1) === CHAR_BACKWARD_SLASH) {\r\n toEnd--;\r\n }\r\n const toLen = toEnd - toStart;\r\n // Compare paths to find the longest common path from root\r\n const length = fromLen < toLen ? fromLen : toLen;\r\n let lastCommonSep = -1;\r\n let i = 0;\r\n for (; i < length; i++) {\r\n const fromCode = from.charCodeAt(fromStart + i);\r\n if (fromCode !== to.charCodeAt(toStart + i)) {\r\n break;\r\n }\r\n else if (fromCode === CHAR_BACKWARD_SLASH) {\r\n lastCommonSep = i;\r\n }\r\n }\r\n // We found a mismatch before the first common path separator was seen, so\r\n // return the original `to`.\r\n if (i !== length) {\r\n if (lastCommonSep === -1) {\r\n return toOrig;\r\n }\r\n }\r\n else {\r\n if (toLen > length) {\r\n if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) {\r\n // We get here if `from` is the exact base path for `to`.\r\n // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\foo\\\\bar\\\\baz'\r\n return toOrig.slice(toStart + i + 1);\r\n }\r\n if (i === 2) {\r\n // We get here if `from` is the device root.\r\n // For example: from='C:\\\\'; to='C:\\\\foo'\r\n return toOrig.slice(toStart + i);\r\n }\r\n }\r\n if (fromLen > length) {\r\n if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) {\r\n // We get here if `to` is the exact base path for `from`.\r\n // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\foo'\r\n lastCommonSep = i;\r\n }\r\n else if (i === 2) {\r\n // We get here if `to` is the device root.\r\n // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\'\r\n lastCommonSep = 3;\r\n }\r\n }\r\n if (lastCommonSep === -1) {\r\n lastCommonSep = 0;\r\n }\r\n }\r\n let out = '';\r\n // Generate the relative path based on the path difference between `to` and\r\n // `from`\r\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\r\n if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) {\r\n out += out.length === 0 ? '..' : '\\\\..';\r\n }\r\n }\r\n toStart += lastCommonSep;\r\n // Lastly, append the rest of the destination (`to`) path that comes after\r\n // the common path parts\r\n if (out.length > 0) {\r\n return `${out}${toOrig.slice(toStart, toEnd)}`;\r\n }\r\n if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) {\r\n ++toStart;\r\n }\r\n return toOrig.slice(toStart, toEnd);\r\n },\r\n toNamespacedPath(path) {\r\n // Note: this will *probably* throw somewhere.\r\n if (typeof path !== 'string') {\r\n return path;\r\n }\r\n if (path.length === 0) {\r\n return '';\r\n }\r\n const resolvedPath = win32.resolve(path);\r\n if (resolvedPath.length <= 2) {\r\n return path;\r\n }\r\n if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) {\r\n // Possible UNC root\r\n if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) {\r\n const code = resolvedPath.charCodeAt(2);\r\n if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) {\r\n // Matched non-long UNC root, convert the path to a long UNC path\r\n return `\\\\\\\\?\\\\UNC\\\\${resolvedPath.slice(2)}`;\r\n }\r\n }\r\n }\r\n else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0)) &&\r\n resolvedPath.charCodeAt(1) === CHAR_COLON &&\r\n resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH) {\r\n // Matched device root, convert the path to a long UNC path\r\n return `\\\\\\\\?\\\\${resolvedPath}`;\r\n }\r\n return path;\r\n },\r\n dirname(path) {\r\n validateString(path, 'path');\r\n const len = path.length;\r\n if (len === 0) {\r\n return '.';\r\n }\r\n let rootEnd = -1;\r\n let offset = 0;\r\n const code = path.charCodeAt(0);\r\n if (len === 1) {\r\n // `path` contains just a path separator, exit early to avoid\r\n // unnecessary work or a dot.\r\n return isPathSeparator(code) ? path : '.';\r\n }\r\n // Try to match a root\r\n if (isPathSeparator(code)) {\r\n // Possible UNC root\r\n rootEnd = offset = 1;\r\n if (isPathSeparator(path.charCodeAt(1))) {\r\n // Matched double path separator at beginning\r\n let j = 2;\r\n let last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more path separators\r\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j === len) {\r\n // We matched a UNC root only\r\n return path;\r\n }\r\n if (j !== last) {\r\n // We matched a UNC root with leftovers\r\n // Offset by 1 to include the separator after the UNC root to\r\n // treat it as a \"normal root\" on top of a (UNC) root\r\n rootEnd = offset = j + 1;\r\n }\r\n }\r\n }\r\n }\r\n // Possible device root\r\n }\r\n else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\r\n rootEnd = len > 2 && isPathSeparator(path.charCodeAt(2)) ? 3 : 2;\r\n offset = rootEnd;\r\n }\r\n let end = -1;\r\n let matchedSlash = true;\r\n for (let i = len - 1; i >= offset; --i) {\r\n if (isPathSeparator(path.charCodeAt(i))) {\r\n if (!matchedSlash) {\r\n end = i;\r\n break;\r\n }\r\n }\r\n else {\r\n // We saw the first non-path separator\r\n matchedSlash = false;\r\n }\r\n }\r\n if (end === -1) {\r\n if (rootEnd === -1) {\r\n return '.';\r\n }\r\n end = rootEnd;\r\n }\r\n return path.slice(0, end);\r\n },\r\n basename(path, ext) {\r\n if (ext !== undefined) {\r\n validateString(ext, 'ext');\r\n }\r\n validateString(path, 'path');\r\n let start = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n let i;\r\n // Check for a drive letter prefix so as not to mistake the following\r\n // path separator as an extra separator at the end of the path that can be\r\n // disregarded\r\n if (path.length >= 2 &&\r\n isWindowsDeviceRoot(path.charCodeAt(0)) &&\r\n path.charCodeAt(1) === CHAR_COLON) {\r\n start = 2;\r\n }\r\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\r\n if (ext === path) {\r\n return '';\r\n }\r\n let extIdx = ext.length - 1;\r\n let firstNonSlashEnd = -1;\r\n for (i = path.length - 1; i >= start; --i) {\r\n const code = path.charCodeAt(i);\r\n if (isPathSeparator(code)) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n start = i + 1;\r\n break;\r\n }\r\n }\r\n else {\r\n if (firstNonSlashEnd === -1) {\r\n // We saw the first non-path separator, remember this index in case\r\n // we need it if the extension ends up not matching\r\n matchedSlash = false;\r\n firstNonSlashEnd = i + 1;\r\n }\r\n if (extIdx >= 0) {\r\n // Try to match the explicit extension\r\n if (code === ext.charCodeAt(extIdx)) {\r\n if (--extIdx === -1) {\r\n // We matched the extension, so mark this as the end of our path\r\n // component\r\n end = i;\r\n }\r\n }\r\n else {\r\n // Extension does not match, so our result is the entire path\r\n // component\r\n extIdx = -1;\r\n end = firstNonSlashEnd;\r\n }\r\n }\r\n }\r\n }\r\n if (start === end) {\r\n end = firstNonSlashEnd;\r\n }\r\n else if (end === -1) {\r\n end = path.length;\r\n }\r\n return path.slice(start, end);\r\n }\r\n for (i = path.length - 1; i >= start; --i) {\r\n if (isPathSeparator(path.charCodeAt(i))) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n start = i + 1;\r\n break;\r\n }\r\n }\r\n else if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // path component\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n }\r\n if (end === -1) {\r\n return '';\r\n }\r\n return path.slice(start, end);\r\n },\r\n extname(path) {\r\n validateString(path, 'path');\r\n let start = 0;\r\n let startDot = -1;\r\n let startPart = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n // Track the state of characters (if any) we see before our first dot and\r\n // after any path separator we find\r\n let preDotState = 0;\r\n // Check for a drive letter prefix so as not to mistake the following\r\n // path separator as an extra separator at the end of the path that can be\r\n // disregarded\r\n if (path.length >= 2 &&\r\n path.charCodeAt(1) === CHAR_COLON &&\r\n isWindowsDeviceRoot(path.charCodeAt(0))) {\r\n start = startPart = 2;\r\n }\r\n for (let i = path.length - 1; i >= start; --i) {\r\n const code = path.charCodeAt(i);\r\n if (isPathSeparator(code)) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n startPart = i + 1;\r\n break;\r\n }\r\n continue;\r\n }\r\n if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // extension\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n if (code === CHAR_DOT) {\r\n // If this is our first dot, mark it as the start of our extension\r\n if (startDot === -1) {\r\n startDot = i;\r\n }\r\n else if (preDotState !== 1) {\r\n preDotState = 1;\r\n }\r\n }\r\n else if (startDot !== -1) {\r\n // We saw a non-dot and non-path separator before our dot, so we should\r\n // have a good chance at having a non-empty extension\r\n preDotState = -1;\r\n }\r\n }\r\n if (startDot === -1 ||\r\n end === -1 ||\r\n // We saw a non-dot character immediately before the dot\r\n preDotState === 0 ||\r\n // The (right-most) trimmed path component is exactly '..'\r\n (preDotState === 1 &&\r\n startDot === end - 1 &&\r\n startDot === startPart + 1)) {\r\n return '';\r\n }\r\n return path.slice(startDot, end);\r\n },\r\n format: _format.bind(null, '\\\\'),\r\n parse(path) {\r\n validateString(path, 'path');\r\n const ret = { root: '', dir: '', base: '', ext: '', name: '' };\r\n if (path.length === 0) {\r\n return ret;\r\n }\r\n const len = path.length;\r\n let rootEnd = 0;\r\n let code = path.charCodeAt(0);\r\n if (len === 1) {\r\n if (isPathSeparator(code)) {\r\n // `path` contains just a path separator, exit early to avoid\r\n // unnecessary work\r\n ret.root = ret.dir = path;\r\n return ret;\r\n }\r\n ret.base = ret.name = path;\r\n return ret;\r\n }\r\n // Try to match a root\r\n if (isPathSeparator(code)) {\r\n // Possible UNC root\r\n rootEnd = 1;\r\n if (isPathSeparator(path.charCodeAt(1))) {\r\n // Matched double path separator at beginning\r\n let j = 2;\r\n let last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more path separators\r\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j === len) {\r\n // We matched a UNC root only\r\n rootEnd = j;\r\n }\r\n else if (j !== last) {\r\n // We matched a UNC root with leftovers\r\n rootEnd = j + 1;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\r\n // Possible device root\r\n if (len <= 2) {\r\n // `path` contains just a drive root, exit early to avoid\r\n // unnecessary work\r\n ret.root = ret.dir = path;\r\n return ret;\r\n }\r\n rootEnd = 2;\r\n if (isPathSeparator(path.charCodeAt(2))) {\r\n if (len === 3) {\r\n // `path` contains just a drive root, exit early to avoid\r\n // unnecessary work\r\n ret.root = ret.dir = path;\r\n return ret;\r\n }\r\n rootEnd = 3;\r\n }\r\n }\r\n if (rootEnd > 0) {\r\n ret.root = path.slice(0, rootEnd);\r\n }\r\n let startDot = -1;\r\n let startPart = rootEnd;\r\n let end = -1;\r\n let matchedSlash = true;\r\n let i = path.length - 1;\r\n // Track the state of characters (if any) we see before our first dot and\r\n // after any path separator we find\r\n let preDotState = 0;\r\n // Get non-dir info\r\n for (; i >= rootEnd; --i) {\r\n code = path.charCodeAt(i);\r\n if (isPathSeparator(code)) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n startPart = i + 1;\r\n break;\r\n }\r\n continue;\r\n }\r\n if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // extension\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n if (code === CHAR_DOT) {\r\n // If this is our first dot, mark it as the start of our extension\r\n if (startDot === -1) {\r\n startDot = i;\r\n }\r\n else if (preDotState !== 1) {\r\n preDotState = 1;\r\n }\r\n }\r\n else if (startDot !== -1) {\r\n // We saw a non-dot and non-path separator before our dot, so we should\r\n // have a good chance at having a non-empty extension\r\n preDotState = -1;\r\n }\r\n }\r\n if (end !== -1) {\r\n if (startDot === -1 ||\r\n // We saw a non-dot character immediately before the dot\r\n preDotState === 0 ||\r\n // The (right-most) trimmed path component is exactly '..'\r\n (preDotState === 1 &&\r\n startDot === end - 1 &&\r\n startDot === startPart + 1)) {\r\n ret.base = ret.name = path.slice(startPart, end);\r\n }\r\n else {\r\n ret.name = path.slice(startPart, startDot);\r\n ret.base = path.slice(startPart, end);\r\n ret.ext = path.slice(startDot, end);\r\n }\r\n }\r\n // If the directory is the root, use the entire root as the `dir` including\r\n // the trailing slash if any (`C:\\abc` -> `C:\\`). Otherwise, strip out the\r\n // trailing slash (`C:\\abc\\def` -> `C:\\abc`).\r\n if (startPart > 0 && startPart !== rootEnd) {\r\n ret.dir = path.slice(0, startPart - 1);\r\n }\r\n else {\r\n ret.dir = ret.root;\r\n }\r\n return ret;\r\n },\r\n sep: '\\\\',\r\n delimiter: ';',\r\n win32: null,\r\n posix: null\r\n};\r\nconst posix = {\r\n // path.resolve([from ...], to)\r\n resolve(...pathSegments) {\r\n let resolvedPath = '';\r\n let resolvedAbsolute = false;\r\n for (let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\r\n const path = i >= 0 ? pathSegments[i] : _process_js__WEBPACK_IMPORTED_MODULE_0__.cwd();\r\n validateString(path, 'path');\r\n // Skip empty entries\r\n if (path.length === 0) {\r\n continue;\r\n }\r\n resolvedPath = `${path}/${resolvedPath}`;\r\n resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n }\r\n // At this point the path should be resolved to a full absolute path, but\r\n // handle relative paths to be safe (might happen when process.cwd() fails)\r\n // Normalize the path\r\n resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/', isPosixPathSeparator);\r\n if (resolvedAbsolute) {\r\n return `/${resolvedPath}`;\r\n }\r\n return resolvedPath.length > 0 ? resolvedPath : '.';\r\n },\r\n normalize(path) {\r\n validateString(path, 'path');\r\n if (path.length === 0) {\r\n return '.';\r\n }\r\n const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n const trailingSeparator = path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH;\r\n // Normalize the path\r\n path = normalizeString(path, !isAbsolute, '/', isPosixPathSeparator);\r\n if (path.length === 0) {\r\n if (isAbsolute) {\r\n return '/';\r\n }\r\n return trailingSeparator ? './' : '.';\r\n }\r\n if (trailingSeparator) {\r\n path += '/';\r\n }\r\n return isAbsolute ? `/${path}` : path;\r\n },\r\n isAbsolute(path) {\r\n validateString(path, 'path');\r\n return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n },\r\n join(...paths) {\r\n if (paths.length === 0) {\r\n return '.';\r\n }\r\n let joined;\r\n for (let i = 0; i < paths.length; ++i) {\r\n const arg = paths[i];\r\n validateString(arg, 'path');\r\n if (arg.length > 0) {\r\n if (joined === undefined) {\r\n joined = arg;\r\n }\r\n else {\r\n joined += `/${arg}`;\r\n }\r\n }\r\n }\r\n if (joined === undefined) {\r\n return '.';\r\n }\r\n return posix.normalize(joined);\r\n },\r\n relative(from, to) {\r\n validateString(from, 'from');\r\n validateString(to, 'to');\r\n if (from === to) {\r\n return '';\r\n }\r\n // Trim leading forward slashes.\r\n from = posix.resolve(from);\r\n to = posix.resolve(to);\r\n if (from === to) {\r\n return '';\r\n }\r\n const fromStart = 1;\r\n const fromEnd = from.length;\r\n const fromLen = fromEnd - fromStart;\r\n const toStart = 1;\r\n const toLen = to.length - toStart;\r\n // Compare paths to find the longest common path from root\r\n const length = (fromLen < toLen ? fromLen : toLen);\r\n let lastCommonSep = -1;\r\n let i = 0;\r\n for (; i < length; i++) {\r\n const fromCode = from.charCodeAt(fromStart + i);\r\n if (fromCode !== to.charCodeAt(toStart + i)) {\r\n break;\r\n }\r\n else if (fromCode === CHAR_FORWARD_SLASH) {\r\n lastCommonSep = i;\r\n }\r\n }\r\n if (i === length) {\r\n if (toLen > length) {\r\n if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) {\r\n // We get here if `from` is the exact base path for `to`.\r\n // For example: from='/foo/bar'; to='/foo/bar/baz'\r\n return to.slice(toStart + i + 1);\r\n }\r\n if (i === 0) {\r\n // We get here if `from` is the root\r\n // For example: from='/'; to='/foo'\r\n return to.slice(toStart + i);\r\n }\r\n }\r\n else if (fromLen > length) {\r\n if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) {\r\n // We get here if `to` is the exact base path for `from`.\r\n // For example: from='/foo/bar/baz'; to='/foo/bar'\r\n lastCommonSep = i;\r\n }\r\n else if (i === 0) {\r\n // We get here if `to` is the root.\r\n // For example: from='/foo/bar'; to='/'\r\n lastCommonSep = 0;\r\n }\r\n }\r\n }\r\n let out = '';\r\n // Generate the relative path based on the path difference between `to`\r\n // and `from`.\r\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\r\n if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) {\r\n out += out.length === 0 ? '..' : '/..';\r\n }\r\n }\r\n // Lastly, append the rest of the destination (`to`) path that comes after\r\n // the common path parts.\r\n return `${out}${to.slice(toStart + lastCommonSep)}`;\r\n },\r\n toNamespacedPath(path) {\r\n // Non-op on posix systems\r\n return path;\r\n },\r\n dirname(path) {\r\n validateString(path, 'path');\r\n if (path.length === 0) {\r\n return '.';\r\n }\r\n const hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n let end = -1;\r\n let matchedSlash = true;\r\n for (let i = path.length - 1; i >= 1; --i) {\r\n if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) {\r\n if (!matchedSlash) {\r\n end = i;\r\n break;\r\n }\r\n }\r\n else {\r\n // We saw the first non-path separator\r\n matchedSlash = false;\r\n }\r\n }\r\n if (end === -1) {\r\n return hasRoot ? '/' : '.';\r\n }\r\n if (hasRoot && end === 1) {\r\n return '//';\r\n }\r\n return path.slice(0, end);\r\n },\r\n basename(path, ext) {\r\n if (ext !== undefined) {\r\n validateString(ext, 'ext');\r\n }\r\n validateString(path, 'path');\r\n let start = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n let i;\r\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\r\n if (ext === path) {\r\n return '';\r\n }\r\n let extIdx = ext.length - 1;\r\n let firstNonSlashEnd = -1;\r\n for (i = path.length - 1; i >= 0; --i) {\r\n const code = path.charCodeAt(i);\r\n if (code === CHAR_FORWARD_SLASH) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n start = i + 1;\r\n break;\r\n }\r\n }\r\n else {\r\n if (firstNonSlashEnd === -1) {\r\n // We saw the first non-path separator, remember this index in case\r\n // we need it if the extension ends up not matching\r\n matchedSlash = false;\r\n firstNonSlashEnd = i + 1;\r\n }\r\n if (extIdx >= 0) {\r\n // Try to match the explicit extension\r\n if (code === ext.charCodeAt(extIdx)) {\r\n if (--extIdx === -1) {\r\n // We matched the extension, so mark this as the end of our path\r\n // component\r\n end = i;\r\n }\r\n }\r\n else {\r\n // Extension does not match, so our result is the entire path\r\n // component\r\n extIdx = -1;\r\n end = firstNonSlashEnd;\r\n }\r\n }\r\n }\r\n }\r\n if (start === end) {\r\n end = firstNonSlashEnd;\r\n }\r\n else if (end === -1) {\r\n end = path.length;\r\n }\r\n return path.slice(start, end);\r\n }\r\n for (i = path.length - 1; i >= 0; --i) {\r\n if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n start = i + 1;\r\n break;\r\n }\r\n }\r\n else if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // path component\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n }\r\n if (end === -1) {\r\n return '';\r\n }\r\n return path.slice(start, end);\r\n },\r\n extname(path) {\r\n validateString(path, 'path');\r\n let startDot = -1;\r\n let startPart = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n // Track the state of characters (if any) we see before our first dot and\r\n // after any path separator we find\r\n let preDotState = 0;\r\n for (let i = path.length - 1; i >= 0; --i) {\r\n const code = path.charCodeAt(i);\r\n if (code === CHAR_FORWARD_SLASH) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n startPart = i + 1;\r\n break;\r\n }\r\n continue;\r\n }\r\n if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // extension\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n if (code === CHAR_DOT) {\r\n // If this is our first dot, mark it as the start of our extension\r\n if (startDot === -1) {\r\n startDot = i;\r\n }\r\n else if (preDotState !== 1) {\r\n preDotState = 1;\r\n }\r\n }\r\n else if (startDot !== -1) {\r\n // We saw a non-dot and non-path separator before our dot, so we should\r\n // have a good chance at having a non-empty extension\r\n preDotState = -1;\r\n }\r\n }\r\n if (startDot === -1 ||\r\n end === -1 ||\r\n // We saw a non-dot character immediately before the dot\r\n preDotState === 0 ||\r\n // The (right-most) trimmed path component is exactly '..'\r\n (preDotState === 1 &&\r\n startDot === end - 1 &&\r\n startDot === startPart + 1)) {\r\n return '';\r\n }\r\n return path.slice(startDot, end);\r\n },\r\n format: _format.bind(null, '/'),\r\n parse(path) {\r\n validateString(path, 'path');\r\n const ret = { root: '', dir: '', base: '', ext: '', name: '' };\r\n if (path.length === 0) {\r\n return ret;\r\n }\r\n const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n let start;\r\n if (isAbsolute) {\r\n ret.root = '/';\r\n start = 1;\r\n }\r\n else {\r\n start = 0;\r\n }\r\n let startDot = -1;\r\n let startPart = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n let i = path.length - 1;\r\n // Track the state of characters (if any) we see before our first dot and\r\n // after any path separator we find\r\n let preDotState = 0;\r\n // Get non-dir info\r\n for (; i >= start; --i) {\r\n const code = path.charCodeAt(i);\r\n if (code === CHAR_FORWARD_SLASH) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n startPart = i + 1;\r\n break;\r\n }\r\n continue;\r\n }\r\n if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // extension\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n if (code === CHAR_DOT) {\r\n // If this is our first dot, mark it as the start of our extension\r\n if (startDot === -1) {\r\n startDot = i;\r\n }\r\n else if (preDotState !== 1) {\r\n preDotState = 1;\r\n }\r\n }\r\n else if (startDot !== -1) {\r\n // We saw a non-dot and non-path separator before our dot, so we should\r\n // have a good chance at having a non-empty extension\r\n preDotState = -1;\r\n }\r\n }\r\n if (end !== -1) {\r\n const start = startPart === 0 && isAbsolute ? 1 : startPart;\r\n if (startDot === -1 ||\r\n // We saw a non-dot character immediately before the dot\r\n preDotState === 0 ||\r\n // The (right-most) trimmed path component is exactly '..'\r\n (preDotState === 1 &&\r\n startDot === end - 1 &&\r\n startDot === startPart + 1)) {\r\n ret.base = ret.name = path.slice(start, end);\r\n }\r\n else {\r\n ret.name = path.slice(start, startDot);\r\n ret.base = path.slice(start, end);\r\n ret.ext = path.slice(startDot, end);\r\n }\r\n }\r\n if (startPart > 0) {\r\n ret.dir = path.slice(0, startPart - 1);\r\n }\r\n else if (isAbsolute) {\r\n ret.dir = '/';\r\n }\r\n return ret;\r\n },\r\n sep: '/',\r\n delimiter: ':',\r\n win32: null,\r\n posix: null\r\n};\r\nposix.win32 = win32.win32 = win32;\r\nposix.posix = win32.posix = posix;\r\nconst normalize = (_process_js__WEBPACK_IMPORTED_MODULE_0__.platform === 'win32' ? win32.normalize : posix.normalize);\r\nconst resolve = (_process_js__WEBPACK_IMPORTED_MODULE_0__.platform === 'win32' ? win32.resolve : posix.resolve);\r\nconst relative = (_process_js__WEBPACK_IMPORTED_MODULE_0__.platform === 'win32' ? win32.relative : posix.relative);\r\nconst dirname = (_process_js__WEBPACK_IMPORTED_MODULE_0__.platform === 'win32' ? win32.dirname : posix.dirname);\r\nconst basename = (_process_js__WEBPACK_IMPORTED_MODULE_0__.platform === 'win32' ? win32.basename : posix.basename);\r\nconst extname = (_process_js__WEBPACK_IMPORTED_MODULE_0__.platform === 'win32' ? win32.extname : posix.extname);\r\nconst sep = (_process_js__WEBPACK_IMPORTED_MODULE_0__.platform === 'win32' ? win32.sep : posix.sep);\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/base/common/path.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/base/common/platform.js": /*!*******************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/base/common/platform.js ***! \*******************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"isElectronSandboxed\": () => (/* binding */ isElectronSandboxed),\n/* harmony export */ \"browserCodeLoadingCacheStrategy\": () => (/* binding */ browserCodeLoadingCacheStrategy),\n/* harmony export */ \"isPreferringBrowserCodeLoad\": () => (/* binding */ isPreferringBrowserCodeLoad),\n/* harmony export */ \"isWindows\": () => (/* binding */ isWindows),\n/* harmony export */ \"isMacintosh\": () => (/* binding */ isMacintosh),\n/* harmony export */ \"isLinux\": () => (/* binding */ isLinux),\n/* harmony export */ \"isNative\": () => (/* binding */ isNative),\n/* harmony export */ \"isWeb\": () => (/* binding */ isWeb),\n/* harmony export */ \"isIOS\": () => (/* binding */ isIOS),\n/* harmony export */ \"userAgent\": () => (/* binding */ userAgent),\n/* harmony export */ \"globals\": () => (/* binding */ globals),\n/* harmony export */ \"setImmediate\": () => (/* binding */ setImmediate),\n/* harmony export */ \"OS\": () => (/* binding */ OS),\n/* harmony export */ \"isLittleEndian\": () => (/* binding */ isLittleEndian)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar _a;\r\nconst LANGUAGE_DEFAULT = 'en';\r\nlet _isWindows = false;\r\nlet _isMacintosh = false;\r\nlet _isLinux = false;\r\nlet _isLinuxSnap = false;\r\nlet _isNative = false;\r\nlet _isWeb = false;\r\nlet _isIOS = false;\r\nlet _locale = undefined;\r\nlet _language = LANGUAGE_DEFAULT;\r\nlet _translationsConfigFile = undefined;\r\nlet _userAgent = undefined;\r\nconst _globals = (typeof self === 'object' ? self : typeof __webpack_require__.g === 'object' ? __webpack_require__.g : {});\r\nlet nodeProcess = undefined;\r\nif (typeof process !== 'undefined') {\r\n // Native environment (non-sandboxed)\r\n nodeProcess = process;\r\n}\r\nelse if (typeof _globals.vscode !== 'undefined') {\r\n // Native environment (sandboxed)\r\n nodeProcess = _globals.vscode.process;\r\n}\r\nconst isElectronRenderer = typeof ((_a = nodeProcess === null || nodeProcess === void 0 ? void 0 : nodeProcess.versions) === null || _a === void 0 ? void 0 : _a.electron) === 'string' && nodeProcess.type === 'renderer';\r\nconst isElectronSandboxed = isElectronRenderer && (nodeProcess === null || nodeProcess === void 0 ? void 0 : nodeProcess.sandboxed);\r\nconst browserCodeLoadingCacheStrategy = (() => {\r\n // Always enabled when sandbox is enabled\r\n if (isElectronSandboxed) {\r\n return 'bypassHeatCheck';\r\n }\r\n // Otherwise, only enabled conditionally\r\n const env = nodeProcess === null || nodeProcess === void 0 ? void 0 : nodeProcess.env['ENABLE_VSCODE_BROWSER_CODE_LOADING'];\r\n if (typeof env === 'string') {\r\n if (env === 'none' || env === 'code' || env === 'bypassHeatCheck' || env === 'bypassHeatCheckAndEagerCompile') {\r\n return env;\r\n }\r\n return 'bypassHeatCheck';\r\n }\r\n return undefined;\r\n})();\r\nconst isPreferringBrowserCodeLoad = typeof browserCodeLoadingCacheStrategy === 'string';\r\n// Web environment\r\nif (typeof navigator === 'object' && !isElectronRenderer) {\r\n _userAgent = navigator.userAgent;\r\n _isWindows = _userAgent.indexOf('Windows') >= 0;\r\n _isMacintosh = _userAgent.indexOf('Macintosh') >= 0;\r\n _isIOS = (_userAgent.indexOf('Macintosh') >= 0 || _userAgent.indexOf('iPad') >= 0 || _userAgent.indexOf('iPhone') >= 0) && !!navigator.maxTouchPoints && navigator.maxTouchPoints > 0;\r\n _isLinux = _userAgent.indexOf('Linux') >= 0;\r\n _isWeb = true;\r\n _locale = navigator.language;\r\n _language = _locale;\r\n}\r\n// Native environment\r\nelse if (typeof nodeProcess === 'object') {\r\n _isWindows = (nodeProcess.platform === 'win32');\r\n _isMacintosh = (nodeProcess.platform === 'darwin');\r\n _isLinux = (nodeProcess.platform === 'linux');\r\n _isLinuxSnap = _isLinux && !!nodeProcess.env['SNAP'] && !!nodeProcess.env['SNAP_REVISION'];\r\n _locale = LANGUAGE_DEFAULT;\r\n _language = LANGUAGE_DEFAULT;\r\n const rawNlsConfig = nodeProcess.env['VSCODE_NLS_CONFIG'];\r\n if (rawNlsConfig) {\r\n try {\r\n const nlsConfig = JSON.parse(rawNlsConfig);\r\n const resolved = nlsConfig.availableLanguages['*'];\r\n _locale = nlsConfig.locale;\r\n // VSCode's default language is 'en'\r\n _language = resolved ? resolved : LANGUAGE_DEFAULT;\r\n _translationsConfigFile = nlsConfig._translationsConfigFile;\r\n }\r\n catch (e) {\r\n }\r\n }\r\n _isNative = true;\r\n}\r\n// Unknown environment\r\nelse {\r\n console.error('Unable to resolve platform.');\r\n}\r\nlet _platform = 0 /* Web */;\r\nif (_isMacintosh) {\r\n _platform = 1 /* Mac */;\r\n}\r\nelse if (_isWindows) {\r\n _platform = 3 /* Windows */;\r\n}\r\nelse if (_isLinux) {\r\n _platform = 2 /* Linux */;\r\n}\r\nconst isWindows = _isWindows;\r\nconst isMacintosh = _isMacintosh;\r\nconst isLinux = _isLinux;\r\nconst isNative = _isNative;\r\nconst isWeb = _isWeb;\r\nconst isIOS = _isIOS;\r\nconst userAgent = _userAgent;\r\nconst globals = _globals;\r\nconst setImmediate = (function defineSetImmediate() {\r\n if (globals.setImmediate) {\r\n return globals.setImmediate.bind(globals);\r\n }\r\n if (typeof globals.postMessage === 'function' && !globals.importScripts) {\r\n let pending = [];\r\n globals.addEventListener('message', (e) => {\r\n if (e.data && e.data.vscodeSetImmediateId) {\r\n for (let i = 0, len = pending.length; i < len; i++) {\r\n const candidate = pending[i];\r\n if (candidate.id === e.data.vscodeSetImmediateId) {\r\n pending.splice(i, 1);\r\n candidate.callback();\r\n return;\r\n }\r\n }\r\n }\r\n });\r\n let lastId = 0;\r\n return (callback) => {\r\n const myId = ++lastId;\r\n pending.push({\r\n id: myId,\r\n callback: callback\r\n });\r\n globals.postMessage({ vscodeSetImmediateId: myId }, '*');\r\n };\r\n }\r\n if (nodeProcess && typeof nodeProcess.nextTick === 'function') {\r\n return nodeProcess.nextTick.bind(nodeProcess);\r\n }\r\n const _promise = Promise.resolve();\r\n return (callback) => _promise.then(callback);\r\n})();\r\nconst OS = (_isMacintosh || _isIOS ? 2 /* Macintosh */ : (_isWindows ? 1 /* Windows */ : 3 /* Linux */));\r\nlet _isLittleEndian = true;\r\nlet _isLittleEndianComputed = false;\r\nfunction isLittleEndian() {\r\n if (!_isLittleEndianComputed) {\r\n _isLittleEndianComputed = true;\r\n const test = new Uint8Array(2);\r\n test[0] = 1;\r\n test[1] = 2;\r\n const view = new Uint16Array(test.buffer);\r\n _isLittleEndian = (view[0] === (2 << 8) + 1);\r\n }\r\n return _isLittleEndian;\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/base/common/platform.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/base/common/process.js": /*!******************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/base/common/process.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"cwd\": () => (/* binding */ cwd),\n/* harmony export */ \"env\": () => (/* binding */ env),\n/* harmony export */ \"platform\": () => (/* binding */ platform)\n/* harmony export */ });\n/* harmony import */ var _platform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nlet safeProcess;\r\n// Native node.js environment\r\nif (typeof process !== 'undefined') {\r\n safeProcess = process;\r\n}\r\n// Native sandbox environment\r\nelse if (typeof _platform_js__WEBPACK_IMPORTED_MODULE_0__.globals.vscode !== 'undefined') {\r\n safeProcess = {\r\n // Supported\r\n get platform() { return _platform_js__WEBPACK_IMPORTED_MODULE_0__.globals.vscode.process.platform; },\r\n get env() { return _platform_js__WEBPACK_IMPORTED_MODULE_0__.globals.vscode.process.env; },\r\n nextTick(callback) { return (0,_platform_js__WEBPACK_IMPORTED_MODULE_0__.setImmediate)(callback); },\r\n // Unsupported\r\n cwd() { return _platform_js__WEBPACK_IMPORTED_MODULE_0__.globals.vscode.process.env.VSCODE_CWD || _platform_js__WEBPACK_IMPORTED_MODULE_0__.globals.vscode.process.execPath.substr(0, _platform_js__WEBPACK_IMPORTED_MODULE_0__.globals.vscode.process.execPath.lastIndexOf(_platform_js__WEBPACK_IMPORTED_MODULE_0__.globals.vscode.process.platform === 'win32' ? '\\\\' : '/')); }\r\n };\r\n}\r\n// Web environment\r\nelse {\r\n safeProcess = {\r\n // Supported\r\n get platform() { return _platform_js__WEBPACK_IMPORTED_MODULE_0__.isWindows ? 'win32' : _platform_js__WEBPACK_IMPORTED_MODULE_0__.isMacintosh ? 'darwin' : 'linux'; },\r\n nextTick(callback) { return (0,_platform_js__WEBPACK_IMPORTED_MODULE_0__.setImmediate)(callback); },\r\n // Unsupported\r\n get env() { return Object.create(null); },\r\n cwd() { return '/'; }\r\n };\r\n}\r\nconst cwd = safeProcess.cwd;\r\nconst env = safeProcess.env;\r\nconst platform = safeProcess.platform;\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/base/common/process.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/base/common/stopwatch.js": /*!********************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/base/common/stopwatch.js ***! \********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"StopWatch\": () => (/* binding */ StopWatch)\n/* harmony export */ });\n/* harmony import */ var _platform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nconst hasPerformanceNow = (_platform_js__WEBPACK_IMPORTED_MODULE_0__.globals.performance && typeof _platform_js__WEBPACK_IMPORTED_MODULE_0__.globals.performance.now === 'function');\r\nclass StopWatch {\r\n constructor(highResolution) {\r\n this._highResolution = hasPerformanceNow && highResolution;\r\n this._startTime = this._now();\r\n this._stopTime = -1;\r\n }\r\n static create(highResolution = true) {\r\n return new StopWatch(highResolution);\r\n }\r\n stop() {\r\n this._stopTime = this._now();\r\n }\r\n elapsed() {\r\n if (this._stopTime !== -1) {\r\n return this._stopTime - this._startTime;\r\n }\r\n return this._now() - this._startTime;\r\n }\r\n _now() {\r\n return this._highResolution ? _platform_js__WEBPACK_IMPORTED_MODULE_0__.globals.performance.now() : Date.now();\r\n }\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/base/common/stopwatch.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/base/common/strings.js": /*!******************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/base/common/strings.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"isFalsyOrWhitespace\": () => (/* binding */ isFalsyOrWhitespace),\n/* harmony export */ \"format\": () => (/* binding */ format),\n/* harmony export */ \"escape\": () => (/* binding */ escape),\n/* harmony export */ \"escapeRegExpCharacters\": () => (/* binding */ escapeRegExpCharacters),\n/* harmony export */ \"trim\": () => (/* binding */ trim),\n/* harmony export */ \"ltrim\": () => (/* binding */ ltrim),\n/* harmony export */ \"rtrim\": () => (/* binding */ rtrim),\n/* harmony export */ \"convertSimple2RegExpPattern\": () => (/* binding */ convertSimple2RegExpPattern),\n/* harmony export */ \"stripWildcards\": () => (/* binding */ stripWildcards),\n/* harmony export */ \"createRegExp\": () => (/* binding */ createRegExp),\n/* harmony export */ \"regExpLeadsToEndlessLoop\": () => (/* binding */ regExpLeadsToEndlessLoop),\n/* harmony export */ \"regExpFlags\": () => (/* binding */ regExpFlags),\n/* harmony export */ \"splitLines\": () => (/* binding */ splitLines),\n/* harmony export */ \"firstNonWhitespaceIndex\": () => (/* binding */ firstNonWhitespaceIndex),\n/* harmony export */ \"getLeadingWhitespace\": () => (/* binding */ getLeadingWhitespace),\n/* harmony export */ \"lastNonWhitespaceIndex\": () => (/* binding */ lastNonWhitespaceIndex),\n/* harmony export */ \"compare\": () => (/* binding */ compare),\n/* harmony export */ \"compareSubstring\": () => (/* binding */ compareSubstring),\n/* harmony export */ \"compareIgnoreCase\": () => (/* binding */ compareIgnoreCase),\n/* harmony export */ \"compareSubstringIgnoreCase\": () => (/* binding */ compareSubstringIgnoreCase),\n/* harmony export */ \"isLowerAsciiLetter\": () => (/* binding */ isLowerAsciiLetter),\n/* harmony export */ \"isUpperAsciiLetter\": () => (/* binding */ isUpperAsciiLetter),\n/* harmony export */ \"equalsIgnoreCase\": () => (/* binding */ equalsIgnoreCase),\n/* harmony export */ \"startsWithIgnoreCase\": () => (/* binding */ startsWithIgnoreCase),\n/* harmony export */ \"commonPrefixLength\": () => (/* binding */ commonPrefixLength),\n/* harmony export */ \"commonSuffixLength\": () => (/* binding */ commonSuffixLength),\n/* harmony export */ \"isHighSurrogate\": () => (/* binding */ isHighSurrogate),\n/* harmony export */ \"isLowSurrogate\": () => (/* binding */ isLowSurrogate),\n/* harmony export */ \"computeCodePoint\": () => (/* binding */ computeCodePoint),\n/* harmony export */ \"getNextCodePoint\": () => (/* binding */ getNextCodePoint),\n/* harmony export */ \"nextCharLength\": () => (/* binding */ nextCharLength),\n/* harmony export */ \"prevCharLength\": () => (/* binding */ prevCharLength),\n/* harmony export */ \"decodeUTF8\": () => (/* binding */ decodeUTF8),\n/* harmony export */ \"containsRTL\": () => (/* binding */ containsRTL),\n/* harmony export */ \"containsEmoji\": () => (/* binding */ containsEmoji),\n/* harmony export */ \"isBasicASCII\": () => (/* binding */ isBasicASCII),\n/* harmony export */ \"UNUSUAL_LINE_TERMINATORS\": () => (/* binding */ UNUSUAL_LINE_TERMINATORS),\n/* harmony export */ \"containsUnusualLineTerminators\": () => (/* binding */ containsUnusualLineTerminators),\n/* harmony export */ \"containsFullWidthCharacter\": () => (/* binding */ containsFullWidthCharacter),\n/* harmony export */ \"isFullWidthCharacter\": () => (/* binding */ isFullWidthCharacter),\n/* harmony export */ \"isEmojiImprecise\": () => (/* binding */ isEmojiImprecise),\n/* harmony export */ \"UTF8_BOM_CHARACTER\": () => (/* binding */ UTF8_BOM_CHARACTER),\n/* harmony export */ \"startsWithUTF8BOM\": () => (/* binding */ startsWithUTF8BOM),\n/* harmony export */ \"containsUppercaseCharacter\": () => (/* binding */ containsUppercaseCharacter),\n/* harmony export */ \"singleLetterHash\": () => (/* binding */ singleLetterHash),\n/* harmony export */ \"getGraphemeBreakType\": () => (/* binding */ getGraphemeBreakType),\n/* harmony export */ \"breakBetweenGraphemeBreakType\": () => (/* binding */ breakBetweenGraphemeBreakType)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nfunction isFalsyOrWhitespace(str) {\r\n if (!str || typeof str !== 'string') {\r\n return true;\r\n }\r\n return str.trim().length === 0;\r\n}\r\nconst _formatRegexp = /{(\\d+)}/g;\r\n/**\r\n * Helper to produce a string with a variable number of arguments. Insert variable segments\r\n * into the string using the {n} notation where N is the index of the argument following the string.\r\n * @param value string to which formatting is applied\r\n * @param args replacements for {n}-entries\r\n */\r\nfunction format(value, ...args) {\r\n if (args.length === 0) {\r\n return value;\r\n }\r\n return value.replace(_formatRegexp, function (match, group) {\r\n const idx = parseInt(group, 10);\r\n return isNaN(idx) || idx < 0 || idx >= args.length ?\r\n match :\r\n args[idx];\r\n });\r\n}\r\n/**\r\n * Converts HTML characters inside the string to use entities instead. Makes the string safe from\r\n * being used e.g. in HTMLElement.innerHTML.\r\n */\r\nfunction escape(html) {\r\n return html.replace(/[<>&]/g, function (match) {\r\n switch (match) {\r\n case '<': return '<';\r\n case '>': return '>';\r\n case '&': return '&';\r\n default: return match;\r\n }\r\n });\r\n}\r\n/**\r\n * Escapes regular expression characters in a given string\r\n */\r\nfunction escapeRegExpCharacters(value) {\r\n return value.replace(/[\\\\\\{\\}\\*\\+\\?\\|\\^\\$\\.\\[\\]\\(\\)]/g, '\\\\$&');\r\n}\r\n/**\r\n * Removes all occurrences of needle from the beginning and end of haystack.\r\n * @param haystack string to trim\r\n * @param needle the thing to trim (default is a blank)\r\n */\r\nfunction trim(haystack, needle = ' ') {\r\n const trimmed = ltrim(haystack, needle);\r\n return rtrim(trimmed, needle);\r\n}\r\n/**\r\n * Removes all occurrences of needle from the beginning of haystack.\r\n * @param haystack string to trim\r\n * @param needle the thing to trim\r\n */\r\nfunction ltrim(haystack, needle) {\r\n if (!haystack || !needle) {\r\n return haystack;\r\n }\r\n const needleLen = needle.length;\r\n if (needleLen === 0 || haystack.length === 0) {\r\n return haystack;\r\n }\r\n let offset = 0;\r\n while (haystack.indexOf(needle, offset) === offset) {\r\n offset = offset + needleLen;\r\n }\r\n return haystack.substring(offset);\r\n}\r\n/**\r\n * Removes all occurrences of needle from the end of haystack.\r\n * @param haystack string to trim\r\n * @param needle the thing to trim\r\n */\r\nfunction rtrim(haystack, needle) {\r\n if (!haystack || !needle) {\r\n return haystack;\r\n }\r\n const needleLen = needle.length, haystackLen = haystack.length;\r\n if (needleLen === 0 || haystackLen === 0) {\r\n return haystack;\r\n }\r\n let offset = haystackLen, idx = -1;\r\n while (true) {\r\n idx = haystack.lastIndexOf(needle, offset - 1);\r\n if (idx === -1 || idx + needleLen !== offset) {\r\n break;\r\n }\r\n if (idx === 0) {\r\n return '';\r\n }\r\n offset = idx;\r\n }\r\n return haystack.substring(0, offset);\r\n}\r\nfunction convertSimple2RegExpPattern(pattern) {\r\n return pattern.replace(/[\\-\\\\\\{\\}\\+\\?\\|\\^\\$\\.\\,\\[\\]\\(\\)\\#\\s]/g, '\\\\$&').replace(/[\\*]/g, '.*');\r\n}\r\nfunction stripWildcards(pattern) {\r\n return pattern.replace(/\\*/g, '');\r\n}\r\nfunction createRegExp(searchString, isRegex, options = {}) {\r\n if (!searchString) {\r\n throw new Error('Cannot create regex from empty string');\r\n }\r\n if (!isRegex) {\r\n searchString = escapeRegExpCharacters(searchString);\r\n }\r\n if (options.wholeWord) {\r\n if (!/\\B/.test(searchString.charAt(0))) {\r\n searchString = '\\\\b' + searchString;\r\n }\r\n if (!/\\B/.test(searchString.charAt(searchString.length - 1))) {\r\n searchString = searchString + '\\\\b';\r\n }\r\n }\r\n let modifiers = '';\r\n if (options.global) {\r\n modifiers += 'g';\r\n }\r\n if (!options.matchCase) {\r\n modifiers += 'i';\r\n }\r\n if (options.multiline) {\r\n modifiers += 'm';\r\n }\r\n if (options.unicode) {\r\n modifiers += 'u';\r\n }\r\n return new RegExp(searchString, modifiers);\r\n}\r\nfunction regExpLeadsToEndlessLoop(regexp) {\r\n // Exit early if it's one of these special cases which are meant to match\r\n // against an empty string\r\n if (regexp.source === '^' || regexp.source === '^$' || regexp.source === '$' || regexp.source === '^\\\\s*$') {\r\n return false;\r\n }\r\n // We check against an empty string. If the regular expression doesn't advance\r\n // (e.g. ends in an endless loop) it will match an empty string.\r\n const match = regexp.exec('');\r\n return !!(match && regexp.lastIndex === 0);\r\n}\r\nfunction regExpFlags(regexp) {\r\n return (regexp.global ? 'g' : '')\r\n + (regexp.ignoreCase ? 'i' : '')\r\n + (regexp.multiline ? 'm' : '')\r\n + (regexp /* standalone editor compilation */.unicode ? 'u' : '');\r\n}\r\nfunction splitLines(str) {\r\n return str.split(/\\r\\n|\\r|\\n/);\r\n}\r\n/**\r\n * Returns first index of the string that is not whitespace.\r\n * If string is empty or contains only whitespaces, returns -1\r\n */\r\nfunction firstNonWhitespaceIndex(str) {\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n const chCode = str.charCodeAt(i);\r\n if (chCode !== 32 /* Space */ && chCode !== 9 /* Tab */) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * Returns the leading whitespace of the string.\r\n * If the string contains only whitespaces, returns entire string\r\n */\r\nfunction getLeadingWhitespace(str, start = 0, end = str.length) {\r\n for (let i = start; i < end; i++) {\r\n const chCode = str.charCodeAt(i);\r\n if (chCode !== 32 /* Space */ && chCode !== 9 /* Tab */) {\r\n return str.substring(start, i);\r\n }\r\n }\r\n return str.substring(start, end);\r\n}\r\n/**\r\n * Returns last index of the string that is not whitespace.\r\n * If string is empty or contains only whitespaces, returns -1\r\n */\r\nfunction lastNonWhitespaceIndex(str, startIndex = str.length - 1) {\r\n for (let i = startIndex; i >= 0; i--) {\r\n const chCode = str.charCodeAt(i);\r\n if (chCode !== 32 /* Space */ && chCode !== 9 /* Tab */) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\nfunction compare(a, b) {\r\n if (a < b) {\r\n return -1;\r\n }\r\n else if (a > b) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n}\r\nfunction compareSubstring(a, b, aStart = 0, aEnd = a.length, bStart = 0, bEnd = b.length) {\r\n for (; aStart < aEnd && bStart < bEnd; aStart++, bStart++) {\r\n let codeA = a.charCodeAt(aStart);\r\n let codeB = b.charCodeAt(bStart);\r\n if (codeA < codeB) {\r\n return -1;\r\n }\r\n else if (codeA > codeB) {\r\n return 1;\r\n }\r\n }\r\n const aLen = aEnd - aStart;\r\n const bLen = bEnd - bStart;\r\n if (aLen < bLen) {\r\n return -1;\r\n }\r\n else if (aLen > bLen) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\nfunction compareIgnoreCase(a, b) {\r\n return compareSubstringIgnoreCase(a, b, 0, a.length, 0, b.length);\r\n}\r\nfunction compareSubstringIgnoreCase(a, b, aStart = 0, aEnd = a.length, bStart = 0, bEnd = b.length) {\r\n for (; aStart < aEnd && bStart < bEnd; aStart++, bStart++) {\r\n let codeA = a.charCodeAt(aStart);\r\n let codeB = b.charCodeAt(bStart);\r\n if (codeA === codeB) {\r\n // equal\r\n continue;\r\n }\r\n const diff = codeA - codeB;\r\n if (diff === 32 && isUpperAsciiLetter(codeB)) { //codeB =[65-90] && codeA =[97-122]\r\n continue;\r\n }\r\n else if (diff === -32 && isUpperAsciiLetter(codeA)) { //codeB =[97-122] && codeA =[65-90]\r\n continue;\r\n }\r\n if (isLowerAsciiLetter(codeA) && isLowerAsciiLetter(codeB)) {\r\n //\r\n return diff;\r\n }\r\n else {\r\n return compareSubstring(a.toLowerCase(), b.toLowerCase(), aStart, aEnd, bStart, bEnd);\r\n }\r\n }\r\n const aLen = aEnd - aStart;\r\n const bLen = bEnd - bStart;\r\n if (aLen < bLen) {\r\n return -1;\r\n }\r\n else if (aLen > bLen) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\nfunction isLowerAsciiLetter(code) {\r\n return code >= 97 /* a */ && code <= 122 /* z */;\r\n}\r\nfunction isUpperAsciiLetter(code) {\r\n return code >= 65 /* A */ && code <= 90 /* Z */;\r\n}\r\nfunction isAsciiLetter(code) {\r\n return isLowerAsciiLetter(code) || isUpperAsciiLetter(code);\r\n}\r\nfunction equalsIgnoreCase(a, b) {\r\n return a.length === b.length && doEqualsIgnoreCase(a, b);\r\n}\r\nfunction doEqualsIgnoreCase(a, b, stopAt = a.length) {\r\n for (let i = 0; i < stopAt; i++) {\r\n const codeA = a.charCodeAt(i);\r\n const codeB = b.charCodeAt(i);\r\n if (codeA === codeB) {\r\n continue;\r\n }\r\n // a-z A-Z\r\n if (isAsciiLetter(codeA) && isAsciiLetter(codeB)) {\r\n const diff = Math.abs(codeA - codeB);\r\n if (diff !== 0 && diff !== 32) {\r\n return false;\r\n }\r\n }\r\n // Any other charcode\r\n else {\r\n if (String.fromCharCode(codeA).toLowerCase() !== String.fromCharCode(codeB).toLowerCase()) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\nfunction startsWithIgnoreCase(str, candidate) {\r\n const candidateLength = candidate.length;\r\n if (candidate.length > str.length) {\r\n return false;\r\n }\r\n return doEqualsIgnoreCase(str, candidate, candidateLength);\r\n}\r\n/**\r\n * @returns the length of the common prefix of the two strings.\r\n */\r\nfunction commonPrefixLength(a, b) {\r\n let i, len = Math.min(a.length, b.length);\r\n for (i = 0; i < len; i++) {\r\n if (a.charCodeAt(i) !== b.charCodeAt(i)) {\r\n return i;\r\n }\r\n }\r\n return len;\r\n}\r\n/**\r\n * @returns the length of the common suffix of the two strings.\r\n */\r\nfunction commonSuffixLength(a, b) {\r\n let i, len = Math.min(a.length, b.length);\r\n const aLastIndex = a.length - 1;\r\n const bLastIndex = b.length - 1;\r\n for (i = 0; i < len; i++) {\r\n if (a.charCodeAt(aLastIndex - i) !== b.charCodeAt(bLastIndex - i)) {\r\n return i;\r\n }\r\n }\r\n return len;\r\n}\r\n/**\r\n * See http://en.wikipedia.org/wiki/Surrogate_pair\r\n */\r\nfunction isHighSurrogate(charCode) {\r\n return (0xD800 <= charCode && charCode <= 0xDBFF);\r\n}\r\n/**\r\n * See http://en.wikipedia.org/wiki/Surrogate_pair\r\n */\r\nfunction isLowSurrogate(charCode) {\r\n return (0xDC00 <= charCode && charCode <= 0xDFFF);\r\n}\r\n/**\r\n * See http://en.wikipedia.org/wiki/Surrogate_pair\r\n */\r\nfunction computeCodePoint(highSurrogate, lowSurrogate) {\r\n return ((highSurrogate - 0xD800) << 10) + (lowSurrogate - 0xDC00) + 0x10000;\r\n}\r\n/**\r\n * get the code point that begins at offset `offset`\r\n */\r\nfunction getNextCodePoint(str, len, offset) {\r\n const charCode = str.charCodeAt(offset);\r\n if (isHighSurrogate(charCode) && offset + 1 < len) {\r\n const nextCharCode = str.charCodeAt(offset + 1);\r\n if (isLowSurrogate(nextCharCode)) {\r\n return computeCodePoint(charCode, nextCharCode);\r\n }\r\n }\r\n return charCode;\r\n}\r\n/**\r\n * get the code point that ends right before offset `offset`\r\n */\r\nfunction getPrevCodePoint(str, offset) {\r\n const charCode = str.charCodeAt(offset - 1);\r\n if (isLowSurrogate(charCode) && offset > 1) {\r\n const prevCharCode = str.charCodeAt(offset - 2);\r\n if (isHighSurrogate(prevCharCode)) {\r\n return computeCodePoint(prevCharCode, charCode);\r\n }\r\n }\r\n return charCode;\r\n}\r\nfunction nextCharLength(str, offset) {\r\n const graphemeBreakTree = GraphemeBreakTree.getInstance();\r\n const initialOffset = offset;\r\n const len = str.length;\r\n const initialCodePoint = getNextCodePoint(str, len, offset);\r\n offset += (initialCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n let graphemeBreakType = graphemeBreakTree.getGraphemeBreakType(initialCodePoint);\r\n while (offset < len) {\r\n const nextCodePoint = getNextCodePoint(str, len, offset);\r\n const nextGraphemeBreakType = graphemeBreakTree.getGraphemeBreakType(nextCodePoint);\r\n if (breakBetweenGraphemeBreakType(graphemeBreakType, nextGraphemeBreakType)) {\r\n break;\r\n }\r\n offset += (nextCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n graphemeBreakType = nextGraphemeBreakType;\r\n }\r\n return (offset - initialOffset);\r\n}\r\nfunction prevCharLength(str, offset) {\r\n const graphemeBreakTree = GraphemeBreakTree.getInstance();\r\n const initialOffset = offset;\r\n const initialCodePoint = getPrevCodePoint(str, offset);\r\n offset -= (initialCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n let graphemeBreakType = graphemeBreakTree.getGraphemeBreakType(initialCodePoint);\r\n while (offset > 0) {\r\n const prevCodePoint = getPrevCodePoint(str, offset);\r\n const prevGraphemeBreakType = graphemeBreakTree.getGraphemeBreakType(prevCodePoint);\r\n if (breakBetweenGraphemeBreakType(prevGraphemeBreakType, graphemeBreakType)) {\r\n break;\r\n }\r\n offset -= (prevCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n graphemeBreakType = prevGraphemeBreakType;\r\n }\r\n return (initialOffset - offset);\r\n}\r\n/**\r\n * A manual decoding of a UTF8 string.\r\n * Use only in environments which do not offer native conversion methods!\r\n */\r\nfunction decodeUTF8(buffer) {\r\n // https://en.wikipedia.org/wiki/UTF-8\r\n const len = buffer.byteLength;\r\n const result = [];\r\n let offset = 0;\r\n while (offset < len) {\r\n const v0 = buffer[offset];\r\n let codePoint;\r\n if (v0 >= 0b11110000 && offset + 3 < len) {\r\n // 4 bytes\r\n codePoint = ((((buffer[offset++] & 0b00000111) << 18) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 12) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 6) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 0) >>> 0));\r\n }\r\n else if (v0 >= 0b11100000 && offset + 2 < len) {\r\n // 3 bytes\r\n codePoint = ((((buffer[offset++] & 0b00001111) << 12) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 6) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 0) >>> 0));\r\n }\r\n else if (v0 >= 0b11000000 && offset + 1 < len) {\r\n // 2 bytes\r\n codePoint = ((((buffer[offset++] & 0b00011111) << 6) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 0) >>> 0));\r\n }\r\n else {\r\n // 1 byte\r\n codePoint = buffer[offset++];\r\n }\r\n if ((codePoint >= 0 && codePoint <= 0xD7FF) || (codePoint >= 0xE000 && codePoint <= 0xFFFF)) {\r\n // Basic Multilingual Plane\r\n result.push(String.fromCharCode(codePoint));\r\n }\r\n else if (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\r\n // Supplementary Planes\r\n const uPrime = codePoint - 0x10000;\r\n const w1 = 0xD800 + ((uPrime & 0b11111111110000000000) >>> 10);\r\n const w2 = 0xDC00 + ((uPrime & 0b00000000001111111111) >>> 0);\r\n result.push(String.fromCharCode(w1));\r\n result.push(String.fromCharCode(w2));\r\n }\r\n else {\r\n // illegal code point\r\n result.push(String.fromCharCode(0xFFFD));\r\n }\r\n }\r\n return result.join('');\r\n}\r\n/**\r\n * Generated using https://github.com/alexdima/unicode-utils/blob/master/generate-rtl-test.js\r\n */\r\nconst CONTAINS_RTL = /(?:[\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05F4\\u0608\\u060B\\u060D\\u061B-\\u064A\\u066D-\\u066F\\u0671-\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1-\\u07EA\\u07F4\\u07F5\\u07FA-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u0858\\u085E-\\u08BD\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFD3D\\uFD50-\\uFDFC\\uFE70-\\uFEFC]|\\uD802[\\uDC00-\\uDD1B\\uDD20-\\uDE00\\uDE10-\\uDE33\\uDE40-\\uDEE4\\uDEEB-\\uDF35\\uDF40-\\uDFFF]|\\uD803[\\uDC00-\\uDCFF]|\\uD83A[\\uDC00-\\uDCCF\\uDD00-\\uDD43\\uDD50-\\uDFFF]|\\uD83B[\\uDC00-\\uDEBB])/;\r\n/**\r\n * Returns true if `str` contains any Unicode character that is classified as \"R\" or \"AL\".\r\n */\r\nfunction containsRTL(str) {\r\n return CONTAINS_RTL.test(str);\r\n}\r\n/**\r\n * Generated using https://github.com/alexdima/unicode-utils/blob/master/generate-emoji-test.js\r\n */\r\nconst CONTAINS_EMOJI = /(?:[\\u231A\\u231B\\u23F0\\u23F3\\u2600-\\u27BF\\u2B50\\u2B55]|\\uD83C[\\uDDE6-\\uDDFF\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDE4F\\uDE80-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD00-\\uDDFF\\uDE70-\\uDED6])/;\r\nfunction containsEmoji(str) {\r\n return CONTAINS_EMOJI.test(str);\r\n}\r\nconst IS_BASIC_ASCII = /^[\\t\\n\\r\\x20-\\x7E]*$/;\r\n/**\r\n * Returns true if `str` contains only basic ASCII characters in the range 32 - 126 (including 32 and 126) or \\n, \\r, \\t\r\n */\r\nfunction isBasicASCII(str) {\r\n return IS_BASIC_ASCII.test(str);\r\n}\r\nconst UNUSUAL_LINE_TERMINATORS = /[\\u2028\\u2029]/; // LINE SEPARATOR (LS) or PARAGRAPH SEPARATOR (PS)\r\n/**\r\n * Returns true if `str` contains unusual line terminators, like LS or PS\r\n */\r\nfunction containsUnusualLineTerminators(str) {\r\n return UNUSUAL_LINE_TERMINATORS.test(str);\r\n}\r\nfunction containsFullWidthCharacter(str) {\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n if (isFullWidthCharacter(str.charCodeAt(i))) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction isFullWidthCharacter(charCode) {\r\n // Do a cheap trick to better support wrapping of wide characters, treat them as 2 columns\r\n // http://jrgraphix.net/research/unicode_blocks.php\r\n // 2E80 — 2EFF CJK Radicals Supplement\r\n // 2F00 — 2FDF Kangxi Radicals\r\n // 2FF0 — 2FFF Ideographic Description Characters\r\n // 3000 — 303F CJK Symbols and Punctuation\r\n // 3040 — 309F Hiragana\r\n // 30A0 — 30FF Katakana\r\n // 3100 — 312F Bopomofo\r\n // 3130 — 318F Hangul Compatibility Jamo\r\n // 3190 — 319F Kanbun\r\n // 31A0 — 31BF Bopomofo Extended\r\n // 31F0 — 31FF Katakana Phonetic Extensions\r\n // 3200 — 32FF Enclosed CJK Letters and Months\r\n // 3300 — 33FF CJK Compatibility\r\n // 3400 — 4DBF CJK Unified Ideographs Extension A\r\n // 4DC0 — 4DFF Yijing Hexagram Symbols\r\n // 4E00 — 9FFF CJK Unified Ideographs\r\n // A000 — A48F Yi Syllables\r\n // A490 — A4CF Yi Radicals\r\n // AC00 — D7AF Hangul Syllables\r\n // [IGNORE] D800 — DB7F High Surrogates\r\n // [IGNORE] DB80 — DBFF High Private Use Surrogates\r\n // [IGNORE] DC00 — DFFF Low Surrogates\r\n // [IGNORE] E000 — F8FF Private Use Area\r\n // F900 — FAFF CJK Compatibility Ideographs\r\n // [IGNORE] FB00 — FB4F Alphabetic Presentation Forms\r\n // [IGNORE] FB50 — FDFF Arabic Presentation Forms-A\r\n // [IGNORE] FE00 — FE0F Variation Selectors\r\n // [IGNORE] FE20 — FE2F Combining Half Marks\r\n // [IGNORE] FE30 — FE4F CJK Compatibility Forms\r\n // [IGNORE] FE50 — FE6F Small Form Variants\r\n // [IGNORE] FE70 — FEFF Arabic Presentation Forms-B\r\n // FF00 — FFEF Halfwidth and Fullwidth Forms\r\n // [https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms]\r\n // of which FF01 - FF5E fullwidth ASCII of 21 to 7E\r\n // [IGNORE] and FF65 - FFDC halfwidth of Katakana and Hangul\r\n // [IGNORE] FFF0 — FFFF Specials\r\n charCode = +charCode; // @perf\r\n return ((charCode >= 0x2E80 && charCode <= 0xD7AF)\r\n || (charCode >= 0xF900 && charCode <= 0xFAFF)\r\n || (charCode >= 0xFF01 && charCode <= 0xFF5E));\r\n}\r\n/**\r\n * A fast function (therefore imprecise) to check if code points are emojis.\r\n * Generated using https://github.com/alexdima/unicode-utils/blob/master/generate-emoji-test.js\r\n */\r\nfunction isEmojiImprecise(x) {\r\n return ((x >= 0x1F1E6 && x <= 0x1F1FF) || (x === 8986) || (x === 8987) || (x === 9200)\r\n || (x === 9203) || (x >= 9728 && x <= 10175) || (x === 11088) || (x === 11093)\r\n || (x >= 127744 && x <= 128591) || (x >= 128640 && x <= 128764)\r\n || (x >= 128992 && x <= 129003) || (x >= 129280 && x <= 129535)\r\n || (x >= 129648 && x <= 129750));\r\n}\r\n// -- UTF-8 BOM\r\nconst UTF8_BOM_CHARACTER = String.fromCharCode(65279 /* UTF8_BOM */);\r\nfunction startsWithUTF8BOM(str) {\r\n return !!(str && str.length > 0 && str.charCodeAt(0) === 65279 /* UTF8_BOM */);\r\n}\r\nfunction containsUppercaseCharacter(target, ignoreEscapedChars = false) {\r\n if (!target) {\r\n return false;\r\n }\r\n if (ignoreEscapedChars) {\r\n target = target.replace(/\\\\./g, '');\r\n }\r\n return target.toLowerCase() !== target;\r\n}\r\n/**\r\n * Produces 'a'-'z', followed by 'A'-'Z'... followed by 'a'-'z', etc.\r\n */\r\nfunction singleLetterHash(n) {\r\n const LETTERS_CNT = (90 /* Z */ - 65 /* A */ + 1);\r\n n = n % (2 * LETTERS_CNT);\r\n if (n < LETTERS_CNT) {\r\n return String.fromCharCode(97 /* a */ + n);\r\n }\r\n return String.fromCharCode(65 /* A */ + n - LETTERS_CNT);\r\n}\r\n//#region Unicode Grapheme Break\r\nfunction getGraphemeBreakType(codePoint) {\r\n const graphemeBreakTree = GraphemeBreakTree.getInstance();\r\n return graphemeBreakTree.getGraphemeBreakType(codePoint);\r\n}\r\nfunction breakBetweenGraphemeBreakType(breakTypeA, breakTypeB) {\r\n // http://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundary_Rules\r\n // !!! Let's make the common case a bit faster\r\n if (breakTypeA === 0 /* Other */) {\r\n // see https://www.unicode.org/Public/13.0.0/ucd/auxiliary/GraphemeBreakTest-13.0.0d10.html#table\r\n return (breakTypeB !== 5 /* Extend */ && breakTypeB !== 7 /* SpacingMark */);\r\n }\r\n // Do not break between a CR and LF. Otherwise, break before and after controls.\r\n // GB3 CR × LF\r\n // GB4 (Control | CR | LF) ÷\r\n // GB5 ÷ (Control | CR | LF)\r\n if (breakTypeA === 2 /* CR */) {\r\n if (breakTypeB === 3 /* LF */) {\r\n return false; // GB3\r\n }\r\n }\r\n if (breakTypeA === 4 /* Control */ || breakTypeA === 2 /* CR */ || breakTypeA === 3 /* LF */) {\r\n return true; // GB4\r\n }\r\n if (breakTypeB === 4 /* Control */ || breakTypeB === 2 /* CR */ || breakTypeB === 3 /* LF */) {\r\n return true; // GB5\r\n }\r\n // Do not break Hangul syllable sequences.\r\n // GB6 L × (L | V | LV | LVT)\r\n // GB7 (LV | V) × (V | T)\r\n // GB8 (LVT | T) × T\r\n if (breakTypeA === 8 /* L */) {\r\n if (breakTypeB === 8 /* L */ || breakTypeB === 9 /* V */ || breakTypeB === 11 /* LV */ || breakTypeB === 12 /* LVT */) {\r\n return false; // GB6\r\n }\r\n }\r\n if (breakTypeA === 11 /* LV */ || breakTypeA === 9 /* V */) {\r\n if (breakTypeB === 9 /* V */ || breakTypeB === 10 /* T */) {\r\n return false; // GB7\r\n }\r\n }\r\n if (breakTypeA === 12 /* LVT */ || breakTypeA === 10 /* T */) {\r\n if (breakTypeB === 10 /* T */) {\r\n return false; // GB8\r\n }\r\n }\r\n // Do not break before extending characters or ZWJ.\r\n // GB9 × (Extend | ZWJ)\r\n if (breakTypeB === 5 /* Extend */ || breakTypeB === 13 /* ZWJ */) {\r\n return false; // GB9\r\n }\r\n // The GB9a and GB9b rules only apply to extended grapheme clusters:\r\n // Do not break before SpacingMarks, or after Prepend characters.\r\n // GB9a × SpacingMark\r\n // GB9b Prepend ×\r\n if (breakTypeB === 7 /* SpacingMark */) {\r\n return false; // GB9a\r\n }\r\n if (breakTypeA === 1 /* Prepend */) {\r\n return false; // GB9b\r\n }\r\n // Do not break within emoji modifier sequences or emoji zwj sequences.\r\n // GB11 \\p{Extended_Pictographic} Extend* ZWJ × \\p{Extended_Pictographic}\r\n if (breakTypeA === 13 /* ZWJ */ && breakTypeB === 14 /* Extended_Pictographic */) {\r\n // Note: we are not implementing the rule entirely here to avoid introducing states\r\n return false; // GB11\r\n }\r\n // GB12 sot (RI RI)* RI × RI\r\n // GB13 [^RI] (RI RI)* RI × RI\r\n if (breakTypeA === 6 /* Regional_Indicator */ && breakTypeB === 6 /* Regional_Indicator */) {\r\n // Note: we are not implementing the rule entirely here to avoid introducing states\r\n return false; // GB12 & GB13\r\n }\r\n // GB999 Any ÷ Any\r\n return true;\r\n}\r\nclass GraphemeBreakTree {\r\n constructor() {\r\n this._data = getGraphemeBreakRawData();\r\n }\r\n static getInstance() {\r\n if (!GraphemeBreakTree._INSTANCE) {\r\n GraphemeBreakTree._INSTANCE = new GraphemeBreakTree();\r\n }\r\n return GraphemeBreakTree._INSTANCE;\r\n }\r\n getGraphemeBreakType(codePoint) {\r\n // !!! Let's make 7bit ASCII a bit faster: 0..31\r\n if (codePoint < 32) {\r\n if (codePoint === 10 /* LineFeed */) {\r\n return 3 /* LF */;\r\n }\r\n if (codePoint === 13 /* CarriageReturn */) {\r\n return 2 /* CR */;\r\n }\r\n return 4 /* Control */;\r\n }\r\n // !!! Let's make 7bit ASCII a bit faster: 32..126\r\n if (codePoint < 127) {\r\n return 0 /* Other */;\r\n }\r\n const data = this._data;\r\n const nodeCount = data.length / 3;\r\n let nodeIndex = 1;\r\n while (nodeIndex <= nodeCount) {\r\n if (codePoint < data[3 * nodeIndex]) {\r\n // go left\r\n nodeIndex = 2 * nodeIndex;\r\n }\r\n else if (codePoint > data[3 * nodeIndex + 1]) {\r\n // go right\r\n nodeIndex = 2 * nodeIndex + 1;\r\n }\r\n else {\r\n // hit\r\n return data[3 * nodeIndex + 2];\r\n }\r\n }\r\n return 0 /* Other */;\r\n }\r\n}\r\nGraphemeBreakTree._INSTANCE = null;\r\nfunction getGraphemeBreakRawData() {\r\n // generated using https://github.com/alexdima/unicode-utils/blob/master/generate-grapheme-break.js\r\n return JSON.parse('[0,0,0,51592,51592,11,44424,44424,11,72251,72254,5,7150,7150,7,48008,48008,11,55176,55176,11,128420,128420,14,3276,3277,5,9979,9980,14,46216,46216,11,49800,49800,11,53384,53384,11,70726,70726,5,122915,122916,5,129320,129327,14,2558,2558,5,5906,5908,5,9762,9763,14,43360,43388,8,45320,45320,11,47112,47112,11,48904,48904,11,50696,50696,11,52488,52488,11,54280,54280,11,70082,70083,1,71350,71350,7,73111,73111,5,127892,127893,14,128726,128727,14,129473,129474,14,2027,2035,5,2901,2902,5,3784,3789,5,6754,6754,5,8418,8420,5,9877,9877,14,11088,11088,14,44008,44008,5,44872,44872,11,45768,45768,11,46664,46664,11,47560,47560,11,48456,48456,11,49352,49352,11,50248,50248,11,51144,51144,11,52040,52040,11,52936,52936,11,53832,53832,11,54728,54728,11,69811,69814,5,70459,70460,5,71096,71099,7,71998,71998,5,72874,72880,5,119149,119149,7,127374,127374,14,128335,128335,14,128482,128482,14,128765,128767,14,129399,129400,14,129680,129685,14,1476,1477,5,2377,2380,7,2759,2760,5,3137,3140,7,3458,3459,7,4153,4154,5,6432,6434,5,6978,6978,5,7675,7679,5,9723,9726,14,9823,9823,14,9919,9923,14,10035,10036,14,42736,42737,5,43596,43596,5,44200,44200,11,44648,44648,11,45096,45096,11,45544,45544,11,45992,45992,11,46440,46440,11,46888,46888,11,47336,47336,11,47784,47784,11,48232,48232,11,48680,48680,11,49128,49128,11,49576,49576,11,50024,50024,11,50472,50472,11,50920,50920,11,51368,51368,11,51816,51816,11,52264,52264,11,52712,52712,11,53160,53160,11,53608,53608,11,54056,54056,11,54504,54504,11,54952,54952,11,68108,68111,5,69933,69940,5,70197,70197,7,70498,70499,7,70845,70845,5,71229,71229,5,71727,71735,5,72154,72155,5,72344,72345,5,73023,73029,5,94095,94098,5,121403,121452,5,126981,127182,14,127538,127546,14,127990,127990,14,128391,128391,14,128445,128449,14,128500,128505,14,128752,128752,14,129160,129167,14,129356,129356,14,129432,129442,14,129648,129651,14,129751,131069,14,173,173,4,1757,1757,1,2274,2274,1,2494,2494,5,2641,2641,5,2876,2876,5,3014,3016,7,3262,3262,7,3393,3396,5,3570,3571,7,3968,3972,5,4228,4228,7,6086,6086,5,6679,6680,5,6912,6915,5,7080,7081,5,7380,7392,5,8252,8252,14,9096,9096,14,9748,9749,14,9784,9786,14,9833,9850,14,9890,9894,14,9938,9938,14,9999,9999,14,10085,10087,14,12349,12349,14,43136,43137,7,43454,43456,7,43755,43755,7,44088,44088,11,44312,44312,11,44536,44536,11,44760,44760,11,44984,44984,11,45208,45208,11,45432,45432,11,45656,45656,11,45880,45880,11,46104,46104,11,46328,46328,11,46552,46552,11,46776,46776,11,47000,47000,11,47224,47224,11,47448,47448,11,47672,47672,11,47896,47896,11,48120,48120,11,48344,48344,11,48568,48568,11,48792,48792,11,49016,49016,11,49240,49240,11,49464,49464,11,49688,49688,11,49912,49912,11,50136,50136,11,50360,50360,11,50584,50584,11,50808,50808,11,51032,51032,11,51256,51256,11,51480,51480,11,51704,51704,11,51928,51928,11,52152,52152,11,52376,52376,11,52600,52600,11,52824,52824,11,53048,53048,11,53272,53272,11,53496,53496,11,53720,53720,11,53944,53944,11,54168,54168,11,54392,54392,11,54616,54616,11,54840,54840,11,55064,55064,11,65438,65439,5,69633,69633,5,69837,69837,1,70018,70018,7,70188,70190,7,70368,70370,7,70465,70468,7,70712,70719,5,70835,70840,5,70850,70851,5,71132,71133,5,71340,71340,7,71458,71461,5,71985,71989,7,72002,72002,7,72193,72202,5,72281,72283,5,72766,72766,7,72885,72886,5,73104,73105,5,92912,92916,5,113824,113827,4,119173,119179,5,121505,121519,5,125136,125142,5,127279,127279,14,127489,127490,14,127570,127743,14,127900,127901,14,128254,128254,14,128369,128370,14,128400,128400,14,128425,128432,14,128468,128475,14,128489,128494,14,128715,128720,14,128745,128745,14,128759,128760,14,129004,129023,14,129296,129304,14,129340,129342,14,129388,129392,14,129404,129407,14,129454,129455,14,129485,129487,14,129659,129663,14,129719,129727,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2363,2363,7,2402,2403,5,2507,2508,7,2622,2624,7,2691,2691,7,2786,2787,5,2881,2884,5,3006,3006,5,3072,3072,5,3170,3171,5,3267,3268,7,3330,3331,7,3406,3406,1,3538,3540,5,3655,3662,5,3897,3897,5,4038,4038,5,4184,4185,5,4352,4447,8,6068,6069,5,6155,6157,5,6448,6449,7,6742,6742,5,6783,6783,5,6966,6970,5,7042,7042,7,7143,7143,7,7212,7219,5,7412,7412,5,8206,8207,4,8294,8303,4,8596,8601,14,9410,9410,14,9742,9742,14,9757,9757,14,9770,9770,14,9794,9794,14,9828,9828,14,9855,9855,14,9882,9882,14,9900,9903,14,9929,9933,14,9963,9967,14,9987,9988,14,10006,10006,14,10062,10062,14,10175,10175,14,11744,11775,5,42607,42607,5,43043,43044,7,43263,43263,5,43444,43445,7,43569,43570,5,43698,43700,5,43766,43766,5,44032,44032,11,44144,44144,11,44256,44256,11,44368,44368,11,44480,44480,11,44592,44592,11,44704,44704,11,44816,44816,11,44928,44928,11,45040,45040,11,45152,45152,11,45264,45264,11,45376,45376,11,45488,45488,11,45600,45600,11,45712,45712,11,45824,45824,11,45936,45936,11,46048,46048,11,46160,46160,11,46272,46272,11,46384,46384,11,46496,46496,11,46608,46608,11,46720,46720,11,46832,46832,11,46944,46944,11,47056,47056,11,47168,47168,11,47280,47280,11,47392,47392,11,47504,47504,11,47616,47616,11,47728,47728,11,47840,47840,11,47952,47952,11,48064,48064,11,48176,48176,11,48288,48288,11,48400,48400,11,48512,48512,11,48624,48624,11,48736,48736,11,48848,48848,11,48960,48960,11,49072,49072,11,49184,49184,11,49296,49296,11,49408,49408,11,49520,49520,11,49632,49632,11,49744,49744,11,49856,49856,11,49968,49968,11,50080,50080,11,50192,50192,11,50304,50304,11,50416,50416,11,50528,50528,11,50640,50640,11,50752,50752,11,50864,50864,11,50976,50976,11,51088,51088,11,51200,51200,11,51312,51312,11,51424,51424,11,51536,51536,11,51648,51648,11,51760,51760,11,51872,51872,11,51984,51984,11,52096,52096,11,52208,52208,11,52320,52320,11,52432,52432,11,52544,52544,11,52656,52656,11,52768,52768,11,52880,52880,11,52992,52992,11,53104,53104,11,53216,53216,11,53328,53328,11,53440,53440,11,53552,53552,11,53664,53664,11,53776,53776,11,53888,53888,11,54000,54000,11,54112,54112,11,54224,54224,11,54336,54336,11,54448,54448,11,54560,54560,11,54672,54672,11,54784,54784,11,54896,54896,11,55008,55008,11,55120,55120,11,64286,64286,5,66272,66272,5,68900,68903,5,69762,69762,7,69817,69818,5,69927,69931,5,70003,70003,5,70070,70078,5,70094,70094,7,70194,70195,7,70206,70206,5,70400,70401,5,70463,70463,7,70475,70477,7,70512,70516,5,70722,70724,5,70832,70832,5,70842,70842,5,70847,70848,5,71088,71089,7,71102,71102,7,71219,71226,5,71231,71232,5,71342,71343,7,71453,71455,5,71463,71467,5,71737,71738,5,71995,71996,5,72000,72000,7,72145,72147,7,72160,72160,5,72249,72249,7,72273,72278,5,72330,72342,5,72752,72758,5,72850,72871,5,72882,72883,5,73018,73018,5,73031,73031,5,73109,73109,5,73461,73462,7,94031,94031,5,94192,94193,7,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,126976,126979,14,127184,127231,14,127344,127345,14,127405,127461,14,127514,127514,14,127561,127567,14,127778,127779,14,127896,127896,14,127985,127986,14,127995,127999,5,128326,128328,14,128360,128366,14,128378,128378,14,128394,128397,14,128405,128406,14,128422,128423,14,128435,128443,14,128453,128464,14,128479,128480,14,128484,128487,14,128496,128498,14,128640,128709,14,128723,128724,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129096,129103,14,129292,129292,14,129311,129311,14,129329,129330,14,129344,129349,14,129360,129374,14,129394,129394,14,129402,129402,14,129413,129425,14,129445,129450,14,129466,129471,14,129483,129483,14,129511,129535,14,129653,129655,14,129667,129670,14,129705,129711,14,129731,129743,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2307,2307,7,2366,2368,7,2382,2383,7,2434,2435,7,2497,2500,5,2519,2519,5,2563,2563,7,2631,2632,5,2677,2677,5,2750,2752,7,2763,2764,7,2817,2817,5,2879,2879,5,2891,2892,7,2914,2915,5,3008,3008,5,3021,3021,5,3076,3076,5,3146,3149,5,3202,3203,7,3264,3265,7,3271,3272,7,3298,3299,5,3390,3390,5,3402,3404,7,3426,3427,5,3535,3535,5,3544,3550,7,3635,3635,7,3763,3763,7,3893,3893,5,3953,3966,5,3981,3991,5,4145,4145,7,4157,4158,5,4209,4212,5,4237,4237,5,4520,4607,10,5970,5971,5,6071,6077,5,6089,6099,5,6277,6278,5,6439,6440,5,6451,6456,7,6683,6683,5,6744,6750,5,6765,6770,7,6846,6846,5,6964,6964,5,6972,6972,5,7019,7027,5,7074,7077,5,7083,7085,5,7146,7148,7,7154,7155,7,7222,7223,5,7394,7400,5,7416,7417,5,8204,8204,5,8233,8233,4,8288,8292,4,8413,8416,5,8482,8482,14,8986,8987,14,9193,9203,14,9654,9654,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9775,14,9792,9792,14,9800,9811,14,9825,9826,14,9831,9831,14,9852,9853,14,9872,9873,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9936,9936,14,9941,9960,14,9974,9974,14,9982,9985,14,9992,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10145,10145,14,11013,11015,14,11503,11505,5,12334,12335,5,12951,12951,14,42612,42621,5,43014,43014,5,43047,43047,7,43204,43205,5,43335,43345,5,43395,43395,7,43450,43451,7,43561,43566,5,43573,43574,5,43644,43644,5,43710,43711,5,43758,43759,7,44005,44005,5,44012,44012,7,44060,44060,11,44116,44116,11,44172,44172,11,44228,44228,11,44284,44284,11,44340,44340,11,44396,44396,11,44452,44452,11,44508,44508,11,44564,44564,11,44620,44620,11,44676,44676,11,44732,44732,11,44788,44788,11,44844,44844,11,44900,44900,11,44956,44956,11,45012,45012,11,45068,45068,11,45124,45124,11,45180,45180,11,45236,45236,11,45292,45292,11,45348,45348,11,45404,45404,11,45460,45460,11,45516,45516,11,45572,45572,11,45628,45628,11,45684,45684,11,45740,45740,11,45796,45796,11,45852,45852,11,45908,45908,11,45964,45964,11,46020,46020,11,46076,46076,11,46132,46132,11,46188,46188,11,46244,46244,11,46300,46300,11,46356,46356,11,46412,46412,11,46468,46468,11,46524,46524,11,46580,46580,11,46636,46636,11,46692,46692,11,46748,46748,11,46804,46804,11,46860,46860,11,46916,46916,11,46972,46972,11,47028,47028,11,47084,47084,11,47140,47140,11,47196,47196,11,47252,47252,11,47308,47308,11,47364,47364,11,47420,47420,11,47476,47476,11,47532,47532,11,47588,47588,11,47644,47644,11,47700,47700,11,47756,47756,11,47812,47812,11,47868,47868,11,47924,47924,11,47980,47980,11,48036,48036,11,48092,48092,11,48148,48148,11,48204,48204,11,48260,48260,11,48316,48316,11,48372,48372,11,48428,48428,11,48484,48484,11,48540,48540,11,48596,48596,11,48652,48652,11,48708,48708,11,48764,48764,11,48820,48820,11,48876,48876,11,48932,48932,11,48988,48988,11,49044,49044,11,49100,49100,11,49156,49156,11,49212,49212,11,49268,49268,11,49324,49324,11,49380,49380,11,49436,49436,11,49492,49492,11,49548,49548,11,49604,49604,11,49660,49660,11,49716,49716,11,49772,49772,11,49828,49828,11,49884,49884,11,49940,49940,11,49996,49996,11,50052,50052,11,50108,50108,11,50164,50164,11,50220,50220,11,50276,50276,11,50332,50332,11,50388,50388,11,50444,50444,11,50500,50500,11,50556,50556,11,50612,50612,11,50668,50668,11,50724,50724,11,50780,50780,11,50836,50836,11,50892,50892,11,50948,50948,11,51004,51004,11,51060,51060,11,51116,51116,11,51172,51172,11,51228,51228,11,51284,51284,11,51340,51340,11,51396,51396,11,51452,51452,11,51508,51508,11,51564,51564,11,51620,51620,11,51676,51676,11,51732,51732,11,51788,51788,11,51844,51844,11,51900,51900,11,51956,51956,11,52012,52012,11,52068,52068,11,52124,52124,11,52180,52180,11,52236,52236,11,52292,52292,11,52348,52348,11,52404,52404,11,52460,52460,11,52516,52516,11,52572,52572,11,52628,52628,11,52684,52684,11,52740,52740,11,52796,52796,11,52852,52852,11,52908,52908,11,52964,52964,11,53020,53020,11,53076,53076,11,53132,53132,11,53188,53188,11,53244,53244,11,53300,53300,11,53356,53356,11,53412,53412,11,53468,53468,11,53524,53524,11,53580,53580,11,53636,53636,11,53692,53692,11,53748,53748,11,53804,53804,11,53860,53860,11,53916,53916,11,53972,53972,11,54028,54028,11,54084,54084,11,54140,54140,11,54196,54196,11,54252,54252,11,54308,54308,11,54364,54364,11,54420,54420,11,54476,54476,11,54532,54532,11,54588,54588,11,54644,54644,11,54700,54700,11,54756,54756,11,54812,54812,11,54868,54868,11,54924,54924,11,54980,54980,11,55036,55036,11,55092,55092,11,55148,55148,11,55216,55238,9,65056,65071,5,65529,65531,4,68097,68099,5,68159,68159,5,69446,69456,5,69688,69702,5,69808,69810,7,69815,69816,7,69821,69821,1,69888,69890,5,69932,69932,7,69957,69958,7,70016,70017,5,70067,70069,7,70079,70080,7,70089,70092,5,70095,70095,5,70191,70193,5,70196,70196,5,70198,70199,5,70367,70367,5,70371,70378,5,70402,70403,7,70462,70462,5,70464,70464,5,70471,70472,7,70487,70487,5,70502,70508,5,70709,70711,7,70720,70721,7,70725,70725,7,70750,70750,5,70833,70834,7,70841,70841,7,70843,70844,7,70846,70846,7,70849,70849,7,71087,71087,5,71090,71093,5,71100,71101,5,71103,71104,5,71216,71218,7,71227,71228,7,71230,71230,7,71339,71339,5,71341,71341,5,71344,71349,5,71351,71351,5,71456,71457,7,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123628,123631,5,125252,125258,5,126980,126980,14,127183,127183,14,127245,127247,14,127340,127343,14,127358,127359,14,127377,127386,14,127462,127487,6,127491,127503,14,127535,127535,14,127548,127551,14,127568,127569,14,127744,127777,14,127780,127891,14,127894,127895,14,127897,127899,14,127902,127984,14,127987,127989,14,127991,127994,14,128000,128253,14,128255,128317,14,128329,128334,14,128336,128359,14,128367,128368,14,128371,128377,14,128379,128390,14,128392,128393,14,128398,128399,14,128401,128404,14,128407,128419,14,128421,128421,14,128424,128424,14,128433,128434,14,128444,128444,14,128450,128452,14,128465,128467,14,128476,128478,14,128481,128481,14,128483,128483,14,128488,128488,14,128495,128495,14,128499,128499,14,128506,128591,14,128710,128714,14,128721,128722,14,128725,128725,14,128728,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129664,129666,14,129671,129679,14,129686,129704,14,129712,129718,14,129728,129730,14,129744,129750,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2259,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3134,3136,5,3142,3144,5,3157,3158,5,3201,3201,5,3260,3260,5,3263,3263,5,3266,3266,5,3270,3270,5,3274,3275,7,3285,3286,5,3328,3329,5,3387,3388,5,3391,3392,7,3398,3400,7,3405,3405,5,3415,3415,5,3457,3457,5,3530,3530,5,3536,3537,7,3542,3542,5,3551,3551,5,3633,3633,5,3636,3642,5,3761,3761,5,3764,3772,5,3864,3865,5,3895,3895,5,3902,3903,7,3967,3967,7,3974,3975,5,3993,4028,5,4141,4144,5,4146,4151,5,4155,4156,7,4182,4183,7,4190,4192,5,4226,4226,5,4229,4230,5,4253,4253,5,4448,4519,9,4957,4959,5,5938,5940,5,6002,6003,5,6070,6070,7,6078,6085,7,6087,6088,7,6109,6109,5,6158,6158,4,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6848,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7673,5,8203,8203,4,8205,8205,13,8232,8232,4,8234,8238,4,8265,8265,14,8293,8293,4,8400,8412,5,8417,8417,5,8421,8432,5,8505,8505,14,8617,8618,14,9000,9000,14,9167,9167,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9776,9783,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9935,14,9937,9937,14,9939,9940,14,9961,9962,14,9968,9973,14,9975,9978,14,9981,9981,14,9986,9986,14,9989,9989,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10084,14,10133,10135,14,10160,10160,14,10548,10549,14,11035,11036,14,11093,11093,14,11647,11647,5,12330,12333,5,12336,12336,14,12441,12442,5,12953,12953,14,42608,42610,5,42654,42655,5,43010,43010,5,43019,43019,5,43045,43046,5,43052,43052,5,43188,43203,7,43232,43249,5,43302,43309,5,43346,43347,7,43392,43394,5,43443,43443,5,43446,43449,5,43452,43453,5,43493,43493,5,43567,43568,7,43571,43572,7,43587,43587,5,43597,43597,7,43696,43696,5,43703,43704,5,43713,43713,5,43756,43757,5,43765,43765,7,44003,44004,7,44006,44007,7,44009,44010,7,44013,44013,5,44033,44059,12,44061,44087,12,44089,44115,12,44117,44143,12,44145,44171,12,44173,44199,12,44201,44227,12,44229,44255,12,44257,44283,12,44285,44311,12,44313,44339,12,44341,44367,12,44369,44395,12,44397,44423,12,44425,44451,12,44453,44479,12,44481,44507,12,44509,44535,12,44537,44563,12,44565,44591,12,44593,44619,12,44621,44647,12,44649,44675,12,44677,44703,12,44705,44731,12,44733,44759,12,44761,44787,12,44789,44815,12,44817,44843,12,44845,44871,12,44873,44899,12,44901,44927,12,44929,44955,12,44957,44983,12,44985,45011,12,45013,45039,12,45041,45067,12,45069,45095,12,45097,45123,12,45125,45151,12,45153,45179,12,45181,45207,12,45209,45235,12,45237,45263,12,45265,45291,12,45293,45319,12,45321,45347,12,45349,45375,12,45377,45403,12,45405,45431,12,45433,45459,12,45461,45487,12,45489,45515,12,45517,45543,12,45545,45571,12,45573,45599,12,45601,45627,12,45629,45655,12,45657,45683,12,45685,45711,12,45713,45739,12,45741,45767,12,45769,45795,12,45797,45823,12,45825,45851,12,45853,45879,12,45881,45907,12,45909,45935,12,45937,45963,12,45965,45991,12,45993,46019,12,46021,46047,12,46049,46075,12,46077,46103,12,46105,46131,12,46133,46159,12,46161,46187,12,46189,46215,12,46217,46243,12,46245,46271,12,46273,46299,12,46301,46327,12,46329,46355,12,46357,46383,12,46385,46411,12,46413,46439,12,46441,46467,12,46469,46495,12,46497,46523,12,46525,46551,12,46553,46579,12,46581,46607,12,46609,46635,12,46637,46663,12,46665,46691,12,46693,46719,12,46721,46747,12,46749,46775,12,46777,46803,12,46805,46831,12,46833,46859,12,46861,46887,12,46889,46915,12,46917,46943,12,46945,46971,12,46973,46999,12,47001,47027,12,47029,47055,12,47057,47083,12,47085,47111,12,47113,47139,12,47141,47167,12,47169,47195,12,47197,47223,12,47225,47251,12,47253,47279,12,47281,47307,12,47309,47335,12,47337,47363,12,47365,47391,12,47393,47419,12,47421,47447,12,47449,47475,12,47477,47503,12,47505,47531,12,47533,47559,12,47561,47587,12,47589,47615,12,47617,47643,12,47645,47671,12,47673,47699,12,47701,47727,12,47729,47755,12,47757,47783,12,47785,47811,12,47813,47839,12,47841,47867,12,47869,47895,12,47897,47923,12,47925,47951,12,47953,47979,12,47981,48007,12,48009,48035,12,48037,48063,12,48065,48091,12,48093,48119,12,48121,48147,12,48149,48175,12,48177,48203,12,48205,48231,12,48233,48259,12,48261,48287,12,48289,48315,12,48317,48343,12,48345,48371,12,48373,48399,12,48401,48427,12,48429,48455,12,48457,48483,12,48485,48511,12,48513,48539,12,48541,48567,12,48569,48595,12,48597,48623,12,48625,48651,12,48653,48679,12,48681,48707,12,48709,48735,12,48737,48763,12,48765,48791,12,48793,48819,12,48821,48847,12,48849,48875,12,48877,48903,12,48905,48931,12,48933,48959,12,48961,48987,12,48989,49015,12,49017,49043,12,49045,49071,12,49073,49099,12,49101,49127,12,49129,49155,12,49157,49183,12,49185,49211,12,49213,49239,12,49241,49267,12,49269,49295,12,49297,49323,12,49325,49351,12,49353,49379,12,49381,49407,12,49409,49435,12,49437,49463,12,49465,49491,12,49493,49519,12,49521,49547,12,49549,49575,12,49577,49603,12,49605,49631,12,49633,49659,12,49661,49687,12,49689,49715,12,49717,49743,12,49745,49771,12,49773,49799,12,49801,49827,12,49829,49855,12,49857,49883,12,49885,49911,12,49913,49939,12,49941,49967,12,49969,49995,12,49997,50023,12,50025,50051,12,50053,50079,12,50081,50107,12,50109,50135,12,50137,50163,12,50165,50191,12,50193,50219,12,50221,50247,12,50249,50275,12,50277,50303,12,50305,50331,12,50333,50359,12,50361,50387,12,50389,50415,12,50417,50443,12,50445,50471,12,50473,50499,12,50501,50527,12,50529,50555,12,50557,50583,12,50585,50611,12,50613,50639,12,50641,50667,12,50669,50695,12,50697,50723,12,50725,50751,12,50753,50779,12,50781,50807,12,50809,50835,12,50837,50863,12,50865,50891,12,50893,50919,12,50921,50947,12,50949,50975,12,50977,51003,12,51005,51031,12,51033,51059,12,51061,51087,12,51089,51115,12,51117,51143,12,51145,51171,12,51173,51199,12,51201,51227,12,51229,51255,12,51257,51283,12,51285,51311,12,51313,51339,12,51341,51367,12,51369,51395,12,51397,51423,12,51425,51451,12,51453,51479,12,51481,51507,12,51509,51535,12,51537,51563,12,51565,51591,12,51593,51619,12,51621,51647,12,51649,51675,12,51677,51703,12,51705,51731,12,51733,51759,12,51761,51787,12,51789,51815,12,51817,51843,12,51845,51871,12,51873,51899,12,51901,51927,12,51929,51955,12,51957,51983,12,51985,52011,12,52013,52039,12,52041,52067,12,52069,52095,12,52097,52123,12,52125,52151,12,52153,52179,12,52181,52207,12,52209,52235,12,52237,52263,12,52265,52291,12,52293,52319,12,52321,52347,12,52349,52375,12,52377,52403,12,52405,52431,12,52433,52459,12,52461,52487,12,52489,52515,12,52517,52543,12,52545,52571,12,52573,52599,12,52601,52627,12,52629,52655,12,52657,52683,12,52685,52711,12,52713,52739,12,52741,52767,12,52769,52795,12,52797,52823,12,52825,52851,12,52853,52879,12,52881,52907,12,52909,52935,12,52937,52963,12,52965,52991,12,52993,53019,12,53021,53047,12,53049,53075,12,53077,53103,12,53105,53131,12,53133,53159,12,53161,53187,12,53189,53215,12,53217,53243,12,53245,53271,12,53273,53299,12,53301,53327,12,53329,53355,12,53357,53383,12,53385,53411,12,53413,53439,12,53441,53467,12,53469,53495,12,53497,53523,12,53525,53551,12,53553,53579,12,53581,53607,12,53609,53635,12,53637,53663,12,53665,53691,12,53693,53719,12,53721,53747,12,53749,53775,12,53777,53803,12,53805,53831,12,53833,53859,12,53861,53887,12,53889,53915,12,53917,53943,12,53945,53971,12,53973,53999,12,54001,54027,12,54029,54055,12,54057,54083,12,54085,54111,12,54113,54139,12,54141,54167,12,54169,54195,12,54197,54223,12,54225,54251,12,54253,54279,12,54281,54307,12,54309,54335,12,54337,54363,12,54365,54391,12,54393,54419,12,54421,54447,12,54449,54475,12,54477,54503,12,54505,54531,12,54533,54559,12,54561,54587,12,54589,54615,12,54617,54643,12,54645,54671,12,54673,54699,12,54701,54727,12,54729,54755,12,54757,54783,12,54785,54811,12,54813,54839,12,54841,54867,12,54869,54895,12,54897,54923,12,54925,54951,12,54953,54979,12,54981,55007,12,55009,55035,12,55037,55063,12,55065,55091,12,55093,55119,12,55121,55147,12,55149,55175,12,55177,55203,12,55243,55291,10,65024,65039,5,65279,65279,4,65520,65528,4,66045,66045,5,66422,66426,5,68101,68102,5,68152,68154,5,68325,68326,5,69291,69292,5,69632,69632,7,69634,69634,7,69759,69761,5]');\r\n}\r\n//#endregion\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/base/common/strings.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/base/common/types.js": /*!****************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/base/common/types.js ***! \****************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"isArray\": () => (/* binding */ isArray),\n/* harmony export */ \"isString\": () => (/* binding */ isString),\n/* harmony export */ \"isObject\": () => (/* binding */ isObject),\n/* harmony export */ \"isNumber\": () => (/* binding */ isNumber),\n/* harmony export */ \"isBoolean\": () => (/* binding */ isBoolean),\n/* harmony export */ \"isUndefined\": () => (/* binding */ isUndefined),\n/* harmony export */ \"isUndefinedOrNull\": () => (/* binding */ isUndefinedOrNull),\n/* harmony export */ \"assertType\": () => (/* binding */ assertType),\n/* harmony export */ \"assertIsDefined\": () => (/* binding */ assertIsDefined),\n/* harmony export */ \"isFunction\": () => (/* binding */ isFunction),\n/* harmony export */ \"validateConstraints\": () => (/* binding */ validateConstraints),\n/* harmony export */ \"validateConstraint\": () => (/* binding */ validateConstraint),\n/* harmony export */ \"getAllPropertyNames\": () => (/* binding */ getAllPropertyNames),\n/* harmony export */ \"getAllMethodNames\": () => (/* binding */ getAllMethodNames),\n/* harmony export */ \"createProxyObject\": () => (/* binding */ createProxyObject),\n/* harmony export */ \"withNullAsUndefined\": () => (/* binding */ withNullAsUndefined)\n/* harmony export */ });\n/**\r\n * @returns whether the provided parameter is a JavaScript Array or not.\r\n */\r\nfunction isArray(array) {\r\n return Array.isArray(array);\r\n}\r\n/**\r\n * @returns whether the provided parameter is a JavaScript String or not.\r\n */\r\nfunction isString(str) {\r\n return (typeof str === 'string');\r\n}\r\n/**\r\n *\r\n * @returns whether the provided parameter is of type `object` but **not**\r\n *\t`null`, an `array`, a `regexp`, nor a `date`.\r\n */\r\nfunction isObject(obj) {\r\n // The method can't do a type cast since there are type (like strings) which\r\n // are subclasses of any put not positvely matched by the function. Hence type\r\n // narrowing results in wrong results.\r\n return typeof obj === 'object'\r\n && obj !== null\r\n && !Array.isArray(obj)\r\n && !(obj instanceof RegExp)\r\n && !(obj instanceof Date);\r\n}\r\n/**\r\n * In **contrast** to just checking `typeof` this will return `false` for `NaN`.\r\n * @returns whether the provided parameter is a JavaScript Number or not.\r\n */\r\nfunction isNumber(obj) {\r\n return (typeof obj === 'number' && !isNaN(obj));\r\n}\r\n/**\r\n * @returns whether the provided parameter is a JavaScript Boolean or not.\r\n */\r\nfunction isBoolean(obj) {\r\n return (obj === true || obj === false);\r\n}\r\n/**\r\n * @returns whether the provided parameter is undefined.\r\n */\r\nfunction isUndefined(obj) {\r\n return (typeof obj === 'undefined');\r\n}\r\n/**\r\n * @returns whether the provided parameter is undefined or null.\r\n */\r\nfunction isUndefinedOrNull(obj) {\r\n return (isUndefined(obj) || obj === null);\r\n}\r\nfunction assertType(condition, type) {\r\n if (!condition) {\r\n throw new Error(type ? `Unexpected type, expected '${type}'` : 'Unexpected type');\r\n }\r\n}\r\n/**\r\n * Asserts that the argument passed in is neither undefined nor null.\r\n */\r\nfunction assertIsDefined(arg) {\r\n if (isUndefinedOrNull(arg)) {\r\n throw new Error('Assertion Failed: argument is undefined or null');\r\n }\r\n return arg;\r\n}\r\n/**\r\n * @returns whether the provided parameter is a JavaScript Function or not.\r\n */\r\nfunction isFunction(obj) {\r\n return (typeof obj === 'function');\r\n}\r\nfunction validateConstraints(args, constraints) {\r\n const len = Math.min(args.length, constraints.length);\r\n for (let i = 0; i < len; i++) {\r\n validateConstraint(args[i], constraints[i]);\r\n }\r\n}\r\nfunction validateConstraint(arg, constraint) {\r\n if (isString(constraint)) {\r\n if (typeof arg !== constraint) {\r\n throw new Error(`argument does not match constraint: typeof ${constraint}`);\r\n }\r\n }\r\n else if (isFunction(constraint)) {\r\n try {\r\n if (arg instanceof constraint) {\r\n return;\r\n }\r\n }\r\n catch (_a) {\r\n // ignore\r\n }\r\n if (!isUndefinedOrNull(arg) && arg.constructor === constraint) {\r\n return;\r\n }\r\n if (constraint.length === 1 && constraint.call(undefined, arg) === true) {\r\n return;\r\n }\r\n throw new Error(`argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true`);\r\n }\r\n}\r\nfunction getAllPropertyNames(obj) {\r\n let res = [];\r\n let proto = Object.getPrototypeOf(obj);\r\n while (Object.prototype !== proto) {\r\n res = res.concat(Object.getOwnPropertyNames(proto));\r\n proto = Object.getPrototypeOf(proto);\r\n }\r\n return res;\r\n}\r\nfunction getAllMethodNames(obj) {\r\n const methods = [];\r\n for (const prop of getAllPropertyNames(obj)) {\r\n if (typeof obj[prop] === 'function') {\r\n methods.push(prop);\r\n }\r\n }\r\n return methods;\r\n}\r\nfunction createProxyObject(methodNames, invoke) {\r\n const createProxyMethod = (method) => {\r\n return function () {\r\n const args = Array.prototype.slice.call(arguments, 0);\r\n return invoke(method, args);\r\n };\r\n };\r\n let result = {};\r\n for (const methodName of methodNames) {\r\n result[methodName] = createProxyMethod(methodName);\r\n }\r\n return result;\r\n}\r\n/**\r\n * Converts null to undefined, passes all other values through.\r\n */\r\nfunction withNullAsUndefined(x) {\r\n return x === null ? undefined : x;\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/base/common/types.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/base/common/uint.js": /*!***************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/base/common/uint.js ***! \***************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"toUint8\": () => (/* binding */ toUint8),\n/* harmony export */ \"toUint32\": () => (/* binding */ toUint32)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nfunction toUint8(v) {\r\n if (v < 0) {\r\n return 0;\r\n }\r\n if (v > 255 /* MAX_UINT_8 */) {\r\n return 255 /* MAX_UINT_8 */;\r\n }\r\n return v | 0;\r\n}\r\nfunction toUint32(v) {\r\n if (v < 0) {\r\n return 0;\r\n }\r\n if (v > 4294967295 /* MAX_UINT_32 */) {\r\n return 4294967295 /* MAX_UINT_32 */;\r\n }\r\n return v | 0;\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/base/common/uint.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/base/common/uri.js": /*!**************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/base/common/uri.js ***! \**************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"URI\": () => (/* binding */ URI),\n/* harmony export */ \"uriToFsPath\": () => (/* binding */ uriToFsPath)\n/* harmony export */ });\n/* harmony import */ var _platform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./path.js */ \"./node_modules/monaco-editor/esm/vs/base/common/path.js\");\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n\r\nconst _schemePattern = /^\\w[\\w\\d+.-]*$/;\r\nconst _singleSlashStart = /^\\//;\r\nconst _doubleSlashStart = /^\\/\\//;\r\nfunction _validateUri(ret, _strict) {\r\n // scheme, must be set\r\n if (!ret.scheme && _strict) {\r\n throw new Error(`[UriError]: Scheme is missing: {scheme: \"\", authority: \"${ret.authority}\", path: \"${ret.path}\", query: \"${ret.query}\", fragment: \"${ret.fragment}\"}`);\r\n }\r\n // scheme, https://tools.ietf.org/html/rfc3986#section-3.1\r\n // ALPHA *( ALPHA / DIGIT / \"+\" / \"-\" / \".\" )\r\n if (ret.scheme && !_schemePattern.test(ret.scheme)) {\r\n throw new Error('[UriError]: Scheme contains illegal characters.');\r\n }\r\n // path, http://tools.ietf.org/html/rfc3986#section-3.3\r\n // If a URI contains an authority component, then the path component\r\n // must either be empty or begin with a slash (\"/\") character. If a URI\r\n // does not contain an authority component, then the path cannot begin\r\n // with two slash characters (\"//\").\r\n if (ret.path) {\r\n if (ret.authority) {\r\n if (!_singleSlashStart.test(ret.path)) {\r\n throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash (\"/\") character');\r\n }\r\n }\r\n else {\r\n if (_doubleSlashStart.test(ret.path)) {\r\n throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters (\"//\")');\r\n }\r\n }\r\n }\r\n}\r\n// for a while we allowed uris *without* schemes and this is the migration\r\n// for them, e.g. an uri without scheme and without strict-mode warns and falls\r\n// back to the file-scheme. that should cause the least carnage and still be a\r\n// clear warning\r\nfunction _schemeFix(scheme, _strict) {\r\n if (!scheme && !_strict) {\r\n return 'file';\r\n }\r\n return scheme;\r\n}\r\n// implements a bit of https://tools.ietf.org/html/rfc3986#section-5\r\nfunction _referenceResolution(scheme, path) {\r\n // the slash-character is our 'default base' as we don't\r\n // support constructing URIs relative to other URIs. This\r\n // also means that we alter and potentially break paths.\r\n // see https://tools.ietf.org/html/rfc3986#section-5.1.4\r\n switch (scheme) {\r\n case 'https':\r\n case 'http':\r\n case 'file':\r\n if (!path) {\r\n path = _slash;\r\n }\r\n else if (path[0] !== _slash) {\r\n path = _slash + path;\r\n }\r\n break;\r\n }\r\n return path;\r\n}\r\nconst _empty = '';\r\nconst _slash = '/';\r\nconst _regexp = /^(([^:/?#]+?):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\r\n/**\r\n * Uniform Resource Identifier (URI) http://tools.ietf.org/html/rfc3986.\r\n * This class is a simple parser which creates the basic component parts\r\n * (http://tools.ietf.org/html/rfc3986#section-3) with minimal validation\r\n * and encoding.\r\n *\r\n * ```txt\r\n * foo://example.com:8042/over/there?name=ferret#nose\r\n * \\_/ \\______________/\\_________/ \\_________/ \\__/\r\n * | | | | |\r\n * scheme authority path query fragment\r\n * | _____________________|__\r\n * / \\ / \\\r\n * urn:example:animal:ferret:nose\r\n * ```\r\n */\r\nclass URI {\r\n /**\r\n * @internal\r\n */\r\n constructor(schemeOrData, authority, path, query, fragment, _strict = false) {\r\n if (typeof schemeOrData === 'object') {\r\n this.scheme = schemeOrData.scheme || _empty;\r\n this.authority = schemeOrData.authority || _empty;\r\n this.path = schemeOrData.path || _empty;\r\n this.query = schemeOrData.query || _empty;\r\n this.fragment = schemeOrData.fragment || _empty;\r\n // no validation because it's this URI\r\n // that creates uri components.\r\n // _validateUri(this);\r\n }\r\n else {\r\n this.scheme = _schemeFix(schemeOrData, _strict);\r\n this.authority = authority || _empty;\r\n this.path = _referenceResolution(this.scheme, path || _empty);\r\n this.query = query || _empty;\r\n this.fragment = fragment || _empty;\r\n _validateUri(this, _strict);\r\n }\r\n }\r\n static isUri(thing) {\r\n if (thing instanceof URI) {\r\n return true;\r\n }\r\n if (!thing) {\r\n return false;\r\n }\r\n return typeof thing.authority === 'string'\r\n && typeof thing.fragment === 'string'\r\n && typeof thing.path === 'string'\r\n && typeof thing.query === 'string'\r\n && typeof thing.scheme === 'string'\r\n && typeof thing.fsPath === 'string'\r\n && typeof thing.with === 'function'\r\n && typeof thing.toString === 'function';\r\n }\r\n // ---- filesystem path -----------------------\r\n /**\r\n * Returns a string representing the corresponding file system path of this URI.\r\n * Will handle UNC paths, normalizes windows drive letters to lower-case, and uses the\r\n * platform specific path separator.\r\n *\r\n * * Will *not* validate the path for invalid characters and semantics.\r\n * * Will *not* look at the scheme of this URI.\r\n * * The result shall *not* be used for display purposes but for accessing a file on disk.\r\n *\r\n *\r\n * The *difference* to `URI#path` is the use of the platform specific separator and the handling\r\n * of UNC paths. See the below sample of a file-uri with an authority (UNC path).\r\n *\r\n * ```ts\r\n const u = URI.parse('file://server/c$/folder/file.txt')\r\n u.authority === 'server'\r\n u.path === '/shares/c$/file.txt'\r\n u.fsPath === '\\\\server\\c$\\folder\\file.txt'\r\n ```\r\n *\r\n * Using `URI#path` to read a file (using fs-apis) would not be enough because parts of the path,\r\n * namely the server name, would be missing. Therefore `URI#fsPath` exists - it's sugar to ease working\r\n * with URIs that represent files on disk (`file` scheme).\r\n */\r\n get fsPath() {\r\n // if (this.scheme !== 'file') {\r\n // \tconsole.warn(`[UriError] calling fsPath with scheme ${this.scheme}`);\r\n // }\r\n return uriToFsPath(this, false);\r\n }\r\n // ---- modify to new -------------------------\r\n with(change) {\r\n if (!change) {\r\n return this;\r\n }\r\n let { scheme, authority, path, query, fragment } = change;\r\n if (scheme === undefined) {\r\n scheme = this.scheme;\r\n }\r\n else if (scheme === null) {\r\n scheme = _empty;\r\n }\r\n if (authority === undefined) {\r\n authority = this.authority;\r\n }\r\n else if (authority === null) {\r\n authority = _empty;\r\n }\r\n if (path === undefined) {\r\n path = this.path;\r\n }\r\n else if (path === null) {\r\n path = _empty;\r\n }\r\n if (query === undefined) {\r\n query = this.query;\r\n }\r\n else if (query === null) {\r\n query = _empty;\r\n }\r\n if (fragment === undefined) {\r\n fragment = this.fragment;\r\n }\r\n else if (fragment === null) {\r\n fragment = _empty;\r\n }\r\n if (scheme === this.scheme\r\n && authority === this.authority\r\n && path === this.path\r\n && query === this.query\r\n && fragment === this.fragment) {\r\n return this;\r\n }\r\n return new Uri(scheme, authority, path, query, fragment);\r\n }\r\n // ---- parse & validate ------------------------\r\n /**\r\n * Creates a new URI from a string, e.g. `http://www.msft.com/some/path`,\r\n * `file:///usr/home`, or `scheme:with/path`.\r\n *\r\n * @param value A string which represents an URI (see `URI#toString`).\r\n */\r\n static parse(value, _strict = false) {\r\n const match = _regexp.exec(value);\r\n if (!match) {\r\n return new Uri(_empty, _empty, _empty, _empty, _empty);\r\n }\r\n return new Uri(match[2] || _empty, percentDecode(match[4] || _empty), percentDecode(match[5] || _empty), percentDecode(match[7] || _empty), percentDecode(match[9] || _empty), _strict);\r\n }\r\n /**\r\n * Creates a new URI from a file system path, e.g. `c:\\my\\files`,\r\n * `/usr/home`, or `\\\\server\\share\\some\\path`.\r\n *\r\n * The *difference* between `URI#parse` and `URI#file` is that the latter treats the argument\r\n * as path, not as stringified-uri. E.g. `URI.file(path)` is **not the same as**\r\n * `URI.parse('file://' + path)` because the path might contain characters that are\r\n * interpreted (# and ?). See the following sample:\r\n * ```ts\r\n const good = URI.file('/coding/c#/project1');\r\n good.scheme === 'file';\r\n good.path === '/coding/c#/project1';\r\n good.fragment === '';\r\n const bad = URI.parse('file://' + '/coding/c#/project1');\r\n bad.scheme === 'file';\r\n bad.path === '/coding/c'; // path is now broken\r\n bad.fragment === '/project1';\r\n ```\r\n *\r\n * @param path A file system path (see `URI#fsPath`)\r\n */\r\n static file(path) {\r\n let authority = _empty;\r\n // normalize to fwd-slashes on windows,\r\n // on other systems bwd-slashes are valid\r\n // filename character, eg /f\\oo/ba\\r.txt\r\n if (_platform_js__WEBPACK_IMPORTED_MODULE_0__.isWindows) {\r\n path = path.replace(/\\\\/g, _slash);\r\n }\r\n // check for authority as used in UNC shares\r\n // or use the path as given\r\n if (path[0] === _slash && path[1] === _slash) {\r\n const idx = path.indexOf(_slash, 2);\r\n if (idx === -1) {\r\n authority = path.substring(2);\r\n path = _slash;\r\n }\r\n else {\r\n authority = path.substring(2, idx);\r\n path = path.substring(idx) || _slash;\r\n }\r\n }\r\n return new Uri('file', authority, path, _empty, _empty);\r\n }\r\n static from(components) {\r\n return new Uri(components.scheme, components.authority, components.path, components.query, components.fragment);\r\n }\r\n /**\r\n * Join a URI path with path fragments and normalizes the resulting path.\r\n *\r\n * @param uri The input URI.\r\n * @param pathFragment The path fragment to add to the URI path.\r\n * @returns The resulting URI.\r\n */\r\n static joinPath(uri, ...pathFragment) {\r\n if (!uri.path) {\r\n throw new Error(`[UriError]: cannot call joinPath on URI without path`);\r\n }\r\n let newPath;\r\n if (_platform_js__WEBPACK_IMPORTED_MODULE_0__.isWindows && uri.scheme === 'file') {\r\n newPath = URI.file(_path_js__WEBPACK_IMPORTED_MODULE_1__.win32.join(uriToFsPath(uri, true), ...pathFragment)).path;\r\n }\r\n else {\r\n newPath = _path_js__WEBPACK_IMPORTED_MODULE_1__.posix.join(uri.path, ...pathFragment);\r\n }\r\n return uri.with({ path: newPath });\r\n }\r\n // ---- printing/externalize ---------------------------\r\n /**\r\n * Creates a string representation for this URI. It's guaranteed that calling\r\n * `URI.parse` with the result of this function creates an URI which is equal\r\n * to this URI.\r\n *\r\n * * The result shall *not* be used for display purposes but for externalization or transport.\r\n * * The result will be encoded using the percentage encoding and encoding happens mostly\r\n * ignore the scheme-specific encoding rules.\r\n *\r\n * @param skipEncoding Do not encode the result, default is `false`\r\n */\r\n toString(skipEncoding = false) {\r\n return _asFormatted(this, skipEncoding);\r\n }\r\n toJSON() {\r\n return this;\r\n }\r\n static revive(data) {\r\n if (!data) {\r\n return data;\r\n }\r\n else if (data instanceof URI) {\r\n return data;\r\n }\r\n else {\r\n const result = new Uri(data);\r\n result._formatted = data.external;\r\n result._fsPath = data._sep === _pathSepMarker ? data.fsPath : null;\r\n return result;\r\n }\r\n }\r\n}\r\nconst _pathSepMarker = _platform_js__WEBPACK_IMPORTED_MODULE_0__.isWindows ? 1 : undefined;\r\n// This class exists so that URI is compatibile with vscode.Uri (API).\r\nclass Uri extends URI {\r\n constructor() {\r\n super(...arguments);\r\n this._formatted = null;\r\n this._fsPath = null;\r\n }\r\n get fsPath() {\r\n if (!this._fsPath) {\r\n this._fsPath = uriToFsPath(this, false);\r\n }\r\n return this._fsPath;\r\n }\r\n toString(skipEncoding = false) {\r\n if (!skipEncoding) {\r\n if (!this._formatted) {\r\n this._formatted = _asFormatted(this, false);\r\n }\r\n return this._formatted;\r\n }\r\n else {\r\n // we don't cache that\r\n return _asFormatted(this, true);\r\n }\r\n }\r\n toJSON() {\r\n const res = {\r\n $mid: 1\r\n };\r\n // cached state\r\n if (this._fsPath) {\r\n res.fsPath = this._fsPath;\r\n res._sep = _pathSepMarker;\r\n }\r\n if (this._formatted) {\r\n res.external = this._formatted;\r\n }\r\n // uri components\r\n if (this.path) {\r\n res.path = this.path;\r\n }\r\n if (this.scheme) {\r\n res.scheme = this.scheme;\r\n }\r\n if (this.authority) {\r\n res.authority = this.authority;\r\n }\r\n if (this.query) {\r\n res.query = this.query;\r\n }\r\n if (this.fragment) {\r\n res.fragment = this.fragment;\r\n }\r\n return res;\r\n }\r\n}\r\n// reserved characters: https://tools.ietf.org/html/rfc3986#section-2.2\r\nconst encodeTable = {\r\n [58 /* Colon */]: '%3A',\r\n [47 /* Slash */]: '%2F',\r\n [63 /* QuestionMark */]: '%3F',\r\n [35 /* Hash */]: '%23',\r\n [91 /* OpenSquareBracket */]: '%5B',\r\n [93 /* CloseSquareBracket */]: '%5D',\r\n [64 /* AtSign */]: '%40',\r\n [33 /* ExclamationMark */]: '%21',\r\n [36 /* DollarSign */]: '%24',\r\n [38 /* Ampersand */]: '%26',\r\n [39 /* SingleQuote */]: '%27',\r\n [40 /* OpenParen */]: '%28',\r\n [41 /* CloseParen */]: '%29',\r\n [42 /* Asterisk */]: '%2A',\r\n [43 /* Plus */]: '%2B',\r\n [44 /* Comma */]: '%2C',\r\n [59 /* Semicolon */]: '%3B',\r\n [61 /* Equals */]: '%3D',\r\n [32 /* Space */]: '%20',\r\n};\r\nfunction encodeURIComponentFast(uriComponent, allowSlash) {\r\n let res = undefined;\r\n let nativeEncodePos = -1;\r\n for (let pos = 0; pos < uriComponent.length; pos++) {\r\n const code = uriComponent.charCodeAt(pos);\r\n // unreserved characters: https://tools.ietf.org/html/rfc3986#section-2.3\r\n if ((code >= 97 /* a */ && code <= 122 /* z */)\r\n || (code >= 65 /* A */ && code <= 90 /* Z */)\r\n || (code >= 48 /* Digit0 */ && code <= 57 /* Digit9 */)\r\n || code === 45 /* Dash */\r\n || code === 46 /* Period */\r\n || code === 95 /* Underline */\r\n || code === 126 /* Tilde */\r\n || (allowSlash && code === 47 /* Slash */)) {\r\n // check if we are delaying native encode\r\n if (nativeEncodePos !== -1) {\r\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\r\n nativeEncodePos = -1;\r\n }\r\n // check if we write into a new string (by default we try to return the param)\r\n if (res !== undefined) {\r\n res += uriComponent.charAt(pos);\r\n }\r\n }\r\n else {\r\n // encoding needed, we need to allocate a new string\r\n if (res === undefined) {\r\n res = uriComponent.substr(0, pos);\r\n }\r\n // check with default table first\r\n const escaped = encodeTable[code];\r\n if (escaped !== undefined) {\r\n // check if we are delaying native encode\r\n if (nativeEncodePos !== -1) {\r\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\r\n nativeEncodePos = -1;\r\n }\r\n // append escaped variant to result\r\n res += escaped;\r\n }\r\n else if (nativeEncodePos === -1) {\r\n // use native encode only when needed\r\n nativeEncodePos = pos;\r\n }\r\n }\r\n }\r\n if (nativeEncodePos !== -1) {\r\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos));\r\n }\r\n return res !== undefined ? res : uriComponent;\r\n}\r\nfunction encodeURIComponentMinimal(path) {\r\n let res = undefined;\r\n for (let pos = 0; pos < path.length; pos++) {\r\n const code = path.charCodeAt(pos);\r\n if (code === 35 /* Hash */ || code === 63 /* QuestionMark */) {\r\n if (res === undefined) {\r\n res = path.substr(0, pos);\r\n }\r\n res += encodeTable[code];\r\n }\r\n else {\r\n if (res !== undefined) {\r\n res += path[pos];\r\n }\r\n }\r\n }\r\n return res !== undefined ? res : path;\r\n}\r\n/**\r\n * Compute `fsPath` for the given uri\r\n */\r\nfunction uriToFsPath(uri, keepDriveLetterCasing) {\r\n let value;\r\n if (uri.authority && uri.path.length > 1 && uri.scheme === 'file') {\r\n // unc path: file://shares/c$/far/boo\r\n value = `//${uri.authority}${uri.path}`;\r\n }\r\n else if (uri.path.charCodeAt(0) === 47 /* Slash */\r\n && (uri.path.charCodeAt(1) >= 65 /* A */ && uri.path.charCodeAt(1) <= 90 /* Z */ || uri.path.charCodeAt(1) >= 97 /* a */ && uri.path.charCodeAt(1) <= 122 /* z */)\r\n && uri.path.charCodeAt(2) === 58 /* Colon */) {\r\n if (!keepDriveLetterCasing) {\r\n // windows drive letter: file:///c:/far/boo\r\n value = uri.path[1].toLowerCase() + uri.path.substr(2);\r\n }\r\n else {\r\n value = uri.path.substr(1);\r\n }\r\n }\r\n else {\r\n // other path\r\n value = uri.path;\r\n }\r\n if (_platform_js__WEBPACK_IMPORTED_MODULE_0__.isWindows) {\r\n value = value.replace(/\\//g, '\\\\');\r\n }\r\n return value;\r\n}\r\n/**\r\n * Create the external version of a uri\r\n */\r\nfunction _asFormatted(uri, skipEncoding) {\r\n const encoder = !skipEncoding\r\n ? encodeURIComponentFast\r\n : encodeURIComponentMinimal;\r\n let res = '';\r\n let { scheme, authority, path, query, fragment } = uri;\r\n if (scheme) {\r\n res += scheme;\r\n res += ':';\r\n }\r\n if (authority || scheme === 'file') {\r\n res += _slash;\r\n res += _slash;\r\n }\r\n if (authority) {\r\n let idx = authority.indexOf('@');\r\n if (idx !== -1) {\r\n // @\r\n const userinfo = authority.substr(0, idx);\r\n authority = authority.substr(idx + 1);\r\n idx = userinfo.indexOf(':');\r\n if (idx === -1) {\r\n res += encoder(userinfo, false);\r\n }\r\n else {\r\n // :@\r\n res += encoder(userinfo.substr(0, idx), false);\r\n res += ':';\r\n res += encoder(userinfo.substr(idx + 1), false);\r\n }\r\n res += '@';\r\n }\r\n authority = authority.toLowerCase();\r\n idx = authority.indexOf(':');\r\n if (idx === -1) {\r\n res += encoder(authority, false);\r\n }\r\n else {\r\n // :\r\n res += encoder(authority.substr(0, idx), false);\r\n res += authority.substr(idx);\r\n }\r\n }\r\n if (path) {\r\n // lower-case windows drive letters in /C:/fff or C:/fff\r\n if (path.length >= 3 && path.charCodeAt(0) === 47 /* Slash */ && path.charCodeAt(2) === 58 /* Colon */) {\r\n const code = path.charCodeAt(1);\r\n if (code >= 65 /* A */ && code <= 90 /* Z */) {\r\n path = `/${String.fromCharCode(code + 32)}:${path.substr(3)}`; // \"/c:\".length === 3\r\n }\r\n }\r\n else if (path.length >= 2 && path.charCodeAt(1) === 58 /* Colon */) {\r\n const code = path.charCodeAt(0);\r\n if (code >= 65 /* A */ && code <= 90 /* Z */) {\r\n path = `${String.fromCharCode(code + 32)}:${path.substr(2)}`; // \"/c:\".length === 3\r\n }\r\n }\r\n // encode the rest of the path\r\n res += encoder(path, true);\r\n }\r\n if (query) {\r\n res += '?';\r\n res += encoder(query, false);\r\n }\r\n if (fragment) {\r\n res += '#';\r\n res += !skipEncoding ? encodeURIComponentFast(fragment, false) : fragment;\r\n }\r\n return res;\r\n}\r\n// --- decode\r\nfunction decodeURIComponentGraceful(str) {\r\n try {\r\n return decodeURIComponent(str);\r\n }\r\n catch (_a) {\r\n if (str.length > 3) {\r\n return str.substr(0, 3) + decodeURIComponentGraceful(str.substr(3));\r\n }\r\n else {\r\n return str;\r\n }\r\n }\r\n}\r\nconst _rEncodedAsHex = /(%[0-9A-Za-z][0-9A-Za-z])+/g;\r\nfunction percentDecode(str) {\r\n if (!str.match(_rEncodedAsHex)) {\r\n return str;\r\n }\r\n return str.replace(_rEncodedAsHex, (match) => decodeURIComponentGraceful(match));\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/base/common/uri.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/base/common/worker/simpleWorker.js": /*!******************************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/base/common/worker/simpleWorker.js ***! \******************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"logOnceWebWorkerWarning\": () => (/* binding */ logOnceWebWorkerWarning),\n/* harmony export */ \"SimpleWorkerClient\": () => (/* binding */ SimpleWorkerClient),\n/* harmony export */ \"SimpleWorkerServer\": () => (/* binding */ SimpleWorkerServer),\n/* harmony export */ \"create\": () => (/* binding */ create)\n/* harmony export */ });\n/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../errors.js */ \"./node_modules/monaco-editor/esm/vs/base/common/errors.js\");\n/* harmony import */ var _lifecycle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _platform_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/* harmony import */ var _types_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../types.js */ \"./node_modules/monaco-editor/esm/vs/base/common/types.js\");\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n\r\n\r\n\r\nconst INITIALIZE = '$initialize';\r\nlet webWorkerWarningLogged = false;\r\nfunction logOnceWebWorkerWarning(err) {\r\n if (!_platform_js__WEBPACK_IMPORTED_MODULE_2__.isWeb) {\r\n // running tests\r\n return;\r\n }\r\n if (!webWorkerWarningLogged) {\r\n webWorkerWarningLogged = true;\r\n console.warn('Could not create web worker(s). Falling back to loading web worker code in main thread, which might cause UI freezes. Please see https://github.com/microsoft/monaco-editor#faq');\r\n }\r\n console.warn(err.message);\r\n}\r\nclass SimpleWorkerProtocol {\r\n constructor(handler) {\r\n this._workerId = -1;\r\n this._handler = handler;\r\n this._lastSentReq = 0;\r\n this._pendingReplies = Object.create(null);\r\n }\r\n setWorkerId(workerId) {\r\n this._workerId = workerId;\r\n }\r\n sendMessage(method, args) {\r\n let req = String(++this._lastSentReq);\r\n return new Promise((resolve, reject) => {\r\n this._pendingReplies[req] = {\r\n resolve: resolve,\r\n reject: reject\r\n };\r\n this._send({\r\n vsWorker: this._workerId,\r\n req: req,\r\n method: method,\r\n args: args\r\n });\r\n });\r\n }\r\n handleMessage(message) {\r\n if (!message || !message.vsWorker) {\r\n return;\r\n }\r\n if (this._workerId !== -1 && message.vsWorker !== this._workerId) {\r\n return;\r\n }\r\n this._handleMessage(message);\r\n }\r\n _handleMessage(msg) {\r\n if (msg.seq) {\r\n let replyMessage = msg;\r\n if (!this._pendingReplies[replyMessage.seq]) {\r\n console.warn('Got reply to unknown seq');\r\n return;\r\n }\r\n let reply = this._pendingReplies[replyMessage.seq];\r\n delete this._pendingReplies[replyMessage.seq];\r\n if (replyMessage.err) {\r\n let err = replyMessage.err;\r\n if (replyMessage.err.$isError) {\r\n err = new Error();\r\n err.name = replyMessage.err.name;\r\n err.message = replyMessage.err.message;\r\n err.stack = replyMessage.err.stack;\r\n }\r\n reply.reject(err);\r\n return;\r\n }\r\n reply.resolve(replyMessage.res);\r\n return;\r\n }\r\n let requestMessage = msg;\r\n let req = requestMessage.req;\r\n let result = this._handler.handleMessage(requestMessage.method, requestMessage.args);\r\n result.then((r) => {\r\n this._send({\r\n vsWorker: this._workerId,\r\n seq: req,\r\n res: r,\r\n err: undefined\r\n });\r\n }, (e) => {\r\n if (e.detail instanceof Error) {\r\n // Loading errors have a detail property that points to the actual error\r\n e.detail = (0,_errors_js__WEBPACK_IMPORTED_MODULE_0__.transformErrorForSerialization)(e.detail);\r\n }\r\n this._send({\r\n vsWorker: this._workerId,\r\n seq: req,\r\n res: undefined,\r\n err: (0,_errors_js__WEBPACK_IMPORTED_MODULE_0__.transformErrorForSerialization)(e)\r\n });\r\n });\r\n }\r\n _send(msg) {\r\n let transfer = [];\r\n if (msg.req) {\r\n const m = msg;\r\n for (let i = 0; i < m.args.length; i++) {\r\n if (m.args[i] instanceof ArrayBuffer) {\r\n transfer.push(m.args[i]);\r\n }\r\n }\r\n }\r\n else {\r\n const m = msg;\r\n if (m.res instanceof ArrayBuffer) {\r\n transfer.push(m.res);\r\n }\r\n }\r\n this._handler.sendMessage(msg, transfer);\r\n }\r\n}\r\n/**\r\n * Main thread side\r\n */\r\nclass SimpleWorkerClient extends _lifecycle_js__WEBPACK_IMPORTED_MODULE_1__.Disposable {\r\n constructor(workerFactory, moduleId, host) {\r\n super();\r\n let lazyProxyReject = null;\r\n this._worker = this._register(workerFactory.create('vs/base/common/worker/simpleWorker', (msg) => {\r\n this._protocol.handleMessage(msg);\r\n }, (err) => {\r\n // in Firefox, web workers fail lazily :(\r\n // we will reject the proxy\r\n if (lazyProxyReject) {\r\n lazyProxyReject(err);\r\n }\r\n }));\r\n this._protocol = new SimpleWorkerProtocol({\r\n sendMessage: (msg, transfer) => {\r\n this._worker.postMessage(msg, transfer);\r\n },\r\n handleMessage: (method, args) => {\r\n if (typeof host[method] !== 'function') {\r\n return Promise.reject(new Error('Missing method ' + method + ' on main thread host.'));\r\n }\r\n try {\r\n return Promise.resolve(host[method].apply(host, args));\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n });\r\n this._protocol.setWorkerId(this._worker.getId());\r\n // Gather loader configuration\r\n let loaderConfiguration = null;\r\n if (typeof self.require !== 'undefined' && typeof self.require.getConfig === 'function') {\r\n // Get the configuration from the Monaco AMD Loader\r\n loaderConfiguration = self.require.getConfig();\r\n }\r\n else if (typeof self.requirejs !== 'undefined') {\r\n // Get the configuration from requirejs\r\n loaderConfiguration = self.requirejs.s.contexts._.config;\r\n }\r\n const hostMethods = _types_js__WEBPACK_IMPORTED_MODULE_3__.getAllMethodNames(host);\r\n // Send initialize message\r\n this._onModuleLoaded = this._protocol.sendMessage(INITIALIZE, [\r\n this._worker.getId(),\r\n JSON.parse(JSON.stringify(loaderConfiguration)),\r\n moduleId,\r\n hostMethods,\r\n ]);\r\n // Create proxy to loaded code\r\n const proxyMethodRequest = (method, args) => {\r\n return this._request(method, args);\r\n };\r\n this._lazyProxy = new Promise((resolve, reject) => {\r\n lazyProxyReject = reject;\r\n this._onModuleLoaded.then((availableMethods) => {\r\n resolve(_types_js__WEBPACK_IMPORTED_MODULE_3__.createProxyObject(availableMethods, proxyMethodRequest));\r\n }, (e) => {\r\n reject(e);\r\n this._onError('Worker failed to load ' + moduleId, e);\r\n });\r\n });\r\n }\r\n getProxyObject() {\r\n return this._lazyProxy;\r\n }\r\n _request(method, args) {\r\n return new Promise((resolve, reject) => {\r\n this._onModuleLoaded.then(() => {\r\n this._protocol.sendMessage(method, args).then(resolve, reject);\r\n }, reject);\r\n });\r\n }\r\n _onError(message, error) {\r\n console.error(message);\r\n console.info(error);\r\n }\r\n}\r\n/**\r\n * Worker side\r\n */\r\nclass SimpleWorkerServer {\r\n constructor(postMessage, requestHandlerFactory) {\r\n this._requestHandlerFactory = requestHandlerFactory;\r\n this._requestHandler = null;\r\n this._protocol = new SimpleWorkerProtocol({\r\n sendMessage: (msg, transfer) => {\r\n postMessage(msg, transfer);\r\n },\r\n handleMessage: (method, args) => this._handleMessage(method, args)\r\n });\r\n }\r\n onmessage(msg) {\r\n this._protocol.handleMessage(msg);\r\n }\r\n _handleMessage(method, args) {\r\n if (method === INITIALIZE) {\r\n return this.initialize(args[0], args[1], args[2], args[3]);\r\n }\r\n if (!this._requestHandler || typeof this._requestHandler[method] !== 'function') {\r\n return Promise.reject(new Error('Missing requestHandler or method: ' + method));\r\n }\r\n try {\r\n return Promise.resolve(this._requestHandler[method].apply(this._requestHandler, args));\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n initialize(workerId, loaderConfig, moduleId, hostMethods) {\r\n this._protocol.setWorkerId(workerId);\r\n const proxyMethodRequest = (method, args) => {\r\n return this._protocol.sendMessage(method, args);\r\n };\r\n const hostProxy = _types_js__WEBPACK_IMPORTED_MODULE_3__.createProxyObject(hostMethods, proxyMethodRequest);\r\n if (this._requestHandlerFactory) {\r\n // static request handler\r\n this._requestHandler = this._requestHandlerFactory(hostProxy);\r\n return Promise.resolve(_types_js__WEBPACK_IMPORTED_MODULE_3__.getAllMethodNames(this._requestHandler));\r\n }\r\n if (loaderConfig) {\r\n // Remove 'baseUrl', handling it is beyond scope for now\r\n if (typeof loaderConfig.baseUrl !== 'undefined') {\r\n delete loaderConfig['baseUrl'];\r\n }\r\n if (typeof loaderConfig.paths !== 'undefined') {\r\n if (typeof loaderConfig.paths.vs !== 'undefined') {\r\n delete loaderConfig.paths['vs'];\r\n }\r\n }\r\n if (typeof loaderConfig.trustedTypesPolicy !== undefined) {\r\n // don't use, it has been destroyed during serialize\r\n delete loaderConfig['trustedTypesPolicy'];\r\n }\r\n // Since this is in a web worker, enable catching errors\r\n loaderConfig.catchError = true;\r\n self.require.config(loaderConfig);\r\n }\r\n return new Promise((resolve, reject) => {\r\n // Use the global require to be sure to get the global config\r\n self.require([moduleId], (module) => {\r\n this._requestHandler = module.create(hostProxy);\r\n if (!this._requestHandler) {\r\n reject(new Error(`No RequestHandler!`));\r\n return;\r\n }\r\n resolve(_types_js__WEBPACK_IMPORTED_MODULE_3__.getAllMethodNames(this._requestHandler));\r\n }, reject);\r\n });\r\n }\r\n}\r\n/**\r\n * Called on the worker side\r\n */\r\nfunction create(postMessage) {\r\n return new SimpleWorkerServer(postMessage, null);\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/base/common/worker/simpleWorker.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/editor/common/core/characterClassifier.js": /*!*************************************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/editor/common/core/characterClassifier.js ***! \*************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"CharacterClassifier\": () => (/* binding */ CharacterClassifier),\n/* harmony export */ \"CharacterSet\": () => (/* binding */ CharacterSet)\n/* harmony export */ });\n/* harmony import */ var _base_common_uint_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../base/common/uint.js */ \"./node_modules/monaco-editor/esm/vs/base/common/uint.js\");\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n/**\r\n * A fast character classifier that uses a compact array for ASCII values.\r\n */\r\nclass CharacterClassifier {\r\n constructor(_defaultValue) {\r\n let defaultValue = (0,_base_common_uint_js__WEBPACK_IMPORTED_MODULE_0__.toUint8)(_defaultValue);\r\n this._defaultValue = defaultValue;\r\n this._asciiMap = CharacterClassifier._createAsciiMap(defaultValue);\r\n this._map = new Map();\r\n }\r\n static _createAsciiMap(defaultValue) {\r\n let asciiMap = new Uint8Array(256);\r\n for (let i = 0; i < 256; i++) {\r\n asciiMap[i] = defaultValue;\r\n }\r\n return asciiMap;\r\n }\r\n set(charCode, _value) {\r\n let value = (0,_base_common_uint_js__WEBPACK_IMPORTED_MODULE_0__.toUint8)(_value);\r\n if (charCode >= 0 && charCode < 256) {\r\n this._asciiMap[charCode] = value;\r\n }\r\n else {\r\n this._map.set(charCode, value);\r\n }\r\n }\r\n get(charCode) {\r\n if (charCode >= 0 && charCode < 256) {\r\n return this._asciiMap[charCode];\r\n }\r\n else {\r\n return (this._map.get(charCode) || this._defaultValue);\r\n }\r\n }\r\n}\r\nclass CharacterSet {\r\n constructor() {\r\n this._actual = new CharacterClassifier(0 /* False */);\r\n }\r\n add(charCode) {\r\n this._actual.set(charCode, 1 /* True */);\r\n }\r\n has(charCode) {\r\n return (this._actual.get(charCode) === 1 /* True */);\r\n }\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/editor/common/core/characterClassifier.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/editor/common/core/position.js": /*!**************************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/editor/common/core/position.js ***! \**************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Position\": () => (/* binding */ Position)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * A position in the editor.\r\n */\r\nclass Position {\r\n constructor(lineNumber, column) {\r\n this.lineNumber = lineNumber;\r\n this.column = column;\r\n }\r\n /**\r\n * Create a new position from this position.\r\n *\r\n * @param newLineNumber new line number\r\n * @param newColumn new column\r\n */\r\n with(newLineNumber = this.lineNumber, newColumn = this.column) {\r\n if (newLineNumber === this.lineNumber && newColumn === this.column) {\r\n return this;\r\n }\r\n else {\r\n return new Position(newLineNumber, newColumn);\r\n }\r\n }\r\n /**\r\n * Derive a new position from this position.\r\n *\r\n * @param deltaLineNumber line number delta\r\n * @param deltaColumn column delta\r\n */\r\n delta(deltaLineNumber = 0, deltaColumn = 0) {\r\n return this.with(this.lineNumber + deltaLineNumber, this.column + deltaColumn);\r\n }\r\n /**\r\n * Test if this position equals other position\r\n */\r\n equals(other) {\r\n return Position.equals(this, other);\r\n }\r\n /**\r\n * Test if position `a` equals position `b`\r\n */\r\n static equals(a, b) {\r\n if (!a && !b) {\r\n return true;\r\n }\r\n return (!!a &&\r\n !!b &&\r\n a.lineNumber === b.lineNumber &&\r\n a.column === b.column);\r\n }\r\n /**\r\n * Test if this position is before other position.\r\n * If the two positions are equal, the result will be false.\r\n */\r\n isBefore(other) {\r\n return Position.isBefore(this, other);\r\n }\r\n /**\r\n * Test if position `a` is before position `b`.\r\n * If the two positions are equal, the result will be false.\r\n */\r\n static isBefore(a, b) {\r\n if (a.lineNumber < b.lineNumber) {\r\n return true;\r\n }\r\n if (b.lineNumber < a.lineNumber) {\r\n return false;\r\n }\r\n return a.column < b.column;\r\n }\r\n /**\r\n * Test if this position is before other position.\r\n * If the two positions are equal, the result will be true.\r\n */\r\n isBeforeOrEqual(other) {\r\n return Position.isBeforeOrEqual(this, other);\r\n }\r\n /**\r\n * Test if position `a` is before position `b`.\r\n * If the two positions are equal, the result will be true.\r\n */\r\n static isBeforeOrEqual(a, b) {\r\n if (a.lineNumber < b.lineNumber) {\r\n return true;\r\n }\r\n if (b.lineNumber < a.lineNumber) {\r\n return false;\r\n }\r\n return a.column <= b.column;\r\n }\r\n /**\r\n * A function that compares positions, useful for sorting\r\n */\r\n static compare(a, b) {\r\n let aLineNumber = a.lineNumber | 0;\r\n let bLineNumber = b.lineNumber | 0;\r\n if (aLineNumber === bLineNumber) {\r\n let aColumn = a.column | 0;\r\n let bColumn = b.column | 0;\r\n return aColumn - bColumn;\r\n }\r\n return aLineNumber - bLineNumber;\r\n }\r\n /**\r\n * Clone this position.\r\n */\r\n clone() {\r\n return new Position(this.lineNumber, this.column);\r\n }\r\n /**\r\n * Convert to a human-readable representation.\r\n */\r\n toString() {\r\n return '(' + this.lineNumber + ',' + this.column + ')';\r\n }\r\n // ---\r\n /**\r\n * Create a `Position` from an `IPosition`.\r\n */\r\n static lift(pos) {\r\n return new Position(pos.lineNumber, pos.column);\r\n }\r\n /**\r\n * Test if `obj` is an `IPosition`.\r\n */\r\n static isIPosition(obj) {\r\n return (obj\r\n && (typeof obj.lineNumber === 'number')\r\n && (typeof obj.column === 'number'));\r\n }\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/editor/common/core/position.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/editor/common/core/range.js": /*!***********************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/editor/common/core/range.js ***! \***********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Range\": () => (/* binding */ Range)\n/* harmony export */ });\n/* harmony import */ var _position_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./position.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/core/position.js\");\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n/**\r\n * A range in the editor. (startLineNumber,startColumn) is <= (endLineNumber,endColumn)\r\n */\r\nclass Range {\r\n constructor(startLineNumber, startColumn, endLineNumber, endColumn) {\r\n if ((startLineNumber > endLineNumber) || (startLineNumber === endLineNumber && startColumn > endColumn)) {\r\n this.startLineNumber = endLineNumber;\r\n this.startColumn = endColumn;\r\n this.endLineNumber = startLineNumber;\r\n this.endColumn = startColumn;\r\n }\r\n else {\r\n this.startLineNumber = startLineNumber;\r\n this.startColumn = startColumn;\r\n this.endLineNumber = endLineNumber;\r\n this.endColumn = endColumn;\r\n }\r\n }\r\n /**\r\n * Test if this range is empty.\r\n */\r\n isEmpty() {\r\n return Range.isEmpty(this);\r\n }\r\n /**\r\n * Test if `range` is empty.\r\n */\r\n static isEmpty(range) {\r\n return (range.startLineNumber === range.endLineNumber && range.startColumn === range.endColumn);\r\n }\r\n /**\r\n * Test if position is in this range. If the position is at the edges, will return true.\r\n */\r\n containsPosition(position) {\r\n return Range.containsPosition(this, position);\r\n }\r\n /**\r\n * Test if `position` is in `range`. If the position is at the edges, will return true.\r\n */\r\n static containsPosition(range, position) {\r\n if (position.lineNumber < range.startLineNumber || position.lineNumber > range.endLineNumber) {\r\n return false;\r\n }\r\n if (position.lineNumber === range.startLineNumber && position.column < range.startColumn) {\r\n return false;\r\n }\r\n if (position.lineNumber === range.endLineNumber && position.column > range.endColumn) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Test if range is in this range. If the range is equal to this range, will return true.\r\n */\r\n containsRange(range) {\r\n return Range.containsRange(this, range);\r\n }\r\n /**\r\n * Test if `otherRange` is in `range`. If the ranges are equal, will return true.\r\n */\r\n static containsRange(range, otherRange) {\r\n if (otherRange.startLineNumber < range.startLineNumber || otherRange.endLineNumber < range.startLineNumber) {\r\n return false;\r\n }\r\n if (otherRange.startLineNumber > range.endLineNumber || otherRange.endLineNumber > range.endLineNumber) {\r\n return false;\r\n }\r\n if (otherRange.startLineNumber === range.startLineNumber && otherRange.startColumn < range.startColumn) {\r\n return false;\r\n }\r\n if (otherRange.endLineNumber === range.endLineNumber && otherRange.endColumn > range.endColumn) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Test if `range` is strictly in this range. `range` must start after and end before this range for the result to be true.\r\n */\r\n strictContainsRange(range) {\r\n return Range.strictContainsRange(this, range);\r\n }\r\n /**\r\n * Test if `otherRange` is strinctly in `range` (must start after, and end before). If the ranges are equal, will return false.\r\n */\r\n static strictContainsRange(range, otherRange) {\r\n if (otherRange.startLineNumber < range.startLineNumber || otherRange.endLineNumber < range.startLineNumber) {\r\n return false;\r\n }\r\n if (otherRange.startLineNumber > range.endLineNumber || otherRange.endLineNumber > range.endLineNumber) {\r\n return false;\r\n }\r\n if (otherRange.startLineNumber === range.startLineNumber && otherRange.startColumn <= range.startColumn) {\r\n return false;\r\n }\r\n if (otherRange.endLineNumber === range.endLineNumber && otherRange.endColumn >= range.endColumn) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * A reunion of the two ranges.\r\n * The smallest position will be used as the start point, and the largest one as the end point.\r\n */\r\n plusRange(range) {\r\n return Range.plusRange(this, range);\r\n }\r\n /**\r\n * A reunion of the two ranges.\r\n * The smallest position will be used as the start point, and the largest one as the end point.\r\n */\r\n static plusRange(a, b) {\r\n let startLineNumber;\r\n let startColumn;\r\n let endLineNumber;\r\n let endColumn;\r\n if (b.startLineNumber < a.startLineNumber) {\r\n startLineNumber = b.startLineNumber;\r\n startColumn = b.startColumn;\r\n }\r\n else if (b.startLineNumber === a.startLineNumber) {\r\n startLineNumber = b.startLineNumber;\r\n startColumn = Math.min(b.startColumn, a.startColumn);\r\n }\r\n else {\r\n startLineNumber = a.startLineNumber;\r\n startColumn = a.startColumn;\r\n }\r\n if (b.endLineNumber > a.endLineNumber) {\r\n endLineNumber = b.endLineNumber;\r\n endColumn = b.endColumn;\r\n }\r\n else if (b.endLineNumber === a.endLineNumber) {\r\n endLineNumber = b.endLineNumber;\r\n endColumn = Math.max(b.endColumn, a.endColumn);\r\n }\r\n else {\r\n endLineNumber = a.endLineNumber;\r\n endColumn = a.endColumn;\r\n }\r\n return new Range(startLineNumber, startColumn, endLineNumber, endColumn);\r\n }\r\n /**\r\n * A intersection of the two ranges.\r\n */\r\n intersectRanges(range) {\r\n return Range.intersectRanges(this, range);\r\n }\r\n /**\r\n * A intersection of the two ranges.\r\n */\r\n static intersectRanges(a, b) {\r\n let resultStartLineNumber = a.startLineNumber;\r\n let resultStartColumn = a.startColumn;\r\n let resultEndLineNumber = a.endLineNumber;\r\n let resultEndColumn = a.endColumn;\r\n let otherStartLineNumber = b.startLineNumber;\r\n let otherStartColumn = b.startColumn;\r\n let otherEndLineNumber = b.endLineNumber;\r\n let otherEndColumn = b.endColumn;\r\n if (resultStartLineNumber < otherStartLineNumber) {\r\n resultStartLineNumber = otherStartLineNumber;\r\n resultStartColumn = otherStartColumn;\r\n }\r\n else if (resultStartLineNumber === otherStartLineNumber) {\r\n resultStartColumn = Math.max(resultStartColumn, otherStartColumn);\r\n }\r\n if (resultEndLineNumber > otherEndLineNumber) {\r\n resultEndLineNumber = otherEndLineNumber;\r\n resultEndColumn = otherEndColumn;\r\n }\r\n else if (resultEndLineNumber === otherEndLineNumber) {\r\n resultEndColumn = Math.min(resultEndColumn, otherEndColumn);\r\n }\r\n // Check if selection is now empty\r\n if (resultStartLineNumber > resultEndLineNumber) {\r\n return null;\r\n }\r\n if (resultStartLineNumber === resultEndLineNumber && resultStartColumn > resultEndColumn) {\r\n return null;\r\n }\r\n return new Range(resultStartLineNumber, resultStartColumn, resultEndLineNumber, resultEndColumn);\r\n }\r\n /**\r\n * Test if this range equals other.\r\n */\r\n equalsRange(other) {\r\n return Range.equalsRange(this, other);\r\n }\r\n /**\r\n * Test if range `a` equals `b`.\r\n */\r\n static equalsRange(a, b) {\r\n return (!!a &&\r\n !!b &&\r\n a.startLineNumber === b.startLineNumber &&\r\n a.startColumn === b.startColumn &&\r\n a.endLineNumber === b.endLineNumber &&\r\n a.endColumn === b.endColumn);\r\n }\r\n /**\r\n * Return the end position (which will be after or equal to the start position)\r\n */\r\n getEndPosition() {\r\n return Range.getEndPosition(this);\r\n }\r\n /**\r\n * Return the end position (which will be after or equal to the start position)\r\n */\r\n static getEndPosition(range) {\r\n return new _position_js__WEBPACK_IMPORTED_MODULE_0__.Position(range.endLineNumber, range.endColumn);\r\n }\r\n /**\r\n * Return the start position (which will be before or equal to the end position)\r\n */\r\n getStartPosition() {\r\n return Range.getStartPosition(this);\r\n }\r\n /**\r\n * Return the start position (which will be before or equal to the end position)\r\n */\r\n static getStartPosition(range) {\r\n return new _position_js__WEBPACK_IMPORTED_MODULE_0__.Position(range.startLineNumber, range.startColumn);\r\n }\r\n /**\r\n * Transform to a user presentable string representation.\r\n */\r\n toString() {\r\n return '[' + this.startLineNumber + ',' + this.startColumn + ' -> ' + this.endLineNumber + ',' + this.endColumn + ']';\r\n }\r\n /**\r\n * Create a new range using this range's start position, and using endLineNumber and endColumn as the end position.\r\n */\r\n setEndPosition(endLineNumber, endColumn) {\r\n return new Range(this.startLineNumber, this.startColumn, endLineNumber, endColumn);\r\n }\r\n /**\r\n * Create a new range using this range's end position, and using startLineNumber and startColumn as the start position.\r\n */\r\n setStartPosition(startLineNumber, startColumn) {\r\n return new Range(startLineNumber, startColumn, this.endLineNumber, this.endColumn);\r\n }\r\n /**\r\n * Create a new empty range using this range's start position.\r\n */\r\n collapseToStart() {\r\n return Range.collapseToStart(this);\r\n }\r\n /**\r\n * Create a new empty range using this range's start position.\r\n */\r\n static collapseToStart(range) {\r\n return new Range(range.startLineNumber, range.startColumn, range.startLineNumber, range.startColumn);\r\n }\r\n // ---\r\n static fromPositions(start, end = start) {\r\n return new Range(start.lineNumber, start.column, end.lineNumber, end.column);\r\n }\r\n static lift(range) {\r\n if (!range) {\r\n return null;\r\n }\r\n return new Range(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);\r\n }\r\n /**\r\n * Test if `obj` is an `IRange`.\r\n */\r\n static isIRange(obj) {\r\n return (obj\r\n && (typeof obj.startLineNumber === 'number')\r\n && (typeof obj.startColumn === 'number')\r\n && (typeof obj.endLineNumber === 'number')\r\n && (typeof obj.endColumn === 'number'));\r\n }\r\n /**\r\n * Test if the two ranges are touching in any way.\r\n */\r\n static areIntersectingOrTouching(a, b) {\r\n // Check if `a` is before `b`\r\n if (a.endLineNumber < b.startLineNumber || (a.endLineNumber === b.startLineNumber && a.endColumn < b.startColumn)) {\r\n return false;\r\n }\r\n // Check if `b` is before `a`\r\n if (b.endLineNumber < a.startLineNumber || (b.endLineNumber === a.startLineNumber && b.endColumn < a.startColumn)) {\r\n return false;\r\n }\r\n // These ranges must intersect\r\n return true;\r\n }\r\n /**\r\n * Test if the two ranges are intersecting. If the ranges are touching it returns true.\r\n */\r\n static areIntersecting(a, b) {\r\n // Check if `a` is before `b`\r\n if (a.endLineNumber < b.startLineNumber || (a.endLineNumber === b.startLineNumber && a.endColumn <= b.startColumn)) {\r\n return false;\r\n }\r\n // Check if `b` is before `a`\r\n if (b.endLineNumber < a.startLineNumber || (b.endLineNumber === a.startLineNumber && b.endColumn <= a.startColumn)) {\r\n return false;\r\n }\r\n // These ranges must intersect\r\n return true;\r\n }\r\n /**\r\n * A function that compares ranges, useful for sorting ranges\r\n * It will first compare ranges on the startPosition and then on the endPosition\r\n */\r\n static compareRangesUsingStarts(a, b) {\r\n if (a && b) {\r\n const aStartLineNumber = a.startLineNumber | 0;\r\n const bStartLineNumber = b.startLineNumber | 0;\r\n if (aStartLineNumber === bStartLineNumber) {\r\n const aStartColumn = a.startColumn | 0;\r\n const bStartColumn = b.startColumn | 0;\r\n if (aStartColumn === bStartColumn) {\r\n const aEndLineNumber = a.endLineNumber | 0;\r\n const bEndLineNumber = b.endLineNumber | 0;\r\n if (aEndLineNumber === bEndLineNumber) {\r\n const aEndColumn = a.endColumn | 0;\r\n const bEndColumn = b.endColumn | 0;\r\n return aEndColumn - bEndColumn;\r\n }\r\n return aEndLineNumber - bEndLineNumber;\r\n }\r\n return aStartColumn - bStartColumn;\r\n }\r\n return aStartLineNumber - bStartLineNumber;\r\n }\r\n const aExists = (a ? 1 : 0);\r\n const bExists = (b ? 1 : 0);\r\n return aExists - bExists;\r\n }\r\n /**\r\n * A function that compares ranges, useful for sorting ranges\r\n * It will first compare ranges on the endPosition and then on the startPosition\r\n */\r\n static compareRangesUsingEnds(a, b) {\r\n if (a.endLineNumber === b.endLineNumber) {\r\n if (a.endColumn === b.endColumn) {\r\n if (a.startLineNumber === b.startLineNumber) {\r\n return a.startColumn - b.startColumn;\r\n }\r\n return a.startLineNumber - b.startLineNumber;\r\n }\r\n return a.endColumn - b.endColumn;\r\n }\r\n return a.endLineNumber - b.endLineNumber;\r\n }\r\n /**\r\n * Test if the range spans multiple lines.\r\n */\r\n static spansMultipleLines(range) {\r\n return range.endLineNumber > range.startLineNumber;\r\n }\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/editor/common/core/range.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/editor/common/core/selection.js": /*!***************************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/editor/common/core/selection.js ***! \***************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Selection\": () => (/* binding */ Selection)\n/* harmony export */ });\n/* harmony import */ var _position_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./position.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/core/position.js\");\n/* harmony import */ var _range_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./range.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/core/range.js\");\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n\r\n/**\r\n * A selection in the editor.\r\n * The selection is a range that has an orientation.\r\n */\r\nclass Selection extends _range_js__WEBPACK_IMPORTED_MODULE_1__.Range {\r\n constructor(selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn) {\r\n super(selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn);\r\n this.selectionStartLineNumber = selectionStartLineNumber;\r\n this.selectionStartColumn = selectionStartColumn;\r\n this.positionLineNumber = positionLineNumber;\r\n this.positionColumn = positionColumn;\r\n }\r\n /**\r\n * Transform to a human-readable representation.\r\n */\r\n toString() {\r\n return '[' + this.selectionStartLineNumber + ',' + this.selectionStartColumn + ' -> ' + this.positionLineNumber + ',' + this.positionColumn + ']';\r\n }\r\n /**\r\n * Test if equals other selection.\r\n */\r\n equalsSelection(other) {\r\n return (Selection.selectionsEqual(this, other));\r\n }\r\n /**\r\n * Test if the two selections are equal.\r\n */\r\n static selectionsEqual(a, b) {\r\n return (a.selectionStartLineNumber === b.selectionStartLineNumber &&\r\n a.selectionStartColumn === b.selectionStartColumn &&\r\n a.positionLineNumber === b.positionLineNumber &&\r\n a.positionColumn === b.positionColumn);\r\n }\r\n /**\r\n * Get directions (LTR or RTL).\r\n */\r\n getDirection() {\r\n if (this.selectionStartLineNumber === this.startLineNumber && this.selectionStartColumn === this.startColumn) {\r\n return 0 /* LTR */;\r\n }\r\n return 1 /* RTL */;\r\n }\r\n /**\r\n * Create a new selection with a different `positionLineNumber` and `positionColumn`.\r\n */\r\n setEndPosition(endLineNumber, endColumn) {\r\n if (this.getDirection() === 0 /* LTR */) {\r\n return new Selection(this.startLineNumber, this.startColumn, endLineNumber, endColumn);\r\n }\r\n return new Selection(endLineNumber, endColumn, this.startLineNumber, this.startColumn);\r\n }\r\n /**\r\n * Get the position at `positionLineNumber` and `positionColumn`.\r\n */\r\n getPosition() {\r\n return new _position_js__WEBPACK_IMPORTED_MODULE_0__.Position(this.positionLineNumber, this.positionColumn);\r\n }\r\n /**\r\n * Create a new selection with a different `selectionStartLineNumber` and `selectionStartColumn`.\r\n */\r\n setStartPosition(startLineNumber, startColumn) {\r\n if (this.getDirection() === 0 /* LTR */) {\r\n return new Selection(startLineNumber, startColumn, this.endLineNumber, this.endColumn);\r\n }\r\n return new Selection(this.endLineNumber, this.endColumn, startLineNumber, startColumn);\r\n }\r\n // ----\r\n /**\r\n * Create a `Selection` from one or two positions\r\n */\r\n static fromPositions(start, end = start) {\r\n return new Selection(start.lineNumber, start.column, end.lineNumber, end.column);\r\n }\r\n /**\r\n * Create a `Selection` from an `ISelection`.\r\n */\r\n static liftSelection(sel) {\r\n return new Selection(sel.selectionStartLineNumber, sel.selectionStartColumn, sel.positionLineNumber, sel.positionColumn);\r\n }\r\n /**\r\n * `a` equals `b`.\r\n */\r\n static selectionsArrEqual(a, b) {\r\n if (a && !b || !a && b) {\r\n return false;\r\n }\r\n if (!a && !b) {\r\n return true;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (let i = 0, len = a.length; i < len; i++) {\r\n if (!this.selectionsEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * Test if `obj` is an `ISelection`.\r\n */\r\n static isISelection(obj) {\r\n return (obj\r\n && (typeof obj.selectionStartLineNumber === 'number')\r\n && (typeof obj.selectionStartColumn === 'number')\r\n && (typeof obj.positionLineNumber === 'number')\r\n && (typeof obj.positionColumn === 'number'));\r\n }\r\n /**\r\n * Create with a direction.\r\n */\r\n static createWithDirection(startLineNumber, startColumn, endLineNumber, endColumn, direction) {\r\n if (direction === 0 /* LTR */) {\r\n return new Selection(startLineNumber, startColumn, endLineNumber, endColumn);\r\n }\r\n return new Selection(endLineNumber, endColumn, startLineNumber, startColumn);\r\n }\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/editor/common/core/selection.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/editor/common/core/token.js": /*!***********************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/editor/common/core/token.js ***! \***********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Token\": () => (/* binding */ Token),\n/* harmony export */ \"TokenizationResult\": () => (/* binding */ TokenizationResult),\n/* harmony export */ \"TokenizationResult2\": () => (/* binding */ TokenizationResult2)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nclass Token {\r\n constructor(offset, type, language) {\r\n this.offset = offset | 0; // @perf\r\n this.type = type;\r\n this.language = language;\r\n }\r\n toString() {\r\n return '(' + this.offset + ', ' + this.type + ')';\r\n }\r\n}\r\nclass TokenizationResult {\r\n constructor(tokens, endState) {\r\n this.tokens = tokens;\r\n this.endState = endState;\r\n }\r\n}\r\nclass TokenizationResult2 {\r\n constructor(tokens, endState) {\r\n this.tokens = tokens;\r\n this.endState = endState;\r\n }\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/editor/common/core/token.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/editor/common/diff/diffComputer.js": /*!******************************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/editor/common/diff/diffComputer.js ***! \******************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"DiffComputer\": () => (/* binding */ DiffComputer)\n/* harmony export */ });\n/* harmony import */ var _base_common_diff_diff_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../base/common/diff/diff.js */ \"./node_modules/monaco-editor/esm/vs/base/common/diff/diff.js\");\n/* harmony import */ var _base_common_strings_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../base/common/strings.js */ \"./node_modules/monaco-editor/esm/vs/base/common/strings.js\");\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n\r\nconst MINIMUM_MATCHING_CHARACTER_LENGTH = 3;\r\nfunction computeDiff(originalSequence, modifiedSequence, continueProcessingPredicate, pretty) {\r\n const diffAlgo = new _base_common_diff_diff_js__WEBPACK_IMPORTED_MODULE_0__.LcsDiff(originalSequence, modifiedSequence, continueProcessingPredicate);\r\n return diffAlgo.ComputeDiff(pretty);\r\n}\r\nclass LineSequence {\r\n constructor(lines) {\r\n const startColumns = [];\r\n const endColumns = [];\r\n for (let i = 0, length = lines.length; i < length; i++) {\r\n startColumns[i] = getFirstNonBlankColumn(lines[i], 1);\r\n endColumns[i] = getLastNonBlankColumn(lines[i], 1);\r\n }\r\n this.lines = lines;\r\n this._startColumns = startColumns;\r\n this._endColumns = endColumns;\r\n }\r\n getElements() {\r\n const elements = [];\r\n for (let i = 0, len = this.lines.length; i < len; i++) {\r\n elements[i] = this.lines[i].substring(this._startColumns[i] - 1, this._endColumns[i] - 1);\r\n }\r\n return elements;\r\n }\r\n getStartLineNumber(i) {\r\n return i + 1;\r\n }\r\n getEndLineNumber(i) {\r\n return i + 1;\r\n }\r\n createCharSequence(shouldIgnoreTrimWhitespace, startIndex, endIndex) {\r\n const charCodes = [];\r\n const lineNumbers = [];\r\n const columns = [];\r\n let len = 0;\r\n for (let index = startIndex; index <= endIndex; index++) {\r\n const lineContent = this.lines[index];\r\n const startColumn = (shouldIgnoreTrimWhitespace ? this._startColumns[index] : 1);\r\n const endColumn = (shouldIgnoreTrimWhitespace ? this._endColumns[index] : lineContent.length + 1);\r\n for (let col = startColumn; col < endColumn; col++) {\r\n charCodes[len] = lineContent.charCodeAt(col - 1);\r\n lineNumbers[len] = index + 1;\r\n columns[len] = col;\r\n len++;\r\n }\r\n }\r\n return new CharSequence(charCodes, lineNumbers, columns);\r\n }\r\n}\r\nclass CharSequence {\r\n constructor(charCodes, lineNumbers, columns) {\r\n this._charCodes = charCodes;\r\n this._lineNumbers = lineNumbers;\r\n this._columns = columns;\r\n }\r\n getElements() {\r\n return this._charCodes;\r\n }\r\n getStartLineNumber(i) {\r\n return this._lineNumbers[i];\r\n }\r\n getStartColumn(i) {\r\n return this._columns[i];\r\n }\r\n getEndLineNumber(i) {\r\n return this._lineNumbers[i];\r\n }\r\n getEndColumn(i) {\r\n return this._columns[i] + 1;\r\n }\r\n}\r\nclass CharChange {\r\n constructor(originalStartLineNumber, originalStartColumn, originalEndLineNumber, originalEndColumn, modifiedStartLineNumber, modifiedStartColumn, modifiedEndLineNumber, modifiedEndColumn) {\r\n this.originalStartLineNumber = originalStartLineNumber;\r\n this.originalStartColumn = originalStartColumn;\r\n this.originalEndLineNumber = originalEndLineNumber;\r\n this.originalEndColumn = originalEndColumn;\r\n this.modifiedStartLineNumber = modifiedStartLineNumber;\r\n this.modifiedStartColumn = modifiedStartColumn;\r\n this.modifiedEndLineNumber = modifiedEndLineNumber;\r\n this.modifiedEndColumn = modifiedEndColumn;\r\n }\r\n static createFromDiffChange(diffChange, originalCharSequence, modifiedCharSequence) {\r\n let originalStartLineNumber;\r\n let originalStartColumn;\r\n let originalEndLineNumber;\r\n let originalEndColumn;\r\n let modifiedStartLineNumber;\r\n let modifiedStartColumn;\r\n let modifiedEndLineNumber;\r\n let modifiedEndColumn;\r\n if (diffChange.originalLength === 0) {\r\n originalStartLineNumber = 0;\r\n originalStartColumn = 0;\r\n originalEndLineNumber = 0;\r\n originalEndColumn = 0;\r\n }\r\n else {\r\n originalStartLineNumber = originalCharSequence.getStartLineNumber(diffChange.originalStart);\r\n originalStartColumn = originalCharSequence.getStartColumn(diffChange.originalStart);\r\n originalEndLineNumber = originalCharSequence.getEndLineNumber(diffChange.originalStart + diffChange.originalLength - 1);\r\n originalEndColumn = originalCharSequence.getEndColumn(diffChange.originalStart + diffChange.originalLength - 1);\r\n }\r\n if (diffChange.modifiedLength === 0) {\r\n modifiedStartLineNumber = 0;\r\n modifiedStartColumn = 0;\r\n modifiedEndLineNumber = 0;\r\n modifiedEndColumn = 0;\r\n }\r\n else {\r\n modifiedStartLineNumber = modifiedCharSequence.getStartLineNumber(diffChange.modifiedStart);\r\n modifiedStartColumn = modifiedCharSequence.getStartColumn(diffChange.modifiedStart);\r\n modifiedEndLineNumber = modifiedCharSequence.getEndLineNumber(diffChange.modifiedStart + diffChange.modifiedLength - 1);\r\n modifiedEndColumn = modifiedCharSequence.getEndColumn(diffChange.modifiedStart + diffChange.modifiedLength - 1);\r\n }\r\n return new CharChange(originalStartLineNumber, originalStartColumn, originalEndLineNumber, originalEndColumn, modifiedStartLineNumber, modifiedStartColumn, modifiedEndLineNumber, modifiedEndColumn);\r\n }\r\n}\r\nfunction postProcessCharChanges(rawChanges) {\r\n if (rawChanges.length <= 1) {\r\n return rawChanges;\r\n }\r\n const result = [rawChanges[0]];\r\n let prevChange = result[0];\r\n for (let i = 1, len = rawChanges.length; i < len; i++) {\r\n const currChange = rawChanges[i];\r\n const originalMatchingLength = currChange.originalStart - (prevChange.originalStart + prevChange.originalLength);\r\n const modifiedMatchingLength = currChange.modifiedStart - (prevChange.modifiedStart + prevChange.modifiedLength);\r\n // Both of the above should be equal, but the continueProcessingPredicate may prevent this from being true\r\n const matchingLength = Math.min(originalMatchingLength, modifiedMatchingLength);\r\n if (matchingLength < MINIMUM_MATCHING_CHARACTER_LENGTH) {\r\n // Merge the current change into the previous one\r\n prevChange.originalLength = (currChange.originalStart + currChange.originalLength) - prevChange.originalStart;\r\n prevChange.modifiedLength = (currChange.modifiedStart + currChange.modifiedLength) - prevChange.modifiedStart;\r\n }\r\n else {\r\n // Add the current change\r\n result.push(currChange);\r\n prevChange = currChange;\r\n }\r\n }\r\n return result;\r\n}\r\nclass LineChange {\r\n constructor(originalStartLineNumber, originalEndLineNumber, modifiedStartLineNumber, modifiedEndLineNumber, charChanges) {\r\n this.originalStartLineNumber = originalStartLineNumber;\r\n this.originalEndLineNumber = originalEndLineNumber;\r\n this.modifiedStartLineNumber = modifiedStartLineNumber;\r\n this.modifiedEndLineNumber = modifiedEndLineNumber;\r\n this.charChanges = charChanges;\r\n }\r\n static createFromDiffResult(shouldIgnoreTrimWhitespace, diffChange, originalLineSequence, modifiedLineSequence, continueCharDiff, shouldComputeCharChanges, shouldPostProcessCharChanges) {\r\n let originalStartLineNumber;\r\n let originalEndLineNumber;\r\n let modifiedStartLineNumber;\r\n let modifiedEndLineNumber;\r\n let charChanges = undefined;\r\n if (diffChange.originalLength === 0) {\r\n originalStartLineNumber = originalLineSequence.getStartLineNumber(diffChange.originalStart) - 1;\r\n originalEndLineNumber = 0;\r\n }\r\n else {\r\n originalStartLineNumber = originalLineSequence.getStartLineNumber(diffChange.originalStart);\r\n originalEndLineNumber = originalLineSequence.getEndLineNumber(diffChange.originalStart + diffChange.originalLength - 1);\r\n }\r\n if (diffChange.modifiedLength === 0) {\r\n modifiedStartLineNumber = modifiedLineSequence.getStartLineNumber(diffChange.modifiedStart) - 1;\r\n modifiedEndLineNumber = 0;\r\n }\r\n else {\r\n modifiedStartLineNumber = modifiedLineSequence.getStartLineNumber(diffChange.modifiedStart);\r\n modifiedEndLineNumber = modifiedLineSequence.getEndLineNumber(diffChange.modifiedStart + diffChange.modifiedLength - 1);\r\n }\r\n if (shouldComputeCharChanges && diffChange.originalLength > 0 && diffChange.originalLength < 20 && diffChange.modifiedLength > 0 && diffChange.modifiedLength < 20 && continueCharDiff()) {\r\n // Compute character changes for diff chunks of at most 20 lines...\r\n const originalCharSequence = originalLineSequence.createCharSequence(shouldIgnoreTrimWhitespace, diffChange.originalStart, diffChange.originalStart + diffChange.originalLength - 1);\r\n const modifiedCharSequence = modifiedLineSequence.createCharSequence(shouldIgnoreTrimWhitespace, diffChange.modifiedStart, diffChange.modifiedStart + diffChange.modifiedLength - 1);\r\n let rawChanges = computeDiff(originalCharSequence, modifiedCharSequence, continueCharDiff, true).changes;\r\n if (shouldPostProcessCharChanges) {\r\n rawChanges = postProcessCharChanges(rawChanges);\r\n }\r\n charChanges = [];\r\n for (let i = 0, length = rawChanges.length; i < length; i++) {\r\n charChanges.push(CharChange.createFromDiffChange(rawChanges[i], originalCharSequence, modifiedCharSequence));\r\n }\r\n }\r\n return new LineChange(originalStartLineNumber, originalEndLineNumber, modifiedStartLineNumber, modifiedEndLineNumber, charChanges);\r\n }\r\n}\r\nclass DiffComputer {\r\n constructor(originalLines, modifiedLines, opts) {\r\n this.shouldComputeCharChanges = opts.shouldComputeCharChanges;\r\n this.shouldPostProcessCharChanges = opts.shouldPostProcessCharChanges;\r\n this.shouldIgnoreTrimWhitespace = opts.shouldIgnoreTrimWhitespace;\r\n this.shouldMakePrettyDiff = opts.shouldMakePrettyDiff;\r\n this.originalLines = originalLines;\r\n this.modifiedLines = modifiedLines;\r\n this.original = new LineSequence(originalLines);\r\n this.modified = new LineSequence(modifiedLines);\r\n this.continueLineDiff = createContinueProcessingPredicate(opts.maxComputationTime);\r\n this.continueCharDiff = createContinueProcessingPredicate(opts.maxComputationTime === 0 ? 0 : Math.min(opts.maxComputationTime, 5000)); // never run after 5s for character changes...\r\n }\r\n computeDiff() {\r\n if (this.original.lines.length === 1 && this.original.lines[0].length === 0) {\r\n // empty original => fast path\r\n if (this.modified.lines.length === 1 && this.modified.lines[0].length === 0) {\r\n return {\r\n quitEarly: false,\r\n changes: []\r\n };\r\n }\r\n return {\r\n quitEarly: false,\r\n changes: [{\r\n originalStartLineNumber: 1,\r\n originalEndLineNumber: 1,\r\n modifiedStartLineNumber: 1,\r\n modifiedEndLineNumber: this.modified.lines.length,\r\n charChanges: [{\r\n modifiedEndColumn: 0,\r\n modifiedEndLineNumber: 0,\r\n modifiedStartColumn: 0,\r\n modifiedStartLineNumber: 0,\r\n originalEndColumn: 0,\r\n originalEndLineNumber: 0,\r\n originalStartColumn: 0,\r\n originalStartLineNumber: 0\r\n }]\r\n }]\r\n };\r\n }\r\n if (this.modified.lines.length === 1 && this.modified.lines[0].length === 0) {\r\n // empty modified => fast path\r\n return {\r\n quitEarly: false,\r\n changes: [{\r\n originalStartLineNumber: 1,\r\n originalEndLineNumber: this.original.lines.length,\r\n modifiedStartLineNumber: 1,\r\n modifiedEndLineNumber: 1,\r\n charChanges: [{\r\n modifiedEndColumn: 0,\r\n modifiedEndLineNumber: 0,\r\n modifiedStartColumn: 0,\r\n modifiedStartLineNumber: 0,\r\n originalEndColumn: 0,\r\n originalEndLineNumber: 0,\r\n originalStartColumn: 0,\r\n originalStartLineNumber: 0\r\n }]\r\n }]\r\n };\r\n }\r\n const diffResult = computeDiff(this.original, this.modified, this.continueLineDiff, this.shouldMakePrettyDiff);\r\n const rawChanges = diffResult.changes;\r\n const quitEarly = diffResult.quitEarly;\r\n // The diff is always computed with ignoring trim whitespace\r\n // This ensures we get the prettiest diff\r\n if (this.shouldIgnoreTrimWhitespace) {\r\n const lineChanges = [];\r\n for (let i = 0, length = rawChanges.length; i < length; i++) {\r\n lineChanges.push(LineChange.createFromDiffResult(this.shouldIgnoreTrimWhitespace, rawChanges[i], this.original, this.modified, this.continueCharDiff, this.shouldComputeCharChanges, this.shouldPostProcessCharChanges));\r\n }\r\n return {\r\n quitEarly: quitEarly,\r\n changes: lineChanges\r\n };\r\n }\r\n // Need to post-process and introduce changes where the trim whitespace is different\r\n // Note that we are looping starting at -1 to also cover the lines before the first change\r\n const result = [];\r\n let originalLineIndex = 0;\r\n let modifiedLineIndex = 0;\r\n for (let i = -1 /* !!!! */, len = rawChanges.length; i < len; i++) {\r\n const nextChange = (i + 1 < len ? rawChanges[i + 1] : null);\r\n const originalStop = (nextChange ? nextChange.originalStart : this.originalLines.length);\r\n const modifiedStop = (nextChange ? nextChange.modifiedStart : this.modifiedLines.length);\r\n while (originalLineIndex < originalStop && modifiedLineIndex < modifiedStop) {\r\n const originalLine = this.originalLines[originalLineIndex];\r\n const modifiedLine = this.modifiedLines[modifiedLineIndex];\r\n if (originalLine !== modifiedLine) {\r\n // These lines differ only in trim whitespace\r\n // Check the leading whitespace\r\n {\r\n let originalStartColumn = getFirstNonBlankColumn(originalLine, 1);\r\n let modifiedStartColumn = getFirstNonBlankColumn(modifiedLine, 1);\r\n while (originalStartColumn > 1 && modifiedStartColumn > 1) {\r\n const originalChar = originalLine.charCodeAt(originalStartColumn - 2);\r\n const modifiedChar = modifiedLine.charCodeAt(modifiedStartColumn - 2);\r\n if (originalChar !== modifiedChar) {\r\n break;\r\n }\r\n originalStartColumn--;\r\n modifiedStartColumn--;\r\n }\r\n if (originalStartColumn > 1 || modifiedStartColumn > 1) {\r\n this._pushTrimWhitespaceCharChange(result, originalLineIndex + 1, 1, originalStartColumn, modifiedLineIndex + 1, 1, modifiedStartColumn);\r\n }\r\n }\r\n // Check the trailing whitespace\r\n {\r\n let originalEndColumn = getLastNonBlankColumn(originalLine, 1);\r\n let modifiedEndColumn = getLastNonBlankColumn(modifiedLine, 1);\r\n const originalMaxColumn = originalLine.length + 1;\r\n const modifiedMaxColumn = modifiedLine.length + 1;\r\n while (originalEndColumn < originalMaxColumn && modifiedEndColumn < modifiedMaxColumn) {\r\n const originalChar = originalLine.charCodeAt(originalEndColumn - 1);\r\n const modifiedChar = originalLine.charCodeAt(modifiedEndColumn - 1);\r\n if (originalChar !== modifiedChar) {\r\n break;\r\n }\r\n originalEndColumn++;\r\n modifiedEndColumn++;\r\n }\r\n if (originalEndColumn < originalMaxColumn || modifiedEndColumn < modifiedMaxColumn) {\r\n this._pushTrimWhitespaceCharChange(result, originalLineIndex + 1, originalEndColumn, originalMaxColumn, modifiedLineIndex + 1, modifiedEndColumn, modifiedMaxColumn);\r\n }\r\n }\r\n }\r\n originalLineIndex++;\r\n modifiedLineIndex++;\r\n }\r\n if (nextChange) {\r\n // Emit the actual change\r\n result.push(LineChange.createFromDiffResult(this.shouldIgnoreTrimWhitespace, nextChange, this.original, this.modified, this.continueCharDiff, this.shouldComputeCharChanges, this.shouldPostProcessCharChanges));\r\n originalLineIndex += nextChange.originalLength;\r\n modifiedLineIndex += nextChange.modifiedLength;\r\n }\r\n }\r\n return {\r\n quitEarly: quitEarly,\r\n changes: result\r\n };\r\n }\r\n _pushTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn) {\r\n if (this._mergeTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn)) {\r\n // Merged into previous\r\n return;\r\n }\r\n let charChanges = undefined;\r\n if (this.shouldComputeCharChanges) {\r\n charChanges = [new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn)];\r\n }\r\n result.push(new LineChange(originalLineNumber, originalLineNumber, modifiedLineNumber, modifiedLineNumber, charChanges));\r\n }\r\n _mergeTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn) {\r\n const len = result.length;\r\n if (len === 0) {\r\n return false;\r\n }\r\n const prevChange = result[len - 1];\r\n if (prevChange.originalEndLineNumber === 0 || prevChange.modifiedEndLineNumber === 0) {\r\n // Don't merge with inserts/deletes\r\n return false;\r\n }\r\n if (prevChange.originalEndLineNumber + 1 === originalLineNumber && prevChange.modifiedEndLineNumber + 1 === modifiedLineNumber) {\r\n prevChange.originalEndLineNumber = originalLineNumber;\r\n prevChange.modifiedEndLineNumber = modifiedLineNumber;\r\n if (this.shouldComputeCharChanges && prevChange.charChanges) {\r\n prevChange.charChanges.push(new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn));\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\nfunction getFirstNonBlankColumn(txt, defaultValue) {\r\n const r = _base_common_strings_js__WEBPACK_IMPORTED_MODULE_1__.firstNonWhitespaceIndex(txt);\r\n if (r === -1) {\r\n return defaultValue;\r\n }\r\n return r + 1;\r\n}\r\nfunction getLastNonBlankColumn(txt, defaultValue) {\r\n const r = _base_common_strings_js__WEBPACK_IMPORTED_MODULE_1__.lastNonWhitespaceIndex(txt);\r\n if (r === -1) {\r\n return defaultValue;\r\n }\r\n return r + 2;\r\n}\r\nfunction createContinueProcessingPredicate(maximumRuntime) {\r\n if (maximumRuntime === 0) {\r\n return () => true;\r\n }\r\n const startTime = Date.now();\r\n return () => {\r\n return Date.now() - startTime < maximumRuntime;\r\n };\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/editor/common/diff/diffComputer.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/editor/common/model/mirrorTextModel.js": /*!**********************************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/editor/common/model/mirrorTextModel.js ***! \**********************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"MirrorTextModel\": () => (/* binding */ MirrorTextModel)\n/* harmony export */ });\n/* harmony import */ var _base_common_strings_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../base/common/strings.js */ \"./node_modules/monaco-editor/esm/vs/base/common/strings.js\");\n/* harmony import */ var _core_position_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/position.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/core/position.js\");\n/* harmony import */ var _viewModel_prefixSumComputer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../viewModel/prefixSumComputer.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/viewModel/prefixSumComputer.js\");\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n\r\n\r\nclass MirrorTextModel {\r\n constructor(uri, lines, eol, versionId) {\r\n this._uri = uri;\r\n this._lines = lines;\r\n this._eol = eol;\r\n this._versionId = versionId;\r\n this._lineStarts = null;\r\n this._cachedTextValue = null;\r\n }\r\n dispose() {\r\n this._lines.length = 0;\r\n }\r\n getText() {\r\n if (this._cachedTextValue === null) {\r\n this._cachedTextValue = this._lines.join(this._eol);\r\n }\r\n return this._cachedTextValue;\r\n }\r\n onEvents(e) {\r\n if (e.eol && e.eol !== this._eol) {\r\n this._eol = e.eol;\r\n this._lineStarts = null;\r\n }\r\n // Update my lines\r\n const changes = e.changes;\r\n for (const change of changes) {\r\n this._acceptDeleteRange(change.range);\r\n this._acceptInsertText(new _core_position_js__WEBPACK_IMPORTED_MODULE_1__.Position(change.range.startLineNumber, change.range.startColumn), change.text);\r\n }\r\n this._versionId = e.versionId;\r\n this._cachedTextValue = null;\r\n }\r\n _ensureLineStarts() {\r\n if (!this._lineStarts) {\r\n const eolLength = this._eol.length;\r\n const linesLength = this._lines.length;\r\n const lineStartValues = new Uint32Array(linesLength);\r\n for (let i = 0; i < linesLength; i++) {\r\n lineStartValues[i] = this._lines[i].length + eolLength;\r\n }\r\n this._lineStarts = new _viewModel_prefixSumComputer_js__WEBPACK_IMPORTED_MODULE_2__.PrefixSumComputer(lineStartValues);\r\n }\r\n }\r\n /**\r\n * All changes to a line's text go through this method\r\n */\r\n _setLineText(lineIndex, newValue) {\r\n this._lines[lineIndex] = newValue;\r\n if (this._lineStarts) {\r\n // update prefix sum\r\n this._lineStarts.changeValue(lineIndex, this._lines[lineIndex].length + this._eol.length);\r\n }\r\n }\r\n _acceptDeleteRange(range) {\r\n if (range.startLineNumber === range.endLineNumber) {\r\n if (range.startColumn === range.endColumn) {\r\n // Nothing to delete\r\n return;\r\n }\r\n // Delete text on the affected line\r\n this._setLineText(range.startLineNumber - 1, this._lines[range.startLineNumber - 1].substring(0, range.startColumn - 1)\r\n + this._lines[range.startLineNumber - 1].substring(range.endColumn - 1));\r\n return;\r\n }\r\n // Take remaining text on last line and append it to remaining text on first line\r\n this._setLineText(range.startLineNumber - 1, this._lines[range.startLineNumber - 1].substring(0, range.startColumn - 1)\r\n + this._lines[range.endLineNumber - 1].substring(range.endColumn - 1));\r\n // Delete middle lines\r\n this._lines.splice(range.startLineNumber, range.endLineNumber - range.startLineNumber);\r\n if (this._lineStarts) {\r\n // update prefix sum\r\n this._lineStarts.removeValues(range.startLineNumber, range.endLineNumber - range.startLineNumber);\r\n }\r\n }\r\n _acceptInsertText(position, insertText) {\r\n if (insertText.length === 0) {\r\n // Nothing to insert\r\n return;\r\n }\r\n let insertLines = (0,_base_common_strings_js__WEBPACK_IMPORTED_MODULE_0__.splitLines)(insertText);\r\n if (insertLines.length === 1) {\r\n // Inserting text on one line\r\n this._setLineText(position.lineNumber - 1, this._lines[position.lineNumber - 1].substring(0, position.column - 1)\r\n + insertLines[0]\r\n + this._lines[position.lineNumber - 1].substring(position.column - 1));\r\n return;\r\n }\r\n // Append overflowing text from first line to the end of text to insert\r\n insertLines[insertLines.length - 1] += this._lines[position.lineNumber - 1].substring(position.column - 1);\r\n // Delete overflowing text from first line and insert text on first line\r\n this._setLineText(position.lineNumber - 1, this._lines[position.lineNumber - 1].substring(0, position.column - 1)\r\n + insertLines[0]);\r\n // Insert new lines & store lengths\r\n let newLengths = new Uint32Array(insertLines.length - 1);\r\n for (let i = 1; i < insertLines.length; i++) {\r\n this._lines.splice(position.lineNumber + i - 1, 0, insertLines[i]);\r\n newLengths[i - 1] = insertLines[i].length + this._eol.length;\r\n }\r\n if (this._lineStarts) {\r\n // update prefix sum\r\n this._lineStarts.insertValues(position.lineNumber, newLengths);\r\n }\r\n }\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/editor/common/model/mirrorTextModel.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/editor/common/model/wordHelper.js": /*!*****************************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/editor/common/model/wordHelper.js ***! \*****************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"USUAL_WORD_SEPARATORS\": () => (/* binding */ USUAL_WORD_SEPARATORS),\n/* harmony export */ \"DEFAULT_WORD_REGEXP\": () => (/* binding */ DEFAULT_WORD_REGEXP),\n/* harmony export */ \"ensureValidWordDefinition\": () => (/* binding */ ensureValidWordDefinition),\n/* harmony export */ \"getWordAtText\": () => (/* binding */ getWordAtText)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nconst USUAL_WORD_SEPARATORS = '`~!@#$%^&*()-=+[{]}\\\\|;:\\'\",.<>/?';\r\n/**\r\n * Create a word definition regular expression based on default word separators.\r\n * Optionally provide allowed separators that should be included in words.\r\n *\r\n * The default would look like this:\r\n * /(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)/g\r\n */\r\nfunction createWordRegExp(allowInWords = '') {\r\n let source = '(-?\\\\d*\\\\.\\\\d\\\\w*)|([^';\r\n for (const sep of USUAL_WORD_SEPARATORS) {\r\n if (allowInWords.indexOf(sep) >= 0) {\r\n continue;\r\n }\r\n source += '\\\\' + sep;\r\n }\r\n source += '\\\\s]+)';\r\n return new RegExp(source, 'g');\r\n}\r\n// catches numbers (including floating numbers) in the first group, and alphanum in the second\r\nconst DEFAULT_WORD_REGEXP = createWordRegExp();\r\nfunction ensureValidWordDefinition(wordDefinition) {\r\n let result = DEFAULT_WORD_REGEXP;\r\n if (wordDefinition && (wordDefinition instanceof RegExp)) {\r\n if (!wordDefinition.global) {\r\n let flags = 'g';\r\n if (wordDefinition.ignoreCase) {\r\n flags += 'i';\r\n }\r\n if (wordDefinition.multiline) {\r\n flags += 'm';\r\n }\r\n if (wordDefinition.unicode) {\r\n flags += 'u';\r\n }\r\n result = new RegExp(wordDefinition.source, flags);\r\n }\r\n else {\r\n result = wordDefinition;\r\n }\r\n }\r\n result.lastIndex = 0;\r\n return result;\r\n}\r\nconst _defaultConfig = {\r\n maxLen: 1000,\r\n windowSize: 15,\r\n timeBudget: 150\r\n};\r\nfunction getWordAtText(column, wordDefinition, text, textOffset, config = _defaultConfig) {\r\n if (text.length > config.maxLen) {\r\n // don't throw strings that long at the regexp\r\n // but use a sub-string in which a word must occur\r\n let start = column - config.maxLen / 2;\r\n if (start < 0) {\r\n start = 0;\r\n }\r\n else {\r\n textOffset += start;\r\n }\r\n text = text.substring(start, column + config.maxLen / 2);\r\n return getWordAtText(column, wordDefinition, text, textOffset, config);\r\n }\r\n const t1 = Date.now();\r\n const pos = column - 1 - textOffset;\r\n let prevRegexIndex = -1;\r\n let match = null;\r\n for (let i = 1;; i++) {\r\n // check time budget\r\n if (Date.now() - t1 >= config.timeBudget) {\r\n break;\r\n }\r\n // reset the index at which the regexp should start matching, also know where it\r\n // should stop so that subsequent search don't repeat previous searches\r\n const regexIndex = pos - config.windowSize * i;\r\n wordDefinition.lastIndex = Math.max(0, regexIndex);\r\n const thisMatch = _findRegexMatchEnclosingPosition(wordDefinition, text, pos, prevRegexIndex);\r\n if (!thisMatch && match) {\r\n // stop: we have something\r\n break;\r\n }\r\n match = thisMatch;\r\n // stop: searched at start\r\n if (regexIndex <= 0) {\r\n break;\r\n }\r\n prevRegexIndex = regexIndex;\r\n }\r\n if (match) {\r\n let result = {\r\n word: match[0],\r\n startColumn: textOffset + 1 + match.index,\r\n endColumn: textOffset + 1 + match.index + match[0].length\r\n };\r\n wordDefinition.lastIndex = 0;\r\n return result;\r\n }\r\n return null;\r\n}\r\nfunction _findRegexMatchEnclosingPosition(wordDefinition, text, pos, stopPos) {\r\n let match;\r\n while (match = wordDefinition.exec(text)) {\r\n const matchIndex = match.index || 0;\r\n if (matchIndex <= pos && wordDefinition.lastIndex >= pos) {\r\n return match;\r\n }\r\n else if (stopPos > 0 && matchIndex > stopPos) {\r\n return null;\r\n }\r\n }\r\n return null;\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/editor/common/model/wordHelper.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/editor/common/modes/linkComputer.js": /*!*******************************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/editor/common/modes/linkComputer.js ***! \*******************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Uint8Matrix\": () => (/* binding */ Uint8Matrix),\n/* harmony export */ \"StateMachine\": () => (/* binding */ StateMachine),\n/* harmony export */ \"LinkComputer\": () => (/* binding */ LinkComputer),\n/* harmony export */ \"computeLinks\": () => (/* binding */ computeLinks)\n/* harmony export */ });\n/* harmony import */ var _core_characterClassifier_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/characterClassifier.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/core/characterClassifier.js\");\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nclass Uint8Matrix {\r\n constructor(rows, cols, defaultValue) {\r\n const data = new Uint8Array(rows * cols);\r\n for (let i = 0, len = rows * cols; i < len; i++) {\r\n data[i] = defaultValue;\r\n }\r\n this._data = data;\r\n this.rows = rows;\r\n this.cols = cols;\r\n }\r\n get(row, col) {\r\n return this._data[row * this.cols + col];\r\n }\r\n set(row, col, value) {\r\n this._data[row * this.cols + col] = value;\r\n }\r\n}\r\nclass StateMachine {\r\n constructor(edges) {\r\n let maxCharCode = 0;\r\n let maxState = 0 /* Invalid */;\r\n for (let i = 0, len = edges.length; i < len; i++) {\r\n let [from, chCode, to] = edges[i];\r\n if (chCode > maxCharCode) {\r\n maxCharCode = chCode;\r\n }\r\n if (from > maxState) {\r\n maxState = from;\r\n }\r\n if (to > maxState) {\r\n maxState = to;\r\n }\r\n }\r\n maxCharCode++;\r\n maxState++;\r\n let states = new Uint8Matrix(maxState, maxCharCode, 0 /* Invalid */);\r\n for (let i = 0, len = edges.length; i < len; i++) {\r\n let [from, chCode, to] = edges[i];\r\n states.set(from, chCode, to);\r\n }\r\n this._states = states;\r\n this._maxCharCode = maxCharCode;\r\n }\r\n nextState(currentState, chCode) {\r\n if (chCode < 0 || chCode >= this._maxCharCode) {\r\n return 0 /* Invalid */;\r\n }\r\n return this._states.get(currentState, chCode);\r\n }\r\n}\r\n// State machine for http:// or https:// or file://\r\nlet _stateMachine = null;\r\nfunction getStateMachine() {\r\n if (_stateMachine === null) {\r\n _stateMachine = new StateMachine([\r\n [1 /* Start */, 104 /* h */, 2 /* H */],\r\n [1 /* Start */, 72 /* H */, 2 /* H */],\r\n [1 /* Start */, 102 /* f */, 6 /* F */],\r\n [1 /* Start */, 70 /* F */, 6 /* F */],\r\n [2 /* H */, 116 /* t */, 3 /* HT */],\r\n [2 /* H */, 84 /* T */, 3 /* HT */],\r\n [3 /* HT */, 116 /* t */, 4 /* HTT */],\r\n [3 /* HT */, 84 /* T */, 4 /* HTT */],\r\n [4 /* HTT */, 112 /* p */, 5 /* HTTP */],\r\n [4 /* HTT */, 80 /* P */, 5 /* HTTP */],\r\n [5 /* HTTP */, 115 /* s */, 9 /* BeforeColon */],\r\n [5 /* HTTP */, 83 /* S */, 9 /* BeforeColon */],\r\n [5 /* HTTP */, 58 /* Colon */, 10 /* AfterColon */],\r\n [6 /* F */, 105 /* i */, 7 /* FI */],\r\n [6 /* F */, 73 /* I */, 7 /* FI */],\r\n [7 /* FI */, 108 /* l */, 8 /* FIL */],\r\n [7 /* FI */, 76 /* L */, 8 /* FIL */],\r\n [8 /* FIL */, 101 /* e */, 9 /* BeforeColon */],\r\n [8 /* FIL */, 69 /* E */, 9 /* BeforeColon */],\r\n [9 /* BeforeColon */, 58 /* Colon */, 10 /* AfterColon */],\r\n [10 /* AfterColon */, 47 /* Slash */, 11 /* AlmostThere */],\r\n [11 /* AlmostThere */, 47 /* Slash */, 12 /* End */],\r\n ]);\r\n }\r\n return _stateMachine;\r\n}\r\nlet _classifier = null;\r\nfunction getClassifier() {\r\n if (_classifier === null) {\r\n _classifier = new _core_characterClassifier_js__WEBPACK_IMPORTED_MODULE_0__.CharacterClassifier(0 /* None */);\r\n const FORCE_TERMINATION_CHARACTERS = ' \\t<>\\'\\\"、。。、,.:;‘“〈《「『【〔([{「」}])〕】』」》〉”’`~…';\r\n for (let i = 0; i < FORCE_TERMINATION_CHARACTERS.length; i++) {\r\n _classifier.set(FORCE_TERMINATION_CHARACTERS.charCodeAt(i), 1 /* ForceTermination */);\r\n }\r\n const CANNOT_END_WITH_CHARACTERS = '.,;';\r\n for (let i = 0; i < CANNOT_END_WITH_CHARACTERS.length; i++) {\r\n _classifier.set(CANNOT_END_WITH_CHARACTERS.charCodeAt(i), 2 /* CannotEndIn */);\r\n }\r\n }\r\n return _classifier;\r\n}\r\nclass LinkComputer {\r\n static _createLink(classifier, line, lineNumber, linkBeginIndex, linkEndIndex) {\r\n // Do not allow to end link in certain characters...\r\n let lastIncludedCharIndex = linkEndIndex - 1;\r\n do {\r\n const chCode = line.charCodeAt(lastIncludedCharIndex);\r\n const chClass = classifier.get(chCode);\r\n if (chClass !== 2 /* CannotEndIn */) {\r\n break;\r\n }\r\n lastIncludedCharIndex--;\r\n } while (lastIncludedCharIndex > linkBeginIndex);\r\n // Handle links enclosed in parens, square brackets and curlys.\r\n if (linkBeginIndex > 0) {\r\n const charCodeBeforeLink = line.charCodeAt(linkBeginIndex - 1);\r\n const lastCharCodeInLink = line.charCodeAt(lastIncludedCharIndex);\r\n if ((charCodeBeforeLink === 40 /* OpenParen */ && lastCharCodeInLink === 41 /* CloseParen */)\r\n || (charCodeBeforeLink === 91 /* OpenSquareBracket */ && lastCharCodeInLink === 93 /* CloseSquareBracket */)\r\n || (charCodeBeforeLink === 123 /* OpenCurlyBrace */ && lastCharCodeInLink === 125 /* CloseCurlyBrace */)) {\r\n // Do not end in ) if ( is before the link start\r\n // Do not end in ] if [ is before the link start\r\n // Do not end in } if { is before the link start\r\n lastIncludedCharIndex--;\r\n }\r\n }\r\n return {\r\n range: {\r\n startLineNumber: lineNumber,\r\n startColumn: linkBeginIndex + 1,\r\n endLineNumber: lineNumber,\r\n endColumn: lastIncludedCharIndex + 2\r\n },\r\n url: line.substring(linkBeginIndex, lastIncludedCharIndex + 1)\r\n };\r\n }\r\n static computeLinks(model, stateMachine = getStateMachine()) {\r\n const classifier = getClassifier();\r\n let result = [];\r\n for (let i = 1, lineCount = model.getLineCount(); i <= lineCount; i++) {\r\n const line = model.getLineContent(i);\r\n const len = line.length;\r\n let j = 0;\r\n let linkBeginIndex = 0;\r\n let linkBeginChCode = 0;\r\n let state = 1 /* Start */;\r\n let hasOpenParens = false;\r\n let hasOpenSquareBracket = false;\r\n let inSquareBrackets = false;\r\n let hasOpenCurlyBracket = false;\r\n while (j < len) {\r\n let resetStateMachine = false;\r\n const chCode = line.charCodeAt(j);\r\n if (state === 13 /* Accept */) {\r\n let chClass;\r\n switch (chCode) {\r\n case 40 /* OpenParen */:\r\n hasOpenParens = true;\r\n chClass = 0 /* None */;\r\n break;\r\n case 41 /* CloseParen */:\r\n chClass = (hasOpenParens ? 0 /* None */ : 1 /* ForceTermination */);\r\n break;\r\n case 91 /* OpenSquareBracket */:\r\n inSquareBrackets = true;\r\n hasOpenSquareBracket = true;\r\n chClass = 0 /* None */;\r\n break;\r\n case 93 /* CloseSquareBracket */:\r\n inSquareBrackets = false;\r\n chClass = (hasOpenSquareBracket ? 0 /* None */ : 1 /* ForceTermination */);\r\n break;\r\n case 123 /* OpenCurlyBrace */:\r\n hasOpenCurlyBracket = true;\r\n chClass = 0 /* None */;\r\n break;\r\n case 125 /* CloseCurlyBrace */:\r\n chClass = (hasOpenCurlyBracket ? 0 /* None */ : 1 /* ForceTermination */);\r\n break;\r\n /* The following three rules make it that ' or \" or ` are allowed inside links if the link began with a different one */\r\n case 39 /* SingleQuote */:\r\n chClass = (linkBeginChCode === 34 /* DoubleQuote */ || linkBeginChCode === 96 /* BackTick */) ? 0 /* None */ : 1 /* ForceTermination */;\r\n break;\r\n case 34 /* DoubleQuote */:\r\n chClass = (linkBeginChCode === 39 /* SingleQuote */ || linkBeginChCode === 96 /* BackTick */) ? 0 /* None */ : 1 /* ForceTermination */;\r\n break;\r\n case 96 /* BackTick */:\r\n chClass = (linkBeginChCode === 39 /* SingleQuote */ || linkBeginChCode === 34 /* DoubleQuote */) ? 0 /* None */ : 1 /* ForceTermination */;\r\n break;\r\n case 42 /* Asterisk */:\r\n // `*` terminates a link if the link began with `*`\r\n chClass = (linkBeginChCode === 42 /* Asterisk */) ? 1 /* ForceTermination */ : 0 /* None */;\r\n break;\r\n case 124 /* Pipe */:\r\n // `|` terminates a link if the link began with `|`\r\n chClass = (linkBeginChCode === 124 /* Pipe */) ? 1 /* ForceTermination */ : 0 /* None */;\r\n break;\r\n case 32 /* Space */:\r\n // ` ` allow space in between [ and ]\r\n chClass = (inSquareBrackets ? 0 /* None */ : 1 /* ForceTermination */);\r\n break;\r\n default:\r\n chClass = classifier.get(chCode);\r\n }\r\n // Check if character terminates link\r\n if (chClass === 1 /* ForceTermination */) {\r\n result.push(LinkComputer._createLink(classifier, line, i, linkBeginIndex, j));\r\n resetStateMachine = true;\r\n }\r\n }\r\n else if (state === 12 /* End */) {\r\n let chClass;\r\n if (chCode === 91 /* OpenSquareBracket */) {\r\n // Allow for the authority part to contain ipv6 addresses which contain [ and ]\r\n hasOpenSquareBracket = true;\r\n chClass = 0 /* None */;\r\n }\r\n else {\r\n chClass = classifier.get(chCode);\r\n }\r\n // Check if character terminates link\r\n if (chClass === 1 /* ForceTermination */) {\r\n resetStateMachine = true;\r\n }\r\n else {\r\n state = 13 /* Accept */;\r\n }\r\n }\r\n else {\r\n state = stateMachine.nextState(state, chCode);\r\n if (state === 0 /* Invalid */) {\r\n resetStateMachine = true;\r\n }\r\n }\r\n if (resetStateMachine) {\r\n state = 1 /* Start */;\r\n hasOpenParens = false;\r\n hasOpenSquareBracket = false;\r\n hasOpenCurlyBracket = false;\r\n // Record where the link started\r\n linkBeginIndex = j + 1;\r\n linkBeginChCode = chCode;\r\n }\r\n j++;\r\n }\r\n if (state === 13 /* Accept */) {\r\n result.push(LinkComputer._createLink(classifier, line, i, linkBeginIndex, len));\r\n }\r\n }\r\n return result;\r\n }\r\n}\r\n/**\r\n * Returns an array of all links contains in the provided\r\n * document. *Note* that this operation is computational\r\n * expensive and should not run in the UI thread.\r\n */\r\nfunction computeLinks(model) {\r\n if (!model || typeof model.getLineCount !== 'function' || typeof model.getLineContent !== 'function') {\r\n // Unknown caller!\r\n return [];\r\n }\r\n return LinkComputer.computeLinks(model);\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/editor/common/modes/linkComputer.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/editor/common/modes/supports/inplaceReplaceSupport.js": /*!*************************************************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/editor/common/modes/supports/inplaceReplaceSupport.js ***! \*************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"BasicInplaceReplace\": () => (/* binding */ BasicInplaceReplace)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nclass BasicInplaceReplace {\r\n constructor() {\r\n this._defaultValueSet = [\r\n ['true', 'false'],\r\n ['True', 'False'],\r\n ['Private', 'Public', 'Friend', 'ReadOnly', 'Partial', 'Protected', 'WriteOnly'],\r\n ['public', 'protected', 'private'],\r\n ];\r\n }\r\n navigateValueSet(range1, text1, range2, text2, up) {\r\n if (range1 && text1) {\r\n let result = this.doNavigateValueSet(text1, up);\r\n if (result) {\r\n return {\r\n range: range1,\r\n value: result\r\n };\r\n }\r\n }\r\n if (range2 && text2) {\r\n let result = this.doNavigateValueSet(text2, up);\r\n if (result) {\r\n return {\r\n range: range2,\r\n value: result\r\n };\r\n }\r\n }\r\n return null;\r\n }\r\n doNavigateValueSet(text, up) {\r\n let numberResult = this.numberReplace(text, up);\r\n if (numberResult !== null) {\r\n return numberResult;\r\n }\r\n return this.textReplace(text, up);\r\n }\r\n numberReplace(value, up) {\r\n let precision = Math.pow(10, value.length - (value.lastIndexOf('.') + 1));\r\n let n1 = Number(value);\r\n let n2 = parseFloat(value);\r\n if (!isNaN(n1) && !isNaN(n2) && n1 === n2) {\r\n if (n1 === 0 && !up) {\r\n return null; // don't do negative\r\n //\t\t\t} else if(n1 === 9 && up) {\r\n //\t\t\t\treturn null; // don't insert 10 into a number\r\n }\r\n else {\r\n n1 = Math.floor(n1 * precision);\r\n n1 += up ? precision : -precision;\r\n return String(n1 / precision);\r\n }\r\n }\r\n return null;\r\n }\r\n textReplace(value, up) {\r\n return this.valueSetsReplace(this._defaultValueSet, value, up);\r\n }\r\n valueSetsReplace(valueSets, value, up) {\r\n let result = null;\r\n for (let i = 0, len = valueSets.length; result === null && i < len; i++) {\r\n result = this.valueSetReplace(valueSets[i], value, up);\r\n }\r\n return result;\r\n }\r\n valueSetReplace(valueSet, value, up) {\r\n let idx = valueSet.indexOf(value);\r\n if (idx >= 0) {\r\n idx += up ? +1 : -1;\r\n if (idx < 0) {\r\n idx = valueSet.length - 1;\r\n }\r\n else {\r\n idx %= valueSet.length;\r\n }\r\n return valueSet[idx];\r\n }\r\n return null;\r\n }\r\n}\r\nBasicInplaceReplace.INSTANCE = new BasicInplaceReplace();\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/editor/common/modes/supports/inplaceReplaceSupport.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/editor/common/services/editorSimpleWorker.js": /*!****************************************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/editor/common/services/editorSimpleWorker.js ***! \****************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"EditorSimpleWorker\": () => (/* binding */ EditorSimpleWorker),\n/* harmony export */ \"create\": () => (/* binding */ create)\n/* harmony export */ });\n/* harmony import */ var _base_common_arrays_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../base/common/arrays.js */ \"./node_modules/monaco-editor/esm/vs/base/common/arrays.js\");\n/* harmony import */ var _base_common_diff_diff_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../base/common/diff/diff.js */ \"./node_modules/monaco-editor/esm/vs/base/common/diff/diff.js\");\n/* harmony import */ var _base_common_platform_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../base/common/platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/* harmony import */ var _base_common_uri_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../base/common/uri.js */ \"./node_modules/monaco-editor/esm/vs/base/common/uri.js\");\n/* harmony import */ var _core_position_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/position.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/core/position.js\");\n/* harmony import */ var _core_range_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../core/range.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/core/range.js\");\n/* harmony import */ var _diff_diffComputer_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../diff/diffComputer.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/diff/diffComputer.js\");\n/* harmony import */ var _model_mirrorTextModel_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../model/mirrorTextModel.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/model/mirrorTextModel.js\");\n/* harmony import */ var _model_wordHelper_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../model/wordHelper.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/model/wordHelper.js\");\n/* harmony import */ var _modes_linkComputer_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../modes/linkComputer.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/modes/linkComputer.js\");\n/* harmony import */ var _modes_supports_inplaceReplaceSupport_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../modes/supports/inplaceReplaceSupport.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/modes/supports/inplaceReplaceSupport.js\");\n/* harmony import */ var _standalone_standaloneBase_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../standalone/standaloneBase.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/standalone/standaloneBase.js\");\n/* harmony import */ var _base_common_types_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../../base/common/types.js */ \"./node_modules/monaco-editor/esm/vs/base/common/types.js\");\n/* harmony import */ var _base_common_stopwatch_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../base/common/stopwatch.js */ \"./node_modules/monaco-editor/esm/vs/base/common/stopwatch.js\");\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * @internal\r\n */\r\nclass MirrorModel extends _model_mirrorTextModel_js__WEBPACK_IMPORTED_MODULE_7__.MirrorTextModel {\r\n get uri() {\r\n return this._uri;\r\n }\r\n get version() {\r\n return this._versionId;\r\n }\r\n get eol() {\r\n return this._eol;\r\n }\r\n getValue() {\r\n return this.getText();\r\n }\r\n getLinesContent() {\r\n return this._lines.slice(0);\r\n }\r\n getLineCount() {\r\n return this._lines.length;\r\n }\r\n getLineContent(lineNumber) {\r\n return this._lines[lineNumber - 1];\r\n }\r\n getWordAtPosition(position, wordDefinition) {\r\n let wordAtText = (0,_model_wordHelper_js__WEBPACK_IMPORTED_MODULE_8__.getWordAtText)(position.column, (0,_model_wordHelper_js__WEBPACK_IMPORTED_MODULE_8__.ensureValidWordDefinition)(wordDefinition), this._lines[position.lineNumber - 1], 0);\r\n if (wordAtText) {\r\n return new _core_range_js__WEBPACK_IMPORTED_MODULE_5__.Range(position.lineNumber, wordAtText.startColumn, position.lineNumber, wordAtText.endColumn);\r\n }\r\n return null;\r\n }\r\n words(wordDefinition) {\r\n const lines = this._lines;\r\n const wordenize = this._wordenize.bind(this);\r\n let lineNumber = 0;\r\n let lineText = '';\r\n let wordRangesIdx = 0;\r\n let wordRanges = [];\r\n return {\r\n *[Symbol.iterator]() {\r\n while (true) {\r\n if (wordRangesIdx < wordRanges.length) {\r\n const value = lineText.substring(wordRanges[wordRangesIdx].start, wordRanges[wordRangesIdx].end);\r\n wordRangesIdx += 1;\r\n yield value;\r\n }\r\n else {\r\n if (lineNumber < lines.length) {\r\n lineText = lines[lineNumber];\r\n wordRanges = wordenize(lineText, wordDefinition);\r\n wordRangesIdx = 0;\r\n lineNumber += 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }\r\n getLineWords(lineNumber, wordDefinition) {\r\n let content = this._lines[lineNumber - 1];\r\n let ranges = this._wordenize(content, wordDefinition);\r\n let words = [];\r\n for (const range of ranges) {\r\n words.push({\r\n word: content.substring(range.start, range.end),\r\n startColumn: range.start + 1,\r\n endColumn: range.end + 1\r\n });\r\n }\r\n return words;\r\n }\r\n _wordenize(content, wordDefinition) {\r\n const result = [];\r\n let match;\r\n wordDefinition.lastIndex = 0; // reset lastIndex just to be sure\r\n while (match = wordDefinition.exec(content)) {\r\n if (match[0].length === 0) {\r\n // it did match the empty string\r\n break;\r\n }\r\n result.push({ start: match.index, end: match.index + match[0].length });\r\n }\r\n return result;\r\n }\r\n getValueInRange(range) {\r\n range = this._validateRange(range);\r\n if (range.startLineNumber === range.endLineNumber) {\r\n return this._lines[range.startLineNumber - 1].substring(range.startColumn - 1, range.endColumn - 1);\r\n }\r\n let lineEnding = this._eol;\r\n let startLineIndex = range.startLineNumber - 1;\r\n let endLineIndex = range.endLineNumber - 1;\r\n let resultLines = [];\r\n resultLines.push(this._lines[startLineIndex].substring(range.startColumn - 1));\r\n for (let i = startLineIndex + 1; i < endLineIndex; i++) {\r\n resultLines.push(this._lines[i]);\r\n }\r\n resultLines.push(this._lines[endLineIndex].substring(0, range.endColumn - 1));\r\n return resultLines.join(lineEnding);\r\n }\r\n offsetAt(position) {\r\n position = this._validatePosition(position);\r\n this._ensureLineStarts();\r\n return this._lineStarts.getAccumulatedValue(position.lineNumber - 2) + (position.column - 1);\r\n }\r\n positionAt(offset) {\r\n offset = Math.floor(offset);\r\n offset = Math.max(0, offset);\r\n this._ensureLineStarts();\r\n let out = this._lineStarts.getIndexOf(offset);\r\n let lineLength = this._lines[out.index].length;\r\n // Ensure we return a valid position\r\n return {\r\n lineNumber: 1 + out.index,\r\n column: 1 + Math.min(out.remainder, lineLength)\r\n };\r\n }\r\n _validateRange(range) {\r\n const start = this._validatePosition({ lineNumber: range.startLineNumber, column: range.startColumn });\r\n const end = this._validatePosition({ lineNumber: range.endLineNumber, column: range.endColumn });\r\n if (start.lineNumber !== range.startLineNumber\r\n || start.column !== range.startColumn\r\n || end.lineNumber !== range.endLineNumber\r\n || end.column !== range.endColumn) {\r\n return {\r\n startLineNumber: start.lineNumber,\r\n startColumn: start.column,\r\n endLineNumber: end.lineNumber,\r\n endColumn: end.column\r\n };\r\n }\r\n return range;\r\n }\r\n _validatePosition(position) {\r\n if (!_core_position_js__WEBPACK_IMPORTED_MODULE_4__.Position.isIPosition(position)) {\r\n throw new Error('bad position');\r\n }\r\n let { lineNumber, column } = position;\r\n let hasChanged = false;\r\n if (lineNumber < 1) {\r\n lineNumber = 1;\r\n column = 1;\r\n hasChanged = true;\r\n }\r\n else if (lineNumber > this._lines.length) {\r\n lineNumber = this._lines.length;\r\n column = this._lines[lineNumber - 1].length + 1;\r\n hasChanged = true;\r\n }\r\n else {\r\n let maxCharacter = this._lines[lineNumber - 1].length + 1;\r\n if (column < 1) {\r\n column = 1;\r\n hasChanged = true;\r\n }\r\n else if (column > maxCharacter) {\r\n column = maxCharacter;\r\n hasChanged = true;\r\n }\r\n }\r\n if (!hasChanged) {\r\n return position;\r\n }\r\n else {\r\n return { lineNumber, column };\r\n }\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nclass EditorSimpleWorker {\r\n constructor(host, foreignModuleFactory) {\r\n this._host = host;\r\n this._models = Object.create(null);\r\n this._foreignModuleFactory = foreignModuleFactory;\r\n this._foreignModule = null;\r\n }\r\n dispose() {\r\n this._models = Object.create(null);\r\n }\r\n _getModel(uri) {\r\n return this._models[uri];\r\n }\r\n _getModels() {\r\n let all = [];\r\n Object.keys(this._models).forEach((key) => all.push(this._models[key]));\r\n return all;\r\n }\r\n acceptNewModel(data) {\r\n this._models[data.url] = new MirrorModel(_base_common_uri_js__WEBPACK_IMPORTED_MODULE_3__.URI.parse(data.url), data.lines, data.EOL, data.versionId);\r\n }\r\n acceptModelChanged(strURL, e) {\r\n if (!this._models[strURL]) {\r\n return;\r\n }\r\n let model = this._models[strURL];\r\n model.onEvents(e);\r\n }\r\n acceptRemovedModel(strURL) {\r\n if (!this._models[strURL]) {\r\n return;\r\n }\r\n delete this._models[strURL];\r\n }\r\n // ---- BEGIN diff --------------------------------------------------------------------------\r\n computeDiff(originalUrl, modifiedUrl, ignoreTrimWhitespace, maxComputationTime) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const original = this._getModel(originalUrl);\r\n const modified = this._getModel(modifiedUrl);\r\n if (!original || !modified) {\r\n return null;\r\n }\r\n const originalLines = original.getLinesContent();\r\n const modifiedLines = modified.getLinesContent();\r\n const diffComputer = new _diff_diffComputer_js__WEBPACK_IMPORTED_MODULE_6__.DiffComputer(originalLines, modifiedLines, {\r\n shouldComputeCharChanges: true,\r\n shouldPostProcessCharChanges: true,\r\n shouldIgnoreTrimWhitespace: ignoreTrimWhitespace,\r\n shouldMakePrettyDiff: true,\r\n maxComputationTime: maxComputationTime\r\n });\r\n const diffResult = diffComputer.computeDiff();\r\n const identical = (diffResult.changes.length > 0 ? false : this._modelsAreIdentical(original, modified));\r\n return {\r\n quitEarly: diffResult.quitEarly,\r\n identical: identical,\r\n changes: diffResult.changes\r\n };\r\n });\r\n }\r\n _modelsAreIdentical(original, modified) {\r\n const originalLineCount = original.getLineCount();\r\n const modifiedLineCount = modified.getLineCount();\r\n if (originalLineCount !== modifiedLineCount) {\r\n return false;\r\n }\r\n for (let line = 1; line <= originalLineCount; line++) {\r\n const originalLine = original.getLineContent(line);\r\n const modifiedLine = modified.getLineContent(line);\r\n if (originalLine !== modifiedLine) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n computeMoreMinimalEdits(modelUrl, edits) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const model = this._getModel(modelUrl);\r\n if (!model) {\r\n return edits;\r\n }\r\n const result = [];\r\n let lastEol = undefined;\r\n edits = (0,_base_common_arrays_js__WEBPACK_IMPORTED_MODULE_0__.mergeSort)(edits, (a, b) => {\r\n if (a.range && b.range) {\r\n return _core_range_js__WEBPACK_IMPORTED_MODULE_5__.Range.compareRangesUsingStarts(a.range, b.range);\r\n }\r\n // eol only changes should go to the end\r\n let aRng = a.range ? 0 : 1;\r\n let bRng = b.range ? 0 : 1;\r\n return aRng - bRng;\r\n });\r\n for (let { range, text, eol } of edits) {\r\n if (typeof eol === 'number') {\r\n lastEol = eol;\r\n }\r\n if (_core_range_js__WEBPACK_IMPORTED_MODULE_5__.Range.isEmpty(range) && !text) {\r\n // empty change\r\n continue;\r\n }\r\n const original = model.getValueInRange(range);\r\n text = text.replace(/\\r\\n|\\n|\\r/g, model.eol);\r\n if (original === text) {\r\n // noop\r\n continue;\r\n }\r\n // make sure diff won't take too long\r\n if (Math.max(text.length, original.length) > EditorSimpleWorker._diffLimit) {\r\n result.push({ range, text });\r\n continue;\r\n }\r\n // compute diff between original and edit.text\r\n const changes = (0,_base_common_diff_diff_js__WEBPACK_IMPORTED_MODULE_1__.stringDiff)(original, text, false);\r\n const editOffset = model.offsetAt(_core_range_js__WEBPACK_IMPORTED_MODULE_5__.Range.lift(range).getStartPosition());\r\n for (const change of changes) {\r\n const start = model.positionAt(editOffset + change.originalStart);\r\n const end = model.positionAt(editOffset + change.originalStart + change.originalLength);\r\n const newEdit = {\r\n text: text.substr(change.modifiedStart, change.modifiedLength),\r\n range: { startLineNumber: start.lineNumber, startColumn: start.column, endLineNumber: end.lineNumber, endColumn: end.column }\r\n };\r\n if (model.getValueInRange(newEdit.range) !== newEdit.text) {\r\n result.push(newEdit);\r\n }\r\n }\r\n }\r\n if (typeof lastEol === 'number') {\r\n result.push({ eol: lastEol, text: '', range: { startLineNumber: 0, startColumn: 0, endLineNumber: 0, endColumn: 0 } });\r\n }\r\n return result;\r\n });\r\n }\r\n // ---- END minimal edits ---------------------------------------------------------------\r\n computeLinks(modelUrl) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let model = this._getModel(modelUrl);\r\n if (!model) {\r\n return null;\r\n }\r\n return (0,_modes_linkComputer_js__WEBPACK_IMPORTED_MODULE_9__.computeLinks)(model);\r\n });\r\n }\r\n textualSuggest(modelUrls, leadingWord, wordDef, wordDefFlags) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const sw = new _base_common_stopwatch_js__WEBPACK_IMPORTED_MODULE_13__.StopWatch(true);\r\n const wordDefRegExp = new RegExp(wordDef, wordDefFlags);\r\n const seen = new Set();\r\n outer: for (let url of modelUrls) {\r\n const model = this._getModel(url);\r\n if (!model) {\r\n continue;\r\n }\r\n for (let word of model.words(wordDefRegExp)) {\r\n if (word === leadingWord || !isNaN(Number(word))) {\r\n continue;\r\n }\r\n seen.add(word);\r\n if (seen.size > EditorSimpleWorker._suggestionsLimit) {\r\n break outer;\r\n }\r\n }\r\n }\r\n return { words: Array.from(seen), duration: sw.elapsed() };\r\n });\r\n }\r\n // ---- END suggest --------------------------------------------------------------------------\r\n //#region -- word ranges --\r\n computeWordRanges(modelUrl, range, wordDef, wordDefFlags) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let model = this._getModel(modelUrl);\r\n if (!model) {\r\n return Object.create(null);\r\n }\r\n const wordDefRegExp = new RegExp(wordDef, wordDefFlags);\r\n const result = Object.create(null);\r\n for (let line = range.startLineNumber; line < range.endLineNumber; line++) {\r\n let words = model.getLineWords(line, wordDefRegExp);\r\n for (const word of words) {\r\n if (!isNaN(Number(word.word))) {\r\n continue;\r\n }\r\n let array = result[word.word];\r\n if (!array) {\r\n array = [];\r\n result[word.word] = array;\r\n }\r\n array.push({\r\n startLineNumber: line,\r\n startColumn: word.startColumn,\r\n endLineNumber: line,\r\n endColumn: word.endColumn\r\n });\r\n }\r\n }\r\n return result;\r\n });\r\n }\r\n //#endregion\r\n navigateValueSet(modelUrl, range, up, wordDef, wordDefFlags) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let model = this._getModel(modelUrl);\r\n if (!model) {\r\n return null;\r\n }\r\n let wordDefRegExp = new RegExp(wordDef, wordDefFlags);\r\n if (range.startColumn === range.endColumn) {\r\n range = {\r\n startLineNumber: range.startLineNumber,\r\n startColumn: range.startColumn,\r\n endLineNumber: range.endLineNumber,\r\n endColumn: range.endColumn + 1\r\n };\r\n }\r\n let selectionText = model.getValueInRange(range);\r\n let wordRange = model.getWordAtPosition({ lineNumber: range.startLineNumber, column: range.startColumn }, wordDefRegExp);\r\n if (!wordRange) {\r\n return null;\r\n }\r\n let word = model.getValueInRange(wordRange);\r\n let result = _modes_supports_inplaceReplaceSupport_js__WEBPACK_IMPORTED_MODULE_10__.BasicInplaceReplace.INSTANCE.navigateValueSet(range, selectionText, wordRange, word, up);\r\n return result;\r\n });\r\n }\r\n // ---- BEGIN foreign module support --------------------------------------------------------------------------\r\n loadForeignModule(moduleId, createData, foreignHostMethods) {\r\n const proxyMethodRequest = (method, args) => {\r\n return this._host.fhr(method, args);\r\n };\r\n const foreignHost = _base_common_types_js__WEBPACK_IMPORTED_MODULE_12__.createProxyObject(foreignHostMethods, proxyMethodRequest);\r\n let ctx = {\r\n host: foreignHost,\r\n getMirrorModels: () => {\r\n return this._getModels();\r\n }\r\n };\r\n if (this._foreignModuleFactory) {\r\n this._foreignModule = this._foreignModuleFactory(ctx, createData);\r\n // static foreing module\r\n return Promise.resolve(_base_common_types_js__WEBPACK_IMPORTED_MODULE_12__.getAllMethodNames(this._foreignModule));\r\n }\r\n // ESM-comment-begin\r\n // \t\treturn new Promise((resolve, reject) => {\r\n // \t\t\trequire([moduleId], (foreignModule: { create: IForeignModuleFactory }) => {\r\n // \t\t\t\tthis._foreignModule = foreignModule.create(ctx, createData);\r\n // \r\n // \t\t\t\tresolve(types.getAllMethodNames(this._foreignModule));\r\n // \r\n // \t\t\t}, reject);\r\n // \t\t});\r\n // ESM-comment-end\r\n // ESM-uncomment-begin\r\n return Promise.reject(new Error(`Unexpected usage`));\r\n // ESM-uncomment-end\r\n }\r\n // foreign method request\r\n fmr(method, args) {\r\n if (!this._foreignModule || typeof this._foreignModule[method] !== 'function') {\r\n return Promise.reject(new Error('Missing requestHandler or method: ' + method));\r\n }\r\n try {\r\n return Promise.resolve(this._foreignModule[method].apply(this._foreignModule, args));\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n}\r\n// ---- END diff --------------------------------------------------------------------------\r\n// ---- BEGIN minimal edits ---------------------------------------------------------------\r\nEditorSimpleWorker._diffLimit = 100000;\r\n// ---- BEGIN suggest --------------------------------------------------------------------------\r\nEditorSimpleWorker._suggestionsLimit = 10000;\r\n/**\r\n * Called on the worker side\r\n * @internal\r\n */\r\nfunction create(host) {\r\n return new EditorSimpleWorker(host, null);\r\n}\r\nif (typeof importScripts === 'function') {\r\n // Running in a web worker\r\n _base_common_platform_js__WEBPACK_IMPORTED_MODULE_2__.globals.monaco = (0,_standalone_standaloneBase_js__WEBPACK_IMPORTED_MODULE_11__.createMonacoBaseAPI)();\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/editor/common/services/editorSimpleWorker.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/editor/common/standalone/standaloneBase.js": /*!**************************************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/editor/common/standalone/standaloneBase.js ***! \**************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"KeyMod\": () => (/* binding */ KeyMod),\n/* harmony export */ \"createMonacoBaseAPI\": () => (/* binding */ createMonacoBaseAPI)\n/* harmony export */ });\n/* harmony import */ var _base_common_cancellation_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../base/common/cancellation.js */ \"./node_modules/monaco-editor/esm/vs/base/common/cancellation.js\");\n/* harmony import */ var _base_common_event_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../base/common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _base_common_keyCodes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../base/common/keyCodes.js */ \"./node_modules/monaco-editor/esm/vs/base/common/keyCodes.js\");\n/* harmony import */ var _base_common_uri_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../base/common/uri.js */ \"./node_modules/monaco-editor/esm/vs/base/common/uri.js\");\n/* harmony import */ var _core_position_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/position.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/core/position.js\");\n/* harmony import */ var _core_range_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../core/range.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/core/range.js\");\n/* harmony import */ var _core_selection_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../core/selection.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/core/selection.js\");\n/* harmony import */ var _core_token_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../core/token.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/core/token.js\");\n/* harmony import */ var _standaloneEnums_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./standaloneEnums.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/standalone/standaloneEnums.js\");\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nclass KeyMod {\r\n static chord(firstPart, secondPart) {\r\n return (0,_base_common_keyCodes_js__WEBPACK_IMPORTED_MODULE_2__.KeyChord)(firstPart, secondPart);\r\n }\r\n}\r\nKeyMod.CtrlCmd = 2048 /* CtrlCmd */;\r\nKeyMod.Shift = 1024 /* Shift */;\r\nKeyMod.Alt = 512 /* Alt */;\r\nKeyMod.WinCtrl = 256 /* WinCtrl */;\r\nfunction createMonacoBaseAPI() {\r\n return {\r\n editor: undefined,\r\n languages: undefined,\r\n CancellationTokenSource: _base_common_cancellation_js__WEBPACK_IMPORTED_MODULE_0__.CancellationTokenSource,\r\n Emitter: _base_common_event_js__WEBPACK_IMPORTED_MODULE_1__.Emitter,\r\n KeyCode: _standaloneEnums_js__WEBPACK_IMPORTED_MODULE_8__.KeyCode,\r\n KeyMod: KeyMod,\r\n Position: _core_position_js__WEBPACK_IMPORTED_MODULE_4__.Position,\r\n Range: _core_range_js__WEBPACK_IMPORTED_MODULE_5__.Range,\r\n Selection: _core_selection_js__WEBPACK_IMPORTED_MODULE_6__.Selection,\r\n SelectionDirection: _standaloneEnums_js__WEBPACK_IMPORTED_MODULE_8__.SelectionDirection,\r\n MarkerSeverity: _standaloneEnums_js__WEBPACK_IMPORTED_MODULE_8__.MarkerSeverity,\r\n MarkerTag: _standaloneEnums_js__WEBPACK_IMPORTED_MODULE_8__.MarkerTag,\r\n Uri: _base_common_uri_js__WEBPACK_IMPORTED_MODULE_3__.URI,\r\n Token: _core_token_js__WEBPACK_IMPORTED_MODULE_7__.Token\r\n };\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/editor/common/standalone/standaloneBase.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/editor/common/standalone/standaloneEnums.js": /*!***************************************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/editor/common/standalone/standaloneEnums.js ***! \***************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"AccessibilitySupport\": () => (/* binding */ AccessibilitySupport),\n/* harmony export */ \"CompletionItemInsertTextRule\": () => (/* binding */ CompletionItemInsertTextRule),\n/* harmony export */ \"CompletionItemKind\": () => (/* binding */ CompletionItemKind),\n/* harmony export */ \"CompletionItemTag\": () => (/* binding */ CompletionItemTag),\n/* harmony export */ \"CompletionTriggerKind\": () => (/* binding */ CompletionTriggerKind),\n/* harmony export */ \"ContentWidgetPositionPreference\": () => (/* binding */ ContentWidgetPositionPreference),\n/* harmony export */ \"CursorChangeReason\": () => (/* binding */ CursorChangeReason),\n/* harmony export */ \"DefaultEndOfLine\": () => (/* binding */ DefaultEndOfLine),\n/* harmony export */ \"DocumentHighlightKind\": () => (/* binding */ DocumentHighlightKind),\n/* harmony export */ \"EditorAutoIndentStrategy\": () => (/* binding */ EditorAutoIndentStrategy),\n/* harmony export */ \"EditorOption\": () => (/* binding */ EditorOption),\n/* harmony export */ \"EndOfLinePreference\": () => (/* binding */ EndOfLinePreference),\n/* harmony export */ \"EndOfLineSequence\": () => (/* binding */ EndOfLineSequence),\n/* harmony export */ \"IndentAction\": () => (/* binding */ IndentAction),\n/* harmony export */ \"InlineHintKind\": () => (/* binding */ InlineHintKind),\n/* harmony export */ \"KeyCode\": () => (/* binding */ KeyCode),\n/* harmony export */ \"MarkerSeverity\": () => (/* binding */ MarkerSeverity),\n/* harmony export */ \"MarkerTag\": () => (/* binding */ MarkerTag),\n/* harmony export */ \"MinimapPosition\": () => (/* binding */ MinimapPosition),\n/* harmony export */ \"MouseTargetType\": () => (/* binding */ MouseTargetType),\n/* harmony export */ \"OverlayWidgetPositionPreference\": () => (/* binding */ OverlayWidgetPositionPreference),\n/* harmony export */ \"OverviewRulerLane\": () => (/* binding */ OverviewRulerLane),\n/* harmony export */ \"RenderLineNumbersType\": () => (/* binding */ RenderLineNumbersType),\n/* harmony export */ \"RenderMinimap\": () => (/* binding */ RenderMinimap),\n/* harmony export */ \"ScrollType\": () => (/* binding */ ScrollType),\n/* harmony export */ \"ScrollbarVisibility\": () => (/* binding */ ScrollbarVisibility),\n/* harmony export */ \"SelectionDirection\": () => (/* binding */ SelectionDirection),\n/* harmony export */ \"SignatureHelpTriggerKind\": () => (/* binding */ SignatureHelpTriggerKind),\n/* harmony export */ \"SymbolKind\": () => (/* binding */ SymbolKind),\n/* harmony export */ \"SymbolTag\": () => (/* binding */ SymbolTag),\n/* harmony export */ \"TextEditorCursorBlinkingStyle\": () => (/* binding */ TextEditorCursorBlinkingStyle),\n/* harmony export */ \"TextEditorCursorStyle\": () => (/* binding */ TextEditorCursorStyle),\n/* harmony export */ \"TrackedRangeStickiness\": () => (/* binding */ TrackedRangeStickiness),\n/* harmony export */ \"WrappingIndent\": () => (/* binding */ WrappingIndent)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n// THIS IS A GENERATED FILE. DO NOT EDIT DIRECTLY.\r\nvar AccessibilitySupport;\r\n(function (AccessibilitySupport) {\r\n /**\r\n * This should be the browser case where it is not known if a screen reader is attached or no.\r\n */\r\n AccessibilitySupport[AccessibilitySupport[\"Unknown\"] = 0] = \"Unknown\";\r\n AccessibilitySupport[AccessibilitySupport[\"Disabled\"] = 1] = \"Disabled\";\r\n AccessibilitySupport[AccessibilitySupport[\"Enabled\"] = 2] = \"Enabled\";\r\n})(AccessibilitySupport || (AccessibilitySupport = {}));\r\nvar CompletionItemInsertTextRule;\r\n(function (CompletionItemInsertTextRule) {\r\n /**\r\n * Adjust whitespace/indentation of multiline insert texts to\r\n * match the current line indentation.\r\n */\r\n CompletionItemInsertTextRule[CompletionItemInsertTextRule[\"KeepWhitespace\"] = 1] = \"KeepWhitespace\";\r\n /**\r\n * `insertText` is a snippet.\r\n */\r\n CompletionItemInsertTextRule[CompletionItemInsertTextRule[\"InsertAsSnippet\"] = 4] = \"InsertAsSnippet\";\r\n})(CompletionItemInsertTextRule || (CompletionItemInsertTextRule = {}));\r\nvar CompletionItemKind;\r\n(function (CompletionItemKind) {\r\n CompletionItemKind[CompletionItemKind[\"Method\"] = 0] = \"Method\";\r\n CompletionItemKind[CompletionItemKind[\"Function\"] = 1] = \"Function\";\r\n CompletionItemKind[CompletionItemKind[\"Constructor\"] = 2] = \"Constructor\";\r\n CompletionItemKind[CompletionItemKind[\"Field\"] = 3] = \"Field\";\r\n CompletionItemKind[CompletionItemKind[\"Variable\"] = 4] = \"Variable\";\r\n CompletionItemKind[CompletionItemKind[\"Class\"] = 5] = \"Class\";\r\n CompletionItemKind[CompletionItemKind[\"Struct\"] = 6] = \"Struct\";\r\n CompletionItemKind[CompletionItemKind[\"Interface\"] = 7] = \"Interface\";\r\n CompletionItemKind[CompletionItemKind[\"Module\"] = 8] = \"Module\";\r\n CompletionItemKind[CompletionItemKind[\"Property\"] = 9] = \"Property\";\r\n CompletionItemKind[CompletionItemKind[\"Event\"] = 10] = \"Event\";\r\n CompletionItemKind[CompletionItemKind[\"Operator\"] = 11] = \"Operator\";\r\n CompletionItemKind[CompletionItemKind[\"Unit\"] = 12] = \"Unit\";\r\n CompletionItemKind[CompletionItemKind[\"Value\"] = 13] = \"Value\";\r\n CompletionItemKind[CompletionItemKind[\"Constant\"] = 14] = \"Constant\";\r\n CompletionItemKind[CompletionItemKind[\"Enum\"] = 15] = \"Enum\";\r\n CompletionItemKind[CompletionItemKind[\"EnumMember\"] = 16] = \"EnumMember\";\r\n CompletionItemKind[CompletionItemKind[\"Keyword\"] = 17] = \"Keyword\";\r\n CompletionItemKind[CompletionItemKind[\"Text\"] = 18] = \"Text\";\r\n CompletionItemKind[CompletionItemKind[\"Color\"] = 19] = \"Color\";\r\n CompletionItemKind[CompletionItemKind[\"File\"] = 20] = \"File\";\r\n CompletionItemKind[CompletionItemKind[\"Reference\"] = 21] = \"Reference\";\r\n CompletionItemKind[CompletionItemKind[\"Customcolor\"] = 22] = \"Customcolor\";\r\n CompletionItemKind[CompletionItemKind[\"Folder\"] = 23] = \"Folder\";\r\n CompletionItemKind[CompletionItemKind[\"TypeParameter\"] = 24] = \"TypeParameter\";\r\n CompletionItemKind[CompletionItemKind[\"User\"] = 25] = \"User\";\r\n CompletionItemKind[CompletionItemKind[\"Issue\"] = 26] = \"Issue\";\r\n CompletionItemKind[CompletionItemKind[\"Snippet\"] = 27] = \"Snippet\";\r\n})(CompletionItemKind || (CompletionItemKind = {}));\r\nvar CompletionItemTag;\r\n(function (CompletionItemTag) {\r\n CompletionItemTag[CompletionItemTag[\"Deprecated\"] = 1] = \"Deprecated\";\r\n})(CompletionItemTag || (CompletionItemTag = {}));\r\n/**\r\n * How a suggest provider was triggered.\r\n */\r\nvar CompletionTriggerKind;\r\n(function (CompletionTriggerKind) {\r\n CompletionTriggerKind[CompletionTriggerKind[\"Invoke\"] = 0] = \"Invoke\";\r\n CompletionTriggerKind[CompletionTriggerKind[\"TriggerCharacter\"] = 1] = \"TriggerCharacter\";\r\n CompletionTriggerKind[CompletionTriggerKind[\"TriggerForIncompleteCompletions\"] = 2] = \"TriggerForIncompleteCompletions\";\r\n})(CompletionTriggerKind || (CompletionTriggerKind = {}));\r\n/**\r\n * A positioning preference for rendering content widgets.\r\n */\r\nvar ContentWidgetPositionPreference;\r\n(function (ContentWidgetPositionPreference) {\r\n /**\r\n * Place the content widget exactly at a position\r\n */\r\n ContentWidgetPositionPreference[ContentWidgetPositionPreference[\"EXACT\"] = 0] = \"EXACT\";\r\n /**\r\n * Place the content widget above a position\r\n */\r\n ContentWidgetPositionPreference[ContentWidgetPositionPreference[\"ABOVE\"] = 1] = \"ABOVE\";\r\n /**\r\n * Place the content widget below a position\r\n */\r\n ContentWidgetPositionPreference[ContentWidgetPositionPreference[\"BELOW\"] = 2] = \"BELOW\";\r\n})(ContentWidgetPositionPreference || (ContentWidgetPositionPreference = {}));\r\n/**\r\n * Describes the reason the cursor has changed its position.\r\n */\r\nvar CursorChangeReason;\r\n(function (CursorChangeReason) {\r\n /**\r\n * Unknown or not set.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"NotSet\"] = 0] = \"NotSet\";\r\n /**\r\n * A `model.setValue()` was called.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"ContentFlush\"] = 1] = \"ContentFlush\";\r\n /**\r\n * The `model` has been changed outside of this cursor and the cursor recovers its position from associated markers.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"RecoverFromMarkers\"] = 2] = \"RecoverFromMarkers\";\r\n /**\r\n * There was an explicit user gesture.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"Explicit\"] = 3] = \"Explicit\";\r\n /**\r\n * There was a Paste.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"Paste\"] = 4] = \"Paste\";\r\n /**\r\n * There was an Undo.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"Undo\"] = 5] = \"Undo\";\r\n /**\r\n * There was a Redo.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"Redo\"] = 6] = \"Redo\";\r\n})(CursorChangeReason || (CursorChangeReason = {}));\r\n/**\r\n * The default end of line to use when instantiating models.\r\n */\r\nvar DefaultEndOfLine;\r\n(function (DefaultEndOfLine) {\r\n /**\r\n * Use line feed (\\n) as the end of line character.\r\n */\r\n DefaultEndOfLine[DefaultEndOfLine[\"LF\"] = 1] = \"LF\";\r\n /**\r\n * Use carriage return and line feed (\\r\\n) as the end of line character.\r\n */\r\n DefaultEndOfLine[DefaultEndOfLine[\"CRLF\"] = 2] = \"CRLF\";\r\n})(DefaultEndOfLine || (DefaultEndOfLine = {}));\r\n/**\r\n * A document highlight kind.\r\n */\r\nvar DocumentHighlightKind;\r\n(function (DocumentHighlightKind) {\r\n /**\r\n * A textual occurrence.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Text\"] = 0] = \"Text\";\r\n /**\r\n * Read-access of a symbol, like reading a variable.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Read\"] = 1] = \"Read\";\r\n /**\r\n * Write-access of a symbol, like writing to a variable.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Write\"] = 2] = \"Write\";\r\n})(DocumentHighlightKind || (DocumentHighlightKind = {}));\r\n/**\r\n * Configuration options for auto indentation in the editor\r\n */\r\nvar EditorAutoIndentStrategy;\r\n(function (EditorAutoIndentStrategy) {\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"None\"] = 0] = \"None\";\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Keep\"] = 1] = \"Keep\";\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Brackets\"] = 2] = \"Brackets\";\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Advanced\"] = 3] = \"Advanced\";\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Full\"] = 4] = \"Full\";\r\n})(EditorAutoIndentStrategy || (EditorAutoIndentStrategy = {}));\r\nvar EditorOption;\r\n(function (EditorOption) {\r\n EditorOption[EditorOption[\"acceptSuggestionOnCommitCharacter\"] = 0] = \"acceptSuggestionOnCommitCharacter\";\r\n EditorOption[EditorOption[\"acceptSuggestionOnEnter\"] = 1] = \"acceptSuggestionOnEnter\";\r\n EditorOption[EditorOption[\"accessibilitySupport\"] = 2] = \"accessibilitySupport\";\r\n EditorOption[EditorOption[\"accessibilityPageSize\"] = 3] = \"accessibilityPageSize\";\r\n EditorOption[EditorOption[\"ariaLabel\"] = 4] = \"ariaLabel\";\r\n EditorOption[EditorOption[\"autoClosingBrackets\"] = 5] = \"autoClosingBrackets\";\r\n EditorOption[EditorOption[\"autoClosingOvertype\"] = 6] = \"autoClosingOvertype\";\r\n EditorOption[EditorOption[\"autoClosingQuotes\"] = 7] = \"autoClosingQuotes\";\r\n EditorOption[EditorOption[\"autoIndent\"] = 8] = \"autoIndent\";\r\n EditorOption[EditorOption[\"automaticLayout\"] = 9] = \"automaticLayout\";\r\n EditorOption[EditorOption[\"autoSurround\"] = 10] = \"autoSurround\";\r\n EditorOption[EditorOption[\"codeLens\"] = 11] = \"codeLens\";\r\n EditorOption[EditorOption[\"codeLensFontFamily\"] = 12] = \"codeLensFontFamily\";\r\n EditorOption[EditorOption[\"codeLensFontSize\"] = 13] = \"codeLensFontSize\";\r\n EditorOption[EditorOption[\"colorDecorators\"] = 14] = \"colorDecorators\";\r\n EditorOption[EditorOption[\"columnSelection\"] = 15] = \"columnSelection\";\r\n EditorOption[EditorOption[\"comments\"] = 16] = \"comments\";\r\n EditorOption[EditorOption[\"contextmenu\"] = 17] = \"contextmenu\";\r\n EditorOption[EditorOption[\"copyWithSyntaxHighlighting\"] = 18] = \"copyWithSyntaxHighlighting\";\r\n EditorOption[EditorOption[\"cursorBlinking\"] = 19] = \"cursorBlinking\";\r\n EditorOption[EditorOption[\"cursorSmoothCaretAnimation\"] = 20] = \"cursorSmoothCaretAnimation\";\r\n EditorOption[EditorOption[\"cursorStyle\"] = 21] = \"cursorStyle\";\r\n EditorOption[EditorOption[\"cursorSurroundingLines\"] = 22] = \"cursorSurroundingLines\";\r\n EditorOption[EditorOption[\"cursorSurroundingLinesStyle\"] = 23] = \"cursorSurroundingLinesStyle\";\r\n EditorOption[EditorOption[\"cursorWidth\"] = 24] = \"cursorWidth\";\r\n EditorOption[EditorOption[\"disableLayerHinting\"] = 25] = \"disableLayerHinting\";\r\n EditorOption[EditorOption[\"disableMonospaceOptimizations\"] = 26] = \"disableMonospaceOptimizations\";\r\n EditorOption[EditorOption[\"dragAndDrop\"] = 27] = \"dragAndDrop\";\r\n EditorOption[EditorOption[\"emptySelectionClipboard\"] = 28] = \"emptySelectionClipboard\";\r\n EditorOption[EditorOption[\"extraEditorClassName\"] = 29] = \"extraEditorClassName\";\r\n EditorOption[EditorOption[\"fastScrollSensitivity\"] = 30] = \"fastScrollSensitivity\";\r\n EditorOption[EditorOption[\"find\"] = 31] = \"find\";\r\n EditorOption[EditorOption[\"fixedOverflowWidgets\"] = 32] = \"fixedOverflowWidgets\";\r\n EditorOption[EditorOption[\"folding\"] = 33] = \"folding\";\r\n EditorOption[EditorOption[\"foldingStrategy\"] = 34] = \"foldingStrategy\";\r\n EditorOption[EditorOption[\"foldingHighlight\"] = 35] = \"foldingHighlight\";\r\n EditorOption[EditorOption[\"unfoldOnClickAfterEndOfLine\"] = 36] = \"unfoldOnClickAfterEndOfLine\";\r\n EditorOption[EditorOption[\"fontFamily\"] = 37] = \"fontFamily\";\r\n EditorOption[EditorOption[\"fontInfo\"] = 38] = \"fontInfo\";\r\n EditorOption[EditorOption[\"fontLigatures\"] = 39] = \"fontLigatures\";\r\n EditorOption[EditorOption[\"fontSize\"] = 40] = \"fontSize\";\r\n EditorOption[EditorOption[\"fontWeight\"] = 41] = \"fontWeight\";\r\n EditorOption[EditorOption[\"formatOnPaste\"] = 42] = \"formatOnPaste\";\r\n EditorOption[EditorOption[\"formatOnType\"] = 43] = \"formatOnType\";\r\n EditorOption[EditorOption[\"glyphMargin\"] = 44] = \"glyphMargin\";\r\n EditorOption[EditorOption[\"gotoLocation\"] = 45] = \"gotoLocation\";\r\n EditorOption[EditorOption[\"hideCursorInOverviewRuler\"] = 46] = \"hideCursorInOverviewRuler\";\r\n EditorOption[EditorOption[\"highlightActiveIndentGuide\"] = 47] = \"highlightActiveIndentGuide\";\r\n EditorOption[EditorOption[\"hover\"] = 48] = \"hover\";\r\n EditorOption[EditorOption[\"inDiffEditor\"] = 49] = \"inDiffEditor\";\r\n EditorOption[EditorOption[\"letterSpacing\"] = 50] = \"letterSpacing\";\r\n EditorOption[EditorOption[\"lightbulb\"] = 51] = \"lightbulb\";\r\n EditorOption[EditorOption[\"lineDecorationsWidth\"] = 52] = \"lineDecorationsWidth\";\r\n EditorOption[EditorOption[\"lineHeight\"] = 53] = \"lineHeight\";\r\n EditorOption[EditorOption[\"lineNumbers\"] = 54] = \"lineNumbers\";\r\n EditorOption[EditorOption[\"lineNumbersMinChars\"] = 55] = \"lineNumbersMinChars\";\r\n EditorOption[EditorOption[\"linkedEditing\"] = 56] = \"linkedEditing\";\r\n EditorOption[EditorOption[\"links\"] = 57] = \"links\";\r\n EditorOption[EditorOption[\"matchBrackets\"] = 58] = \"matchBrackets\";\r\n EditorOption[EditorOption[\"minimap\"] = 59] = \"minimap\";\r\n EditorOption[EditorOption[\"mouseStyle\"] = 60] = \"mouseStyle\";\r\n EditorOption[EditorOption[\"mouseWheelScrollSensitivity\"] = 61] = \"mouseWheelScrollSensitivity\";\r\n EditorOption[EditorOption[\"mouseWheelZoom\"] = 62] = \"mouseWheelZoom\";\r\n EditorOption[EditorOption[\"multiCursorMergeOverlapping\"] = 63] = \"multiCursorMergeOverlapping\";\r\n EditorOption[EditorOption[\"multiCursorModifier\"] = 64] = \"multiCursorModifier\";\r\n EditorOption[EditorOption[\"multiCursorPaste\"] = 65] = \"multiCursorPaste\";\r\n EditorOption[EditorOption[\"occurrencesHighlight\"] = 66] = \"occurrencesHighlight\";\r\n EditorOption[EditorOption[\"overviewRulerBorder\"] = 67] = \"overviewRulerBorder\";\r\n EditorOption[EditorOption[\"overviewRulerLanes\"] = 68] = \"overviewRulerLanes\";\r\n EditorOption[EditorOption[\"padding\"] = 69] = \"padding\";\r\n EditorOption[EditorOption[\"parameterHints\"] = 70] = \"parameterHints\";\r\n EditorOption[EditorOption[\"peekWidgetDefaultFocus\"] = 71] = \"peekWidgetDefaultFocus\";\r\n EditorOption[EditorOption[\"definitionLinkOpensInPeek\"] = 72] = \"definitionLinkOpensInPeek\";\r\n EditorOption[EditorOption[\"quickSuggestions\"] = 73] = \"quickSuggestions\";\r\n EditorOption[EditorOption[\"quickSuggestionsDelay\"] = 74] = \"quickSuggestionsDelay\";\r\n EditorOption[EditorOption[\"readOnly\"] = 75] = \"readOnly\";\r\n EditorOption[EditorOption[\"renameOnType\"] = 76] = \"renameOnType\";\r\n EditorOption[EditorOption[\"renderControlCharacters\"] = 77] = \"renderControlCharacters\";\r\n EditorOption[EditorOption[\"renderIndentGuides\"] = 78] = \"renderIndentGuides\";\r\n EditorOption[EditorOption[\"renderFinalNewline\"] = 79] = \"renderFinalNewline\";\r\n EditorOption[EditorOption[\"renderLineHighlight\"] = 80] = \"renderLineHighlight\";\r\n EditorOption[EditorOption[\"renderLineHighlightOnlyWhenFocus\"] = 81] = \"renderLineHighlightOnlyWhenFocus\";\r\n EditorOption[EditorOption[\"renderValidationDecorations\"] = 82] = \"renderValidationDecorations\";\r\n EditorOption[EditorOption[\"renderWhitespace\"] = 83] = \"renderWhitespace\";\r\n EditorOption[EditorOption[\"revealHorizontalRightPadding\"] = 84] = \"revealHorizontalRightPadding\";\r\n EditorOption[EditorOption[\"roundedSelection\"] = 85] = \"roundedSelection\";\r\n EditorOption[EditorOption[\"rulers\"] = 86] = \"rulers\";\r\n EditorOption[EditorOption[\"scrollbar\"] = 87] = \"scrollbar\";\r\n EditorOption[EditorOption[\"scrollBeyondLastColumn\"] = 88] = \"scrollBeyondLastColumn\";\r\n EditorOption[EditorOption[\"scrollBeyondLastLine\"] = 89] = \"scrollBeyondLastLine\";\r\n EditorOption[EditorOption[\"scrollPredominantAxis\"] = 90] = \"scrollPredominantAxis\";\r\n EditorOption[EditorOption[\"selectionClipboard\"] = 91] = \"selectionClipboard\";\r\n EditorOption[EditorOption[\"selectionHighlight\"] = 92] = \"selectionHighlight\";\r\n EditorOption[EditorOption[\"selectOnLineNumbers\"] = 93] = \"selectOnLineNumbers\";\r\n EditorOption[EditorOption[\"showFoldingControls\"] = 94] = \"showFoldingControls\";\r\n EditorOption[EditorOption[\"showUnused\"] = 95] = \"showUnused\";\r\n EditorOption[EditorOption[\"snippetSuggestions\"] = 96] = \"snippetSuggestions\";\r\n EditorOption[EditorOption[\"smartSelect\"] = 97] = \"smartSelect\";\r\n EditorOption[EditorOption[\"smoothScrolling\"] = 98] = \"smoothScrolling\";\r\n EditorOption[EditorOption[\"stickyTabStops\"] = 99] = \"stickyTabStops\";\r\n EditorOption[EditorOption[\"stopRenderingLineAfter\"] = 100] = \"stopRenderingLineAfter\";\r\n EditorOption[EditorOption[\"suggest\"] = 101] = \"suggest\";\r\n EditorOption[EditorOption[\"suggestFontSize\"] = 102] = \"suggestFontSize\";\r\n EditorOption[EditorOption[\"suggestLineHeight\"] = 103] = \"suggestLineHeight\";\r\n EditorOption[EditorOption[\"suggestOnTriggerCharacters\"] = 104] = \"suggestOnTriggerCharacters\";\r\n EditorOption[EditorOption[\"suggestSelection\"] = 105] = \"suggestSelection\";\r\n EditorOption[EditorOption[\"tabCompletion\"] = 106] = \"tabCompletion\";\r\n EditorOption[EditorOption[\"tabIndex\"] = 107] = \"tabIndex\";\r\n EditorOption[EditorOption[\"unusualLineTerminators\"] = 108] = \"unusualLineTerminators\";\r\n EditorOption[EditorOption[\"useTabStops\"] = 109] = \"useTabStops\";\r\n EditorOption[EditorOption[\"wordSeparators\"] = 110] = \"wordSeparators\";\r\n EditorOption[EditorOption[\"wordWrap\"] = 111] = \"wordWrap\";\r\n EditorOption[EditorOption[\"wordWrapBreakAfterCharacters\"] = 112] = \"wordWrapBreakAfterCharacters\";\r\n EditorOption[EditorOption[\"wordWrapBreakBeforeCharacters\"] = 113] = \"wordWrapBreakBeforeCharacters\";\r\n EditorOption[EditorOption[\"wordWrapColumn\"] = 114] = \"wordWrapColumn\";\r\n EditorOption[EditorOption[\"wordWrapOverride1\"] = 115] = \"wordWrapOverride1\";\r\n EditorOption[EditorOption[\"wordWrapOverride2\"] = 116] = \"wordWrapOverride2\";\r\n EditorOption[EditorOption[\"wrappingIndent\"] = 117] = \"wrappingIndent\";\r\n EditorOption[EditorOption[\"wrappingStrategy\"] = 118] = \"wrappingStrategy\";\r\n EditorOption[EditorOption[\"showDeprecated\"] = 119] = \"showDeprecated\";\r\n EditorOption[EditorOption[\"inlineHints\"] = 120] = \"inlineHints\";\r\n EditorOption[EditorOption[\"editorClassName\"] = 121] = \"editorClassName\";\r\n EditorOption[EditorOption[\"pixelRatio\"] = 122] = \"pixelRatio\";\r\n EditorOption[EditorOption[\"tabFocusMode\"] = 123] = \"tabFocusMode\";\r\n EditorOption[EditorOption[\"layoutInfo\"] = 124] = \"layoutInfo\";\r\n EditorOption[EditorOption[\"wrappingInfo\"] = 125] = \"wrappingInfo\";\r\n})(EditorOption || (EditorOption = {}));\r\n/**\r\n * End of line character preference.\r\n */\r\nvar EndOfLinePreference;\r\n(function (EndOfLinePreference) {\r\n /**\r\n * Use the end of line character identified in the text buffer.\r\n */\r\n EndOfLinePreference[EndOfLinePreference[\"TextDefined\"] = 0] = \"TextDefined\";\r\n /**\r\n * Use line feed (\\n) as the end of line character.\r\n */\r\n EndOfLinePreference[EndOfLinePreference[\"LF\"] = 1] = \"LF\";\r\n /**\r\n * Use carriage return and line feed (\\r\\n) as the end of line character.\r\n */\r\n EndOfLinePreference[EndOfLinePreference[\"CRLF\"] = 2] = \"CRLF\";\r\n})(EndOfLinePreference || (EndOfLinePreference = {}));\r\n/**\r\n * End of line character preference.\r\n */\r\nvar EndOfLineSequence;\r\n(function (EndOfLineSequence) {\r\n /**\r\n * Use line feed (\\n) as the end of line character.\r\n */\r\n EndOfLineSequence[EndOfLineSequence[\"LF\"] = 0] = \"LF\";\r\n /**\r\n * Use carriage return and line feed (\\r\\n) as the end of line character.\r\n */\r\n EndOfLineSequence[EndOfLineSequence[\"CRLF\"] = 1] = \"CRLF\";\r\n})(EndOfLineSequence || (EndOfLineSequence = {}));\r\n/**\r\n * Describes what to do with the indentation when pressing Enter.\r\n */\r\nvar IndentAction;\r\n(function (IndentAction) {\r\n /**\r\n * Insert new line and copy the previous line's indentation.\r\n */\r\n IndentAction[IndentAction[\"None\"] = 0] = \"None\";\r\n /**\r\n * Insert new line and indent once (relative to the previous line's indentation).\r\n */\r\n IndentAction[IndentAction[\"Indent\"] = 1] = \"Indent\";\r\n /**\r\n * Insert two new lines:\r\n * - the first one indented which will hold the cursor\r\n * - the second one at the same indentation level\r\n */\r\n IndentAction[IndentAction[\"IndentOutdent\"] = 2] = \"IndentOutdent\";\r\n /**\r\n * Insert new line and outdent once (relative to the previous line's indentation).\r\n */\r\n IndentAction[IndentAction[\"Outdent\"] = 3] = \"Outdent\";\r\n})(IndentAction || (IndentAction = {}));\r\nvar InlineHintKind;\r\n(function (InlineHintKind) {\r\n InlineHintKind[InlineHintKind[\"Other\"] = 0] = \"Other\";\r\n InlineHintKind[InlineHintKind[\"Type\"] = 1] = \"Type\";\r\n InlineHintKind[InlineHintKind[\"Parameter\"] = 2] = \"Parameter\";\r\n})(InlineHintKind || (InlineHintKind = {}));\r\n/**\r\n * Virtual Key Codes, the value does not hold any inherent meaning.\r\n * Inspired somewhat from https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx\r\n * But these are \"more general\", as they should work across browsers & OS`s.\r\n */\r\nvar KeyCode;\r\n(function (KeyCode) {\r\n /**\r\n * Placed first to cover the 0 value of the enum.\r\n */\r\n KeyCode[KeyCode[\"Unknown\"] = 0] = \"Unknown\";\r\n KeyCode[KeyCode[\"Backspace\"] = 1] = \"Backspace\";\r\n KeyCode[KeyCode[\"Tab\"] = 2] = \"Tab\";\r\n KeyCode[KeyCode[\"Enter\"] = 3] = \"Enter\";\r\n KeyCode[KeyCode[\"Shift\"] = 4] = \"Shift\";\r\n KeyCode[KeyCode[\"Ctrl\"] = 5] = \"Ctrl\";\r\n KeyCode[KeyCode[\"Alt\"] = 6] = \"Alt\";\r\n KeyCode[KeyCode[\"PauseBreak\"] = 7] = \"PauseBreak\";\r\n KeyCode[KeyCode[\"CapsLock\"] = 8] = \"CapsLock\";\r\n KeyCode[KeyCode[\"Escape\"] = 9] = \"Escape\";\r\n KeyCode[KeyCode[\"Space\"] = 10] = \"Space\";\r\n KeyCode[KeyCode[\"PageUp\"] = 11] = \"PageUp\";\r\n KeyCode[KeyCode[\"PageDown\"] = 12] = \"PageDown\";\r\n KeyCode[KeyCode[\"End\"] = 13] = \"End\";\r\n KeyCode[KeyCode[\"Home\"] = 14] = \"Home\";\r\n KeyCode[KeyCode[\"LeftArrow\"] = 15] = \"LeftArrow\";\r\n KeyCode[KeyCode[\"UpArrow\"] = 16] = \"UpArrow\";\r\n KeyCode[KeyCode[\"RightArrow\"] = 17] = \"RightArrow\";\r\n KeyCode[KeyCode[\"DownArrow\"] = 18] = \"DownArrow\";\r\n KeyCode[KeyCode[\"Insert\"] = 19] = \"Insert\";\r\n KeyCode[KeyCode[\"Delete\"] = 20] = \"Delete\";\r\n KeyCode[KeyCode[\"KEY_0\"] = 21] = \"KEY_0\";\r\n KeyCode[KeyCode[\"KEY_1\"] = 22] = \"KEY_1\";\r\n KeyCode[KeyCode[\"KEY_2\"] = 23] = \"KEY_2\";\r\n KeyCode[KeyCode[\"KEY_3\"] = 24] = \"KEY_3\";\r\n KeyCode[KeyCode[\"KEY_4\"] = 25] = \"KEY_4\";\r\n KeyCode[KeyCode[\"KEY_5\"] = 26] = \"KEY_5\";\r\n KeyCode[KeyCode[\"KEY_6\"] = 27] = \"KEY_6\";\r\n KeyCode[KeyCode[\"KEY_7\"] = 28] = \"KEY_7\";\r\n KeyCode[KeyCode[\"KEY_8\"] = 29] = \"KEY_8\";\r\n KeyCode[KeyCode[\"KEY_9\"] = 30] = \"KEY_9\";\r\n KeyCode[KeyCode[\"KEY_A\"] = 31] = \"KEY_A\";\r\n KeyCode[KeyCode[\"KEY_B\"] = 32] = \"KEY_B\";\r\n KeyCode[KeyCode[\"KEY_C\"] = 33] = \"KEY_C\";\r\n KeyCode[KeyCode[\"KEY_D\"] = 34] = \"KEY_D\";\r\n KeyCode[KeyCode[\"KEY_E\"] = 35] = \"KEY_E\";\r\n KeyCode[KeyCode[\"KEY_F\"] = 36] = \"KEY_F\";\r\n KeyCode[KeyCode[\"KEY_G\"] = 37] = \"KEY_G\";\r\n KeyCode[KeyCode[\"KEY_H\"] = 38] = \"KEY_H\";\r\n KeyCode[KeyCode[\"KEY_I\"] = 39] = \"KEY_I\";\r\n KeyCode[KeyCode[\"KEY_J\"] = 40] = \"KEY_J\";\r\n KeyCode[KeyCode[\"KEY_K\"] = 41] = \"KEY_K\";\r\n KeyCode[KeyCode[\"KEY_L\"] = 42] = \"KEY_L\";\r\n KeyCode[KeyCode[\"KEY_M\"] = 43] = \"KEY_M\";\r\n KeyCode[KeyCode[\"KEY_N\"] = 44] = \"KEY_N\";\r\n KeyCode[KeyCode[\"KEY_O\"] = 45] = \"KEY_O\";\r\n KeyCode[KeyCode[\"KEY_P\"] = 46] = \"KEY_P\";\r\n KeyCode[KeyCode[\"KEY_Q\"] = 47] = \"KEY_Q\";\r\n KeyCode[KeyCode[\"KEY_R\"] = 48] = \"KEY_R\";\r\n KeyCode[KeyCode[\"KEY_S\"] = 49] = \"KEY_S\";\r\n KeyCode[KeyCode[\"KEY_T\"] = 50] = \"KEY_T\";\r\n KeyCode[KeyCode[\"KEY_U\"] = 51] = \"KEY_U\";\r\n KeyCode[KeyCode[\"KEY_V\"] = 52] = \"KEY_V\";\r\n KeyCode[KeyCode[\"KEY_W\"] = 53] = \"KEY_W\";\r\n KeyCode[KeyCode[\"KEY_X\"] = 54] = \"KEY_X\";\r\n KeyCode[KeyCode[\"KEY_Y\"] = 55] = \"KEY_Y\";\r\n KeyCode[KeyCode[\"KEY_Z\"] = 56] = \"KEY_Z\";\r\n KeyCode[KeyCode[\"Meta\"] = 57] = \"Meta\";\r\n KeyCode[KeyCode[\"ContextMenu\"] = 58] = \"ContextMenu\";\r\n KeyCode[KeyCode[\"F1\"] = 59] = \"F1\";\r\n KeyCode[KeyCode[\"F2\"] = 60] = \"F2\";\r\n KeyCode[KeyCode[\"F3\"] = 61] = \"F3\";\r\n KeyCode[KeyCode[\"F4\"] = 62] = \"F4\";\r\n KeyCode[KeyCode[\"F5\"] = 63] = \"F5\";\r\n KeyCode[KeyCode[\"F6\"] = 64] = \"F6\";\r\n KeyCode[KeyCode[\"F7\"] = 65] = \"F7\";\r\n KeyCode[KeyCode[\"F8\"] = 66] = \"F8\";\r\n KeyCode[KeyCode[\"F9\"] = 67] = \"F9\";\r\n KeyCode[KeyCode[\"F10\"] = 68] = \"F10\";\r\n KeyCode[KeyCode[\"F11\"] = 69] = \"F11\";\r\n KeyCode[KeyCode[\"F12\"] = 70] = \"F12\";\r\n KeyCode[KeyCode[\"F13\"] = 71] = \"F13\";\r\n KeyCode[KeyCode[\"F14\"] = 72] = \"F14\";\r\n KeyCode[KeyCode[\"F15\"] = 73] = \"F15\";\r\n KeyCode[KeyCode[\"F16\"] = 74] = \"F16\";\r\n KeyCode[KeyCode[\"F17\"] = 75] = \"F17\";\r\n KeyCode[KeyCode[\"F18\"] = 76] = \"F18\";\r\n KeyCode[KeyCode[\"F19\"] = 77] = \"F19\";\r\n KeyCode[KeyCode[\"NumLock\"] = 78] = \"NumLock\";\r\n KeyCode[KeyCode[\"ScrollLock\"] = 79] = \"ScrollLock\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the ';:' key\r\n */\r\n KeyCode[KeyCode[\"US_SEMICOLON\"] = 80] = \"US_SEMICOLON\";\r\n /**\r\n * For any country/region, the '+' key\r\n * For the US standard keyboard, the '=+' key\r\n */\r\n KeyCode[KeyCode[\"US_EQUAL\"] = 81] = \"US_EQUAL\";\r\n /**\r\n * For any country/region, the ',' key\r\n * For the US standard keyboard, the ',<' key\r\n */\r\n KeyCode[KeyCode[\"US_COMMA\"] = 82] = \"US_COMMA\";\r\n /**\r\n * For any country/region, the '-' key\r\n * For the US standard keyboard, the '-_' key\r\n */\r\n KeyCode[KeyCode[\"US_MINUS\"] = 83] = \"US_MINUS\";\r\n /**\r\n * For any country/region, the '.' key\r\n * For the US standard keyboard, the '.>' key\r\n */\r\n KeyCode[KeyCode[\"US_DOT\"] = 84] = \"US_DOT\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the '/?' key\r\n */\r\n KeyCode[KeyCode[\"US_SLASH\"] = 85] = \"US_SLASH\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the '`~' key\r\n */\r\n KeyCode[KeyCode[\"US_BACKTICK\"] = 86] = \"US_BACKTICK\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the '[{' key\r\n */\r\n KeyCode[KeyCode[\"US_OPEN_SQUARE_BRACKET\"] = 87] = \"US_OPEN_SQUARE_BRACKET\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the '\\|' key\r\n */\r\n KeyCode[KeyCode[\"US_BACKSLASH\"] = 88] = \"US_BACKSLASH\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the ']}' key\r\n */\r\n KeyCode[KeyCode[\"US_CLOSE_SQUARE_BRACKET\"] = 89] = \"US_CLOSE_SQUARE_BRACKET\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the ''\"' key\r\n */\r\n KeyCode[KeyCode[\"US_QUOTE\"] = 90] = \"US_QUOTE\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n */\r\n KeyCode[KeyCode[\"OEM_8\"] = 91] = \"OEM_8\";\r\n /**\r\n * Either the angle bracket key or the backslash key on the RT 102-key keyboard.\r\n */\r\n KeyCode[KeyCode[\"OEM_102\"] = 92] = \"OEM_102\";\r\n KeyCode[KeyCode[\"NUMPAD_0\"] = 93] = \"NUMPAD_0\";\r\n KeyCode[KeyCode[\"NUMPAD_1\"] = 94] = \"NUMPAD_1\";\r\n KeyCode[KeyCode[\"NUMPAD_2\"] = 95] = \"NUMPAD_2\";\r\n KeyCode[KeyCode[\"NUMPAD_3\"] = 96] = \"NUMPAD_3\";\r\n KeyCode[KeyCode[\"NUMPAD_4\"] = 97] = \"NUMPAD_4\";\r\n KeyCode[KeyCode[\"NUMPAD_5\"] = 98] = \"NUMPAD_5\";\r\n KeyCode[KeyCode[\"NUMPAD_6\"] = 99] = \"NUMPAD_6\";\r\n KeyCode[KeyCode[\"NUMPAD_7\"] = 100] = \"NUMPAD_7\";\r\n KeyCode[KeyCode[\"NUMPAD_8\"] = 101] = \"NUMPAD_8\";\r\n KeyCode[KeyCode[\"NUMPAD_9\"] = 102] = \"NUMPAD_9\";\r\n KeyCode[KeyCode[\"NUMPAD_MULTIPLY\"] = 103] = \"NUMPAD_MULTIPLY\";\r\n KeyCode[KeyCode[\"NUMPAD_ADD\"] = 104] = \"NUMPAD_ADD\";\r\n KeyCode[KeyCode[\"NUMPAD_SEPARATOR\"] = 105] = \"NUMPAD_SEPARATOR\";\r\n KeyCode[KeyCode[\"NUMPAD_SUBTRACT\"] = 106] = \"NUMPAD_SUBTRACT\";\r\n KeyCode[KeyCode[\"NUMPAD_DECIMAL\"] = 107] = \"NUMPAD_DECIMAL\";\r\n KeyCode[KeyCode[\"NUMPAD_DIVIDE\"] = 108] = \"NUMPAD_DIVIDE\";\r\n /**\r\n * Cover all key codes when IME is processing input.\r\n */\r\n KeyCode[KeyCode[\"KEY_IN_COMPOSITION\"] = 109] = \"KEY_IN_COMPOSITION\";\r\n KeyCode[KeyCode[\"ABNT_C1\"] = 110] = \"ABNT_C1\";\r\n KeyCode[KeyCode[\"ABNT_C2\"] = 111] = \"ABNT_C2\";\r\n /**\r\n * Placed last to cover the length of the enum.\r\n * Please do not depend on this value!\r\n */\r\n KeyCode[KeyCode[\"MAX_VALUE\"] = 112] = \"MAX_VALUE\";\r\n})(KeyCode || (KeyCode = {}));\r\nvar MarkerSeverity;\r\n(function (MarkerSeverity) {\r\n MarkerSeverity[MarkerSeverity[\"Hint\"] = 1] = \"Hint\";\r\n MarkerSeverity[MarkerSeverity[\"Info\"] = 2] = \"Info\";\r\n MarkerSeverity[MarkerSeverity[\"Warning\"] = 4] = \"Warning\";\r\n MarkerSeverity[MarkerSeverity[\"Error\"] = 8] = \"Error\";\r\n})(MarkerSeverity || (MarkerSeverity = {}));\r\nvar MarkerTag;\r\n(function (MarkerTag) {\r\n MarkerTag[MarkerTag[\"Unnecessary\"] = 1] = \"Unnecessary\";\r\n MarkerTag[MarkerTag[\"Deprecated\"] = 2] = \"Deprecated\";\r\n})(MarkerTag || (MarkerTag = {}));\r\n/**\r\n * Position in the minimap to render the decoration.\r\n */\r\nvar MinimapPosition;\r\n(function (MinimapPosition) {\r\n MinimapPosition[MinimapPosition[\"Inline\"] = 1] = \"Inline\";\r\n MinimapPosition[MinimapPosition[\"Gutter\"] = 2] = \"Gutter\";\r\n})(MinimapPosition || (MinimapPosition = {}));\r\n/**\r\n * Type of hit element with the mouse in the editor.\r\n */\r\nvar MouseTargetType;\r\n(function (MouseTargetType) {\r\n /**\r\n * Mouse is on top of an unknown element.\r\n */\r\n MouseTargetType[MouseTargetType[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\r\n /**\r\n * Mouse is on top of the textarea used for input.\r\n */\r\n MouseTargetType[MouseTargetType[\"TEXTAREA\"] = 1] = \"TEXTAREA\";\r\n /**\r\n * Mouse is on top of the glyph margin\r\n */\r\n MouseTargetType[MouseTargetType[\"GUTTER_GLYPH_MARGIN\"] = 2] = \"GUTTER_GLYPH_MARGIN\";\r\n /**\r\n * Mouse is on top of the line numbers\r\n */\r\n MouseTargetType[MouseTargetType[\"GUTTER_LINE_NUMBERS\"] = 3] = \"GUTTER_LINE_NUMBERS\";\r\n /**\r\n * Mouse is on top of the line decorations\r\n */\r\n MouseTargetType[MouseTargetType[\"GUTTER_LINE_DECORATIONS\"] = 4] = \"GUTTER_LINE_DECORATIONS\";\r\n /**\r\n * Mouse is on top of the whitespace left in the gutter by a view zone.\r\n */\r\n MouseTargetType[MouseTargetType[\"GUTTER_VIEW_ZONE\"] = 5] = \"GUTTER_VIEW_ZONE\";\r\n /**\r\n * Mouse is on top of text in the content.\r\n */\r\n MouseTargetType[MouseTargetType[\"CONTENT_TEXT\"] = 6] = \"CONTENT_TEXT\";\r\n /**\r\n * Mouse is on top of empty space in the content (e.g. after line text or below last line)\r\n */\r\n MouseTargetType[MouseTargetType[\"CONTENT_EMPTY\"] = 7] = \"CONTENT_EMPTY\";\r\n /**\r\n * Mouse is on top of a view zone in the content.\r\n */\r\n MouseTargetType[MouseTargetType[\"CONTENT_VIEW_ZONE\"] = 8] = \"CONTENT_VIEW_ZONE\";\r\n /**\r\n * Mouse is on top of a content widget.\r\n */\r\n MouseTargetType[MouseTargetType[\"CONTENT_WIDGET\"] = 9] = \"CONTENT_WIDGET\";\r\n /**\r\n * Mouse is on top of the decorations overview ruler.\r\n */\r\n MouseTargetType[MouseTargetType[\"OVERVIEW_RULER\"] = 10] = \"OVERVIEW_RULER\";\r\n /**\r\n * Mouse is on top of a scrollbar.\r\n */\r\n MouseTargetType[MouseTargetType[\"SCROLLBAR\"] = 11] = \"SCROLLBAR\";\r\n /**\r\n * Mouse is on top of an overlay widget.\r\n */\r\n MouseTargetType[MouseTargetType[\"OVERLAY_WIDGET\"] = 12] = \"OVERLAY_WIDGET\";\r\n /**\r\n * Mouse is outside of the editor.\r\n */\r\n MouseTargetType[MouseTargetType[\"OUTSIDE_EDITOR\"] = 13] = \"OUTSIDE_EDITOR\";\r\n})(MouseTargetType || (MouseTargetType = {}));\r\n/**\r\n * A positioning preference for rendering overlay widgets.\r\n */\r\nvar OverlayWidgetPositionPreference;\r\n(function (OverlayWidgetPositionPreference) {\r\n /**\r\n * Position the overlay widget in the top right corner\r\n */\r\n OverlayWidgetPositionPreference[OverlayWidgetPositionPreference[\"TOP_RIGHT_CORNER\"] = 0] = \"TOP_RIGHT_CORNER\";\r\n /**\r\n * Position the overlay widget in the bottom right corner\r\n */\r\n OverlayWidgetPositionPreference[OverlayWidgetPositionPreference[\"BOTTOM_RIGHT_CORNER\"] = 1] = \"BOTTOM_RIGHT_CORNER\";\r\n /**\r\n * Position the overlay widget in the top center\r\n */\r\n OverlayWidgetPositionPreference[OverlayWidgetPositionPreference[\"TOP_CENTER\"] = 2] = \"TOP_CENTER\";\r\n})(OverlayWidgetPositionPreference || (OverlayWidgetPositionPreference = {}));\r\n/**\r\n * Vertical Lane in the overview ruler of the editor.\r\n */\r\nvar OverviewRulerLane;\r\n(function (OverviewRulerLane) {\r\n OverviewRulerLane[OverviewRulerLane[\"Left\"] = 1] = \"Left\";\r\n OverviewRulerLane[OverviewRulerLane[\"Center\"] = 2] = \"Center\";\r\n OverviewRulerLane[OverviewRulerLane[\"Right\"] = 4] = \"Right\";\r\n OverviewRulerLane[OverviewRulerLane[\"Full\"] = 7] = \"Full\";\r\n})(OverviewRulerLane || (OverviewRulerLane = {}));\r\nvar RenderLineNumbersType;\r\n(function (RenderLineNumbersType) {\r\n RenderLineNumbersType[RenderLineNumbersType[\"Off\"] = 0] = \"Off\";\r\n RenderLineNumbersType[RenderLineNumbersType[\"On\"] = 1] = \"On\";\r\n RenderLineNumbersType[RenderLineNumbersType[\"Relative\"] = 2] = \"Relative\";\r\n RenderLineNumbersType[RenderLineNumbersType[\"Interval\"] = 3] = \"Interval\";\r\n RenderLineNumbersType[RenderLineNumbersType[\"Custom\"] = 4] = \"Custom\";\r\n})(RenderLineNumbersType || (RenderLineNumbersType = {}));\r\nvar RenderMinimap;\r\n(function (RenderMinimap) {\r\n RenderMinimap[RenderMinimap[\"None\"] = 0] = \"None\";\r\n RenderMinimap[RenderMinimap[\"Text\"] = 1] = \"Text\";\r\n RenderMinimap[RenderMinimap[\"Blocks\"] = 2] = \"Blocks\";\r\n})(RenderMinimap || (RenderMinimap = {}));\r\nvar ScrollType;\r\n(function (ScrollType) {\r\n ScrollType[ScrollType[\"Smooth\"] = 0] = \"Smooth\";\r\n ScrollType[ScrollType[\"Immediate\"] = 1] = \"Immediate\";\r\n})(ScrollType || (ScrollType = {}));\r\nvar ScrollbarVisibility;\r\n(function (ScrollbarVisibility) {\r\n ScrollbarVisibility[ScrollbarVisibility[\"Auto\"] = 1] = \"Auto\";\r\n ScrollbarVisibility[ScrollbarVisibility[\"Hidden\"] = 2] = \"Hidden\";\r\n ScrollbarVisibility[ScrollbarVisibility[\"Visible\"] = 3] = \"Visible\";\r\n})(ScrollbarVisibility || (ScrollbarVisibility = {}));\r\n/**\r\n * The direction of a selection.\r\n */\r\nvar SelectionDirection;\r\n(function (SelectionDirection) {\r\n /**\r\n * The selection starts above where it ends.\r\n */\r\n SelectionDirection[SelectionDirection[\"LTR\"] = 0] = \"LTR\";\r\n /**\r\n * The selection starts below where it ends.\r\n */\r\n SelectionDirection[SelectionDirection[\"RTL\"] = 1] = \"RTL\";\r\n})(SelectionDirection || (SelectionDirection = {}));\r\nvar SignatureHelpTriggerKind;\r\n(function (SignatureHelpTriggerKind) {\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"Invoke\"] = 1] = \"Invoke\";\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"TriggerCharacter\"] = 2] = \"TriggerCharacter\";\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"ContentChange\"] = 3] = \"ContentChange\";\r\n})(SignatureHelpTriggerKind || (SignatureHelpTriggerKind = {}));\r\n/**\r\n * A symbol kind.\r\n */\r\nvar SymbolKind;\r\n(function (SymbolKind) {\r\n SymbolKind[SymbolKind[\"File\"] = 0] = \"File\";\r\n SymbolKind[SymbolKind[\"Module\"] = 1] = \"Module\";\r\n SymbolKind[SymbolKind[\"Namespace\"] = 2] = \"Namespace\";\r\n SymbolKind[SymbolKind[\"Package\"] = 3] = \"Package\";\r\n SymbolKind[SymbolKind[\"Class\"] = 4] = \"Class\";\r\n SymbolKind[SymbolKind[\"Method\"] = 5] = \"Method\";\r\n SymbolKind[SymbolKind[\"Property\"] = 6] = \"Property\";\r\n SymbolKind[SymbolKind[\"Field\"] = 7] = \"Field\";\r\n SymbolKind[SymbolKind[\"Constructor\"] = 8] = \"Constructor\";\r\n SymbolKind[SymbolKind[\"Enum\"] = 9] = \"Enum\";\r\n SymbolKind[SymbolKind[\"Interface\"] = 10] = \"Interface\";\r\n SymbolKind[SymbolKind[\"Function\"] = 11] = \"Function\";\r\n SymbolKind[SymbolKind[\"Variable\"] = 12] = \"Variable\";\r\n SymbolKind[SymbolKind[\"Constant\"] = 13] = \"Constant\";\r\n SymbolKind[SymbolKind[\"String\"] = 14] = \"String\";\r\n SymbolKind[SymbolKind[\"Number\"] = 15] = \"Number\";\r\n SymbolKind[SymbolKind[\"Boolean\"] = 16] = \"Boolean\";\r\n SymbolKind[SymbolKind[\"Array\"] = 17] = \"Array\";\r\n SymbolKind[SymbolKind[\"Object\"] = 18] = \"Object\";\r\n SymbolKind[SymbolKind[\"Key\"] = 19] = \"Key\";\r\n SymbolKind[SymbolKind[\"Null\"] = 20] = \"Null\";\r\n SymbolKind[SymbolKind[\"EnumMember\"] = 21] = \"EnumMember\";\r\n SymbolKind[SymbolKind[\"Struct\"] = 22] = \"Struct\";\r\n SymbolKind[SymbolKind[\"Event\"] = 23] = \"Event\";\r\n SymbolKind[SymbolKind[\"Operator\"] = 24] = \"Operator\";\r\n SymbolKind[SymbolKind[\"TypeParameter\"] = 25] = \"TypeParameter\";\r\n})(SymbolKind || (SymbolKind = {}));\r\nvar SymbolTag;\r\n(function (SymbolTag) {\r\n SymbolTag[SymbolTag[\"Deprecated\"] = 1] = \"Deprecated\";\r\n})(SymbolTag || (SymbolTag = {}));\r\n/**\r\n * The kind of animation in which the editor's cursor should be rendered.\r\n */\r\nvar TextEditorCursorBlinkingStyle;\r\n(function (TextEditorCursorBlinkingStyle) {\r\n /**\r\n * Hidden\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Hidden\"] = 0] = \"Hidden\";\r\n /**\r\n * Blinking\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Blink\"] = 1] = \"Blink\";\r\n /**\r\n * Blinking with smooth fading\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Smooth\"] = 2] = \"Smooth\";\r\n /**\r\n * Blinking with prolonged filled state and smooth fading\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Phase\"] = 3] = \"Phase\";\r\n /**\r\n * Expand collapse animation on the y axis\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Expand\"] = 4] = \"Expand\";\r\n /**\r\n * No-Blinking\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Solid\"] = 5] = \"Solid\";\r\n})(TextEditorCursorBlinkingStyle || (TextEditorCursorBlinkingStyle = {}));\r\n/**\r\n * The style in which the editor's cursor should be rendered.\r\n */\r\nvar TextEditorCursorStyle;\r\n(function (TextEditorCursorStyle) {\r\n /**\r\n * As a vertical line (sitting between two characters).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"Line\"] = 1] = \"Line\";\r\n /**\r\n * As a block (sitting on top of a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"Block\"] = 2] = \"Block\";\r\n /**\r\n * As a horizontal line (sitting under a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"Underline\"] = 3] = \"Underline\";\r\n /**\r\n * As a thin vertical line (sitting between two characters).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"LineThin\"] = 4] = \"LineThin\";\r\n /**\r\n * As an outlined block (sitting on top of a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"BlockOutline\"] = 5] = \"BlockOutline\";\r\n /**\r\n * As a thin horizontal line (sitting under a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"UnderlineThin\"] = 6] = \"UnderlineThin\";\r\n})(TextEditorCursorStyle || (TextEditorCursorStyle = {}));\r\n/**\r\n * Describes the behavior of decorations when typing/editing near their edges.\r\n * Note: Please do not edit the values, as they very carefully match `DecorationRangeBehavior`\r\n */\r\nvar TrackedRangeStickiness;\r\n(function (TrackedRangeStickiness) {\r\n TrackedRangeStickiness[TrackedRangeStickiness[\"AlwaysGrowsWhenTypingAtEdges\"] = 0] = \"AlwaysGrowsWhenTypingAtEdges\";\r\n TrackedRangeStickiness[TrackedRangeStickiness[\"NeverGrowsWhenTypingAtEdges\"] = 1] = \"NeverGrowsWhenTypingAtEdges\";\r\n TrackedRangeStickiness[TrackedRangeStickiness[\"GrowsOnlyWhenTypingBefore\"] = 2] = \"GrowsOnlyWhenTypingBefore\";\r\n TrackedRangeStickiness[TrackedRangeStickiness[\"GrowsOnlyWhenTypingAfter\"] = 3] = \"GrowsOnlyWhenTypingAfter\";\r\n})(TrackedRangeStickiness || (TrackedRangeStickiness = {}));\r\n/**\r\n * Describes how to indent wrapped lines.\r\n */\r\nvar WrappingIndent;\r\n(function (WrappingIndent) {\r\n /**\r\n * No indentation => wrapped lines begin at column 1.\r\n */\r\n WrappingIndent[WrappingIndent[\"None\"] = 0] = \"None\";\r\n /**\r\n * Same => wrapped lines get the same indentation as the parent.\r\n */\r\n WrappingIndent[WrappingIndent[\"Same\"] = 1] = \"Same\";\r\n /**\r\n * Indent => wrapped lines get +1 indentation toward the parent.\r\n */\r\n WrappingIndent[WrappingIndent[\"Indent\"] = 2] = \"Indent\";\r\n /**\r\n * DeepIndent => wrapped lines get +2 indentation toward the parent.\r\n */\r\n WrappingIndent[WrappingIndent[\"DeepIndent\"] = 3] = \"DeepIndent\";\r\n})(WrappingIndent || (WrappingIndent = {}));\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/editor/common/standalone/standaloneEnums.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/editor/common/viewModel/prefixSumComputer.js": /*!****************************************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/editor/common/viewModel/prefixSumComputer.js ***! \****************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"PrefixSumIndexOfResult\": () => (/* binding */ PrefixSumIndexOfResult),\n/* harmony export */ \"PrefixSumComputer\": () => (/* binding */ PrefixSumComputer)\n/* harmony export */ });\n/* harmony import */ var _base_common_uint_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../base/common/uint.js */ \"./node_modules/monaco-editor/esm/vs/base/common/uint.js\");\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nclass PrefixSumIndexOfResult {\r\n constructor(index, remainder) {\r\n this.index = index;\r\n this.remainder = remainder;\r\n }\r\n}\r\nclass PrefixSumComputer {\r\n constructor(values) {\r\n this.values = values;\r\n this.prefixSum = new Uint32Array(values.length);\r\n this.prefixSumValidIndex = new Int32Array(1);\r\n this.prefixSumValidIndex[0] = -1;\r\n }\r\n insertValues(insertIndex, insertValues) {\r\n insertIndex = (0,_base_common_uint_js__WEBPACK_IMPORTED_MODULE_0__.toUint32)(insertIndex);\r\n const oldValues = this.values;\r\n const oldPrefixSum = this.prefixSum;\r\n const insertValuesLen = insertValues.length;\r\n if (insertValuesLen === 0) {\r\n return false;\r\n }\r\n this.values = new Uint32Array(oldValues.length + insertValuesLen);\r\n this.values.set(oldValues.subarray(0, insertIndex), 0);\r\n this.values.set(oldValues.subarray(insertIndex), insertIndex + insertValuesLen);\r\n this.values.set(insertValues, insertIndex);\r\n if (insertIndex - 1 < this.prefixSumValidIndex[0]) {\r\n this.prefixSumValidIndex[0] = insertIndex - 1;\r\n }\r\n this.prefixSum = new Uint32Array(this.values.length);\r\n if (this.prefixSumValidIndex[0] >= 0) {\r\n this.prefixSum.set(oldPrefixSum.subarray(0, this.prefixSumValidIndex[0] + 1));\r\n }\r\n return true;\r\n }\r\n changeValue(index, value) {\r\n index = (0,_base_common_uint_js__WEBPACK_IMPORTED_MODULE_0__.toUint32)(index);\r\n value = (0,_base_common_uint_js__WEBPACK_IMPORTED_MODULE_0__.toUint32)(value);\r\n if (this.values[index] === value) {\r\n return false;\r\n }\r\n this.values[index] = value;\r\n if (index - 1 < this.prefixSumValidIndex[0]) {\r\n this.prefixSumValidIndex[0] = index - 1;\r\n }\r\n return true;\r\n }\r\n removeValues(startIndex, cnt) {\r\n startIndex = (0,_base_common_uint_js__WEBPACK_IMPORTED_MODULE_0__.toUint32)(startIndex);\r\n cnt = (0,_base_common_uint_js__WEBPACK_IMPORTED_MODULE_0__.toUint32)(cnt);\r\n const oldValues = this.values;\r\n const oldPrefixSum = this.prefixSum;\r\n if (startIndex >= oldValues.length) {\r\n return false;\r\n }\r\n let maxCnt = oldValues.length - startIndex;\r\n if (cnt >= maxCnt) {\r\n cnt = maxCnt;\r\n }\r\n if (cnt === 0) {\r\n return false;\r\n }\r\n this.values = new Uint32Array(oldValues.length - cnt);\r\n this.values.set(oldValues.subarray(0, startIndex), 0);\r\n this.values.set(oldValues.subarray(startIndex + cnt), startIndex);\r\n this.prefixSum = new Uint32Array(this.values.length);\r\n if (startIndex - 1 < this.prefixSumValidIndex[0]) {\r\n this.prefixSumValidIndex[0] = startIndex - 1;\r\n }\r\n if (this.prefixSumValidIndex[0] >= 0) {\r\n this.prefixSum.set(oldPrefixSum.subarray(0, this.prefixSumValidIndex[0] + 1));\r\n }\r\n return true;\r\n }\r\n getTotalValue() {\r\n if (this.values.length === 0) {\r\n return 0;\r\n }\r\n return this._getAccumulatedValue(this.values.length - 1);\r\n }\r\n getAccumulatedValue(index) {\r\n if (index < 0) {\r\n return 0;\r\n }\r\n index = (0,_base_common_uint_js__WEBPACK_IMPORTED_MODULE_0__.toUint32)(index);\r\n return this._getAccumulatedValue(index);\r\n }\r\n _getAccumulatedValue(index) {\r\n if (index <= this.prefixSumValidIndex[0]) {\r\n return this.prefixSum[index];\r\n }\r\n let startIndex = this.prefixSumValidIndex[0] + 1;\r\n if (startIndex === 0) {\r\n this.prefixSum[0] = this.values[0];\r\n startIndex++;\r\n }\r\n if (index >= this.values.length) {\r\n index = this.values.length - 1;\r\n }\r\n for (let i = startIndex; i <= index; i++) {\r\n this.prefixSum[i] = this.prefixSum[i - 1] + this.values[i];\r\n }\r\n this.prefixSumValidIndex[0] = Math.max(this.prefixSumValidIndex[0], index);\r\n return this.prefixSum[index];\r\n }\r\n getIndexOf(accumulatedValue) {\r\n accumulatedValue = Math.floor(accumulatedValue); //@perf\r\n // Compute all sums (to get a fully valid prefixSum)\r\n this.getTotalValue();\r\n let low = 0;\r\n let high = this.values.length - 1;\r\n let mid = 0;\r\n let midStop = 0;\r\n let midStart = 0;\r\n while (low <= high) {\r\n mid = low + ((high - low) / 2) | 0;\r\n midStop = this.prefixSum[mid];\r\n midStart = midStop - this.values[mid];\r\n if (accumulatedValue < midStart) {\r\n high = mid - 1;\r\n }\r\n else if (accumulatedValue >= midStop) {\r\n low = mid + 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return new PrefixSumIndexOfResult(mid, accumulatedValue - midStart);\r\n }\r\n}\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/prefixSumComputer.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/editor/editor.worker.js": /*!*******************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/editor/editor.worker.js ***! \*******************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"initialize\": () => (/* binding */ initialize)\n/* harmony export */ });\n/* harmony import */ var _base_common_worker_simpleWorker_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base/common/worker/simpleWorker.js */ \"./node_modules/monaco-editor/esm/vs/base/common/worker/simpleWorker.js\");\n/* harmony import */ var _common_services_editorSimpleWorker_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./common/services/editorSimpleWorker.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/services/editorSimpleWorker.js\");\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n\r\nlet initialized = false;\r\nfunction initialize(foreignModule) {\r\n if (initialized) {\r\n return;\r\n }\r\n initialized = true;\r\n const simpleWorker = new _base_common_worker_simpleWorker_js__WEBPACK_IMPORTED_MODULE_0__.SimpleWorkerServer((msg) => {\r\n self.postMessage(msg);\r\n }, (host) => new _common_services_editorSimpleWorker_js__WEBPACK_IMPORTED_MODULE_1__.EditorSimpleWorker(host, foreignModule));\r\n self.onmessage = (e) => {\r\n simpleWorker.onmessage(e.data);\r\n };\r\n}\r\nself.onmessage = (e) => {\r\n // Ignore first message in this case and initialize if not yet initialized\r\n if (!initialized) {\r\n initialize(null);\r\n }\r\n};\r\n\n\n//# sourceURL=webpack://browser-esm-webpack/./node_modules/monaco-editor/esm/vs/editor/editor.worker.js?"); /***/ }), /***/ "./node_modules/monaco-editor/esm/vs/language/typescript/lib/lib.js": /*!**************************************************************************!*\ !*** ./node_modules/monaco-editor/esm/vs/language/typescript/lib/lib.js ***! \**************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"libFileMap\": () => (/* binding */ libFileMap)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n//\r\n// **NOTE**: Do not edit directly! This file is generated using `npm run import-typescript`\r\n//\r\n/** Contains all the lib files */\r\nvar libFileMap = {};\r\nlibFileMap['lib.d.ts'] = \"/*! *****************************************************************************\\nCopyright (c) Microsoft Corporation. All rights reserved.\\nLicensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not use\\nthis file except in compliance with the License. You may obtain a copy of the\\nLicense at http://www.apache.org/licenses/LICENSE-2.0\\n\\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\\nMERCHANTABLITY OR NON-INFRINGEMENT.\\n\\nSee the Apache Version 2.0 License for specific language governing permissions\\nand limitations under the License.\\n***************************************************************************** */\\n\\n\\n\\n/// \\n\\n\\n/// \\n/// \\n/// \\n/// \\n\";\r\nlibFileMap['lib.dom.d.ts'] = \"/*! *****************************************************************************\\nCopyright (c) Microsoft Corporation. All rights reserved.\\nLicensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not use\\nthis file except in compliance with the License. You may obtain a copy of the\\nLicense at http://www.apache.org/licenses/LICENSE-2.0\\n\\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\\nMERCHANTABLITY OR NON-INFRINGEMENT.\\n\\nSee the Apache Version 2.0 License for specific language governing permissions\\nand limitations under the License.\\n***************************************************************************** */\\n\\n\\n\\n/// \\n\\n\\n/////////////////////////////\\n/// DOM APIs\\n/////////////////////////////\\n\\ninterface Account {\\n displayName: string;\\n id: string;\\n imageURL?: string;\\n name?: string;\\n rpDisplayName: string;\\n}\\n\\ninterface AddEventListenerOptions extends EventListenerOptions {\\n once?: boolean;\\n passive?: boolean;\\n}\\n\\ninterface AesCbcParams extends Algorithm {\\n iv: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer;\\n}\\n\\ninterface AesCtrParams extends Algorithm {\\n counter: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer;\\n length: number;\\n}\\n\\ninterface AesDerivedKeyParams extends Algorithm {\\n length: number;\\n}\\n\\ninterface AesGcmParams extends Algorithm {\\n additionalData?: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer;\\n iv: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer;\\n tagLength?: number;\\n}\\n\\ninterface AesKeyAlgorithm extends KeyAlgorithm {\\n length: number;\\n}\\n\\ninterface AesKeyGenParams extends Algorithm {\\n length: number;\\n}\\n\\ninterface Algorithm {\\n name: string;\\n}\\n\\ninterface AnalyserOptions extends AudioNodeOptions {\\n fftSize?: number;\\n maxDecibels?: number;\\n minDecibels?: number;\\n smoothingTimeConstant?: number;\\n}\\n\\ninterface AnimationEventInit extends EventInit {\\n animationName?: string;\\n elapsedTime?: number;\\n pseudoElement?: string;\\n}\\n\\ninterface AnimationPlaybackEventInit extends EventInit {\\n currentTime?: number | null;\\n timelineTime?: number | null;\\n}\\n\\ninterface AssertionOptions {\\n allowList?: ScopedCredentialDescriptor[];\\n extensions?: WebAuthnExtensions;\\n rpId?: string;\\n timeoutSeconds?: number;\\n}\\n\\ninterface AssignedNodesOptions {\\n flatten?: boolean;\\n}\\n\\ninterface AudioBufferOptions {\\n length: number;\\n numberOfChannels?: number;\\n sampleRate: number;\\n}\\n\\ninterface AudioBufferSourceOptions {\\n buffer?: AudioBuffer | null;\\n detune?: number;\\n loop?: boolean;\\n loopEnd?: number;\\n loopStart?: number;\\n playbackRate?: number;\\n}\\n\\ninterface AudioContextInfo {\\n currentTime?: number;\\n sampleRate?: number;\\n}\\n\\ninterface AudioContextOptions {\\n latencyHint?: AudioContextLatencyCategory | number;\\n sampleRate?: number;\\n}\\n\\ninterface AudioNodeOptions {\\n channelCount?: number;\\n channelCountMode?: ChannelCountMode;\\n channelInterpretation?: ChannelInterpretation;\\n}\\n\\ninterface AudioParamDescriptor {\\n automationRate?: AutomationRate;\\n defaultValue?: number;\\n maxValue?: number;\\n minValue?: number;\\n name: string;\\n}\\n\\ninterface AudioProcessingEventInit extends EventInit {\\n inputBuffer: AudioBuffer;\\n outputBuffer: AudioBuffer;\\n playbackTime: number;\\n}\\n\\ninterface AudioTimestamp {\\n contextTime?: number;\\n performanceTime?: number;\\n}\\n\\ninterface AudioWorkletNodeOptions extends AudioNodeOptions {\\n numberOfInputs?: number;\\n numberOfOutputs?: number;\\n outputChannelCount?: number[];\\n parameterData?: Record;\\n processorOptions?: any;\\n}\\n\\ninterface AuthenticationExtensionsClientInputs {\\n appid?: string;\\n appidExclude?: string;\\n credProps?: boolean;\\n uvm?: boolean;\\n}\\n\\ninterface AuthenticationExtensionsClientOutputs {\\n appid?: boolean;\\n credProps?: CredentialPropertiesOutput;\\n uvm?: UvmEntries;\\n}\\n\\ninterface AuthenticatorSelectionCriteria {\\n authenticatorAttachment?: AuthenticatorAttachment;\\n requireResidentKey?: boolean;\\n residentKey?: ResidentKeyRequirement;\\n userVerification?: UserVerificationRequirement;\\n}\\n\\ninterface BiquadFilterOptions extends AudioNodeOptions {\\n Q?: number;\\n detune?: number;\\n frequency?: number;\\n gain?: number;\\n type?: BiquadFilterType;\\n}\\n\\ninterface BlobPropertyBag {\\n endings?: EndingType;\\n type?: string;\\n}\\n\\ninterface ByteLengthChunk {\\n byteLength?: number;\\n}\\n\\ninterface CacheQueryOptions {\\n ignoreMethod?: boolean;\\n ignoreSearch?: boolean;\\n ignoreVary?: boolean;\\n}\\n\\ninterface CanvasRenderingContext2DSettings {\\n alpha?: boolean;\\n desynchronized?: boolean;\\n}\\n\\ninterface ChannelMergerOptions extends AudioNodeOptions {\\n numberOfInputs?: number;\\n}\\n\\ninterface ChannelSplitterOptions extends AudioNodeOptions {\\n numberOfOutputs?: number;\\n}\\n\\ninterface ClientData {\\n challenge: string;\\n extensions?: WebAuthnExtensions;\\n hashAlg: string | Algorithm;\\n origin: string;\\n rpId: string;\\n tokenBinding?: string;\\n}\\n\\ninterface ClientQueryOptions {\\n includeUncontrolled?: boolean;\\n type?: ClientTypes;\\n}\\n\\ninterface ClipboardEventInit extends EventInit {\\n clipboardData?: DataTransfer | null;\\n}\\n\\ninterface CloseEventInit extends EventInit {\\n code?: number;\\n reason?: string;\\n wasClean?: boolean;\\n}\\n\\ninterface CompositionEventInit extends UIEventInit {\\n data?: string;\\n}\\n\\ninterface ComputedEffectTiming extends EffectTiming {\\n activeDuration?: number;\\n currentIteration?: number | null;\\n endTime?: number;\\n localTime?: number | null;\\n progress?: number | null;\\n}\\n\\ninterface ComputedKeyframe {\\n composite: CompositeOperationOrAuto;\\n computedOffset: number;\\n easing: string;\\n offset: number | null;\\n [property: string]: string | number | null | undefined;\\n}\\n\\ninterface ConfirmSiteSpecificExceptionsInformation extends ExceptionInformation {\\n arrayOfDomainStrings?: string[];\\n}\\n\\ninterface ConstantSourceOptions {\\n offset?: number;\\n}\\n\\ninterface ConstrainBooleanParameters {\\n exact?: boolean;\\n ideal?: boolean;\\n}\\n\\ninterface ConstrainDOMStringParameters {\\n exact?: string | string[];\\n ideal?: string | string[];\\n}\\n\\ninterface ConstrainDoubleRange extends DoubleRange {\\n exact?: number;\\n ideal?: number;\\n}\\n\\ninterface ConstrainULongRange extends ULongRange {\\n exact?: number;\\n ideal?: number;\\n}\\n\\ninterface ConstrainVideoFacingModeParameters {\\n exact?: VideoFacingModeEnum | VideoFacingModeEnum[];\\n ideal?: VideoFacingModeEnum | VideoFacingModeEnum[];\\n}\\n\\ninterface ConvolverOptions extends AudioNodeOptions {\\n buffer?: AudioBuffer | null;\\n disableNormalization?: boolean;\\n}\\n\\ninterface CredentialCreationOptions {\\n publicKey?: PublicKeyCredentialCreationOptions;\\n signal?: AbortSignal;\\n}\\n\\ninterface CredentialPropertiesOutput {\\n rk?: boolean;\\n}\\n\\ninterface CredentialRequestOptions {\\n mediation?: CredentialMediationRequirement;\\n publicKey?: PublicKeyCredentialRequestOptions;\\n signal?: AbortSignal;\\n}\\n\\ninterface CustomEventInit extends EventInit {\\n detail?: T;\\n}\\n\\ninterface DOMMatrix2DInit {\\n a?: number;\\n b?: number;\\n c?: number;\\n d?: number;\\n e?: number;\\n f?: number;\\n m11?: number;\\n m12?: number;\\n m21?: number;\\n m22?: number;\\n m41?: number;\\n m42?: number;\\n}\\n\\ninterface DOMMatrixInit extends DOMMatrix2DInit {\\n is2D?: boolean;\\n m13?: number;\\n m14?: number;\\n m23?: number;\\n m24?: number;\\n m31?: number;\\n m32?: number;\\n m33?: number;\\n m34?: number;\\n m43?: number;\\n m44?: number;\\n}\\n\\ninterface DOMPointInit {\\n w?: number;\\n x?: number;\\n y?: number;\\n z?: number;\\n}\\n\\ninterface DOMQuadInit {\\n p1?: DOMPointInit;\\n p2?: DOMPointInit;\\n p3?: DOMPointInit;\\n p4?: DOMPointInit;\\n}\\n\\ninterface DOMRectInit {\\n height?: number;\\n width?: number;\\n x?: number;\\n y?: number;\\n}\\n\\ninterface DelayOptions extends AudioNodeOptions {\\n delayTime?: number;\\n maxDelayTime?: number;\\n}\\n\\ninterface DeviceLightEventInit extends EventInit {\\n value?: number;\\n}\\n\\ninterface DeviceMotionEventAccelerationInit {\\n x?: number | null;\\n y?: number | null;\\n z?: number | null;\\n}\\n\\ninterface DeviceMotionEventInit extends EventInit {\\n acceleration?: DeviceMotionEventAccelerationInit;\\n accelerationIncludingGravity?: DeviceMotionEventAccelerationInit;\\n interval?: number;\\n rotationRate?: DeviceMotionEventRotationRateInit;\\n}\\n\\ninterface DeviceMotionEventRotationRateInit {\\n alpha?: number | null;\\n beta?: number | null;\\n gamma?: number | null;\\n}\\n\\ninterface DeviceOrientationEventInit extends EventInit {\\n absolute?: boolean;\\n alpha?: number | null;\\n beta?: number | null;\\n gamma?: number | null;\\n}\\n\\ninterface DevicePermissionDescriptor extends PermissionDescriptor {\\n deviceId?: string;\\n name: \\\"camera\\\" | \\\"microphone\\\" | \\\"speaker\\\";\\n}\\n\\ninterface DocumentTimelineOptions {\\n originTime?: number;\\n}\\n\\ninterface DoubleRange {\\n max?: number;\\n min?: number;\\n}\\n\\ninterface DragEventInit extends MouseEventInit {\\n dataTransfer?: DataTransfer | null;\\n}\\n\\ninterface DynamicsCompressorOptions extends AudioNodeOptions {\\n attack?: number;\\n knee?: number;\\n ratio?: number;\\n release?: number;\\n threshold?: number;\\n}\\n\\ninterface EcKeyAlgorithm extends KeyAlgorithm {\\n namedCurve: NamedCurve;\\n}\\n\\ninterface EcKeyGenParams extends Algorithm {\\n namedCurve: NamedCurve;\\n}\\n\\ninterface EcKeyImportParams extends Algorithm {\\n namedCurve: NamedCurve;\\n}\\n\\ninterface EcdhKeyDeriveParams extends Algorithm {\\n public: CryptoKey;\\n}\\n\\ninterface EcdsaParams extends Algorithm {\\n hash: HashAlgorithmIdentifier;\\n}\\n\\ninterface EffectTiming {\\n delay?: number;\\n direction?: PlaybackDirection;\\n duration?: number | string;\\n easing?: string;\\n endDelay?: number;\\n fill?: FillMode;\\n iterationStart?: number;\\n iterations?: number;\\n}\\n\\ninterface ElementCreationOptions {\\n is?: string;\\n}\\n\\ninterface ElementDefinitionOptions {\\n extends?: string;\\n}\\n\\ninterface ErrorEventInit extends EventInit {\\n colno?: number;\\n error?: any;\\n filename?: string;\\n lineno?: number;\\n message?: string;\\n}\\n\\ninterface EventInit {\\n bubbles?: boolean;\\n cancelable?: boolean;\\n composed?: boolean;\\n}\\n\\ninterface EventListenerOptions {\\n capture?: boolean;\\n}\\n\\ninterface EventModifierInit extends UIEventInit {\\n altKey?: boolean;\\n ctrlKey?: boolean;\\n metaKey?: boolean;\\n modifierAltGraph?: boolean;\\n modifierCapsLock?: boolean;\\n modifierFn?: boolean;\\n modifierFnLock?: boolean;\\n modifierHyper?: boolean;\\n modifierNumLock?: boolean;\\n modifierScrollLock?: boolean;\\n modifierSuper?: boolean;\\n modifierSymbol?: boolean;\\n modifierSymbolLock?: boolean;\\n shiftKey?: boolean;\\n}\\n\\ninterface EventSourceInit {\\n withCredentials?: boolean;\\n}\\n\\ninterface ExceptionInformation {\\n domain?: string | null;\\n}\\n\\ninterface FilePropertyBag extends BlobPropertyBag {\\n lastModified?: number;\\n}\\n\\ninterface FocusEventInit extends UIEventInit {\\n relatedTarget?: EventTarget | null;\\n}\\n\\ninterface FocusNavigationEventInit extends EventInit {\\n navigationReason?: string | null;\\n originHeight?: number;\\n originLeft?: number;\\n originTop?: number;\\n originWidth?: number;\\n}\\n\\ninterface FocusNavigationOrigin {\\n originHeight?: number;\\n originLeft?: number;\\n originTop?: number;\\n originWidth?: number;\\n}\\n\\ninterface FocusOptions {\\n preventScroll?: boolean;\\n}\\n\\ninterface FullscreenOptions {\\n navigationUI?: FullscreenNavigationUI;\\n}\\n\\ninterface GainOptions extends AudioNodeOptions {\\n gain?: number;\\n}\\n\\ninterface GamepadEventInit extends EventInit {\\n gamepad: Gamepad;\\n}\\n\\ninterface GetNotificationOptions {\\n tag?: string;\\n}\\n\\ninterface GetRootNodeOptions {\\n composed?: boolean;\\n}\\n\\ninterface HashChangeEventInit extends EventInit {\\n newURL?: string;\\n oldURL?: string;\\n}\\n\\ninterface HkdfParams extends Algorithm {\\n hash: HashAlgorithmIdentifier;\\n info: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer;\\n salt: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer;\\n}\\n\\ninterface HmacImportParams extends Algorithm {\\n hash: HashAlgorithmIdentifier;\\n length?: number;\\n}\\n\\ninterface HmacKeyAlgorithm extends KeyAlgorithm {\\n hash: KeyAlgorithm;\\n length: number;\\n}\\n\\ninterface HmacKeyGenParams extends Algorithm {\\n hash: HashAlgorithmIdentifier;\\n length?: number;\\n}\\n\\ninterface IDBIndexParameters {\\n multiEntry?: boolean;\\n unique?: boolean;\\n}\\n\\ninterface IDBObjectStoreParameters {\\n autoIncrement?: boolean;\\n keyPath?: string | string[] | null;\\n}\\n\\ninterface IDBVersionChangeEventInit extends EventInit {\\n newVersion?: number | null;\\n oldVersion?: number;\\n}\\n\\ninterface IIRFilterOptions extends AudioNodeOptions {\\n feedback: number[];\\n feedforward: number[];\\n}\\n\\ninterface ImageBitmapOptions {\\n colorSpaceConversion?: ColorSpaceConversion;\\n imageOrientation?: ImageOrientation;\\n premultiplyAlpha?: PremultiplyAlpha;\\n resizeHeight?: number;\\n resizeQuality?: ResizeQuality;\\n resizeWidth?: number;\\n}\\n\\ninterface ImageBitmapRenderingContextSettings {\\n alpha?: boolean;\\n}\\n\\ninterface ImageEncodeOptions {\\n quality?: number;\\n type?: string;\\n}\\n\\ninterface ImportMeta {\\n url: string;\\n}\\n\\ninterface InputEventInit extends UIEventInit {\\n data?: string | null;\\n inputType?: string;\\n isComposing?: boolean;\\n}\\n\\ninterface IntersectionObserverEntryInit {\\n boundingClientRect: DOMRectInit;\\n intersectionRatio: number;\\n intersectionRect: DOMRectInit;\\n isIntersecting: boolean;\\n rootBounds: DOMRectInit | null;\\n target: Element;\\n time: number;\\n}\\n\\ninterface IntersectionObserverInit {\\n root?: Element | Document | null;\\n rootMargin?: string;\\n threshold?: number | number[];\\n}\\n\\ninterface JsonWebKey {\\n alg?: string;\\n crv?: string;\\n d?: string;\\n dp?: string;\\n dq?: string;\\n e?: string;\\n ext?: boolean;\\n k?: string;\\n key_ops?: string[];\\n kty?: string;\\n n?: string;\\n oth?: RsaOtherPrimesInfo[];\\n p?: string;\\n q?: string;\\n qi?: string;\\n use?: string;\\n x?: string;\\n y?: string;\\n}\\n\\ninterface KeyAlgorithm {\\n name: string;\\n}\\n\\ninterface KeyboardEventInit extends EventModifierInit {\\n /** @deprecated */\\n charCode?: number;\\n code?: string;\\n isComposing?: boolean;\\n key?: string;\\n /** @deprecated */\\n keyCode?: number;\\n location?: number;\\n repeat?: boolean;\\n}\\n\\ninterface Keyframe {\\n composite?: CompositeOperationOrAuto;\\n easing?: string;\\n offset?: number | null;\\n [property: string]: string | number | null | undefined;\\n}\\n\\ninterface KeyframeAnimationOptions extends KeyframeEffectOptions {\\n id?: string;\\n}\\n\\ninterface KeyframeEffectOptions extends EffectTiming {\\n composite?: CompositeOperation;\\n iterationComposite?: IterationCompositeOperation;\\n}\\n\\ninterface MediaElementAudioSourceOptions {\\n mediaElement: HTMLMediaElement;\\n}\\n\\ninterface MediaEncryptedEventInit extends EventInit {\\n initData?: ArrayBuffer | null;\\n initDataType?: string;\\n}\\n\\ninterface MediaKeyMessageEventInit extends EventInit {\\n message: ArrayBuffer;\\n messageType: MediaKeyMessageType;\\n}\\n\\ninterface MediaKeySystemConfiguration {\\n audioCapabilities?: MediaKeySystemMediaCapability[];\\n distinctiveIdentifier?: MediaKeysRequirement;\\n initDataTypes?: string[];\\n label?: string;\\n persistentState?: MediaKeysRequirement;\\n sessionTypes?: string[];\\n videoCapabilities?: MediaKeySystemMediaCapability[];\\n}\\n\\ninterface MediaKeySystemMediaCapability {\\n contentType?: string;\\n robustness?: string;\\n}\\n\\ninterface MediaQueryListEventInit extends EventInit {\\n matches?: boolean;\\n media?: string;\\n}\\n\\ninterface MediaStreamAudioSourceOptions {\\n mediaStream: MediaStream;\\n}\\n\\ninterface MediaStreamConstraints {\\n audio?: boolean | MediaTrackConstraints;\\n peerIdentity?: string;\\n video?: boolean | MediaTrackConstraints;\\n}\\n\\ninterface MediaStreamErrorEventInit extends EventInit {\\n error?: MediaStreamError | null;\\n}\\n\\ninterface MediaStreamEventInit extends EventInit {\\n stream?: MediaStream;\\n}\\n\\ninterface MediaStreamTrackAudioSourceOptions {\\n mediaStreamTrack: MediaStreamTrack;\\n}\\n\\ninterface MediaStreamTrackEventInit extends EventInit {\\n track: MediaStreamTrack;\\n}\\n\\ninterface MediaTrackCapabilities {\\n aspectRatio?: DoubleRange;\\n autoGainControl?: boolean[];\\n channelCount?: ULongRange;\\n deviceId?: string;\\n echoCancellation?: boolean[];\\n facingMode?: string[];\\n frameRate?: DoubleRange;\\n groupId?: string;\\n height?: ULongRange;\\n latency?: DoubleRange;\\n noiseSuppression?: boolean[];\\n resizeMode?: string[];\\n sampleRate?: ULongRange;\\n sampleSize?: ULongRange;\\n width?: ULongRange;\\n}\\n\\ninterface MediaTrackConstraintSet {\\n aspectRatio?: ConstrainDouble;\\n autoGainControl?: ConstrainBoolean;\\n channelCount?: ConstrainULong;\\n deviceId?: ConstrainDOMString;\\n echoCancellation?: ConstrainBoolean;\\n facingMode?: ConstrainDOMString;\\n frameRate?: ConstrainDouble;\\n groupId?: ConstrainDOMString;\\n height?: ConstrainULong;\\n latency?: ConstrainDouble;\\n noiseSuppression?: ConstrainBoolean;\\n resizeMode?: ConstrainDOMString;\\n sampleRate?: ConstrainULong;\\n sampleSize?: ConstrainULong;\\n width?: ConstrainULong;\\n}\\n\\ninterface MediaTrackConstraints extends MediaTrackConstraintSet {\\n advanced?: MediaTrackConstraintSet[];\\n}\\n\\ninterface MediaTrackSettings {\\n aspectRatio?: number;\\n autoGainControl?: boolean;\\n channelCount?: number;\\n deviceId?: string;\\n echoCancellation?: boolean;\\n facingMode?: string;\\n frameRate?: number;\\n groupId?: string;\\n height?: number;\\n latency?: number;\\n noiseSuppression?: boolean;\\n resizeMode?: string;\\n sampleRate?: number;\\n sampleSize?: number;\\n width?: number;\\n}\\n\\ninterface MediaTrackSupportedConstraints {\\n aspectRatio?: boolean;\\n autoGainControl?: boolean;\\n channelCount?: boolean;\\n deviceId?: boolean;\\n echoCancellation?: boolean;\\n facingMode?: boolean;\\n frameRate?: boolean;\\n groupId?: boolean;\\n height?: boolean;\\n latency?: boolean;\\n noiseSuppression?: boolean;\\n resizeMode?: boolean;\\n sampleRate?: boolean;\\n sampleSize?: boolean;\\n width?: boolean;\\n}\\n\\ninterface MessageEventInit extends EventInit {\\n data?: T;\\n lastEventId?: string;\\n origin?: string;\\n ports?: MessagePort[];\\n source?: MessageEventSource | null;\\n}\\n\\ninterface MidiPermissionDescriptor extends PermissionDescriptor {\\n name: \\\"midi\\\";\\n sysex?: boolean;\\n}\\n\\ninterface MouseEventInit extends EventModifierInit {\\n button?: number;\\n buttons?: number;\\n clientX?: number;\\n clientY?: number;\\n movementX?: number;\\n movementY?: number;\\n relatedTarget?: EventTarget | null;\\n screenX?: number;\\n screenY?: number;\\n}\\n\\ninterface MultiCacheQueryOptions extends CacheQueryOptions {\\n cacheName?: string;\\n}\\n\\ninterface MutationObserverInit {\\n /**\\n * Set to a list of attribute local names (without namespace) if not all attribute mutations need to be observed and attributes is true or omitted.\\n */\\n attributeFilter?: string[];\\n /**\\n * Set to true if attributes is true or omitted and target's attribute value before the mutation needs to be recorded.\\n */\\n attributeOldValue?: boolean;\\n /**\\n * Set to true if mutations to target's attributes are to be observed. Can be omitted if attributeOldValue or attributeFilter is specified.\\n */\\n attributes?: boolean;\\n /**\\n * Set to true if mutations to target's data are to be observed. Can be omitted if characterDataOldValue is specified.\\n */\\n characterData?: boolean;\\n /**\\n * Set to true if characterData is set to true or omitted and target's data before the mutation needs to be recorded.\\n */\\n characterDataOldValue?: boolean;\\n /**\\n * Set to true if mutations to target's children are to be observed.\\n */\\n childList?: boolean;\\n /**\\n * Set to true if mutations to not just target, but also target's descendants are to be observed.\\n */\\n subtree?: boolean;\\n}\\n\\ninterface NavigationPreloadState {\\n enabled?: boolean;\\n headerValue?: string;\\n}\\n\\ninterface NotificationAction {\\n action: string;\\n icon?: string;\\n title: string;\\n}\\n\\ninterface NotificationOptions {\\n actions?: NotificationAction[];\\n badge?: string;\\n body?: string;\\n data?: any;\\n dir?: NotificationDirection;\\n icon?: string;\\n image?: string;\\n lang?: string;\\n renotify?: boolean;\\n requireInteraction?: boolean;\\n silent?: boolean;\\n tag?: string;\\n timestamp?: number;\\n vibrate?: VibratePattern;\\n}\\n\\ninterface OfflineAudioCompletionEventInit extends EventInit {\\n renderedBuffer: AudioBuffer;\\n}\\n\\ninterface OfflineAudioContextOptions {\\n length: number;\\n numberOfChannels?: number;\\n sampleRate: number;\\n}\\n\\ninterface OptionalEffectTiming {\\n delay?: number;\\n direction?: PlaybackDirection;\\n duration?: number | string;\\n easing?: string;\\n endDelay?: number;\\n fill?: FillMode;\\n iterationStart?: number;\\n iterations?: number;\\n}\\n\\ninterface OscillatorOptions extends AudioNodeOptions {\\n detune?: number;\\n frequency?: number;\\n periodicWave?: PeriodicWave;\\n type?: OscillatorType;\\n}\\n\\ninterface PageTransitionEventInit extends EventInit {\\n persisted?: boolean;\\n}\\n\\ninterface PannerOptions extends AudioNodeOptions {\\n coneInnerAngle?: number;\\n coneOuterAngle?: number;\\n coneOuterGain?: number;\\n distanceModel?: DistanceModelType;\\n maxDistance?: number;\\n orientationX?: number;\\n orientationY?: number;\\n orientationZ?: number;\\n panningModel?: PanningModelType;\\n positionX?: number;\\n positionY?: number;\\n positionZ?: number;\\n refDistance?: number;\\n rolloffFactor?: number;\\n}\\n\\ninterface PaymentCurrencyAmount {\\n currency: string;\\n currencySystem?: string;\\n value: string;\\n}\\n\\ninterface PaymentDetailsBase {\\n displayItems?: PaymentItem[];\\n modifiers?: PaymentDetailsModifier[];\\n shippingOptions?: PaymentShippingOption[];\\n}\\n\\ninterface PaymentDetailsInit extends PaymentDetailsBase {\\n id?: string;\\n total: PaymentItem;\\n}\\n\\ninterface PaymentDetailsModifier {\\n additionalDisplayItems?: PaymentItem[];\\n data?: any;\\n supportedMethods: string | string[];\\n total?: PaymentItem;\\n}\\n\\ninterface PaymentDetailsUpdate extends PaymentDetailsBase {\\n error?: string;\\n total?: PaymentItem;\\n}\\n\\ninterface PaymentItem {\\n amount: PaymentCurrencyAmount;\\n label: string;\\n pending?: boolean;\\n}\\n\\ninterface PaymentMethodData {\\n data?: any;\\n supportedMethods: string | string[];\\n}\\n\\ninterface PaymentOptions {\\n requestPayerEmail?: boolean;\\n requestPayerName?: boolean;\\n requestPayerPhone?: boolean;\\n requestShipping?: boolean;\\n shippingType?: string;\\n}\\n\\ninterface PaymentRequestUpdateEventInit extends EventInit {\\n}\\n\\ninterface PaymentShippingOption {\\n amount: PaymentCurrencyAmount;\\n id: string;\\n label: string;\\n selected?: boolean;\\n}\\n\\ninterface Pbkdf2Params extends Algorithm {\\n hash: HashAlgorithmIdentifier;\\n iterations: number;\\n salt: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer;\\n}\\n\\ninterface PerformanceObserverInit {\\n buffered?: boolean;\\n entryTypes?: string[];\\n type?: string;\\n}\\n\\ninterface PeriodicWaveConstraints {\\n disableNormalization?: boolean;\\n}\\n\\ninterface PeriodicWaveOptions extends PeriodicWaveConstraints {\\n imag?: number[] | Float32Array;\\n real?: number[] | Float32Array;\\n}\\n\\ninterface PermissionDescriptor {\\n name: PermissionName;\\n}\\n\\ninterface PointerEventInit extends MouseEventInit {\\n coalescedEvents?: PointerEvent[];\\n height?: number;\\n isPrimary?: boolean;\\n pointerId?: number;\\n pointerType?: string;\\n predictedEvents?: PointerEvent[];\\n pressure?: number;\\n tangentialPressure?: number;\\n tiltX?: number;\\n tiltY?: number;\\n twist?: number;\\n width?: number;\\n}\\n\\ninterface PopStateEventInit extends EventInit {\\n state?: any;\\n}\\n\\ninterface PositionOptions {\\n enableHighAccuracy?: boolean;\\n maximumAge?: number;\\n timeout?: number;\\n}\\n\\ninterface PostMessageOptions {\\n transfer?: any[];\\n}\\n\\ninterface ProgressEventInit extends EventInit {\\n lengthComputable?: boolean;\\n loaded?: number;\\n total?: number;\\n}\\n\\ninterface PromiseRejectionEventInit extends EventInit {\\n promise: Promise;\\n reason?: any;\\n}\\n\\ninterface PropertyIndexedKeyframes {\\n composite?: CompositeOperationOrAuto | CompositeOperationOrAuto[];\\n easing?: string | string[];\\n offset?: number | (number | null)[];\\n [property: string]: string | string[] | number | null | (number | null)[] | undefined;\\n}\\n\\ninterface PublicKeyCredentialCreationOptions {\\n attestation?: AttestationConveyancePreference;\\n authenticatorSelection?: AuthenticatorSelectionCriteria;\\n challenge: BufferSource;\\n excludeCredentials?: PublicKeyCredentialDescriptor[];\\n extensions?: AuthenticationExtensionsClientInputs;\\n pubKeyCredParams: PublicKeyCredentialParameters[];\\n rp: PublicKeyCredentialRpEntity;\\n timeout?: number;\\n user: PublicKeyCredentialUserEntity;\\n}\\n\\ninterface PublicKeyCredentialDescriptor {\\n id: BufferSource;\\n transports?: AuthenticatorTransport[];\\n type: PublicKeyCredentialType;\\n}\\n\\ninterface PublicKeyCredentialEntity {\\n name: string;\\n}\\n\\ninterface PublicKeyCredentialParameters {\\n alg: COSEAlgorithmIdentifier;\\n type: PublicKeyCredentialType;\\n}\\n\\ninterface PublicKeyCredentialRequestOptions {\\n allowCredentials?: PublicKeyCredentialDescriptor[];\\n challenge: BufferSource;\\n extensions?: AuthenticationExtensionsClientInputs;\\n rpId?: string;\\n timeout?: number;\\n userVerification?: UserVerificationRequirement;\\n}\\n\\ninterface PublicKeyCredentialRpEntity extends PublicKeyCredentialEntity {\\n id?: string;\\n}\\n\\ninterface PublicKeyCredentialUserEntity extends PublicKeyCredentialEntity {\\n displayName: string;\\n id: BufferSource;\\n}\\n\\ninterface PushPermissionDescriptor extends PermissionDescriptor {\\n name: \\\"push\\\";\\n userVisibleOnly?: boolean;\\n}\\n\\ninterface PushSubscriptionJSON {\\n endpoint?: string;\\n expirationTime?: number | null;\\n keys?: Record;\\n}\\n\\ninterface PushSubscriptionOptionsInit {\\n applicationServerKey?: BufferSource | string | null;\\n userVisibleOnly?: boolean;\\n}\\n\\ninterface QueuingStrategy {\\n highWaterMark?: number;\\n size?: QueuingStrategySize;\\n}\\n\\ninterface QueuingStrategyInit {\\n /**\\n * Creates a new ByteLengthQueuingStrategy with the provided high water mark.\\n * \\n * Note that the provided high water mark will not be validated ahead of time. Instead, if it is negative, NaN, or not a number, the resulting ByteLengthQueuingStrategy will cause the corresponding stream constructor to throw.\\n */\\n highWaterMark: number;\\n}\\n\\ninterface RTCAnswerOptions extends RTCOfferAnswerOptions {\\n}\\n\\ninterface RTCCertificateExpiration {\\n expires?: number;\\n}\\n\\ninterface RTCConfiguration {\\n bundlePolicy?: RTCBundlePolicy;\\n certificates?: RTCCertificate[];\\n iceCandidatePoolSize?: number;\\n iceServers?: RTCIceServer[];\\n iceTransportPolicy?: RTCIceTransportPolicy;\\n peerIdentity?: string;\\n rtcpMuxPolicy?: RTCRtcpMuxPolicy;\\n}\\n\\ninterface RTCDTMFToneChangeEventInit extends EventInit {\\n tone: string;\\n}\\n\\ninterface RTCDataChannelEventInit extends EventInit {\\n channel: RTCDataChannel;\\n}\\n\\ninterface RTCDataChannelInit {\\n id?: number;\\n maxPacketLifeTime?: number;\\n maxRetransmits?: number;\\n negotiated?: boolean;\\n ordered?: boolean;\\n priority?: RTCPriorityType;\\n protocol?: string;\\n}\\n\\ninterface RTCDtlsFingerprint {\\n algorithm?: string;\\n value?: string;\\n}\\n\\ninterface RTCDtlsParameters {\\n fingerprints?: RTCDtlsFingerprint[];\\n role?: RTCDtlsRole;\\n}\\n\\ninterface RTCErrorEventInit extends EventInit {\\n error: RTCError;\\n}\\n\\ninterface RTCErrorInit {\\n errorDetail: RTCErrorDetailType;\\n httpRequestStatusCode?: number;\\n receivedAlert?: number;\\n sctpCauseCode?: number;\\n sdpLineNumber?: number;\\n sentAlert?: number;\\n}\\n\\ninterface RTCIceCandidateAttributes extends RTCStats {\\n addressSourceUrl?: string;\\n candidateType?: RTCStatsIceCandidateType;\\n ipAddress?: string;\\n portNumber?: number;\\n priority?: number;\\n transport?: string;\\n}\\n\\ninterface RTCIceCandidateComplete {\\n}\\n\\ninterface RTCIceCandidateDictionary {\\n foundation?: string;\\n ip?: string;\\n msMTurnSessionId?: string;\\n port?: number;\\n priority?: number;\\n protocol?: RTCIceProtocol;\\n relatedAddress?: string;\\n relatedPort?: number;\\n tcpType?: RTCIceTcpCandidateType;\\n type?: RTCIceCandidateType;\\n}\\n\\ninterface RTCIceCandidateInit {\\n candidate?: string;\\n sdpMLineIndex?: number | null;\\n sdpMid?: string | null;\\n usernameFragment?: string | null;\\n}\\n\\ninterface RTCIceCandidatePair {\\n local?: RTCIceCandidate;\\n remote?: RTCIceCandidate;\\n}\\n\\ninterface RTCIceCandidatePairStats extends RTCStats {\\n availableIncomingBitrate?: number;\\n availableOutgoingBitrate?: number;\\n bytesDiscardedOnSend?: number;\\n bytesReceived?: number;\\n bytesSent?: number;\\n circuitBreakerTriggerCount?: number;\\n consentExpiredTimestamp?: number;\\n consentRequestsSent?: number;\\n currentRoundTripTime?: number;\\n currentRtt?: number;\\n firstRequestTimestamp?: number;\\n lastPacketReceivedTimestamp?: number;\\n lastPacketSentTimestamp?: number;\\n lastRequestTimestamp?: number;\\n lastResponseTimestamp?: number;\\n localCandidateId?: string;\\n nominated?: boolean;\\n packetsDiscardedOnSend?: number;\\n packetsReceived?: number;\\n packetsSent?: number;\\n priority?: number;\\n remoteCandidateId?: string;\\n requestsReceived?: number;\\n requestsSent?: number;\\n responsesReceived?: number;\\n responsesSent?: number;\\n retransmissionsReceived?: number;\\n retransmissionsSent?: number;\\n state?: RTCStatsIceCandidatePairState;\\n totalRoundTripTime?: number;\\n totalRtt?: number;\\n transportId?: string;\\n}\\n\\ninterface RTCIceGatherOptions {\\n gatherPolicy?: RTCIceGatherPolicy;\\n iceservers?: RTCIceServer[];\\n}\\n\\ninterface RTCIceParameters {\\n password?: string;\\n usernameFragment?: string;\\n}\\n\\ninterface RTCIceServer {\\n credential?: string | RTCOAuthCredential;\\n credentialType?: RTCIceCredentialType;\\n urls: string | string[];\\n username?: string;\\n}\\n\\ninterface RTCIdentityProviderOptions {\\n peerIdentity?: string;\\n protocol?: string;\\n usernameHint?: string;\\n}\\n\\ninterface RTCInboundRTPStreamStats extends RTCRTPStreamStats {\\n bytesReceived?: number;\\n fractionLost?: number;\\n jitter?: number;\\n packetsLost?: number;\\n packetsReceived?: number;\\n}\\n\\ninterface RTCMediaStreamTrackStats extends RTCStats {\\n audioLevel?: number;\\n echoReturnLoss?: number;\\n echoReturnLossEnhancement?: number;\\n frameHeight?: number;\\n frameWidth?: number;\\n framesCorrupted?: number;\\n framesDecoded?: number;\\n framesDropped?: number;\\n framesPerSecond?: number;\\n framesReceived?: number;\\n framesSent?: number;\\n remoteSource?: boolean;\\n ssrcIds?: string[];\\n trackIdentifier?: string;\\n}\\n\\ninterface RTCOAuthCredential {\\n accessToken: string;\\n macKey: string;\\n}\\n\\ninterface RTCOfferAnswerOptions {\\n voiceActivityDetection?: boolean;\\n}\\n\\ninterface RTCOfferOptions extends RTCOfferAnswerOptions {\\n iceRestart?: boolean;\\n offerToReceiveAudio?: boolean;\\n offerToReceiveVideo?: boolean;\\n}\\n\\ninterface RTCOutboundRTPStreamStats extends RTCRTPStreamStats {\\n bytesSent?: number;\\n packetsSent?: number;\\n roundTripTime?: number;\\n targetBitrate?: number;\\n}\\n\\ninterface RTCPeerConnectionIceErrorEventInit extends EventInit {\\n errorCode: number;\\n hostCandidate?: string;\\n statusText?: string;\\n url?: string;\\n}\\n\\ninterface RTCPeerConnectionIceEventInit extends EventInit {\\n candidate?: RTCIceCandidate | null;\\n url?: string | null;\\n}\\n\\ninterface RTCRTPStreamStats extends RTCStats {\\n associateStatsId?: string;\\n codecId?: string;\\n firCount?: number;\\n isRemote?: boolean;\\n mediaTrackId?: string;\\n mediaType?: string;\\n nackCount?: number;\\n pliCount?: number;\\n sliCount?: number;\\n ssrc?: string;\\n transportId?: string;\\n}\\n\\ninterface RTCRtcpFeedback {\\n parameter?: string;\\n type?: string;\\n}\\n\\ninterface RTCRtcpParameters {\\n cname?: string;\\n reducedSize?: boolean;\\n}\\n\\ninterface RTCRtpCapabilities {\\n codecs: RTCRtpCodecCapability[];\\n headerExtensions: RTCRtpHeaderExtensionCapability[];\\n}\\n\\ninterface RTCRtpCodecCapability {\\n channels?: number;\\n clockRate: number;\\n mimeType: string;\\n sdpFmtpLine?: string;\\n}\\n\\ninterface RTCRtpCodecParameters {\\n channels?: number;\\n clockRate: number;\\n mimeType: string;\\n payloadType: number;\\n sdpFmtpLine?: string;\\n}\\n\\ninterface RTCRtpCodingParameters {\\n rid?: string;\\n}\\n\\ninterface RTCRtpContributingSource {\\n audioLevel?: number;\\n rtpTimestamp: number;\\n source: number;\\n timestamp: number;\\n}\\n\\ninterface RTCRtpDecodingParameters extends RTCRtpCodingParameters {\\n}\\n\\ninterface RTCRtpEncodingParameters extends RTCRtpCodingParameters {\\n active?: boolean;\\n codecPayloadType?: number;\\n dtx?: RTCDtxStatus;\\n maxBitrate?: number;\\n maxFramerate?: number;\\n ptime?: number;\\n scaleResolutionDownBy?: number;\\n}\\n\\ninterface RTCRtpFecParameters {\\n mechanism?: string;\\n ssrc?: number;\\n}\\n\\ninterface RTCRtpHeaderExtension {\\n kind?: string;\\n preferredEncrypt?: boolean;\\n preferredId?: number;\\n uri?: string;\\n}\\n\\ninterface RTCRtpHeaderExtensionCapability {\\n uri?: string;\\n}\\n\\ninterface RTCRtpHeaderExtensionParameters {\\n encrypted?: boolean;\\n id: number;\\n uri: string;\\n}\\n\\ninterface RTCRtpParameters {\\n codecs: RTCRtpCodecParameters[];\\n headerExtensions: RTCRtpHeaderExtensionParameters[];\\n rtcp: RTCRtcpParameters;\\n}\\n\\ninterface RTCRtpReceiveParameters extends RTCRtpParameters {\\n encodings: RTCRtpDecodingParameters[];\\n}\\n\\ninterface RTCRtpRtxParameters {\\n ssrc?: number;\\n}\\n\\ninterface RTCRtpSendParameters extends RTCRtpParameters {\\n degradationPreference?: RTCDegradationPreference;\\n encodings: RTCRtpEncodingParameters[];\\n priority?: RTCPriorityType;\\n transactionId: string;\\n}\\n\\ninterface RTCRtpSynchronizationSource extends RTCRtpContributingSource {\\n voiceActivityFlag?: boolean;\\n}\\n\\ninterface RTCRtpTransceiverInit {\\n direction?: RTCRtpTransceiverDirection;\\n sendEncodings?: RTCRtpEncodingParameters[];\\n streams?: MediaStream[];\\n}\\n\\ninterface RTCRtpUnhandled {\\n muxId?: string;\\n payloadType?: number;\\n ssrc?: number;\\n}\\n\\ninterface RTCSessionDescriptionInit {\\n sdp?: string;\\n type?: RTCSdpType;\\n}\\n\\ninterface RTCSrtpKeyParam {\\n keyMethod?: string;\\n keySalt?: string;\\n lifetime?: string;\\n mkiLength?: number;\\n mkiValue?: number;\\n}\\n\\ninterface RTCSrtpSdesParameters {\\n cryptoSuite?: string;\\n keyParams?: RTCSrtpKeyParam[];\\n sessionParams?: string[];\\n tag?: number;\\n}\\n\\ninterface RTCSsrcRange {\\n max?: number;\\n min?: number;\\n}\\n\\ninterface RTCStats {\\n id?: string;\\n timestamp?: number;\\n type?: RTCStatsType;\\n}\\n\\ninterface RTCStatsEventInit extends EventInit {\\n report: RTCStatsReport;\\n}\\n\\ninterface RTCStatsReport {\\n}\\n\\ninterface RTCTrackEventInit extends EventInit {\\n receiver: RTCRtpReceiver;\\n streams?: MediaStream[];\\n track: MediaStreamTrack;\\n transceiver: RTCRtpTransceiver;\\n}\\n\\ninterface RTCTransportStats extends RTCStats {\\n bytesReceived?: number;\\n bytesSent?: number;\\n dtlsCipher?: string;\\n dtlsState?: RTCDtlsTransportState;\\n iceRole?: RTCIceRole;\\n localCertificateId?: string;\\n packetsReceived?: number;\\n packetsSent?: number;\\n remoteCertificateId?: string;\\n rtcpTransportStatsId?: string;\\n selectedCandidatePairChanges?: number;\\n selectedCandidatePairId?: string;\\n srtpCipher?: string;\\n tlsGroup?: string;\\n tlsVersion?: string;\\n}\\n\\ninterface ReadableStreamDefaultReadDoneResult {\\n done: true;\\n value?: undefined;\\n}\\n\\ninterface ReadableStreamDefaultReadValueResult {\\n done: false;\\n value: T;\\n}\\n\\ninterface ReadableWritablePair {\\n readable: ReadableStream;\\n /**\\n * Provides a convenient, chainable way of piping this readable stream through a transform stream (or any other { writable, readable } pair). It simply pipes the stream into the writable side of the supplied pair, and returns the readable side for further use.\\n * \\n * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader.\\n */\\n writable: WritableStream;\\n}\\n\\ninterface RegistrationOptions {\\n scope?: string;\\n type?: WorkerType;\\n updateViaCache?: ServiceWorkerUpdateViaCache;\\n}\\n\\ninterface RequestInit {\\n /**\\n * A BodyInit object or null to set request's body.\\n */\\n body?: BodyInit | null;\\n /**\\n * A string indicating how the request will interact with the browser's cache to set request's cache.\\n */\\n cache?: RequestCache;\\n /**\\n * A string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. Sets request's credentials.\\n */\\n credentials?: RequestCredentials;\\n /**\\n * A Headers object, an object literal, or an array of two-item arrays to set request's headers.\\n */\\n headers?: HeadersInit;\\n /**\\n * A cryptographic hash of the resource to be fetched by request. Sets request's integrity.\\n */\\n integrity?: string;\\n /**\\n * A boolean to set request's keepalive.\\n */\\n keepalive?: boolean;\\n /**\\n * A string to set request's method.\\n */\\n method?: string;\\n /**\\n * A string to indicate whether the request will use CORS, or will be restricted to same-origin URLs. Sets request's mode.\\n */\\n mode?: RequestMode;\\n /**\\n * A string indicating whether request follows redirects, results in an error upon encountering a redirect, or returns the redirect (in an opaque fashion). Sets request's redirect.\\n */\\n redirect?: RequestRedirect;\\n /**\\n * A string whose value is a same-origin URL, \\\"about:client\\\", or the empty string, to set request's referrer.\\n */\\n referrer?: string;\\n /**\\n * A referrer policy to set request's referrerPolicy.\\n */\\n referrerPolicy?: ReferrerPolicy;\\n /**\\n * An AbortSignal to set request's signal.\\n */\\n signal?: AbortSignal | null;\\n /**\\n * Can only be null. Used to disassociate request from any Window.\\n */\\n window?: any;\\n}\\n\\ninterface ResizeObserverOptions {\\n box?: ResizeObserverBoxOptions;\\n}\\n\\ninterface ResponseInit {\\n headers?: HeadersInit;\\n status?: number;\\n statusText?: string;\\n}\\n\\ninterface RsaHashedImportParams extends Algorithm {\\n hash: HashAlgorithmIdentifier;\\n}\\n\\ninterface RsaHashedKeyAlgorithm extends RsaKeyAlgorithm {\\n hash: KeyAlgorithm;\\n}\\n\\ninterface RsaHashedKeyGenParams extends RsaKeyGenParams {\\n hash: HashAlgorithmIdentifier;\\n}\\n\\ninterface RsaKeyAlgorithm extends KeyAlgorithm {\\n modulusLength: number;\\n publicExponent: BigInteger;\\n}\\n\\ninterface RsaKeyGenParams extends Algorithm {\\n modulusLength: number;\\n publicExponent: BigInteger;\\n}\\n\\ninterface RsaOaepParams extends Algorithm {\\n label?: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer;\\n}\\n\\ninterface RsaOtherPrimesInfo {\\n d?: string;\\n r?: string;\\n t?: string;\\n}\\n\\ninterface RsaPssParams extends Algorithm {\\n saltLength: number;\\n}\\n\\ninterface SVGBoundingBoxOptions {\\n clipped?: boolean;\\n fill?: boolean;\\n markers?: boolean;\\n stroke?: boolean;\\n}\\n\\ninterface ScopedCredentialDescriptor {\\n id: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer | null;\\n transports?: Transport[];\\n type: ScopedCredentialType;\\n}\\n\\ninterface ScopedCredentialOptions {\\n excludeList?: ScopedCredentialDescriptor[];\\n extensions?: WebAuthnExtensions;\\n rpId?: string;\\n timeoutSeconds?: number;\\n}\\n\\ninterface ScopedCredentialParameters {\\n algorithm: string | Algorithm;\\n type: ScopedCredentialType;\\n}\\n\\ninterface ScrollIntoViewOptions extends ScrollOptions {\\n block?: ScrollLogicalPosition;\\n inline?: ScrollLogicalPosition;\\n}\\n\\ninterface ScrollOptions {\\n behavior?: ScrollBehavior;\\n}\\n\\ninterface ScrollToOptions extends ScrollOptions {\\n left?: number;\\n top?: number;\\n}\\n\\ninterface SecurityPolicyViolationEventInit extends EventInit {\\n blockedURI?: string;\\n columnNumber?: number;\\n documentURI?: string;\\n effectiveDirective?: string;\\n lineNumber?: number;\\n originalPolicy?: string;\\n referrer?: string;\\n sourceFile?: string;\\n statusCode?: number;\\n violatedDirective?: string;\\n}\\n\\ninterface ServiceWorkerMessageEventInit extends EventInit {\\n data?: any;\\n lastEventId?: string;\\n origin?: string;\\n ports?: MessagePort[] | null;\\n source?: ServiceWorker | MessagePort | null;\\n}\\n\\ninterface ShadowRootInit {\\n delegatesFocus?: boolean;\\n mode: ShadowRootMode;\\n}\\n\\ninterface ShareData {\\n text?: string;\\n title?: string;\\n url?: string;\\n}\\n\\ninterface SpeechRecognitionErrorEventInit extends EventInit {\\n error: SpeechRecognitionErrorCode;\\n message?: string;\\n}\\n\\ninterface SpeechRecognitionEventInit extends EventInit {\\n resultIndex?: number;\\n results: SpeechRecognitionResultList;\\n}\\n\\ninterface SpeechSynthesisErrorEventInit extends SpeechSynthesisEventInit {\\n error: SpeechSynthesisErrorCode;\\n}\\n\\ninterface SpeechSynthesisEventInit extends EventInit {\\n charIndex?: number;\\n charLength?: number;\\n elapsedTime?: number;\\n name?: string;\\n utterance: SpeechSynthesisUtterance;\\n}\\n\\ninterface StaticRangeInit {\\n endContainer: Node;\\n endOffset: number;\\n startContainer: Node;\\n startOffset: number;\\n}\\n\\ninterface StereoPannerOptions extends AudioNodeOptions {\\n pan?: number;\\n}\\n\\ninterface StorageEstimate {\\n quota?: number;\\n usage?: number;\\n}\\n\\ninterface StorageEventInit extends EventInit {\\n key?: string | null;\\n newValue?: string | null;\\n oldValue?: string | null;\\n storageArea?: Storage | null;\\n url?: string;\\n}\\n\\ninterface StoreExceptionsInformation extends ExceptionInformation {\\n detailURI?: string | null;\\n explanationString?: string | null;\\n siteName?: string | null;\\n}\\n\\ninterface StoreSiteSpecificExceptionsInformation extends StoreExceptionsInformation {\\n arrayOfDomainStrings?: string[];\\n}\\n\\ninterface StreamPipeOptions {\\n preventAbort?: boolean;\\n preventCancel?: boolean;\\n /**\\n * Pipes this readable stream to a given writable stream destination. The way in which the piping process behaves under various error conditions can be customized with a number of passed options. It returns a promise that fulfills when the piping process completes successfully, or rejects if any errors were encountered.\\n * \\n * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader.\\n * \\n * Errors and closures of the source and destination streams propagate as follows:\\n * \\n * An error in this source readable stream will abort destination, unless preventAbort is truthy. The returned promise will be rejected with the source's error, or with any error that occurs during aborting the destination.\\n * \\n * An error in destination will cancel this source readable stream, unless preventCancel is truthy. The returned promise will be rejected with the destination's error, or with any error that occurs during canceling the source.\\n * \\n * When this source readable stream closes, destination will be closed, unless preventClose is truthy. The returned promise will be fulfilled once this process completes, unless an error is encountered while closing the destination, in which case it will be rejected with that error.\\n * \\n * If destination starts out closed or closing, this source readable stream will be canceled, unless preventCancel is true. The returned promise will be rejected with an error indicating piping to a closed stream failed, or with any error that occurs during canceling the source.\\n * \\n * The signal option can be set to an AbortSignal to allow aborting an ongoing pipe operation via the corresponding AbortController. In this case, this source readable stream will be canceled, and destination aborted, unless the respective options preventCancel or preventAbort are set.\\n */\\n preventClose?: boolean;\\n signal?: AbortSignal;\\n}\\n\\ninterface TextDecodeOptions {\\n stream?: boolean;\\n}\\n\\ninterface TextDecoderOptions {\\n fatal?: boolean;\\n ignoreBOM?: boolean;\\n}\\n\\ninterface TextEncoderEncodeIntoResult {\\n read?: number;\\n written?: number;\\n}\\n\\ninterface TouchEventInit extends EventModifierInit {\\n changedTouches?: Touch[];\\n targetTouches?: Touch[];\\n touches?: Touch[];\\n}\\n\\ninterface TouchInit {\\n altitudeAngle?: number;\\n azimuthAngle?: number;\\n clientX?: number;\\n clientY?: number;\\n force?: number;\\n identifier: number;\\n pageX?: number;\\n pageY?: number;\\n radiusX?: number;\\n radiusY?: number;\\n rotationAngle?: number;\\n screenX?: number;\\n screenY?: number;\\n target: EventTarget;\\n touchType?: TouchType;\\n}\\n\\ninterface TrackEventInit extends EventInit {\\n track?: TextTrack | null;\\n}\\n\\ninterface Transformer {\\n flush?: TransformerFlushCallback;\\n readableType?: undefined;\\n start?: TransformerStartCallback;\\n transform?: TransformerTransformCallback;\\n writableType?: undefined;\\n}\\n\\ninterface TransitionEventInit extends EventInit {\\n elapsedTime?: number;\\n propertyName?: string;\\n pseudoElement?: string;\\n}\\n\\ninterface UIEventInit extends EventInit {\\n detail?: number;\\n view?: Window | null;\\n}\\n\\ninterface ULongRange {\\n max?: number;\\n min?: number;\\n}\\n\\ninterface UnderlyingSink {\\n abort?: UnderlyingSinkAbortCallback;\\n close?: UnderlyingSinkCloseCallback;\\n start?: UnderlyingSinkStartCallback;\\n type?: undefined;\\n write?: UnderlyingSinkWriteCallback;\\n}\\n\\ninterface UnderlyingSource {\\n cancel?: UnderlyingSourceCancelCallback;\\n pull?: UnderlyingSourcePullCallback;\\n start?: UnderlyingSourceStartCallback;\\n type?: undefined;\\n}\\n\\ninterface VRDisplayEventInit extends EventInit {\\n display: VRDisplay;\\n reason?: VRDisplayEventReason;\\n}\\n\\ninterface VRLayer {\\n leftBounds?: number[] | Float32Array | null;\\n rightBounds?: number[] | Float32Array | null;\\n source?: HTMLCanvasElement | null;\\n}\\n\\ninterface VRStageParameters {\\n sittingToStandingTransform?: Float32Array;\\n sizeX?: number;\\n sizeY?: number;\\n}\\n\\ninterface WaveShaperOptions extends AudioNodeOptions {\\n curve?: number[] | Float32Array;\\n oversample?: OverSampleType;\\n}\\n\\ninterface WebAuthnExtensions {\\n}\\n\\ninterface WebGLContextAttributes {\\n alpha?: boolean;\\n antialias?: boolean;\\n depth?: boolean;\\n desynchronized?: boolean;\\n failIfMajorPerformanceCaveat?: boolean;\\n powerPreference?: WebGLPowerPreference;\\n premultipliedAlpha?: boolean;\\n preserveDrawingBuffer?: boolean;\\n stencil?: boolean;\\n}\\n\\ninterface WebGLContextEventInit extends EventInit {\\n statusMessage?: string;\\n}\\n\\ninterface WheelEventInit extends MouseEventInit {\\n deltaMode?: number;\\n deltaX?: number;\\n deltaY?: number;\\n deltaZ?: number;\\n}\\n\\ninterface WorkerOptions {\\n credentials?: RequestCredentials;\\n name?: string;\\n type?: WorkerType;\\n}\\n\\ninterface WorkletOptions {\\n credentials?: RequestCredentials;\\n}\\n\\ninterface EventListener {\\n (evt: Event): void;\\n}\\n\\ntype XPathNSResolver = ((prefix: string | null) => string | null) | { lookupNamespaceURI(prefix: string | null): string | null; };\\n\\n/** The ANGLE_instanced_arrays extension is part of the WebGL API and allows to draw the same object, or groups of similar objects multiple times, if they share the same vertex data, primitive count and type. */\\ninterface ANGLE_instanced_arrays {\\n drawArraysInstancedANGLE(mode: GLenum, first: GLint, count: GLsizei, primcount: GLsizei): void;\\n drawElementsInstancedANGLE(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr, primcount: GLsizei): void;\\n vertexAttribDivisorANGLE(index: GLuint, divisor: GLuint): void;\\n readonly VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: GLenum;\\n}\\n\\n/** A controller object that allows you to abort one or more DOM requests as and when desired. */\\ninterface AbortController {\\n /**\\n * Returns the AbortSignal object associated with this object.\\n */\\n readonly signal: AbortSignal;\\n /**\\n * Invoking this method will set this object's AbortSignal's aborted flag and signal to any observers that the associated activity is to be aborted.\\n */\\n abort(): void;\\n}\\n\\ndeclare var AbortController: {\\n prototype: AbortController;\\n new(): AbortController;\\n};\\n\\ninterface AbortSignalEventMap {\\n \\\"abort\\\": Event;\\n}\\n\\n/** A signal object that allows you to communicate with a DOM request (such as a Fetch) and abort it if required via an AbortController object. */\\ninterface AbortSignal extends EventTarget {\\n /**\\n * Returns true if this AbortSignal's AbortController has signaled to abort, and false otherwise.\\n */\\n readonly aborted: boolean;\\n onabort: ((this: AbortSignal, ev: Event) => any) | null;\\n addEventListener(type: K, listener: (this: AbortSignal, ev: AbortSignalEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\\n removeEventListener(type: K, listener: (this: AbortSignal, ev: AbortSignalEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\\n}\\n\\ndeclare var AbortSignal: {\\n prototype: AbortSignal;\\n new(): AbortSignal;\\n};\\n\\ninterface AbstractRange {\\n /**\\n * Returns true if range is collapsed, and false otherwise.\\n */\\n readonly collapsed: boolean;\\n /**\\n * Returns range's end node.\\n */\\n readonly endContainer: Node;\\n /**\\n * Returns range's end offset.\\n */\\n readonly endOffset: number;\\n /**\\n * Returns range's start node.\\n */\\n readonly startContainer: Node;\\n /**\\n * Returns range's start offset.\\n */\\n readonly startOffset: number;\\n}\\n\\ndeclare var AbstractRange: {\\n prototype: AbstractRange;\\n new(): AbstractRange;\\n};\\n\\ninterface AbstractWorkerEventMap {\\n \\\"error\\\": ErrorEvent;\\n}\\n\\ninterface AbstractWorker {\\n onerror: ((this: AbstractWorker, ev: ErrorEvent) => any) | null;\\n addEventListener(type: K, listener: (this: AbstractWorker, ev: AbstractWorkerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\\n removeEventListener(type: K, listener: (this: AbstractWorker, ev: AbstractWorkerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\\n}\\n\\ninterface AesCfbParams extends Algorithm {\\n iv: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array | DataView | ArrayBuffer;\\n}\\n\\ninterface AesCmacParams extends Algorithm {\\n length: number;\\n}\\n\\n/** A node able to provide real-time frequency and time-domain analysis information. It is an AudioNode that passes the audio stream unchanged from the input to the output, but allows you to take the generated data, process it, and create audio visualizations. */\\ninterface AnalyserNode extends AudioNode {\\n fftSize: number;\\n readonly frequencyBinCount: number;\\n maxDecibels: number;\\n minDecibels: number;\\n smoothingTimeConstant: number;\\n getByteFrequencyData(array: Uint8Array): void;\\n getByteTimeDomainData(array: Uint8Array): void;\\n getFloatFrequencyData(array: Float32Array): void;\\n getFloatTimeDomainData(array: Float32Array): void;\\n}\\n\\ndeclare var AnalyserNode: {\\n prototype: AnalyserNode;\\n new(context: BaseAudioContext, options?: AnalyserOptions): AnalyserNode;\\n};\\n\\ninterface Animatable {\\n animate(keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions): Animation;\\n getAnimations(): Animation[];\\n}\\n\\ninterface AnimationEventMap {\\n \\\"cancel\\\": AnimationPlaybackEvent;\\n \\\"finish\\\": AnimationPlaybackEvent;\\n}\\n\\ninterface Animation extends EventTarget {\\n currentTime: number | null;\\n effect: AnimationEffect | null;\\n readonly finished: Promise;\\n id: string;\\n oncancel: ((this: Animation, ev: AnimationPlaybackEvent) => any) | null;\\n onfinish: ((this: Animation, ev: AnimationPlaybackEvent) => any) | null;\\n readonly pending: boolean;\\n readonly playState: AnimationPlayState;\\n playbackRate: number;\\n readonly ready: Promise;\\n startTime: number | null;\\n timeline: AnimationTimeline | null;\\n cancel(): void;\\n finish(): void;\\n pause(): void;\\n play(): void;\\n reverse(): void;\\n updatePlaybackRate(playbackRate: number): void;\\n addEventListener(type: K, listener: (this: Animation, ev: AnimationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\\n removeEventListener(type: K, listener: (this: Animation, ev: AnimationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\\n}\\n\\ndeclare var Animation: {\\n prototype: Animation;\\n new(effect?: AnimationEffect | null, timeline?: AnimationTimeline | null): Animation;\\n};\\n\\ninterface AnimationEffect {\\n getComputedTiming(): ComputedEffectTiming;\\n getTiming(): EffectTiming;\\n updateTiming(timing?: OptionalEffectTiming): void;\\n}\\n\\ndeclare var AnimationEffect: {\\n prototype: AnimationEffect;\\n new(): AnimationEffect;\\n};\\n\\n/** Events providing information related to animations. */\\ninterface AnimationEvent extends Event {\\n readonly animationName: string;\\n readonly elapsedTime: number;\\n readonly pseudoElement: string;\\n}\\n\\ndeclare var AnimationEvent: {\\n prototype: AnimationEvent;\\n new(type: string, animationEventInitDict?: AnimationEventInit): AnimationEvent;\\n};\\n\\ninterface AnimationFrameProvider {\\n cancelAnimationFrame(handle: number): void;\\n requestAnimationFrame(callback: FrameRequestCallback): number;\\n}\\n\\ninterface AnimationPlaybackEvent extends Event {\\n readonly currentTime: number | null;\\n readonly timelineTime: number | null;\\n}\\n\\ndeclare var AnimationPlaybackEvent: {\\n prototype: AnimationPlaybackEvent;\\n new(type: string, eventInitDict?: AnimationPlaybackEventInit): AnimationPlaybackEvent;\\n};\\n\\ninterface AnimationTimeline {\\n readonly currentTime: number | null;\\n}\\n\\ndeclare var AnimationTimeline: {\\n prototype: AnimationTimeline;\\n new(): AnimationTimeline;\\n};\\n\\ninterface ApplicationCacheEventMap {\\n \\\"cached\\\": Event;\\n \\\"checking\\\": Event;\\n \\\"downloading\\\": Event;\\n \\\"error\\\": Event;\\n \\\"noupdate\\\": Event;\\n \\\"obsolete\\\": Event;\\n \\\"progress\\\": ProgressEvent;\\n \\\"updateready\\\": Event;\\n}\\n\\ninterface ApplicationCache extends EventTarget {\\n /** @deprecated */\\n oncached: ((this: ApplicationCache, ev: Event) => any) | null;\\n /** @deprecated */\\n onchecking: ((this: ApplicationCache, ev: Event) => any) | null;\\n /** @deprecated */\\n ondownloading: ((this: ApplicationCache, ev: Event) => any) | null;\\n /** @deprecated */\\n onerror: ((this: ApplicationCache, ev: Event) => any) | null;\\n /** @deprecated */\\n onnoupdate: ((this: ApplicationCache, ev: Event) => any) | null;\\n /** @deprecated */\\n onobsolete: ((this: ApplicationCache, ev: Event) => any) | null;\\n /** @deprecated */\\n onprogress: ((this: ApplicationCache, ev: ProgressEvent) => any) | null;\\n /** @deprecated */\\n onupdateready: ((this: ApplicationCache, ev: Event) => any) | null;\\n /** @deprecated */\\n readonly status: number;\\n /** @deprecated */\\n abort(): void;\\n /** @deprecated */\\n swapCache(): void;\\n /** @deprecated */\\n update(): void;\\n readonly CHECKING: number;\\n readonly DOWNLOADING: number;\\n readonly IDLE: number;\\n readonly OBSOLETE: number;\\n readonly UNCACHED: number;\\n readonly UPDATEREADY: number;\\n addEventListener(type: K, listener: (this: ApplicationCache, ev: ApplicationCacheEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\\n removeEventListener(type: K, listener: (this: ApplicationCache, ev: ApplicationCacheEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\\n}\\n\\ndeclare var ApplicationCache: {\\n prototype: ApplicationCache;\\n new(): ApplicationCache;\\n readonly CHECKING: number;\\n readonly DOWNLOADING: number;\\n readonly IDLE: number;\\n readonly OBSOLETE: number;\\n readonly UNCACHED: number;\\n readonly UPDATEREADY: number;\\n};\\n\\n/** A DOM element's attribute as an object. In most DOM methods, you will probably directly retrieve the attribute as a string (e.g., Element.getAttribute(), but certain functions (e.g., Element.getAttributeNode()) or means of iterating give Attr types. */\\ninterface Attr extends Node {\\n readonly localName: string;\\n readonly name: string;\\n readonly namespaceURI: string | null;\\n readonly ownerDocument: Document;\\n readonly ownerElement: Element | null;\\n readonly prefix: string | null;\\n readonly specified: boolean;\\n value: string;\\n}\\n\\ndeclare var Attr: {\\n prototype: Attr;\\n new(): Attr;\\n};\\n\\n/** A short audio asset residing in memory, created from an audio file using the AudioContext.decodeAudioData() method, or from raw data using AudioContext.createBuffer(). Once put into an AudioBuffer, the audio can then be played by being passed into an AudioBufferSourceNode. */\\ninterface AudioBuffer {\\n readonly duration: number;\\n readonly length: number;\\n readonly numberOfChannels: number;\\n readonly sampleRate: number;\\n copyFromChannel(destination: Float32Array, channelNumber: number, bufferOffset?: number): void;\\n copyToChannel(source: Float32Array, channelNumber: number, bufferOffset?: number): void;\\n getChannelData(channel: number): Float32Array;\\n}\\n\\ndeclare var AudioBuffer: {\\n prototype: AudioBuffer;\\n new(options: AudioBufferOptions): AudioBuffer;\\n};\\n\\n/** An AudioScheduledSourceNode which represents an audio source consisting of in-memory audio data, stored in an AudioBuffer. It's especially useful for playing back audio which has particularly stringent timing accuracy requirements, such as for sounds that must match a specific rhythm and can be kept in memory rather than being played from disk or the network. */\\ninterface AudioBufferSourceNode extends AudioScheduledSourceNode {\\n buffer: AudioBuffer | null;\\n readonly detune: AudioParam;\\n loop: boolean;\\n loopEnd: number;\\n loopStart: number;\\n readonly playbackRate: AudioParam;\\n start(when?: number, offset?: number, duration?: number): void;\\n addEventListener(type: K, listener: (this: AudioBufferSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\\n removeEventListener(type: K, listener: (this: AudioBufferSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\\n}\\n\\ndeclare var AudioBufferSourceNode: {\\n prototype: AudioBufferSourceNode;\\n new(context: BaseAudioContext, options?: AudioBufferSourceOptions): AudioBufferSourceNode;\\n};\\n\\n/** An audio-processing graph built from audio modules linked together, each represented by an AudioNode. */\\ninterface AudioContext extends BaseAudioContext {\\n readonly baseLatency: number;\\n readonly outputLatency: number;\\n close(): Promise;\\n createMediaElementSource(mediaElement: HTMLMediaElement): MediaElementAudioSourceNode;\\n createMediaStreamDestination(): MediaStreamAudioDestinationNode;\\n createMediaStreamSource(mediaStream: MediaStream): MediaStreamAudioSourceNode;\\n createMediaStreamTrackSource(mediaStreamTrack: MediaStreamTrack): MediaStreamTrackAudioSourceNode;\\n getOutputTimestamp(): AudioTimestamp;\\n resume(): Promise;\\n suspend(): Promise;\\n addEventListener(type: K, listener: (this: AudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\\n removeEventListener(type: K, listener: (this: AudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\\n}\\n\\ndeclare var AudioContext: {\\n prototype: AudioContext;\\n new(contextOptions?: AudioContextOptions): AudioContext;\\n};\\n\\n/** AudioDestinationNode has no output (as it is the output, no more AudioNode can be linked after it in the audio graph) and one input. The number of channels in the input must be between 0 and the maxChannelCount value or an exception is raised. */\\ninterface AudioDestinationNode extends AudioNode {\\n readonly maxChannelCount: number;\\n}\\n\\ndeclare var AudioDestinationNode: {\\n prototype: AudioDestinationNode;\\n new(): AudioDestinationNode;\\n};\\n\\n/** The position and orientation of the unique person listening to the audio scene, and is used in audio spatialization. All PannerNodes spatialize in relation to the AudioListener stored in the BaseAudioContext.listener attribute. */\\ninterface AudioListener {\\n readonly forwardX: AudioParam;\\n readonly forwardY: AudioParam;\\n readonly forwardZ: AudioParam;\\n readonly positionX: AudioParam;\\n readonly positionY: AudioParam;\\n readonly positionZ: AudioParam;\\n readonly upX: AudioParam;\\n readonly upY: AudioParam;\\n readonly upZ: AudioParam;\\n /** @deprecated */\\n setOrientation(x: number, y: number, z: number, xUp: number, yUp: number, zUp: number): void;\\n /** @deprecated */\\n setPosition(x: number, y: number, z: number): void;\\n}\\n\\ndeclare var AudioListener: {\\n prototype: AudioListener;\\n new(): AudioListener;\\n};\\n\\n/** A generic interface for representing an audio processing module. Examples include: */\\ninterface AudioNode extends EventTarget {\\n channelCount: number;\\n channelCountMode: ChannelCountMode;\\n channelInterpretation: ChannelInterpretation;\\n readonly context: BaseAudioContext;\\n readonly numberOfInputs: number;\\n readonly numberOfOutputs: number;\\n connect(destinationNode: AudioNode, output?: number, input?: number): AudioNode;\\n connect(destinationParam: AudioParam, output?: number): void;\\n disconnect(): void;\\n disconnect(output: number): void;\\n disconnect(destinationNode: AudioNode): void;\\n disconnect(destinationNode: AudioNode, output: number): void;\\n disconnect(destinationNode: AudioNode, output: number, input: number): void;\\n disconnect(destinationParam: AudioParam): void;\\n disconnect(destinationParam: AudioParam, output: number): void;\\n}\\n\\ndeclare var AudioNode: {\\n prototype: AudioNode;\\n new(): AudioNode;\\n};\\n\\n/** The Web Audio API's AudioParam interface represents an audio-related parameter, usually a parameter of an AudioNode (such as GainNode.gain). */\\ninterface AudioParam {\\n automationRate: AutomationRate;\\n readonly defaultValue: number;\\n readonly maxValue: number;\\n readonly minValue: number;\\n value: number;\\n cancelAndHoldAtTime(cancelTime: number): AudioParam;\\n cancelScheduledValues(cancelTime: number): AudioParam;\\n exponentialRampToValueAtTime(value: number, endTime: number): AudioParam;\\n linearRampToValueAtTime(value: number, endTime: number): AudioParam;\\n setTargetAtTime(target: number, startTime: number, timeConstant: number): AudioParam;\\n setValueAtTime(value: number, startTime: number): AudioParam;\\n setValueCurveAtTime(values: number[] | Float32Array, startTime: number, duration: number): AudioParam;\\n}\\n\\ndeclare var AudioParam: {\\n prototype: AudioParam;\\n new(): AudioParam;\\n};\\n\\ninterface AudioParamMap {\\n forEach(callbackfn: (value: AudioParam, key: string, parent: AudioParamMap) => void, thisArg?: any): void;\\n}\\n\\ndeclare var AudioParamMap: {\\n prototype: AudioParamMap;\\n new(): AudioParamMap;\\n};\\n\\n/** The Web Audio API events that occur when a ScriptProcessorNode input buffer is ready to be processed.\\n * @deprecated As of the August 29 2014 Web Audio API spec publication, this feature has been marked as deprecated, and is soon to be replaced by AudioWorklet.\\n */\\ninterface AudioProcessingEvent extends Event {\\n readonly inputBuffer: AudioBuffer;\\n readonly outputBuffer: AudioBuffer;\\n readonly playbackTime: number;\\n}\\n\\ndeclare var AudioProcessingEvent: {\\n prototype: AudioProcessingEvent;\\n new(type: string, eventInitDict: AudioProcessingEventInit): AudioProcessingEvent;\\n};\\n\\ninterface AudioScheduledSourceNodeEventMap {\\n \\\"ended\\\": Event;\\n}\\n\\ninterface AudioScheduledSourceNode extends AudioNode {\\n onended: ((this: AudioScheduledSourceNode, ev: Event) => any) | null;\\n start(when?: number): void;\\n stop(when?: number): void;\\n addEventListener(type: K, listener: (this: AudioScheduledSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\\n removeEventListener(type: K, listener: (this: AudioScheduledSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\\n}\\n\\ndeclare var AudioScheduledSourceNode: {\\n prototype: AudioScheduledSourceNode;\\n new(): AudioScheduledSourceNode;\\n};\\n\\ninterface AudioWorklet extends Worklet {\\n}\\n\\ndeclare var AudioWorklet: {\\n prototype: AudioWorklet;\\n new(): AudioWorklet;\\n};\\n\\ninterface AudioWorkletNodeEventMap {\\n \\\"processorerror\\\": Event;\\n}\\n\\ninterface AudioWorkletNode extends AudioNode {\\n onprocessorerror: ((this: AudioWorkletNode, ev: Event) => any) | null;\\n readonly parameters: AudioParamMap;\\n readonly port: MessagePort;\\n addEventListener(type: K, listener: (this: AudioWorkletNode, ev: AudioWorkletNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\\n removeEventListener(type: K, listener: (this: AudioWorkletNode, ev: AudioWorkletNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\\n}\\n\\ndeclare var AudioWorkletNode: {\\n prototype: AudioWorkletNode;\\n new(context: BaseAudioContext, name: string, options?: AudioWorkletNodeOptions): AudioWorkletNode;\\n};\\n\\ninterface AuthenticatorAssertionResponse extends AuthenticatorResponse {\\n readonly authenticatorData: ArrayBuffer;\\n readonly signature: ArrayBuffer;\\n readonly userHandle: ArrayBuffer | null;\\n}\\n\\ndeclare var AuthenticatorAssertionResponse: {\\n prototype: AuthenticatorAssertionResponse;\\n new(): AuthenticatorAssertionResponse;\\n};\\n\\ninterface AuthenticatorAttestationResponse extends AuthenticatorResponse {\\n readonly attestationObject: ArrayBuffer;\\n}\\n\\ndeclare var AuthenticatorAttestationResponse: {\\n prototype: AuthenticatorAttestationResponse;\\n new(): AuthenticatorAttestationResponse;\\n};\\n\\ninterface AuthenticatorResponse {\\n readonly clientDataJSON: ArrayBuffer;\\n}\\n\\ndeclare var AuthenticatorResponse: {\\n prototype: AuthenticatorResponse;\\n new(): AuthenticatorResponse;\\n};\\n\\ninterface BarProp {\\n readonly visible: boolean;\\n}\\n\\ndeclare var BarProp: {\\n prototype: BarProp;\\n new(): BarProp;\\n};\\n\\ninterface BaseAudioContextEventMap {\\n \\\"statechange\\\": Event;\\n}\\n\\ninterface BaseAudioContext extends EventTarget {\\n readonly audioWorklet: AudioWorklet;\\n readonly currentTime: number;\\n readonly destination: AudioDestinationNode;\\n readonly listener: AudioListener;\\n onstatechange: ((this: BaseAudioContext, ev: Event) => any) | null;\\n readonly sampleRate: number;\\n readonly state: AudioContextState;\\n createAnalyser(): AnalyserNode;\\n createBiquadFilter(): BiquadFilterNode;\\n createBuffer(numberOfChannels: number, length: number, sampleRate: number): AudioBuffer;\\n createBufferSource(): AudioBufferSourceNode;\\n createChannelMerger(numberOfInputs?: number): ChannelMergerNode;\\n createChannelSplitter(numberOfOutputs?: number): ChannelSplitterNode;\\n createConstantSource(): ConstantSourceNode;\\n createConvolver(): ConvolverNode;\\n createDelay(maxDelayTime?: number): DelayNode;\\n createDynamicsCompressor(): DynamicsCompressorNode;\\n createGain(): GainNode;\\n createIIRFilter(feedforward: number[], feedback: number[]): IIRFilterNode;\\n createOscillator(): OscillatorNode;\\n createPanner(): PannerNode;\\n createPeriodicWave(real: number[] | Float32Array, imag: number[] | Float32Array, constraints?: PeriodicWaveConstraints): PeriodicWave;\\n createScriptProcessor(bufferSize?: number, numberOfInputChannels?: number, numberOfOutputChannels?: number): ScriptProcessorNode;\\n createStereoPanner(): StereoPannerNode;\\n createWaveShaper(): WaveShaperNode;\\n decodeAudioData(audioData: ArrayBuffer, successCallback?: DecodeSuccessCallback | null, errorCallback?: DecodeErrorCallback | null): Promise;\\n addEventListener(type: K, listener: (this: BaseAudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\\n removeEventListener(type: K, listener: (this: BaseAudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\\n}\\n\\ndeclare var BaseAudioContext: {\\n prototype: BaseAudioContext;\\n new(): BaseAudioContext;\\n};\\n\\n/** The beforeunload event is fired when the window, the document and its resources are about to be unloaded. */\\ninterface BeforeUnloadEvent extends Event {\\n returnValue: any;\\n}\\n\\ndeclare var BeforeUnloadEvent: {\\n prototype: BeforeUnloadEvent;\\n new(): BeforeUnloadEvent;\\n};\\n\\ninterface BhxBrowser {\\n readonly lastError: DOMException;\\n checkMatchesGlobExpression(pattern: string, value: string): boolean;\\n checkMatchesUriExpression(pattern: string, value: string): boolean;\\n clearLastError(): void;\\n currentWindowId(): number;\\n fireExtensionApiTelemetry(functionName: string, isSucceeded: boolean, isSupported: boolean, errorString: string): void;\\n genericFunction(functionId: number, destination: any, parameters?: string, callbackId?: number): void;\\n genericSynchronousFunction(functionId: number, parameters?: string): string;\\n getExtensionId(): string;\\n getThisAddress(): any;\\n registerGenericFunctionCallbackHandler(callbackHandler: Function): void;\\n registerGenericListenerHandler(eventHandler: Function): void;\\n setLastError(parameters: string): void;\\n webPlatformGenericFunction(destination: any, parameters?: string, callbackId?: number): void;\\n}\\n\\ndeclare var BhxBrowser: {\\n prototype: BhxBrowser;\\n new(): BhxBrowser;\\n};\\n\\n/** A simple low-order filter, and is created using the AudioContext.createBiquadFilter() method. It is an AudioNode that can represent different kinds of filters, tone control devices, and graphic equalizers. */\\ninterface BiquadFilterNode extends AudioNode {\\n readonly Q: AudioParam;\\n readonly detune: AudioParam;\\n readonly frequency: AudioParam;\\n readonly gain: AudioParam;\\n type: BiquadFilterType;\\n getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void;\\n}\\n\\ndeclare var BiquadFilterNode: {\\n prototype: BiquadFilterNode;\\n new(context: BaseAudioContext, options?: BiquadFilterOptions): BiquadFilterNode;\\n};\\n\\n/** A file-like object of immutable, raw data. Blobs represent data that isn't necessarily in a JavaScript-native format. The File interface is based on Blob, inheriting blob functionality and expanding it to support files on the user's system. */\\ninterface Blob {\\n readonly size: number;\\n readonly type: string;\\n arrayBuffer(): Promise;\\n slice(start?: number, end?: number, contentType?: string): Blob;\\n stream(): ReadableStream;\\n text(): Promise;\\n}\\n\\ndeclare var Blob: {\\n prototype: Blob;\\n new(blobParts?: BlobPart[], options?: BlobPropertyBag): Blob;\\n};\\n\\ninterface Body {\\n readonly body: ReadableStream | null;\\n readonly bodyUsed: boolean;\\n arrayBuffer(): Promise;\\n blob(): Promise;\\n formData(): Promise;\\n json(): Promise;\\n text(): Promise;\\n}\\n\\ninterface BroadcastChannelEventMap {\\n \\\"message\\\": MessageEvent;\\n \\\"messageerror\\\": MessageEvent;\\n}\\n\\ninterface BroadcastChannel extends EventTarget {\\n /**\\n * Returns the channel name (as passed to the constructor).\\n */\\n readonly name: string;\\n onmessage: ((this: BroadcastChannel, ev: MessageEvent) => any) | null;\\n onmessageerror: ((this: BroadcastChannel, ev: MessageEvent) => any) | null;\\n /**\\n * Closes the BroadcastChannel object, opening it up to garbage collection.\\n */\\n close(): void;\\n /**\\n * Sends the given message to other BroadcastChannel objects set up for this channel. Messages can be structured objects, e.g. nested objects and arrays.\\n */\\n postMessage(message: any): void;\\n addEventListener(type: K, listener: (this: BroadcastChannel, ev: BroadcastChannelEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\\n removeEventListener(type: K, listener: (this: BroadcastChannel, ev: BroadcastChannelEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\\n}\\n\\ndeclare var BroadcastChannel: {\\n prototype: BroadcastChannel;\\n new(name: string): BroadcastChannel;\\n};\\n\\n/** This Streams API interface provides a built-in byte length queuing strategy that can be used when constructing streams. */\\ninterface ByteLengthQueuingStrategy extends QueuingStrategy {\\n readonly highWaterMark: number;\\n readonly size: QueuingStrategySize;\\n}\\n\\ndeclare var ByteLengthQueuingStrategy: {\\n prototype: ByteLengthQueuingStrategy;\\n new(init: QueuingStrategyInit): ByteLengthQueuingStrategy;\\n};\\n\\n/** A CDATA section that can be used within XML to include extended portions of unescaped text. The symbols < and & don’t need escaping as they normally do when inside a CDATA section. */\\ninterface CDATASection extends Text {\\n}\\n\\ndeclare var CDATASection: {\\n prototype: CDATASection;\\n new(): CDATASection;\\n};\\n\\n/** A single condition CSS at-rule, which consists of a condition and a statement block. It is a child of CSSGroupingRule. */\\ninterface CSSConditionRule extends CSSGroupingRule {\\n conditionText: string;\\n}\\n\\ndeclare var CSSConditionRule: {\\n prototype: CSSConditionRule;\\n new(): CSSConditionRule;\\n};\\n\\ninterface CSSFontFaceRule extends CSSRule {\\n readonly style: CSSStyleDeclaration;\\n}\\n\\ndeclare var CSSFontFaceRule: {\\n prototype: CSSFontFaceRule;\\n new(): CSSFontFaceRule;\\n};\\n\\n/** Any CSS at-rule that contains other rules nested within it. */\\ninterface CSSGroupingRule extends CSSRule {\\n readonly cssRules: CSSRuleList;\\n deleteRule(index: number): void;\\n insertRule(rule: string, index?: number): number;\\n}\\n\\ndeclare var CSSGroupingRule: {\\n prototype: CSSGroupingRule;\\n new(): CSSGroupingRule;\\n};\\n\\ninterface CSSImportRule extends CSSRule {\\n readonly href: string;\\n readonly media: MediaList;\\n readonly styleSheet: CSSStyleSheet;\\n}\\n\\ndeclare var CSSImportRule: {\\n prototype: CSSImportRule;\\n new(): CSSImportRule;\\n};\\n\\n/** An object representing a set of style for a given keyframe. It corresponds to the contains of a single keyframe of a @keyframes at-rule. It implements the CSSRule interface with a type value of 8 (CSSRule.KEYFRAME_RULE). */\\ninterface CSSKeyframeRule extends CSSRule {\\n keyText: string;\\n readonly style: CSSStyleDeclaration;\\n}\\n\\ndeclare var CSSKeyframeRule: {\\n prototype: CSSKeyframeRule;\\n new(): CSSKeyframeRule;\\n};\\n\\n/** An object representing a complete set of keyframes for a CSS animation. It corresponds to the contains of a whole @keyframes at-rule. It implements the CSSRule interface with a type value of 7 (CSSRule.KEYFRAMES_RULE). */\\ninterface CSSKeyframesRule extends CSSRule {\\n readonly cssRules: CSSRuleList;\\n name: string;\\n appendRule(rule: string): void;\\n deleteRule(select: string): void;\\n findRule(select: string): CSSKeyframeRule | null;\\n}\\n\\ndeclare var CSSKeyframesRule: {\\n prototype: CSSKeyframesRule;\\n new(): CSSKeyframesRule;\\n};\\n\\n/** A single CSS @media rule. It implements the CSSConditionRule interface, and therefore the CSSGroupingRule and the CSSRule interface with a type value of 4 (CSSRule.MEDIA_RULE). */\\ninterface CSSMediaRule extends CSSConditionRule {\\n readonly media: MediaList;\\n}\\n\\ndeclare var CSSMediaRule: {\\n prototype: CSSMediaRule;\\n new(): CSSMediaRule;\\n};\\n\\n/** An object representing a single CSS @namespace at-rule. It implements the CSSRule interface, with a type value of 10 (CSSRule.NAMESPACE_RULE). */\\ninterface CSSNamespaceRule extends CSSRule {\\n readonly namespaceURI: string;\\n readonly prefix: string;\\n}\\n\\ndeclare var CSSNamespaceRule: {\\n prototype: CSSNamespaceRule;\\n new(): CSSNamespaceRule;\\n};\\n\\n/** CSSPageRule is an interface representing a single CSS @page rule. It implements the CSSRule interface with a type value of 6 (CSSRule.PAGE_RULE). */\\ninterface CSSPageRule extends CSSGroupingRule {\\n selectorText: string;\\n readonly style: CSSStyleDeclaration;\\n}\\n\\ndeclare var CSSPageRule: {\\n prototype: CSSPageRule;\\n new(): CSSPageRule;\\n};\\n\\n/** A single CSS rule. There are several types of rules, listed in the Type constants section below. */\\ninterface CSSRule {\\n cssText: string;\\n readonly parentRule: CSSRule | null;\\n readonly parentStyleSheet: CSSStyleSheet | null;\\n readonly type: number;\\n readonly CHARSET_RULE: number;\\n readonly FONT_FACE_RULE: number;\\n readonly IMPORT_RULE: number;\\n readonly KEYFRAMES_RULE: number;\\n readonly KEYFRAME_RULE: number;\\n readonly MEDIA_RULE: number;\\n readonly NAMESPACE_RULE: number;\\n readonly PAGE_RULE: number;\\n readonly STYLE_RULE: number;\\n readonly SUPPORTS_RULE: number;\\n}\\n\\ndeclare var CSSRule: {\\n prototype: CSSRule;\\n new(): CSSRule;\\n readonly CHARSET_RULE: number;\\n readonly FONT_FACE_RULE: number;\\n readonly IMPORT_RULE: number;\\n readonly KEYFRAMES_RULE: number;\\n readonly KEYFRAME_RULE: number;\\n readonly MEDIA_RULE: number;\\n readonly NAMESPACE_RULE: number;\\n readonly PAGE_RULE: number;\\n readonly STYLE_RULE: number;\\n readonly SUPPORTS_RULE: number;\\n};\\n\\n/** A CSSRuleList is an (indirect-modify only) array-like object containing an ordered collection of CSSRule objects. */\\ninterface CSSRuleList {\\n readonly length: number;\\n item(index: number): CSSRule | null;\\n [index: number]: CSSRule;\\n}\\n\\ndeclare var CSSRuleList: {\\n prototype: CSSRuleList;\\n new(): CSSRuleList;\\n};\\n\\n/** An object that is a CSS declaration block, and exposes style information and various style-related methods and properties. */\\ninterface CSSStyleDeclaration {\\n alignContent: string;\\n alignItems: string;\\n alignSelf: string;\\n alignmentBaseline: string;\\n all: string;\\n animation: string;\\n animationDelay: string;\\n animationDirection: string;\\n animationDuration: string;\\n animationFillMode: string;\\n animationIterationCount: string;\\n animationName: string;\\n animationPlayState: string;\\n animationTimingFunction: string;\\n backfaceVisibility: string;\\n background: string;\\n backgroundAttachment: string;\\n backgroundClip: string;\\n backgroundColor: string;\\n backgroundImage: string;\\n backgroundOrigin: string;\\n backgroundPosition: string;\\n backgroundPositionX: string;\\n backgroundPositionY: string;\\n backgroundRepeat: string;\\n backgroundSize: string;\\n baselineShift: string;\\n blockSize: string;\\n border: string;\\n borderBlockEnd: string;\\n borderBlockEndColor: string;\\n borderBlockEndStyle: string;\\n borderBlockEndWidth: string;\\n borderBlockStart: string;\\n borderBlockStartColor: string;\\n borderBlockStartStyle: string;\\n borderBlockStartWidth: string;\\n borderBottom: string;\\n borderBottomColor: string;\\n borderBottomLeftRadius: string;\\n borderBottomRightRadius: string;\\n borderBottomStyle: string;\\n borderBottomWidth: string;\\n borderCollapse: string;\\n borderColor: string;\\n borderImage: string;\\n borderImageOutset: string;\\n borderImageRepeat: string;\\n borderImageSlice: string;\\n borderImageSource: string;\\n borderImageWidth: string;\\n borderInlineEnd: string;\\n borderInlineEndColor: string;\\n borderInlineEndStyle: string;\\n borderInlineEndWidth: string;\\n borderInlineStart: string;\\n borderInlineStartColor: string;\\n borderInlineStartStyle: string;\\n borderInlineStartWidth: string;\\n borderLeft: string;\\n borderLeftColor: string;\\n borderLeftStyle: string;\\n borderLeftWidth: string;\\n borderRadius: string;\\n borderRight: string;\\n borderRightColor: string;\\n borderRightStyle: string;\\n borderRightWidth: string;\\n borderSpacing: string;\\n borderStyle: string;\\n borderTop: string;\\n borderTopColor: string;\\n borderTopLeftRadius: string;\\n borderTopRightRadius: string;\\n borderTopStyle: string;\\n borderTopWidth: string;\\n borderWidth: string;\\n bottom: string;\\n boxShadow: string;\\n boxSizing: string;\\n breakAfter: string;\\n breakBefore: string;\\n breakInside: string;\\n captionSide: string;\\n caretColor: string;\\n clear: string;\\n clip: string;\\n clipPath: string;\\n clipRule: string;\\n color: string;\\n colorInterpolation: string;\\n colorInterpolationFilters: string;\\n columnCount: string;\\n columnFill: string;\\n columnGap: string;\\n columnRule: string;\\n columnRuleColor: string;\\n columnRuleStyle: string;\\n columnRuleWidth: string;\\n columnSpan: string;\\n columnWidth: string;\\n columns: string;\\n content: string;\\n counterIncrement: string;\\n counterReset: string;\\n cssFloat: string;\\n cssText: string;\\n cursor: string;\\n direction: string;\\n display: string;\\n dominantBaseline: string;\\n emptyCells: string;\\n fill: string;\\n fillOpacity: string;\\n fillRule: string;\\n filter: string;\\n flex: string;\\n flexBasis: string;\\n flexDirection: string;\\n flexFlow: string;\\n flexGrow: string;\\n flexShrink: string;\\n flexWrap: string;\\n float: string;\\n floodColor: string;\\n floodOpacity: string;\\n font: string;\\n fontFamily: string;\\n fontFeatureSettings: string;\\n fontKerning: string;\\n fontSize: string;\\n fontSizeAdjust: string;\\n fontStretch: string;\\n fontStyle: string;\\n fontSynthesis: string;\\n fontVariant: string;\\n fontVariantCaps: string;\\n fontVariantEastAsian: string;\\n fontVariantLigatures: string;\\n fontVariantNumeric: string;\\n fontVariantPosition: string;\\n fontWeight: string;\\n gap: string;\\n glyphOrientationVertical: string;\\n grid: string;\\n gridArea: string;\\n gridAutoColumns: string;\\n gridAutoFlow: string;\\n gridAutoRows: string;\\n gridColumn: string;\\n gridColumnEnd: string;\\n gridColumnGap: string;\\n gridColumnStart: string;\\n gridGap: string;\\n gridRow: string;\\n gridRowEnd: string;\\n gridRowGap: string;\\n gridRowStart: string;\\n gridTemplate: string;\\n gridTemplateAreas: string;\\n gridTemplateColumns: string;\\n gridTemplateRows: string;\\n height: string;\\n hyphens: string;\\n imageOrientation: string;\\n imageRendering: string;\\n inlineSize: string;\\n justifyContent: string;\\n justifyItems: string;\\n justifySelf: string;\\n left: string;\\n readonly length: number;\\n letterSpacing: string;\\n lightingColor: string;\\n lineBreak: string;\\n lineHeight: string;\\n listStyle: string;\\n listStyleImage: string;\\n listStylePosition: string;\\n listStyleType: string;\\n margin: string;\\n marginBlockEnd: string;\\n marginBlockStart: string;\\n marginBottom: string;\\n marginInlineEnd: string;\\n marginInlineStart: string;\\n marginLeft: string;\\n marginRight: string;\\n marginTop: string;\\n marker: string;\\n markerEnd: string;\\n markerMid: string;\\n markerStart: string;\\n mask: string;\\n maskComposite: string;\\n maskImage: string;\\n maskPosition: string;\\n maskRepeat: string;\\n maskSize: string;\\n maskType: string;\\n maxBlockSize: string;\\n maxHeight: string;\\n maxInlineSize: string;\\n maxWidth: string;\\n minBlockSize: string;\\n minHeight: string;\\n minInlineSize: string;\\n minWidth: string;\\n objectFit: string;\\n objectPosition: string;\\n opacity: string;\\n order: string;\\n orphans: string;\\n outline: string;\\n outlineColor: string;\\n outlineOffset: string;\\n outlineStyle: string;\\n outlineWidth: string;\\n overflow: string;\\n overflowAnchor: string;\\n overflowWrap: string;\\n overflowX: string;\\n overflowY: string;\\n overscrollBehavior: string;\\n overscrollBehaviorBlock: string;\\n overscrollBehaviorInline: string;\\n overscrollBehaviorX: string;\\n overscrollBehaviorY: string;\\n padding: string;\\n paddingBlockEnd: string;\\n paddingBlockStart: string;\\n paddingBottom: string;\\n paddingInlineEnd: string;\\n paddingInlineStart: string;\\n paddingLeft: string;\\n paddingRight: string;\\n paddingTop: string;\\n pageBreakAfter: string;\\n pageBreakBefore: string;\\n pageBreakInside: string;\\n paintOrder: string;\\n readonly parentRule: CSSRule | null;\\n perspective: string;\\n perspectiveOrigin: string;\\n placeContent: string;\\n placeItems: string;\\n placeSelf: string;\\n pointerEvents: string;\\n position: string;\\n quotes: string;\\n resize: string;\\n right: string;\\n rotate: string;\\n rowGap: string;\\n rubyAlign: string;\\n rubyPosition: string;\\n scale: string;\\n scrollBehavior: string;\\n shapeRendering: string;\\n stopColor: string;\\n stopOpacity: string;\\n stroke: string;\\n strokeDasharray: string;\\n strokeDashoffset: string;\\n strokeLinecap: string;\\n strokeLinejoin: string;\\n strokeMiterlimit: string;\\n strokeOpacity: string;\\n strokeWidth: string;\\n tabSize: string;\\n tableLayout: string;\\n textAlign: string;\\n textAlignLast: string;\\n textAnchor: string;\\n textCombineUpright: string;\\n textDecoration: string;\\n textDecorationColor: string;\\n textDecorationLine: string;\\n textDecorationStyle: string;\\n textEmphasis: string;\\n textEmphasisColor: string;\\n textEmphasisPosition: string;\\n textEmphasisStyle: string;\\n textIndent: string;\\n textJustify: string;\\n textOrientation: string;\\n textOverflow: string;\\n textRendering: string;\\n textShadow: string;\\n textTransform: string;\\n textUnderlinePosition: string;\\n top: string;\\n touchAction: string;\\n transform: string;\\n transformBox: string;\\n transformOrigin: string;\\n transformStyle: string;\\n transition: string;\\n transitionDelay: string;\\n transitionDuration: string;\\n transitionProperty: string;\\n transitionTimingFunction: string;\\n translate: string;\\n unicodeBidi: string;\\n userSelect: string;\\n verticalAlign: string;\\n visibility: string;\\n /** @deprecated */\\n webkitAlignContent: string;\\n /** @deprecated */\\n webkitAlignItems: string;\\n /** @deprecated */\\n webkitAlignSelf: string;\\n /** @deprecated */\\n webkitAnimation: string;\\n /** @deprecated */\\n webkitAnimationDelay: string;\\n /** @deprecated */\\n webkitAnimationDirection: string;\\n /** @deprecated */\\n webkitAnimationDuration: string;\\n /** @deprecated */\\n webkitAnimationFillMode: string;\\n /** @deprecated */\\n webkitAnimationIterationCount: string;\\n /** @deprecated */\\n webkitAnimationName: string;\\n /** @deprecated */\\n webkitAnimationPlayState: string;\\n /** @deprecated */\\n webkitAnimationTimingFunction: string;\\n /** @deprecated */\\n webkitAppearance: string;\\n /** @deprecated */\\n webkitBackfaceVisibility: string;\\n /** @deprecated */\\n webkitBackgroundClip: string;\\n /** @deprecated */\\n webkitBackgroundOrigin: string;\\n /** @deprecated */\\n webkitBackgroundSize: string;\\n /** @deprecated */\\n webkitBorderBottomLeftRadius: string;\\n /** @deprecated */\\n webkitBorderBottomRightRadius: string;\\n /** @deprecated */\\n webkitBorderRadius: string;\\n /** @deprecated */\\n webkitBorderTopLeftRadius: string;\\n /** @deprecated */\\n webkitBorderTopRightRadius: string;\\n /** @deprecated */\\n webkitBoxAlign: string;\\n /** @deprecated */\\n webkitBoxFlex: string;\\n /** @deprecated */\\n webkitBoxOrdinalGroup: string;\\n /** @deprecated */\\n webkitBoxOrient: string;\\n /** @deprecated */\\n webkitBoxPack: string;\\n /** @deprecated */\\n webkitBoxShadow: string;\\n /** @deprecated */\\n webkitBoxSizing: string;\\n /** @deprecated */\\n webkitFilter: string;\\n /** @deprecated */\\n webkitFlex: string;\\n /** @deprecated */\\n webkitFlexBasis: string;\\n /** @deprecated */\\n webkitFlexDirection: string;\\n /** @deprecated */\\n webkitFlexFlow: string;\\n /** @deprecated */\\n webkitFlexGrow: string;\\n /** @deprecated */\\n webkitFlexShrink: string;\\n /** @deprecated */\\n webkitFlexWrap: string;\\n /** @deprecated */\\n webkitJustifyContent: string;\\n webkitLineClamp: string;\\n /** @deprecated */\\n webkitMask: string;\\n /** @deprecated */\\n webkitMaskBoxImage: string;\\n /** @deprecated */\\n webkitMaskBoxImageOutset: string;\\n /** @deprecated */\\n webkitMaskBoxImageRepeat: string;\\n /** @deprecated */\\n webkitMaskBoxImageSlice: string;\\n /** @deprecated */\\n webkitMaskBoxImageSource: string;\\n /** @deprecated */\\n webkitMaskBoxImageWidth: string;\\n /** @deprecated */\\n webkitMaskClip: string;\\n /** @deprecated */\\n webkitMaskComposite: string;\\n /** @deprecated */\\n webkitMaskImage: string;\\n /** @deprecated */\\n webkitMaskOrigin: string;\\n /** @deprecated */\\n webkitMaskPosition: string;\\n /** @deprecated */\\n webkitMaskRepeat: string;\\n /** @deprecated */\\n webkitMaskSize: string;\\n /** @deprecated */\\n webkitOrder: string;\\n /** @deprecated */\\n webkitPerspective: string;\\n /** @deprecated */\\n webkitPerspectiveOrigin: string;\\n webkitTapHighlightColor: string;\\n /** @deprecated */\\n webkitTextFillColor: string;\\n /** @deprecated */\\n webkitTextSizeAdjust: string;\\n /** @deprecated */\\n webkitTextStroke: string;\\n /** @deprecated */\\n webkitTextStrokeColor: string;\\n /** @deprecated */\\n webkitTextStrokeWidth: string;\\n /** @deprecated */\\n webkitTransform: string;\\n /** @deprecated */\\n webkitTransformOrigin: string;\\n /** @deprecated */\\n webkitTransformStyle: string;\\n /** @deprecated */\\n webkitTransition: string;\\n /** @deprecated */\\n webkitTransitionDelay: string;\\n /** @deprecated */\\n webkitTransitionDuration: string;\\n /** @deprecated */\\n webkitTransitionProperty: string;\\n /** @deprecated */\\n webkitTransitionTimingFunction: string;\\n /** @deprecated */\\n webkitUserSelect: string;\\n whiteSpace: string;\\n widows: string;\\n width: string;\\n willChange: string;\\n wordBreak: string;\\n wordSpacing: string;\\n wordWrap: string;\\n writingMode: string;\\n zIndex: string;\\n /** @deprecated */\\n zoom: string;\\n getPropertyPriority(property: string): string;\\n getPropertyValue(property: string): string;\\n item(index: number): string;\\n removeProperty(property: string): string;\\n setProperty(property: string, value: string | null, priority?: string): void;\\n [index: number]: string;\\n}\\n\\ndeclare var CSSStyleDeclaration: {\\n prototype: CSSStyleDeclaration;\\n new(): CSSStyleDeclaration;\\n};\\n\\n/** CSSStyleRule represents a single CSS style rule. It implements the CSSRule interface with a type value of 1 (CSSRule.STYLE_RULE). */\\ninterface CSSStyleRule extends CSSRule {\\n selectorText: string;\\n readonly style: CSSStyleDeclaration;\\n}\\n\\ndeclare var CSSStyleRule: {\\n prototype: CSSStyleRule;\\n new(): CSSStyleRule;\\n};\\n\\n/** A single CSS style sheet. It inherits properties and methods from its parent, StyleSheet. */\\ninterface CSSStyleSheet extends StyleSheet {\\n readonly cssRules: CSSRuleList;\\n readonly ownerRule: CSSRule | null;\\n readonly rules: CSSRuleList;\\n addRule(selector?: string, style?: string, index?: number): number;\\n deleteRule(index: number): void;\\n insertRule(rule: string, index?: number): number;\\n removeRule(index?: number): void;\\n}\\n\\ndeclare var CSSStyleSheet: {\\n prototype: CSSStyleSheet;\\n new(): CSSStyleSheet;\\n};\\n\\n/** An object representing a single CSS @supports at-rule. It implements the CSSConditionRule interface, and therefore the CSSRule and CSSGroupingRule interfaces with a type value of 12 (CSSRule.SUPPORTS_RULE). */\\ninterface CSSSupportsRule extends CSSConditionRule {\\n}\\n\\ndeclare var CSSSupportsRule: {\\n prototype: CSSSupportsRule;\\n new(): CSSSupportsRule;\\n};\\n\\n/** Provides a storage mechanism for Request / Response object pairs that are cached, for example as part of the ServiceWorker life cycle. Note that the Cache interface is exposed to windowed scopes as well as workers. You don't have to use it in conjunction with service workers, even though it is defined in the service worker spec. */\\ninterface Cache {\\n add(request: RequestInfo): Promise;\\n addAll(requests: RequestInfo[]): Promise;\\n delete(request: RequestInfo, options?: CacheQueryOptions): Promise;\\n keys(request?: RequestInfo, options?: CacheQueryOptions): Promise>;\\n match(request: RequestInfo, options?: CacheQueryOptions): Promise;\\n matchAll(request?: RequestInfo, options?: CacheQueryOptions): Promise>;\\n put(request: RequestInfo, response: Response): Promise;\\n}\\n\\ndeclare var Cache: {\\n prototype: Cache;\\n new(): Cache;\\n};\\n\\n/** The storage for Cache objects. */\\ninterface CacheStorage {\\n delete(cacheName: string): Promise;\\n has(cacheName: string): Promise;\\n keys(): Promise;\\n match(request: RequestInfo, options?: MultiCacheQueryOptions): Promise;\\n open(cacheName: string): Promise;\\n}\\n\\ndeclare var CacheStorage: {\\n prototype: CacheStorage;\\n new(): CacheStorage;\\n};\\n\\ninterface CanvasCompositing {\\n globalAlpha: number;\\n globalCompositeOperation: string;\\n}\\n\\ninterface CanvasDrawImage {\\n drawImage(image: CanvasImageSource, dx: number, dy: number): void;\\n drawImage(image: CanvasImageSource, dx: number, dy: number, dw: number, dh: number): void;\\n drawImage(image: CanvasImageSource, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number): void;\\n}\\n\\ninterface CanvasDrawPath {\\n beginPath(): void;\\n clip(fillRule?: CanvasFillRule): void;\\n clip(path: Path2D, fillRule?: CanvasFillRule): void;\\n fill(fillRule?: CanvasFillRule): void;\\n fill(path: Path2D, fillRule?: CanvasFillRule): void;\\n isPointInPath(x: number, y: number, fillRule?: CanvasFillRule): boolean;\\n isPointInPath(path: Path2D, x: number, y: number, fillRule?: CanvasFillRule): boolean;\\n isPointInStroke(x: number, y: number): boolean;\\n isPointInStroke(path: Path2D, x: number, y: number): boolean;\\n stroke(): void;\\n stroke(path: Path2D): void;\\n}\\n\\ninterface CanvasFillStrokeStyles {\\n fillStyle: string | CanvasGradient | CanvasPattern;\\n strokeStyle: string | CanvasGradient | CanvasPattern;\\n createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient;\\n createPattern(image: CanvasImageSource, repetition: string | null): CanvasPattern | null;\\n createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient;\\n}\\n\\ninterface CanvasFilters {\\n filter: string;\\n}\\n\\n/** An opaque object describing a gradient. It is returned by the methods CanvasRenderingContext2D.createLinearGradient() or CanvasRenderingContext2D.createRadialGradient(). */\\ninterface CanvasGradient {\\n /**\\n * Adds a color stop with the given color to the gradient at the given offset. 0.0 is the offset at one end of the gradient, 1.0 is the offset at the other end.\\n * \\n * Throws an \\\"IndexSizeError\\\" DOMException if the offset is out of range. Throws a \\\"SyntaxError\\\" DOMException if the color cannot be parsed.\\n */\\n addColorStop(offset: number, color: string): void;\\n}\\n\\ndeclare var CanvasGradient: {\\n prototype: CanvasGradient;\\n new(): CanvasGradient;\\n};\\n\\ninterface CanvasImageData {\\n createImageData(sw: number, sh: number): ImageData;\\n createImageData(imagedata: ImageData): ImageData;\\n getImageData(sx: number, sy: number, sw: number, sh: number): ImageData;\\n putImageData(imagedata: ImageData, dx: number, dy: number): void;\\n putImageData(imagedata: ImageData, dx: number, dy: number, dirtyX: number, dirtyY: number, dirtyWidth: number, dirtyHeight: number): void;\\n}\\n\\ninterface CanvasImageSmoothing {\\n imageSmoothingEnabled: boolean;\\n imageSmoothingQuality: ImageSmoothingQuality;\\n}\\n\\ninterface CanvasPath {\\n arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void;\\n arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void;\\n bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void;\\n closePath(): void;\\n ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void;\\n lineTo(x: number, y: number): void;\\n moveTo(x: number, y: number): void;\\n quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void;\\n rect(x: number, y: number, w: number, h: number): void;\\n}\\n\\ninterface CanvasPathDrawingStyles {\\n lineCap: CanvasLineCap;\\n lineDashOffset: number;\\n lineJoin: CanvasLineJoin;\\n lineWidth: number;\\n miterLimit: number;\\n getLineDash(): number[];\\n setLineDash(segments: number[]): void;\\n}\\n\\n/** An opaque object describing a pattern, based on an image, a canvas, or a video, created by the CanvasRenderingContext2D.createPattern() method. */\\ninterface CanvasPattern {\\n /**\\n * Sets the transformation matrix that will be used when rendering the pattern during a fill or stroke painting operation.\\n */\\n setTransform(transform?: DOMMatrix2DInit): void;\\n}\\n\\ndeclare var CanvasPattern: {\\n prototype: CanvasPattern;\\n new(): CanvasPattern;\\n};\\n\\ninterface CanvasRect {\\n clearRect(x: number, y: number, w: number, h: number): void;\\n fillRect(x: number, y: number, w: number, h: number): void;\\n strokeRect(x: number, y: number, w: number, h: number): void;\\n}\\n\\n/** The CanvasRenderingContext2D interface, part of the Canvas API, provides the 2D rendering context for the drawing surface of a element. It is used for drawing shapes, text, images, and other objects. */\\ninterface CanvasRenderingContext2D extends CanvasCompositing, CanvasDrawImage, CanvasDrawPath, CanvasFillStrokeStyles, CanvasFilters, CanvasImageData, CanvasImageSmoothing, CanvasPath, CanvasPathDrawingStyles, CanvasRect, CanvasShadowStyles, CanvasState, CanvasText, CanvasTextDrawingStyles, CanvasTransform, CanvasUserInterface {\\n readonly canvas: HTMLCanvasElement;\\n}\\n\\ndeclare var CanvasRenderingContext2D: {\\n prototype: CanvasRenderingContext2D;\\n new(): CanvasRenderingContext2D;\\n};\\n\\ninterface CanvasShadowStyles {\\n shadowBlur: number;\\n shadowColor: string;\\n shadowOffsetX: number;\\n shadowOffsetY: number;\\n}\\n\\ninterface CanvasState {\\n restore(): void;\\n save(): void;\\n}\\n\\ninterface CanvasText {\\n fillText(text: string, x: number, y: number, maxWidth?: number): void;\\n measureText(text: string): TextMetrics;\\n strokeText(text: string, x: number, y: number, maxWidth?: number): void;\\n}\\n\\ninterface CanvasTextDrawingStyles {\\n direction: CanvasDirection;\\n font: string;\\n textAlign: CanvasTextAlign;\\n textBaseline: CanvasTextBaseline;\\n}\\n\\ninterface CanvasTransform {\\n getTransform(): DOMMatrix;\\n resetTransform(): void;\\n rotate(angle: number): void;\\n scale(x: number, y: number): void;\\n setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void;\\n setTransform(transform?: DOMMatrix2DInit): void;\\n transform(a: number, b: number, c: number, d: number, e: number, f: number): void;\\n translate(x: number, y: number): void;\\n}\\n\\ninterface CanvasUserInterface {\\n drawFocusIfNeeded(element: Element): void;\\n drawFocusIfNeeded(path: Path2D, element: Element): void;\\n scrollPathIntoView(): void;\\n scrollPathIntoView(path: Path2D): void;\\n}\\n\\ninterface CaretPosition {\\n readonly offset: number;\\n readonly offsetNode: Node;\\n getClientRect(): DOMRect | null;\\n}\\n\\ndeclare var CaretPosition: {\\n prototype: CaretPosition;\\n new(): CaretPosition;\\n};\\n\\n/** The ChannelMergerNode interface, often used in conjunction with its opposite, ChannelSplitterNode, reunites different mono inputs into a single output. Each input is used to fill a channel of the output. This is useful for accessing each channels separately, e.g. for performing channel mixing where gain must be separately controlled on each channel. */\\ninterface ChannelMergerNode extends AudioNode {\\n}\\n\\ndeclare var ChannelMergerNode: {\\n prototype: ChannelMergerNode;\\n new(context: BaseAudioContext, options?: ChannelMergerOptions): ChannelMergerNode;\\n};\\n\\n/** The ChannelSplitterNode interface, often used in conjunction with its opposite, ChannelMergerNode, separates the different channels of an audio source into a set of mono outputs. This is useful for accessing each channel separately, e.g. for performing channel mixing where gain must be separately controlled on each channel. */\\ninterface ChannelSplitterNode extends AudioNode {\\n}\\n\\ndeclare var ChannelSplitterNode: {\\n prototype: ChannelSplitterNode;\\n new(context: BaseAudioContext, options?: ChannelSplitterOptions): ChannelSplitterNode;\\n};\\n\\n/** The CharacterData abstract interface represents a Node object that contains characters. This is an abstract interface, meaning there aren't any object of type CharacterData: it is implemented by other interfaces, like Text, Comment, or ProcessingInstruction which aren't abstract. */\\ninterface CharacterData extends Node, ChildNode, NonDocumentTypeChildNode {\\n data: string;\\n readonly length: number;\\n readonly ownerDocument: Document;\\n appendData(data: string): void;\\n deleteData(offset: number, count: number): void;\\n insertData(offset: number, data: string): void;\\n replaceData(offset: number, count: number, data: string): void;\\n substringData(offset: number, count: number): string;\\n}\\n\\ndeclare var CharacterData: {\\n prototype: CharacterData;\\n new(): CharacterData;\\n};\\n\\ninterface ChildNode extends Node {\\n /**\\n * Inserts nodes just after node, while replacing strings in nodes with equivalent Text nodes.\\n * \\n * Throws a \\\"HierarchyRequestError\\\" DOMException if the constraints of the node tree are violated.\\n */\\n after(...nodes: (Node | string)[]): void;\\n /**\\n * Inserts nodes just before node, while replacing strings in nodes with equivalent Text nodes.\\n * \\n * Throws a \\\"HierarchyRequestError\\\" DOMException if the constraints of the node tree are violated.\\n */\\n before(...nodes: (Node | string)[]): void;\\n /**\\n * Removes node.\\n */\\n remove(): void;\\n /**\\n * Replaces node with nodes, while replacing strings in nodes with equivalent Text nodes.\\n * \\n * Throws a \\\"HierarchyRequestError\\\" DOMException if the constraints of the node tree are violated.\\n */\\n replaceWith(...nodes: (Node | string)[]): void;\\n}\\n\\ninterface ClientRect {\\n bottom: number;\\n readonly height: number;\\n left: number;\\n right: number;\\n top: number;\\n readonly width: number;\\n}\\n\\ndeclare var ClientRect: {\\n prototype: ClientRect;\\n new(): ClientRect;\\n};\\n\\ninterface ClientRectList {\\n readonly length: number;\\n item(index: number): ClientRect;\\n [index: number]: ClientRect;\\n}\\n\\ndeclare var ClientRectList: {\\n prototype: ClientRectList;\\n new(): ClientRectList;\\n};\\n\\ninterface Clipboard extends EventTarget {\\n readText(): Promise;\\n writeText(data: string): Promise;\\n}\\n\\ndeclare var Clipboard: {\\n prototype: Clipboard;\\n new(): Clipboard;\\n};\\n\\n/** Events providing information related to modification of the clipboard, that is cut, copy, and paste events. */\\ninterface ClipboardEvent extends Event {\\n readonly clipboardData: DataTransfer | null;\\n}\\n\\ndeclare var ClipboardEvent: {\\n prototype: ClipboardEvent;\\n new(type: string, eventInitDict?: ClipboardEventInit): ClipboardEvent;\\n};\\n\\n/** A CloseEvent is sent to clients using WebSockets when the connection is closed. This is delivered to the listener indicated by the WebSocket object's onclose attribute. */\\ninterface CloseEvent extends Event {\\n /**\\n * Returns the WebSocket connection close code provided by the server.\\n */\\n readonly code: number;\\n /**\\n * Returns the WebSocket connection close reason provided by the server.\\n */\\n readonly reason: string;\\n /**\\n * Returns true if the connection closed cleanly; false otherwise.\\n */\\n readonly wasClean: boolean;\\n}\\n\\ndeclare var CloseEvent: {\\n prototype: CloseEvent;\\n new(type: string, eventInitDict?: CloseEventInit): CloseEvent;\\n};\\n\\n/** Textual notations within markup; although it is generally not visually shown, such comments are available to be read in the source view. */\\ninterface Comment extends CharacterData {\\n}\\n\\ndeclare var Comment: {\\n prototype: Comment;\\n new(data?: string): Comment;\\n};\\n\\n/** The DOM CompositionEvent represents events that occur due to the user indirectly entering text. */\\ninterface CompositionEvent extends UIEvent {\\n readonly data: string;\\n}\\n\\ndeclare var CompositionEvent: {\\n prototype: CompositionEvent;\\n new(type: string, eventInitDict?: CompositionEventInit): CompositionEvent;\\n};\\n\\ninterface ConcatParams extends Algorithm {\\n algorithmId: Uint8Array;\\n hash?: string | Algorithm;\\n partyUInfo: Uint8Array;\\n partyVInfo: Uint8Array;\\n privateInfo?: Uint8Array;\\n publicInfo?: Uint8Array;\\n}\\n\\ninterface ConstantSourceNode extends AudioScheduledSourceNode {\\n readonly offset: AudioParam;\\n addEventListener(type: K, listener: (this: ConstantSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\\n removeEventListener(type: K, listener: (this: ConstantSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\\n}\\n\\ndeclare var ConstantSourceNode: {\\n prototype: ConstantSourceNode;\\n new(context: BaseAudioContext, options?: ConstantSourceOptions): ConstantSourceNode;\\n};\\n\\n/** An AudioNode that performs a Linear Convolution on a given AudioBuffer, often used to achieve a reverb effect. A ConvolverNode always has exactly one input and one output. */\\ninterface ConvolverNode extends AudioNode {\\n buffer: AudioBuffer | null;\\n normalize: boolean;\\n}\\n\\ndeclare var ConvolverNode: {\\n prototype: ConvolverNode;\\n new(context: BaseAudioContext, options?: ConvolverOptions): ConvolverNode;\\n};\\n\\n/** This Streams API interface provides a built-in byte length queuing strategy that can be used when constructing streams. */\\ninterface CountQueuingStrategy extends QueuingStrategy {\\n readonly highWaterMark: number;\\n readonly size: QueuingStrategySize;\\n}\\n\\ndeclare var CountQueuingStrategy: {\\n prototype: CountQueuingStrategy;\\n new(init: QueuingStrategyInit): CountQueuingStrategy;\\n};\\n\\ninterface Credential {\\n readonly id: string;\\n readonly type: string;\\n}\\n\\ndeclare var Credential: {\\n prototype: Credential;\\n new(): Credential;\\n};\\n\\ninterface CredentialsContainer {\\n create(options?: CredentialCreationOptions): Promise;\\n get(options?: CredentialRequestOptions): Promise;\\n preventSilentAccess(): Promise;\\n store(credential: Credential): Promise;\\n}\\n\\ndeclare var CredentialsContainer: {\\n prototype: CredentialsContainer;\\n new(): CredentialsContainer;\\n};\\n\\n/** Basic cryptography features available in the current context. It allows access to a cryptographically strong random number generator and to cryptographic primitives. */\\ninterface Crypto {\\n readonly subtle: SubtleCrypto;\\n getRandomValues(array: T): T;\\n}\\n\\ndeclare var Crypto: {\\n prototype: Crypto;\\n new(): Crypto;\\n};\\n\\n/** The CryptoKey dictionary of the Web Crypto API represents a cryptographic key. */\\ninterface CryptoKey {\\n readonly algorithm: KeyAlgorithm;\\n readonly extractable: boolean;\\n readonly type: KeyType;\\n readonly usages: KeyUsage[];\\n}\\n\\ndeclare var CryptoKey: {\\n prototype: CryptoKey;\\n new(): CryptoKey;\\n};\\n\\n/** The CryptoKeyPair dictionary of the Web Crypto API represents a key pair for an asymmetric cryptography algorithm, also known as a public-key algorithm. */\\ninterface CryptoKeyPair {\\n privateKey: CryptoKey;\\n publicKey: CryptoKey;\\n}\\n\\ndeclare var CryptoKeyPair: {\\n prototype: CryptoKeyPair;\\n new(): CryptoKeyPair;\\n};\\n\\ninterface CustomElementRegistry {\\n define(name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions): void;\\n get(name: string): any;\\n upgrade(root: Node): void;\\n whenDefined(name: string): Promise;\\n}\\n\\ndeclare var CustomElementRegistry: {\\n prototype: CustomElementRegistry;\\n new(): CustomElementRegistry;\\n};\\n\\ninterface CustomEvent extends Event {\\n /**\\n * Returns any custom data event was created with. Typically used for synthetic events.\\n */\\n readonly detail: T;\\n initCustomEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, detailArg: T): void;\\n}\\n\\ndeclare var CustomEvent: {\\n prototype: CustomEvent;\\n new(typeArg: string, eventInitDict?: CustomEventInit): CustomEvent;\\n};\\n\\n/** An error object that contains an error name. */\\ninterface DOMError {\\n readonly name: string;\\n toString(): string;\\n}\\n\\ndeclare var DOMError: {\\n prototype: DOMError;\\n new(): DOMError;\\n};\\n\\n/** An abnormal event (called an exception) which occurs as a result of calling a method or accessing a property of a web API. */\\ninterface DOMException {\\n readonly code: number;\\n readonly message: string;\\n readonly name: string;\\n readonly ABORT_ERR: number;\\n readonly DATA_CLONE_ERR: number;\\n readonly DOMSTRING_SIZE_ERR: number;\\n readonly HIERARCHY_REQUEST_ERR: number;\\n readonly INDEX_SIZE_ERR: number;\\n readonly INUSE_ATTRIBUTE_ERR: number;\\n readonly INVALID_ACCESS_ERR: number;\\n readonly INVALID_CHARACTER_ERR: number;\\n readonly INVALID_MODIFICATION_ERR: number;\\n readonly INVALID_NODE_TYPE_ERR: number;\\n readonly INVALID_STATE_ERR: number;\\n readonly NAMESPACE_ERR: number;\\n readonly NETWORK_ERR: number;\\n readonly NOT_FOUND_ERR: number;\\n readonly NOT_SUPPORTED_ERR: number;\\n readonly NO_DATA_ALLOWED_ERR: number;\\n readonly NO_MODIFICATION_ALLOWED_ERR: number;\\n readonly QUOTA_EXCEEDED_ERR: number;\\n readonly SECURITY_ERR: number;\\n readonly SYNTAX_ERR: number;\\n readonly TIMEOUT_ERR: number;\\n readonly TYPE_MISMATCH_ERR: number;\\n readonly URL_MISMATCH_ERR: number;\\n readonly VALIDATION_ERR: number;\\n readonly WRONG_DOCUMENT_ERR: number;\\n}\\n\\ndeclare var DOMException: {\\n prototype: DOMException;\\n new(message?: string, name?: string): DOMException;\\n readonly ABORT_ERR: number;\\n readonly DATA_CLONE_ERR: number;\\n readonly DOMSTRING_SIZE_ERR: number;\\n readonly HIERARCHY_REQUEST_ERR: number;\\n readonly INDEX_SIZE_ERR: number;\\n readonly INUSE_ATTRIBUTE_ERR: number;\\n readonly INVALID_ACCESS_ERR: number;\\n readonly INVALID_CHARACTER_ERR: number;\\n readonly INVALID_MODIFICATION_ERR: number;\\n readonly INVALID_NODE_TYPE_ERR: number;\\n readonly INVALID_STATE_ERR: number;\\n readonly NAMESPACE_ERR: number;\\n readonly NETWORK_ERR: number;\\n readonly NOT_FOUND_ERR: number;\\n readonly NOT_SUPPORTED_ERR: number;\\n readonly NO_DATA_ALLOWED_ERR: number;\\n readonly NO_MODIFICATION_ALLOWED_ERR: number;\\n readonly QUOTA_EXCEEDED_ERR: number;\\n readonly SECURITY_ERR: number;\\n readonly SYNTAX_ERR: number;\\n readonly TIMEOUT_ERR: number;\\n readonly TYPE_MISMATCH_ERR: number;\\n readonly URL_MISMATCH_ERR: number;\\n readonly VALIDATION_ERR: number;\\n readonly WRONG_DOCUMENT_ERR: number;\\n};\\n\\n/** An object providing methods which are not dependent on any particular document. Such an object is returned by the Document.implementation property. */\\ninterface DOMImplementation {\\n createDocument(namespace: string | null, qualifiedName: string | null, doctype?: DocumentType | null): XMLDocument;\\n createDocumentType(qualifiedName: string, publicId: string, systemId: string): DocumentType;\\n createHTMLDocument(title?: string): Document;\\n /** @deprecated */\\n hasFeature(...args: any[]): true;\\n}\\n\\ndeclare var DOMImplementation: {\\n prototype: DOMImplementation;\\n new(): DOMImplementation;\\n};\\n\\ninterface DOML2DeprecatedColorProperty {\\n color: string;\\n}\\n\\ninterface DOMMatrix extends DOMMatrixReadOnly {\\n a: number;\\n b: number;\\n c: number;\\n d: number;\\n e: number;\\n f: number;\\n m11: number;\\n m12: number;\\n m13: number;\\n m14: number;\\n m21: number;\\n m22: number;\\n m23: number;\\n m24: number;\\n m31: number;\\n m32: number;\\n m33: number;\\n m34: number;\\n m41: number;\\n m42: number;\\n m43: number;\\n m44: number;\\n invertSelf(): DOMMatrix;\\n multiplySelf(other?: DOMMatrixInit): DOMMatrix;\\n preMultiplySelf(other?: DOMMatrixInit): DOMMatrix;\\n rotateAxisAngleSelf(x?: number, y?: number, z?: number, angle?: number): DOMMatrix;\\n rotateFromVectorSelf(x?: number, y?: number): DOMMatrix;\\n rotateSelf(rotX?: number, rotY?: number, rotZ?: number): DOMMatrix;\\n scale3dSelf(scale?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;\\n scaleSelf(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;\\n setMatrixValue(transformList: string): DOMMatrix;\\n skewXSelf(sx?: number): DOMMatrix;\\n skewYSelf(sy?: number): DOMMatrix;\\n translateSelf(tx?: number, ty?: number, tz?: number): DOMMatrix;\\n}\\n\\ndeclare var DOMMatrix: {\\n prototype: DOMMatrix;\\n new(init?: string | number[]): DOMMatrix;\\n fromFloat32Array(array32: Float32Array): DOMMatrix;\\n fromFloat64Array(array64: Float64Array): DOMMatrix;\\n fromMatrix(other?: DOMMatrixInit): DOMMatrix;\\n};\\n\\ntype SVGMatrix = DOMMatrix;\\ndeclare var SVGMatrix: typeof DOMMatrix;\\n\\ntype WebKitCSSMatrix = DOMMatrix;\\ndeclare var WebKitCSSMatrix: typeof DOMMatrix;\\n\\ninterface DOMMatrixReadOnly {\\n readonly a: number;\\n readonly b: number;\\n readonly c: number;\\n readonly d: number;\\n readonly e: number;\\n readonly f: number;\\n readonly is2D: boolean;\\n readonly isIdentity: boolean;\\n readonly m11: number;\\n readonly m12: number;\\n readonly m13: number;\\n readonly m14: number;\\n readonly m21: number;\\n readonly m22: number;\\n readonly m23: number;\\n readonly m24: number;\\n readonly m31: number;\\n readonly m32: number;\\n readonly m33: number;\\n readonly m34: number;\\n readonly m41: number;\\n readonly m42: number;\\n readonly m43: number;\\n readonly m44: number;\\n flipX(): DOMMatrix;\\n flipY(): DOMMatrix;\\n inverse(): DOMMatrix;\\n multiply(other?: DOMMatrixInit): DOMMatrix;\\n rotate(rotX?: number, rotY?: number, rotZ?: number): DOMMatrix;\\n rotateAxisAngle(x?: number, y?: number, z?: number, angle?: number): DOMMatrix;\\n rotateFromVector(x?: number, y?: number): DOMMatrix;\\n scale(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;\\n scale3d(scale?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;\\n /** @deprecated */\\n scaleNonUniform(scaleX?: number, scaleY?: number): DOMMatrix;\\n skewX(sx?: number): DOMMatrix;\\n skewY(sy?: number): DOMMatrix;\\n toFloat32Array(): Float32Array;\\n toFloat64Array(): Float64Array;\\n toJSON(): any;\\n transformPoint(point?: DOMPointInit): DOMPoint;\\n translate(tx?: number, ty?: number, tz?: number): DOMMatrix;\\n toString(): string;\\n}\\n\\ndeclare var DOMMatrixReadOnly: {\\n prototype: DOMMatrixReadOnly;\\n new(init?: string | number[]): DOMMatrixReadOnly;\\n fromFloat32Array(array32: Float32Array): DOMMatrixReadOnly;\\n fromFloat64Array(array64: Float64Array): DOMMatrixReadOnly;\\n fromMatrix(other?: DOMMatrixInit): DOMMatrixReadOnly;\\n toString(): string;\\n};\\n\\n/** Provides the ability to parse XML or HTML source code from a string into a DOM Document. */\\ninterface DOMParser {\\n /**\\n * Parses string using either the HTML or XML parser, according to type, and returns the resulting Document. type can be \\\"text/html\\\" (which will invoke the HTML parser), or any of \\\"text/xml\\\", \\\"application/xml\\\", \\\"application/xhtml+xml\\\", or \\\"image/svg+xml\\\" (which will invoke the XML parser).\\n * \\n * For the XML parser, if string cannot be parsed, then the returned Document will contain elements describing the resulting error.\\n * \\n * Note that script elements are not evaluated during parsing, and the resulting document's encoding will always be UTF-8.\\n * \\n * Values other than the above for type will cause a TypeError exception to be thrown.\\n */\\n parseFromString(string: string, type: DOMParserSupportedType): Document;\\n}\\n\\ndeclare var DOMParser: {\\n prototype: DOMParser;\\n new(): DOMParser;\\n};\\n\\ninterface DOMPoint extends DOMPointReadOnly {\\n w: number;\\n x: number;\\n y: number;\\n z: number;\\n}\\n\\ndeclare var DOMPoint: {\\n prototype: DOMPoint;\\n new(x?: number, y?: number, z?: number, w?: number): DOMPoint;\\n fromPoint(other?: DOMPointInit): DOMPoint;\\n};\\n\\ntype SVGPoint = DOMPoint;\\ndeclare var SVGPoint: typeof DOMPoint;\\n\\ninterface DOMPointReadOnly {\\n readonly w: number;\\n readonly x: number;\\n readonly y: number;\\n readonly z: number;\\n matrixTransform(matrix?: DOMMatrixInit): DOMPoint;\\n toJSON(): any;\\n}\\n\\ndeclare var DOMPointReadOnly: {\\n prototype: DOMPointReadOnly;\\n new(x?: number, y?: number, z?: number, w?: number): DOMPointReadOnly;\\n fromPoint(other?: DOMPointInit): DOMPointReadOnly;\\n};\\n\\ninterface DOMQuad {\\n readonly p1: DOMPoint;\\n readonly p2: DOMPoint;\\n readonly p3: DOMPoint;\\n readonly p4: DOMPoint;\\n getBounds(): DOMRect;\\n toJSON(): any;\\n}\\n\\ndeclare var DOMQuad: {\\n prototype: DOMQuad;\\n new(p1?: DOMPointInit, p2?: DOMPointInit, p3?: DOMPointInit, p4?: DOMPointInit): DOMQuad;\\n fromQuad(other?: DOMQuadInit): DOMQuad;\\n fromRect(other?: DOMRectInit): DOMQuad;\\n};\\n\\ninterface DOMRect extends DOMRectReadOnly {\\n height: number;\\n width: number;\\n x: number;\\n y: number;\\n}\\n\\ndeclare var DOMRect: {\\n prototype: DOMRect;\\n new(x?: number, y?: number, width?: number, height?: number): DOMRect;\\n fromRect(other?: DOMRectInit): DOMRect;\\n};\\n\\ntype SVGRect = DOMRect;\\ndeclare var SVGRect: typeof DOMRect;\\n\\ninterface DOMRectList {\\n readonly length: number;\\n item(index: number): DOMRect | null;\\n [index: number]: DOMRect;\\n}\\n\\ndeclare var DOMRectList: {\\n prototype: DOMRectList;\\n new(): DOMRectList;\\n};\\n\\ninterface DOMRectReadOnly {\\n readonly bottom: number;\\n readonly height: number;\\n readonly left: number;\\n readonly right: number;\\n readonly top: number;\\n readonly width: number;\\n readonly x: number;\\n readonly y: number;\\n toJSON(): any;\\n}\\n\\ndeclare var DOMRectReadOnly: {\\n prototype: DOMRectReadOnly;\\n new(x?: number, y?: number, width?: number, height?: number): DOMRectReadOnly;\\n fromRect(other?: DOMRectInit): DOMRectReadOnly;\\n};\\n\\ninterface DOMSettableTokenList extends DOMTokenList {\\n value: string;\\n}\\n\\ndeclare var DOMSettableTokenList: {\\n prototype: DOMSettableTokenList;\\n new(): DOMSettableTokenList;\\n};\\n\\n/** A type returned by some APIs which contains a list of DOMString (strings). */\\ninterface DOMStringList {\\n /**\\n * Returns the number of strings in strings.\\n */\\n readonly length: number;\\n /**\\n * Returns true if strings contains string, and false otherwise.\\n */\\n contains(string: string): boolean;\\n /**\\n * Returns the string with index index from strings.\\n */\\n item(index: number): string | null;\\n [index: number]: string;\\n}\\n\\ndeclare var DOMStringList: {\\n prototype: DOMStringList;\\n new(): DOMStringList;\\n};\\n\\n/** Used by the dataset HTML attribute to represent data for custom attributes added to elements. */\\ninterface DOMStringMap {\\n [name: string]: string | undefined;\\n}\\n\\ndeclare var DOMStringMap: {\\n prototype: DOMStringMap;\\n new(): DOMStringMap;\\n};\\n\\n/** A set of space-separated tokens. Such a set is returned by Element.classList, HTMLLinkElement.relList, HTMLAnchorElement.relList, HTMLAreaElement.relList, HTMLIframeElement.sandbox, or HTMLOutputElement.htmlFor. It is indexed beginning with 0 as with JavaScript Array objects. DOMTokenList is always case-sensitive. */\\ninterface DOMTokenList {\\n /**\\n * Returns the number of tokens.\\n */\\n readonly length: number;\\n /**\\n * Returns the associated set as string.\\n * \\n * Can be set, to change the associated attribute.\\n */\\n value: string;\\n toString(): string;\\n /**\\n * Adds all arguments passed, except those already present.\\n * \\n * Throws a \\\"SyntaxError\\\" DOMException if one of the arguments is the empty string.\\n * \\n * Throws an \\\"InvalidCharacterError\\\" DOMException if one of the arguments contains any ASCII whitespace.\\n */\\n add(...tokens: string[]): void;\\n /**\\n * Returns true if token is present, and false otherwise.\\n */\\n contains(token: string): boolean;\\n /**\\n * Returns the token with index index.\\n */\\n item(index: number): string | null;\\n /**\\n * Removes arguments passed, if they are present.\\n * \\n * Throws a \\\"SyntaxError\\\" DOMException if one of the arguments is the empty string.\\n * \\n * Throws an \\\"InvalidCharacterError\\\" DOMException if one of the arguments contains any ASCII whitespace.\\n */\\n remove(...tokens: string[]): void;\\n /**\\n * Replaces token with newToken.\\n * \\n * Returns true if token was replaced with newToken, and false otherwise.\\n * \\n * Throws a \\\"SyntaxError\\\" DOMException if one of the arguments is the empty string.\\n * \\n * Throws an \\\"InvalidCharacterError\\\" DOMException if one of the arguments contains any ASCII whitespace.\\n */\\n replace(oldToken: string, newToken: string): void;\\n /**\\n * Returns true if token is in the associated attribute's supported tokens. Returns false otherwise.\\n * \\n * Throws a TypeError if the associated attribute has no supported tokens defined.\\n */\\n supports(token: string): boolean;\\n /**\\n * If force is not given, \\\"toggles\\\" token, removing it if it's present and adding it if it's not present. If force is true, adds token (same as add()). If force is false, removes token (same as remove()).\\n * \\n * Returns true if token is now present, and false otherwise.\\n * \\n * Throws a \\\"SyntaxError\\\" DOMException if token is empty.\\n * \\n * Throws an \\\"InvalidCharacterError\\\" DOMException if token contains any spaces.\\n */\\n toggle(token: string, force?: boolean): boolean;\\n forEach(callbackfn: (value: string, key: number, parent: DOMTokenList) => void, thisArg?: any): void;\\n [index: number]: string;\\n}\\n\\ndeclare var DOMTokenList: {\\n prototype: DOMTokenList;\\n new(): DOMTokenList;\\n};\\n\\ninterface DataCue extends TextTrackCue {\\n data: ArrayBuffer;\\n addEventListener(type: K, listener: (this: DataCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\\n removeEventListener(type: K, listener: (this: DataCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\\n}\\n\\ndeclare var DataCue: {\\n prototype: DataCue;\\n new(): DataCue;\\n};\\n\\n/** Used to hold the data that is being dragged during a drag and drop operation. It may hold one or more data items, each of one or more data types. For more information about drag and drop, see HTML Drag and Drop API. */\\ninterface DataTransfer {\\n /**\\n * Returns the kind of operation that is currently selected. If the kind of operation isn't one of those that is allowed by the effectAllowed attribute, then the operation will fail.\\n * \\n * Can be set, to change the selected operation.\\n * \\n * The possible values are \\\"none\\\", \\\"copy\\\", \\\"link\\\", and \\\"move\\\".\\n */\\n dropEffect: \\\"none\\\" | \\\"copy\\\" | \\\"link\\\" | \\\"move\\\";\\n /**\\n * Returns the kinds of operations that are to be allowed.\\n * \\n * Can be set (during the dragstart event), to change the allowed operations.\\n * \\n * The possible values are \\\"none\\\", \\\"copy\\\", \\\"copyLink\\\", \\\"copyMove\\\", \\\"link\\\", \\\"linkMove\\\", \\\"move\\\", \\\"all\\\", and \\\"uninitialized\\\",\\n */\\n effectAllowed: \\\"none\\\" | \\\"copy\\\" | \\\"copyLink\\\" | \\\"copyMove\\\" | \\\"link\\\" | \\\"linkMove\\\" | \\\"move\\\" | \\\"all\\\" | \\\"uninitialized\\\";\\n /**\\n * Returns a FileList of the files being dragged, if any.\\n */\\n readonly files: FileList;\\n /**\\n * Returns a DataTransferItemList object, with the drag data.\\n */\\n readonly items: DataTransferItemList;\\n /**\\n * Returns a frozen array listing the formats that were set in the dragstart event. In addition, if any files are being dragged, then one of the types will be the string \\\"Files\\\".\\n */\\n readonly types: ReadonlyArray;\\n /**\\n * Removes the data of the specified formats. Removes all data if the argument is omitted.\\n */\\n clearData(format?: string): void;\\n /**\\n * Returns the specified data. If there is no such data, returns the empty string.\\n */\\n getData(format: string): string;\\n /**\\n * Adds the specified data.\\n */\\n setData(format: string, data: string): void;\\n /**\\n * Uses the given element to update the drag feedback, replacing any previously specified feedback.\\n */\\n setDragImage(image: Element, x: number, y: number): void;\\n}\\n\\ndeclare var DataTransfer: {\\n prototype: DataTransfer;\\n new(): DataTransfer;\\n};\\n\\n/** One drag data item. During a drag operation, each drag event has a dataTransfer property which contains a list of drag data items. Each item in the list is a DataTransferItem object. */\\ninterface DataTransferItem {\\n /**\\n * Returns the drag data item kind, one of: \\\"string\\\", \\\"file\\\".\\n */\\n readonly kind: string;\\n /**\\n * Returns the drag data item type string.\\n */\\n readonly type: string;\\n /**\\n * Returns a File object, if the drag data item kind is File.\\n */\\n getAsFile(): File | null;\\n /**\\n * Invokes the callback with the string data as the argument, if the drag data item kind is text.\\n */\\n getAsString(callback: FunctionStringCallback | null): void;\\n webkitGetAsEntry(): any;\\n}\\n\\ndeclare var DataTransferItem: {\\n prototype: DataTransferItem;\\n new(): DataTransferItem;\\n};\\n\\n/** A list of DataTransferItem objects representing items being dragged. During a drag operation, each DragEvent has a dataTransfer property and that property is a DataTransferItemList. */\\ninterface DataTransferItemList {\\n /**\\n * Returns the number of items in the drag data store.\\n */\\n readonly length: number;\\n /**\\n * Adds a new entry for the given data to the drag data store. If the data is plain text then a type string has to be provided also.\\n */\\n add(data: string, type: string): DataTransferItem | null;\\n add(data: File): DataTransferItem | null;\\n /**\\n * Removes all the entries in the drag data store.\\n */\\n clear(): void;\\n item(index: number): DataTransferItem;\\n /**\\n * Removes the indexth entry in the drag data store.\\n */\\n remove(index: number): void;\\n [name: number]: DataTransferItem;\\n}\\n\\ndeclare var DataTransferItemList: {\\n prototype: DataTransferItemList;\\n new(): DataTransferItemList;\\n};\\n\\ninterface DeferredPermissionRequest {\\n readonly id: number;\\n readonly type: MSWebViewPermissionType;\\n readonly uri: string;\\n allow(): void;\\n deny(): void;\\n}\\n\\ndeclare var DeferredPermissionRequest: {\\n prototype: DeferredPermissionRequest;\\n new(): DeferredPermissionRequest;\\n};\\n\\n/** A delay-line; an AudioNode audio-processing module that causes a delay between the arrival of an input data and its propagation to the output. */\\ninterface DelayNode extends AudioNode {\\n readonly delayTime: AudioParam;\\n}\\n\\ndeclare var DelayNode: {\\n prototype: DelayNode;\\n new(context: BaseAudioContext, options?: DelayOptions): DelayNode;\\n};\\n\\n/** Provides information about the amount of acceleration the device is experiencing along all three axes. */\\ninterface DeviceAcceleration {\\n readonly x: number | null;\\n readonly y: number | null;\\n readonly z: number | null;\\n}\\n\\ndeclare var DeviceAcceleration: {\\n prototype: DeviceAcceleration;\\n new(): DeviceAcceleration;\\n};\\n\\n/** The DeviceLightEvent provides web developers with information from photo sensors or similiar detectors about ambient light levels near the device. For example this may be useful to adjust the screen's brightness based on the current ambient light level in order to save energy or provide better readability. */\\ninterface DeviceLightEvent extends Event {\\n readonly value: number;\\n}\\n\\ndeclare var DeviceLightEvent: {\\n prototype: DeviceLightEvent;\\n new(typeArg: string, eventInitDict?: DeviceLightEventInit): DeviceLightEvent;\\n};\\n\\n/** The DeviceMotionEvent provides web developers with information about the speed of changes for the device's position and orientation. */\\ninterface DeviceMotionEvent extends Event {\\n readonly acceleration: DeviceMotionEventAcceleration | null;\\n readonly accelerationIncludingGravity: DeviceMotionEventAcceleration | null;\\n readonly interval: number;\\n readonly rotationRate: DeviceMotionEventRotationRate | null;\\n}\\n\\ndeclare var DeviceMotionEvent: {\\n prototype: DeviceMotionEvent;\\n new(type: string, eventInitDict?: DeviceMotionEventInit): DeviceMotionEvent;\\n requestPermission(): Promise;\\n};\\n\\ninterface DeviceMotionEventAcceleration {\\n readonly x: number | null;\\n readonly y: number | null;\\n readonly z: number | null;\\n}\\n\\ninterface DeviceMotionEventRotationRate {\\n readonly alpha: number | null;\\n readonly beta: number | null;\\n readonly gamma: number | null;\\n}\\n\\n/** The DeviceOrientationEvent provides web developers with information from the physical orientation of the device running the web page. */\\ninterface DeviceOrientationEvent extends Event {\\n readonly absolute: boolean;\\n readonly alpha: number | null;\\n readonly beta: number | null;\\n readonly gamma: number | null;\\n}\\n\\ndeclare var DeviceOrientationEvent: {\\n prototype: DeviceOrientationEvent;\\n new(type: string, eventInitDict?: DeviceOrientationEventInit): DeviceOrientationEvent;\\n requestPermission(): Promise;\\n};\\n\\n/** Provides information about the rate at which the device is rotating around all three axes. */\\ninterface DeviceRotationRate {\\n readonly alpha: number | null;\\n readonly beta: number | null;\\n readonly gamma: number | null;\\n}\\n\\ndeclare var DeviceRotationRate: {\\n prototype: DeviceRotationRate;\\n new(): DeviceRotationRate;\\n};\\n\\ninterface DhImportKeyParams extends Algorithm {\\n generator: Uint8Array;\\n prime: Uint8Array;\\n}\\n\\ninterface DhKeyAlgorithm extends KeyAlgorithm {\\n generator: Uint8Array;\\n prime: Uint8Array;\\n}\\n\\ninterface DhKeyDeriveParams extends Algorithm {\\n public: CryptoKey;\\n}\\n\\ninterface DhKeyGenParams extends Algorithm {\\n generator: Uint8Array;\\n prime: Uint8Array;\\n}\\n\\ninterface DocumentEventMap extends GlobalEventHandlersEventMap, DocumentAndElementEventHandlersEventMap {\\n \\\"fullscreenchange\\\": Event;\\n \\\"fullscreenerror\\\": Event;\\n \\\"pointerlockchange\\\": Event;\\n \\\"pointerlockerror\\\": Event;\\n \\\"readystatechange\\\": Event;\\n \\\"visibilitychange\\\": Event;\\n}\\n\\n/** Any web page loaded in the browser and serves as an entry point into the web page's content, which is the DOM tree. */\\ninterface Document extends Node, DocumentAndElementEventHandlers, DocumentOrShadowRoot, GlobalEventHandlers, NonElementParentNode, ParentNode, XPathEvaluatorBase {\\n /**\\n * Sets or gets the URL for the current document.\\n */\\n readonly URL: string;\\n /**\\n * Sets or gets the color of all active links in the document.\\n */\\n /** @deprecated */\\n alinkColor: string;\\n /**\\n * Returns a reference to the collection of elements contained by the object.\\n */\\n /** @deprecated */\\n readonly all: HTMLAllCollection;\\n /**\\n * Retrieves a collection of all a objects that have a name and/or id property. Objects in this collection are in HTML source order.\\n */\\n /** @deprecated */\\n readonly anchors: HTMLCollectionOf;\\n /**\\n * Retrieves a collection of all applet objects in the document.\\n */\\n /** @deprecated */\\n readonly applets: HTMLCollectionOf;\\n /**\\n * Deprecated. Sets or retrieves a value that indicates the background color behind the object.\\n */\\n /** @deprecated */\\n bgColor: string;\\n /**\\n * Specifies the beginning and end of the document body.\\n */\\n body: HTMLElement;\\n /**\\n * Returns document's encoding.\\n */\\n readonly characterSet: string;\\n /**\\n * Gets or sets the character set used to encode the object.\\n */\\n readonly charset: string;\\n /**\\n * Gets a value that indicates whether standards-compliant mode is switched on for the object.\\n */\\n readonly compatMode: string;\\n /**\\n * Returns document's content type.\\n */\\n readonly contentType: string;\\n /**\\n * Returns the HTTP cookies that apply to the Document. If there are no cookies or cookies can't be applied to this resource, the empty string will be returned.\\n * \\n * Can be set, to add a new cookie to the element's set of HTTP cookies.\\n * \\n * If the contents are sandboxed into a unique origin (e.g. in an iframe with the sandbox attribute), a \\\"SecurityError\\\" DOMException will be thrown on getting and setting.\\n */\\n cookie: string;\\n /**\\n * Returns the script element, or the SVG script element, that is currently executing, as long as the element represents a classic script. In the case of reentrant script execution, returns the one that most recently started executing amongst those that have not yet finished executing.\\n * \\n * Returns null if the Document is not currently executing a script or SVG script element (e.g., because the running script is an event handler, or a timeout), or if the currently executing script or SVG script element represents a module script.\\n */\\n readonly currentScript: HTMLOrSVGScriptElement | null;\\n readonly defaultView: (WindowProxy & typeof globalThis) | null;\\n /**\\n * Sets or gets a value that indicates whether the document can be edited.\\n */\\n designMode: string;\\n /**\\n * Sets or retrieves a value that indicates the reading order of the object.\\n */\\n dir: string;\\n /**\\n * Gets an object representing the document type declaration associated with the current document.\\n */\\n readonly doctype: DocumentType | null;\\n /**\\n * Gets a reference to the root node of the document.\\n */\\n readonly documentElement: HTMLElement;\\n /**\\n * Returns document's URL.\\n */\\n readonly documentURI: string;\\n /**\\n * Sets or gets the security domain of the document.\\n */\\n domain: string;\\n /**\\n * Retrieves a collection of all embed objects in the document.\\n */\\n readonly embeds: HTMLCollectionOf;\\n /**\\n * Sets or gets the foreground (text) color of the document.\\n */\\n /** @deprecated */\\n fgColor: string;\\n /**\\n * Retrieves a collection, in source order, of all form objects in the document.\\n */\\n readonly forms: HTMLCollectionOf;\\n /** @deprecated */\\n readonly fullscreen: boolean;\\n /**\\n * Returns true if document has the ability to display elements fullscreen and fullscreen is supported, or false otherwise.\\n */\\n readonly fullscreenEnabled: boolean;\\n /**\\n * Returns the head element.\\n */\\n readonly head: HTMLHeadElement;\\n readonly hidden: boolean;\\n /**\\n * Retrieves a collection, in source order, of img objects in the document.\\n */\\n readonly images: HTMLCollectionOf;\\n /**\\n * Gets the implementation object of the current document.\\n */\\n readonly implementation: DOMImplementation;\\n /**\\n * Returns the character encoding used to create the webpage that is loaded into the document object.\\n */\\n readonly inputEncoding: string;\\n /**\\n * Gets the date that the page was last modified, if the page supplies one.\\n */\\n readonly lastModified: string;\\n /**\\n * Sets or gets the color of the document links.\\n */\\n /** @deprecated */\\n linkColor: string;\\n /**\\n * Retrieves a collection of all a objects that specify the href property and all area objects in the document.\\n */\\n readonly links: HTMLCollectionOf;\\n /**\\n * Contains information about the current URL.\\n */\\n location: Location;\\n onfullscreenchange: ((this: Document, ev: Event) => any) | null;\\n onfullscreenerror: ((this: Document, ev: Event) => any) | null;\\n onpointerlockchange: ((this: Document, ev: Event) => any) | null;\\n onpointerlockerror: ((this: Document, ev: Event) => any) | null;\\n /**\\n * Fires when the state of the object has changed.\\n * @param ev The event\\n */\\n onreadystatechange: ((this: Document, ev: Event) => any) | null;\\n onvisibilitychange: ((this: Document, ev: Event) => any) | null;\\n readonly ownerDocument: null;\\n /**\\n * Return an HTMLCollection of the embed elements in the Document.\\n */\\n readonly plugins: HTMLCollectionOf;\\n /**\\n * Retrieves a value that indicates the current state of the object.\\n */\\n readonly readyState: DocumentReadyState;\\n /**\\n * Gets the URL of the location that referred the user to the current page.\\n */\\n readonly referrer: string;\\n /**\\n * Retrieves a collection of all script objects in the document.\\n */\\n readonly scripts: HTMLCollectionOf;\\n readonly scrollingElement: Element | null;\\n readonly timeline: DocumentTimeline;\\n /**\\n * Contains the title of the document.\\n */\\n title: string;\\n readonly visibilityState: VisibilityState;\\n /**\\n * Sets or gets the color of the links that the user has visited.\\n */\\n /** @deprecated */\\n vlinkColor: string;\\n /**\\n * Moves node from another document and returns it.\\n * \\n * If node is a document, throws a \\\"NotSupportedError\\\" DOMException or, if node is a shadow root, throws a \\\"HierarchyRequestError\\\" DOMException.\\n */\\n adoptNode(source: T): T;\\n /** @deprecated */\\n captureEvents(): void;\\n caretPositionFromPoint(x: number, y: number): CaretPosition | null;\\n /** @deprecated */\\n caretRangeFromPoint(x: number, y: number): Range;\\n /** @deprecated */\\n clear(): void;\\n /**\\n * Closes an output stream and forces the sent data to display.\\n */\\n close(): void;\\n /**\\n * Creates an attribute object with a specified name.\\n * @param name String that sets the attribute object's name.\\n */\\n createAttribute(localName: string): Attr;\\n createAttributeNS(namespace: string | null, qualifiedName: string): Attr;\\n /**\\n * Returns a CDATASection node whose data is data.\\n */\\n createCDATASection(data: string): CDATASection;\\n /**\\n * Creates a comment object with the specified data.\\n * @param data Sets the comment object's data.\\n */\\n createComment(data: string): Comment;\\n /**\\n * Creates a new document.\\n */\\n createDocumentFragment(): DocumentFragment;\\n /**\\n * Creates an instance of the element for the specified tag.\\n * @param tagName The name of an element.\\n */\\n createElement(tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K];\\n /** @deprecated */\\n createElement(tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K];\\n createElement(tagName: string, options?: ElementCreationOptions): HTMLElement;\\n /**\\n * Returns an element with namespace namespace. Its namespace prefix will be everything before \\\":\\\" (U+003E) in qualifiedName or null. Its local name will be everything after \\\":\\\" (U+003E) in qualifiedName or qualifiedName.\\n * \\n * If localName does not match the Name production an \\\"InvalidCharacterError\\\" DOMException will be thrown.\\n * \\n * If one of the following conditions is true a \\\"NamespaceError\\\" DOMException will be thrown:\\n * \\n * localName does not match the QName production.\\n * Namespace prefix is not null and namespace is the empty string.\\n * Namespace prefix is \\\"xml\\\" and namespace is not the XML namespace.\\n * qualifiedName or namespace prefix is \\\"xmlns\\\" and namespace is not the XMLNS namespace.\\n * namespace is the XMLNS namespace and neither qualifiedName nor namespace prefix is \\\"xmlns\\\".\\n * \\n * When supplied, options's is can be used to create a customized built-in element.\\n */\\n createElementNS(namespaceURI: \\\"http://www.w3.org/1999/xhtml\\\", qualifiedName: string): HTMLElement;\\n createElementNS(namespaceURI: \\\"http://www.w3.org/2000/svg\\\", qualifiedName: K): SVGElementTagNameMap[K];\\n createElementNS(namespaceURI: \\\"http://www.w3.org/2000/svg\\\", qualifiedName: string): SVGElement;\\n createElementNS(namespaceURI: string | null, qualifiedName: string, options?: ElementCreationOptions): Element;\\n createElementNS(namespace: string | null, qualifiedName: string, options?: string | ElementCreationOptions): Element;\\n createEvent(eventInterface: \\\"AnimationEvent\\\"): AnimationEvent;\\n createEvent(eventInterface: \\\"AnimationPlaybackEvent\\\"): AnimationPlaybackEvent;\\n createEvent(eventInterface: \\\"AudioProcessingEvent\\\"): AudioProcessingEvent;\\n createEvent(eventInterface: \\\"BeforeUnloadEvent\\\"): BeforeUnloadEvent;\\n createEvent(eventInterface: \\\"ClipboardEvent\\\"): ClipboardEvent;\\n createEvent(eventInterface: \\\"CloseEvent\\\"): CloseEvent;\\n createEvent(eventInterface: \\\"CompositionEvent\\\"): CompositionEvent;\\n createEvent(eventInterface: \\\"CustomEvent\\\"): CustomEvent;\\n createEvent(eventInterface: \\\"DeviceLightEvent\\\"): DeviceLightEvent;\\n createEvent(eventInterface: \\\"DeviceMotionEvent\\\"): DeviceMotionEvent;\\n createEvent(eventInterface: \\\"DeviceOrientationEvent\\\"): DeviceOrientationEvent;\\n createEvent(eventInterface: \\\"DragEvent\\\"): DragEvent;\\n createEvent(eventInterface: \\\"ErrorEvent\\\"): ErrorEvent;\\n createEvent(eventInterface: \\\"Event\\\"): Event;\\n createEvent(eventInterface: \\\"Events\\\"): Event;\\n createEvent(eventInterface: \\\"FocusEvent\\\"): FocusEvent;\\n createEvent(eventInterface: \\\"FocusNavigationEvent\\\"): FocusNavigationEvent;\\n createEvent(eventInterface: \\\"GamepadEvent\\\"): GamepadEvent;\\n createEvent(eventInterface: \\\"HashChangeEvent\\\"): HashChangeEvent;\\n createEvent(eventInterface: \\\"IDBVersionChangeEvent\\\"): IDBVersionChangeEvent;\\n createEvent(eventInterface: \\\"InputEvent\\\"): InputEvent;\\n createEvent(eventInterface: \\\"KeyboardEvent\\\"): KeyboardEvent;\\n createEvent(eventInterface: \\\"ListeningStateChangedEvent\\\"): ListeningStateChangedEvent;\\n createEvent(eventInterface: \\\"MSGestureEvent\\\"): MSGestureEvent;\\n createEvent(eventInterface: \\\"MSMediaKeyMessageEvent\\\"): MSMediaKeyMessageEvent;\\n createEvent(eventInterface: \\\"MSMediaKeyNeededEvent\\\"): MSMediaKeyNeededEvent;\\n createEvent(eventInterface: \\\"MSPointerEvent\\\"): MSPointerEvent;\\n createEvent(eventInterface: \\\"MediaEncryptedEvent\\\"): MediaEncryptedEvent;\\n createEvent(eventInterface: \\\"MediaKeyMessageEvent\\\"): MediaKeyMessageEvent;\\n createEvent(eventInterface: \\\"MediaQueryListEvent\\\"): MediaQueryListEvent;\\n createEvent(eventInterface: \\\"MediaStreamErrorEvent\\\"): MediaStreamErrorEvent;\\n createEvent(eventInterface: \\\"MediaStreamEvent\\\"): MediaStreamEvent;\\n createEvent(eventInterface: \\\"MediaStreamTrackEvent\\\"): MediaStreamTrackEvent;\\n createEvent(eventInterface: \\\"MessageEvent\\\"): MessageEvent;\\n createEvent(eventInterface: \\\"MouseEvent\\\"): MouseEvent;\\n createEvent(eventInterface: \\\"MouseEvents\\\"): MouseEvent;\\n createEvent(eventInterface: \\\"MutationEvent\\\"): MutationEvent;\\n createEvent(eventInterface: \\\"MutationEvents\\\"): MutationEvent;\\n createEvent(eventInterface: \\\"OfflineAudioCompletionEvent\\\"): OfflineAudioCompletionEvent;\\n createEvent(eventInterface: \\\"OverflowEvent\\\"): OverflowEvent;\\n createEvent(eventInterface: \\\"PageTransitionEvent\\\"): PageTransitionEvent;\\n createEvent(eventInterface: \\\"PaymentRequestUpdateEvent\\\"): PaymentRequestUpdateEvent;\\n createEvent(eventInterface: \\\"PermissionRequestedEvent\\\"): PermissionRequestedEvent;\\n createEvent(eventInterface: \\\"PointerEvent\\\"): PointerEvent;\\n createEvent(eventInterface: \\\"PopStateEvent\\\"): PopStateEvent;\\n createEvent(eventInterface: \\\"ProgressEvent\\\"): ProgressEvent;\\n createEvent(eventInterface: \\\"PromiseRejectionEvent\\\"): PromiseRejectionEvent;\\n createEvent(eventInterface: \\\"RTCDTMFToneChangeEvent\\\"): RTCDTMFToneChangeEvent;\\n createEvent(eventInterface: \\\"RTCDataChannelEvent\\\"): RTCDataChannelEvent;\\n createEvent(eventInterface: \\\"RTCDtlsTransportStateChangedEvent\\\"): RTCDtlsTransportStateChangedEvent;\\n createEvent(eventInterface: \\\"RTCErrorEvent\\\"): RTCErrorEvent;\\n createEvent(eventInterface: \\\"RTCIceCandidatePairChangedEvent\\\"): RTCIceCandidatePairChangedEvent;\\n createEvent(eventInterface: \\\"RTCIceGathererEvent\\\"): RTCIceGathererEvent;\\n createEvent(eventInterface: \\\"RTCIceTransportStateChangedEvent\\\"): RTCIceTransportStateChangedEvent;\\n createEvent(eventInterface: \\\"RTCPeerConnectionIceErrorEvent\\\"): RTCPeerConnectionIceErrorEvent;\\n createEvent(eventInterface: \\\"RTCPeerConnectionIceEvent\\\"): RTCPeerConnectionIceEvent;\\n createEvent(eventInterface: \\\"RTCSsrcConflictEvent\\\"): RTCSsrcConflictEvent;\\n createEvent(eventInterface: \\\"RTCStatsEvent\\\"): RTCStatsEvent;\\n createEvent(eventInterface: \\\"RTCTrackEvent\\\"): RTCTrackEvent;\\n createEvent(eventInterface: \\\"SVGZoomEvent\\\"): SVGZoomEvent;\\n createEvent(eventInterface: \\\"SVGZoomEvents\\\"): SVGZoomEvent;\\n createEvent(eventInterface: \\\"SecurityPolicyViolationEvent\\\"): SecurityPolicyViolationEvent;\\n createEvent(eventInterface: \\\"ServiceWorkerMessageEvent\\\"): ServiceWorkerMessageEvent;\\n createEvent(eventInterface: \\\"SpeechRecognitionErrorEvent\\\"): SpeechRecognitionErrorEvent;\\n createEvent(eventInterface: \\\"SpeechRecognitionEvent\\\"): SpeechRecognitionEvent;\\n createEvent(eventInterface: \\\"SpeechSynthesisErrorEvent\\\"): SpeechSynthesisErrorEvent;\\n createEvent(eventInterface: \\\"SpeechSynthesisEvent\\\"): SpeechSynthesisEvent;\\n createEvent(eventInterface: \\\"StorageEvent\\\"): StorageEvent;\\n createEvent(eventInterface: \\\"TextEvent\\\"): TextEvent;\\n createEvent(eventInterface: \\\"TouchEvent\\\"): TouchEvent;\\n createEvent(eventInterface: \\\"TrackEvent\\\"): TrackEvent;\\n createEvent(eventInterface: \\\"TransitionEvent\\\"): TransitionEvent;\\n createEvent(eventInterface: \\\"UIEvent\\\"): UIEvent;\\n createEvent(eventInterface: \\\"UIEvents\\\"): UIEvent;\\n createEvent(eventInterface: \\\"VRDisplayEvent\\\"): VRDisplayEvent;\\n createEvent(eventInterface: \\\"VRDisplayEvent \\\"): VRDisplayEvent ;\\n createEvent(eventInterface: \\\"WebGLContextEvent\\\"): WebGLContextEvent;\\n createEvent(eventInterface: \\\"WheelEvent\\\"): WheelEvent;\\n createEvent(eventInterface: string): Event;\\n /**\\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\\n * @param root The root element or node to start traversing on.\\n * @param whatToShow The type of nodes or elements to appear in the node list\\n * @param filter A custom NodeFilter function to use. For more information, see filter. Use null for no filter.\\n * @param entityReferenceExpansion A flag that specifies whether entity reference nodes are expanded.\\n */\\n createNodeIterator(root: Node, whatToShow?: number, filter?: NodeFilter | null): NodeIterator;\\n /**\\n * Returns a ProcessingInstruction node whose target is target and data is data. If target does not match the Name production an \\\"InvalidCharacterError\\\" DOMException will be thrown. If data contains \\\"?>\\\" an \\\"InvalidCharacterError\\\" DOMException will be thrown.\\n */\\n createProcessingInstruction(target: string, data: string): ProcessingInstruction;\\n /**\\n * Returns an empty range object that has both of its boundary points positioned at the beginning of the document.\\n */\\n createRange(): Range;\\n /**\\n * Creates a text string from the specified value.\\n * @param data String that specifies the nodeValue property of the text node.\\n */\\n createTextNode(data: string): Text;\\n /**\\n * Creates a TreeWalker object that you can use to traverse filtered lists of nodes or elements in a document.\\n * @param root The root element or node to start traversing on.\\n * @param whatToShow The type of nodes or elements to appear in the node list. For more information, see whatToShow.\\n * @param filter A custom NodeFilter function to use.\\n * @param entityReferenceExpansion A flag that specifies whether entity reference nodes are expanded.\\n */\\n createTreeWalker(root: Node, whatToShow?: number, filter?: NodeFilter | null): TreeWalker;\\n /** @deprecated */\\n createTreeWalker(root: Node, whatToShow: number, filter: NodeFilter | null, entityReferenceExpansion?: boolean): TreeWalker;\\n /**\\n * Returns the element for the specified x coordinate and the specified y coordinate.\\n * @param x The x-offset\\n * @param y The y-offset\\n */\\n elementFromPoint(x: number, y: number): Element | null;\\n elementsFromPoint(x: number, y: number): Element[];\\n /**\\n * Executes a command on the current document, current selection, or the given range.\\n * @param commandId String that specifies the command to execute. This command can be any of the command identifiers that can be executed in script.\\n * @param showUI Display the user interface, defaults to false.\\n * @param value Value to assign.\\n */\\n execCommand(commandId: string, showUI?: boolean, value?: string): boolean;\\n /**\\n * Stops document's fullscreen element from being displayed fullscreen and resolves promise when done.\\n */\\n exitFullscreen(): Promise;\\n exitPointerLock(): void;\\n getAnimations(): Animation[];\\n /**\\n * Returns a reference to the first object with the specified value of the ID attribute.\\n * @param elementId String that specifies the ID value.\\n */\\n getElementById(elementId: string): HTMLElement | null;\\n /**\\n * Returns a HTMLCollection of the elements in the object on which the method was invoked (a document or an element) that have all the classes given by classNames. The classNames argument is interpreted as a space-separated list of classes.\\n */\\n getElementsByClassName(classNames: string): HTMLCollectionOf;\\n /**\\n * Gets a collection of objects based on the value of the NAME or ID attribute.\\n * @param elementName Gets a collection of objects based on the value of the NAME or ID attribute.\\n */\\n getElementsByName(elementName: string): NodeListOf;\\n /**\\n * Retrieves a collection of objects based on the specified element name.\\n * @param name Specifies the name of an element.\\n */\\n getElementsByTagName(qualifiedName: K): HTMLCollectionOf;\\n getElementsByTagName(qualifiedName: K): HTMLCollectionOf;\\n getElementsByTagName(qualifiedName: string): HTMLCollectionOf;\\n /**\\n * If namespace and localName are \\\"*\\\" returns a HTMLCollection of all descendant elements.\\n * \\n * If only namespace is \\\"*\\\" returns a HTMLCollection of all descendant elements whose local name is localName.\\n * \\n * If only localName is \\\"*\\\" returns a HTMLCollection of all descendant elements whose namespace is namespace.\\n * \\n * Otherwise, returns a HTMLCollection of all descendant elements whose namespace is namespace and local name is localName.\\n */\\n getElementsByTagNameNS(namespaceURI: \\\"http://www.w3.org/1999/xhtml\\\", localName: string): HTMLCollectionOf;\\n getElementsByTagNameNS(namespaceURI: \\\"http://www.w3.org/2000/svg\\\", localName: string): HTMLCollectionOf;\\n getElementsByTagNameNS(namespaceURI: string, localName: string): HTMLCollectionOf;\\n /**\\n * Returns an object representing the current selection of the document that is loaded into the object displaying a webpage.\\n */\\n getSelection(): Selection | null;\\n /**\\n * Gets a value indicating whether the object currently has focus.\\n */\\n hasFocus(): boolean;\\n /**\\n * Returns a copy of node. If deep is true, the copy also includes the node's descendants.\\n * \\n * If node is a document or a shadow root, throws a \\\"NotSupportedError\\\" DOMException.\\n */\\n importNode(importedNode: T, deep: boolean): T;\\n /**\\n * Opens a new window and loads a document specified by a given URL. Also, opens a new window that uses the url parameter and the name parameter to collect the output of the write method and the writeln method.\\n * @param url Specifies a MIME type for the document.\\n * @param name Specifies the name of the window. This name is used as the value for the TARGET attribute on a form or an anchor element.\\n * @param features Contains a list of items separated by commas. Each item consists of an option and a value, separated by an equals sign (for example, \\\"fullscreen=yes, toolbar=yes\\\"). The following values are supported.\\n * @param replace Specifies whether the existing entry for the document is replaced in the history list.\\n */\\n open(url?: string, name?: string, features?: string, replace?: boolean): Document;\\n /**\\n * Returns a Boolean value that indicates whether a specified command can be successfully executed using execCommand, given the current state of the document.\\n * @param commandId Specifies a command identifier.\\n */\\n queryCommandEnabled(commandId: string): boolean;\\n /**\\n * Returns a Boolean value that indicates whether the specified command is in the indeterminate state.\\n * @param commandId String that specifies a command identifier.\\n */\\n queryCommandIndeterm(commandId: string): boolean;\\n /**\\n * Returns a Boolean value that indicates the current state of the command.\\n * @param commandId String that specifies a command identifier.\\n */\\n queryCommandState(commandId: string): boolean;\\n /**\\n * Returns a Boolean value that indicates whether the current command is supported on the current range.\\n * @param commandId Specifies a command identifier.\\n */\\n queryCommandSupported(commandId: string): boolean;\\n /**\\n * Returns the current value of the document, range, or current selection for the given command.\\n * @param commandId String that specifies a command identifier.\\n */\\n queryCommandValue(commandId: string): string;\\n /** @deprecated */\\n releaseEvents(): void;\\n /**\\n * Writes one or more HTML expressions to a document in the specified window.\\n * @param content Specifies the text and HTML tags to write.\\n */\\n write(...text: string[]): void;\\n /**\\n * Writes one or more HTML expressions, followed by a carriage return, to a document in the specified window.\\n * @param content The text and HTML tags to write.\\n */\\n writeln(...text: string[]): void;\\n addEventListener(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\\n removeEventListener(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\\n}\\n\\ndeclare var Document: {\\n prototype: Document;\\n new(): Document;\\n};\\n\\ninterface DocumentAndElementEventHandlersEventMap {\\n \\\"copy\\\": ClipboardEvent;\\n \\\"cut\\\": ClipboardEvent;\\n \\\"paste\\\": ClipboardEvent;\\n}\\n\\ninterface DocumentAndElementEventHandlers {\\n oncopy: ((this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any) | null;\\n oncut: ((this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any) | null;\\n onpaste: ((this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any) | null;\\n addEventListener(type: K, listener: (this: DocumentAndElementEventHandlers, ev: DocumentAndElementEventHandlersEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\\n removeEventListener(type: K, listener: (this: DocumentAndElementEventHandlers, ev: DocumentAndElementEventHandlersEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\\n}\\n\\ninterface DocumentEvent {\\n createEvent(eventInterface: \\\"AnimationEvent\\\"): AnimationEvent;\\n createEvent(eventInterface: \\\"AnimationPlaybackEvent\\\"): AnimationPlaybackEvent;\\n createEvent(eventInterface: \\\"AudioProcessingEvent\\\"): AudioProcessingEvent;\\n createEvent(eventInterface: \\\"BeforeUnloadEvent\\\"): BeforeUnloadEvent;\\n createEvent(eventInterface: \\\"ClipboardEvent\\\"): ClipboardEvent;\\n createEvent(eventInterface: \\\"CloseEvent\\\"): CloseEvent;\\n createEvent(eventInterface: \\\"CompositionEvent\\\"): CompositionEvent;\\n createEvent(eventInterface: \\\"CustomEvent\\\"): CustomEvent;\\n createEvent(eventInterface: \\\"DeviceLightEvent\\\"): DeviceLightEvent;\\n createEvent(eventInterface: \\\"DeviceMotionEvent\\\"): DeviceMotionEvent;\\n createEvent(eventInterface: \\\"DeviceOrientationEvent\\\"): DeviceOrientationEvent;\\n createEvent(eventInterface: \\\"DragEvent\\\"): DragEvent;\\n createEvent(eventInterface: \\\"ErrorEvent\\\"): ErrorEvent;\\n createEvent(eventInterface: \\\"Event\\\"): Event;\\n createEvent(eventInterface: \\\"Events\\\"): Event;\\n createEvent(eventInterface: \\\"FocusEvent\\\"): FocusEvent;\\n createEvent(eventInterface: \\\"FocusNavigationEvent\\\"): FocusNavigationEvent;\\n createEvent(eventInterface: \\\"GamepadEvent\\\"): GamepadEvent;\\n createEvent(eventInterface: \\\"HashChangeEvent\\\"): HashChangeEvent;\\n createEvent(eventInterface: \\\"IDBVersionChangeEvent\\\"): IDBVersionChangeEvent;\\n createEvent(eventInterface: \\\"InputEvent\\\"): InputEvent;\\n createEvent(eventInterface: \\\"KeyboardEvent\\\"): KeyboardEvent;\\n createEvent(eventInterface: \\\"ListeningStateChangedEvent\\\"): ListeningStateChangedEvent;\\n createEvent(eventInterface: \\\"MSGestureEvent\\\"): MSGestureEvent;\\n createEvent(eventInterface: \\\"MSMediaKeyMessageEvent\\\"): MSMediaKeyMessageEvent;\\n createEvent(eventInterface: \\\"MSMediaKeyNeededEvent\\\"): MSMediaKeyNeededEvent;\\n createEvent(eventInterface: \\\"MSPointerEvent\\\"): MSPointerEvent;\\n createEvent(eventInterface: \\\"MediaEncryptedEvent\\\"): MediaEncryptedEvent;\\n createEvent(eventInterface: \\\"MediaKeyMessageEvent\\\"): MediaKeyMessageEvent;\\n createEvent(eventInterface: \\\"MediaQueryListEvent\\\"): MediaQueryListEvent;\\n createEvent(eventInterface: \\\"MediaStreamErrorEvent\\\"): MediaStreamErrorEvent;\\n createEvent(eventInterface: \\\"MediaStreamEvent\\\"): MediaStreamEvent;\\n createEvent(eventInterface: \\\"MediaStreamTrackEvent\\\"): MediaStreamTrackEvent;\\n createEvent(eventInterface: \\\"MessageEvent\\\"): MessageEvent;\\n createEvent(eventInterface: \\\"MouseEvent\\\"): MouseEvent;\\n createEvent(eventInterface: \\\"MouseEvents\\\"): MouseEvent;\\n createEvent(eventInterface: \\\"MutationEvent\\\"): MutationEvent;\\n createEvent(eventInterface: \\\"MutationEvents\\\"): MutationEvent;\\n createEvent(eventInterface: \\\"OfflineAudioCompletionEvent\\\"): OfflineAudioCompletionEvent;\\n createEvent(eventInterface: \\\"OverflowEvent\\\"): OverflowEvent;\\n createEvent(eventInterface: \\\"PageTransitionEvent\\\"): PageTransitionEvent;\\n createEvent(eventInterface: \\\"PaymentRequestUpdateEvent\\\"): PaymentRequestUpdateEvent;\\n createEvent(eventInterface: \\\"PermissionRequestedEvent\\\"): PermissionRequestedEvent;\\n createEvent(eventInterface: \\\"PointerEvent\\\"): PointerEvent;\\n createEvent(eventInterface: \\\"PopStateEvent\\\"): PopStateEvent;\\n createEvent(eventInterface: \\\"ProgressEvent\\\"): ProgressEvent;\\n createEvent(eventInterface: \\\"PromiseRejectionEvent\\\"): PromiseRejectionEvent;\\n createEvent(eventInterface: \\\"RTCDTMFToneChangeEvent\\\"): RTCDTMFToneChangeEvent;\\n createEvent(eventInterface: \\\"RTCDataChannelEvent\\\"): RTCDataChannelEvent;\\n createEvent(eventInterface: \\\"RTCDtlsTransportStateChangedEvent\\\"): RTCDtlsTransportStateChangedEvent;\\n createEvent(eventInterface: \\\"RTCErrorEvent\\\"): RTCErrorEvent;\\n createEvent(eventInterface: \\\"RTCIceCandidatePairChangedEvent\\\"): RTCIceCandidatePairChangedEvent;\\n createEvent(eventInterface: \\\"RTCIceGathererEvent\\\"): RTCIceGathererEvent;\\n createEvent(eventInterface: \\\"RTCIceTransportStateChangedEvent\\\"): RTCIceTransportStateChangedEvent;\\n createEvent(eventInterface: \\\"RTCPeerConnectionIceErrorEvent\\\"): RTCPeerConnectionIceErrorEvent;\\n createEvent(eventInterface: \\\"RTCPeerConnectionIceEvent\\\"): RTCPeerConnectionIceEvent;\\n createEvent(eventInterface: \\\"RTCSsrcConflictEvent\\\"): RTCSsrcConflictEvent;\\n createEvent(eventInterface: \\\"RTCStatsEvent\\\"): RTCStatsEvent;\\n createEvent(eventInterface: \\\"RTCTrackEvent\\\"): RTCTrackEvent;\\n createEvent(eventInterface: \\\"SVGZoomEvent\\\"): SVGZoomEvent;\\n createEvent(eventInterface: \\\"SVGZoomEvents\\\"): SVGZoomEvent;\\n createEvent(eventInterface: \\\"SecurityPolicyViolationEvent\\\"): SecurityPolicyViolationEvent;\\n createEvent(eventInterface: \\\"ServiceWorkerMessageEvent\\\"): ServiceWorkerMessageEvent;\\n createEvent(eventInterface: \\\"SpeechRecognitionErrorEvent\\\"): SpeechRecognitionErrorEvent;\\n createEvent(eventInterface: \\\"SpeechRecognitionEvent\\\"): SpeechRecognitionEvent;\\n createEvent(eventInterface: \\\"SpeechSynthesisErrorEvent\\\"): SpeechSynthesisErrorEvent;\\n createEvent(eventInterface: \\\"SpeechSynthesisEvent\\\"): SpeechSynthesisEvent;\\n createEvent(eventInterface: \\\"StorageEvent\\\"): StorageEvent;\\n createEvent(eventInterface: \\\"TextEvent\\\"): TextEvent;\\n createEvent(eventInterface: \\\"TouchEvent\\\"): TouchEvent;\\n createEvent(eventInterface: \\\"TrackEvent\\\"): TrackEvent;\\n createEvent(eventInterface: \\\"TransitionEvent\\\"): TransitionEvent;\\n createEvent(eventInterface: \\\"UIEvent\\\"): UIEvent;\\n createEvent(eventInterface: \\\"UIEvents\\\"): UIEvent;\\n createEvent(eventInterface: \\\"VRDisplayEvent\\\"): VRDisplayEvent;\\n createEvent(eventInterface: \\\"VRDisplayEvent \\\"): VRDisplayEvent ;\\n createEvent(eventInterface: \\\"WebGLContextEvent\\\"): WebGLContextEvent;\\n createEvent(eventInterface: \\\"WheelEvent\\\"): WheelEvent;\\n createEvent(eventInterface: string): Event;\\n}\\n\\n/** A minimal document object that has no parent. It is used as a lightweight version of Document that stores a segment of a document structure comprised of nodes just like a standard document. The key difference is that because the document fragment isn't part of the active document tree structure, changes made to the fragment don't affect the document, cause reflow, or incur any performance impact that can occur when changes are made. */\\ninterface DocumentFragment extends Node, NonElementParentNode, ParentNode {\\n readonly ownerDocument: Document;\\n getElementById(elementId: string): HTMLElement | null;\\n}\\n\\ndeclare var DocumentFragment: {\\n prototype: DocumentFragment;\\n new(): DocumentFragment;\\n};\\n\\ninterface DocumentOrShadowRoot {\\n readonly activeElement: Element | null;\\n /**\\n * Returns document's fullscreen element.\\n */\\n readonly fullscreenElement: Element | null;\\n readonly pointerLockElement: Element | null;\\n /**\\n * Retrieves a collection of styleSheet objects representing the style sheets that correspond to each instance of a link or style object in the document.\\n */\\n readonly styleSheets: StyleSheetList;\\n caretPositionFromPoint(x: number, y: number): CaretPosition | null;\\n /** @deprecated */\\n caretRangeFromPoint(x: number, y: number): Range;\\n elementFromPoint(x: number, y: number): Element | null;\\n elementsFromPoint(x: number, y: number): Element[];\\n getSelection(): Selection | null;\\n}\\n\\ninterface DocumentTimeline extends AnimationTimeline {\\n}\\n\\ndeclare var DocumentTimeline: {\\n prototype: DocumentTimeline;\\n new(options?: DocumentTimelineOptions): DocumentTimeline;\\n};\\n\\n/** A Node containing a doctype. */\\ninterface DocumentType extends Node, ChildNode {\\n readonly name: string;\\n readonly ownerDocument: Document;\\n readonly publicId: string;\\n readonly systemId: string;\\n}\\n\\ndeclare var DocumentType: {\\n prototype: DocumentType;\\n new(): DocumentType;\\n};\\n\\n/** A DOM event that represents a drag and drop interaction. The user initiates a drag by placing a pointer device (such as a mouse) on the touch surface and then dragging the pointer to a new location (such as another DOM element). Applications are free to interpret a drag and drop interaction in an application-specific way. */\\ninterface DragEvent extends MouseEvent {\\n /**\\n * Returns the DataTransfer object for the event.\\n */\\n readonly dataTransfer: DataTransfer | null;\\n}\\n\\ndeclare var DragEvent: {\\n prototype: DragEvent;\\n new(type: string, eventInitDict?: DragEventInit): DragEvent;\\n};\\n\\n/** Inherits properties from its parent, AudioNode. */\\ninterface DynamicsCompressorNode extends AudioNode {\\n readonly attack: AudioParam;\\n readonly knee: AudioParam;\\n readonly ratio: AudioParam;\\n readonly reduction: number;\\n readonly release: AudioParam;\\n readonly threshold: AudioParam;\\n}\\n\\ndeclare var DynamicsCompressorNode: {\\n prototype: DynamicsCompressorNode;\\n new(context: BaseAudioContext, options?: DynamicsCompressorOptions): DynamicsCompressorNode;\\n};\\n\\ninterface EXT_blend_minmax {\\n readonly MAX_EXT: GLenum;\\n readonly MIN_EXT: GLenum;\\n}\\n\\n/** The EXT_frag_depth extension is part of the WebGL API and enables to set a depth value of a fragment from within the fragment shader. */\\ninterface EXT_frag_depth {\\n}\\n\\ninterface EXT_sRGB {\\n readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: GLenum;\\n readonly SRGB8_ALPHA8_EXT: GLenum;\\n readonly SRGB_ALPHA_EXT: GLenum;\\n readonly SRGB_EXT: GLenum;\\n}\\n\\ninterface EXT_shader_texture_lod {\\n}\\n\\n/** The EXT_texture_filter_anisotropic extension is part of the WebGL API and exposes two constants for anisotropic filtering (AF). */\\ninterface EXT_texture_filter_anisotropic {\\n readonly MAX_TEXTURE_MAX_ANISOTROPY_EXT: GLenum;\\n readonly TEXTURE_MAX_ANISOTROPY_EXT: GLenum;\\n}\\n\\ninterface ElementEventMap {\\n \\\"fullscreenchange\\\": Event;\\n \\\"fullscreenerror\\\": Event;\\n}\\n\\n/** Element is the most general base class from which all objects in a Document inherit. It only has methods and properties common to all kinds of elements. More specific classes inherit from Element. */\\ninterface Element extends Node, Animatable, ChildNode, InnerHTML, NonDocumentTypeChildNode, ParentNode, Slottable {\\n readonly attributes: NamedNodeMap;\\n /**\\n * Allows for manipulation of element's class content attribute as a set of whitespace-separated tokens through a DOMTokenList object.\\n */\\n readonly classList: DOMTokenList;\\n /**\\n * Returns the value of element's class content attribute. Can be set to change it.\\n */\\n className: string;\\n readonly clientHeight: number;\\n readonly clientLeft: number;\\n readonly clientTop: number;\\n readonly clientWidth: number;\\n /**\\n * Returns the value of element's id content attribute. Can be set to change it.\\n */\\n id: string;\\n /**\\n * Returns the local name.\\n */\\n readonly localName: string;\\n /**\\n * Returns the namespace.\\n */\\n readonly namespaceURI: string | null;\\n onfullscreenchange: ((this: Element, ev: Event) => any) | null;\\n onfullscreenerror: ((this: Element, ev: Event) => any) | null;\\n outerHTML: string;\\n readonly ownerDocument: Document;\\n /**\\n * Returns the namespace prefix.\\n */\\n readonly prefix: string | null;\\n readonly scrollHeight: number;\\n scrollLeft: number;\\n scrollTop: number;\\n readonly scrollWidth: number;\\n /**\\n * Returns element's shadow root, if any, and if shadow root's mode is \\\"open\\\", and null otherwise.\\n */\\n readonly shadowRoot: ShadowRoot | null;\\n /**\\n * Returns the value of element's slot content attribute. Can be set to change it.\\n */\\n slot: string;\\n /**\\n * Returns the HTML-uppercased qualified name.\\n */\\n readonly tagName: string;\\n /**\\n * Creates a shadow root for element and returns it.\\n */\\n attachShadow(init: ShadowRootInit): ShadowRoot;\\n /**\\n * Returns the first (starting at element) inclusive ancestor that matches selectors, and null otherwise.\\n */\\n closest(selector: K): HTMLElementTagNameMap[K] | null;\\n closest(selector: K): SVGElementTagNameMap[K] | null;\\n closest(selector: string): E | null;\\n /**\\n * Returns element's first attribute whose qualified name is qualifiedName, and null if there is no such attribute otherwise.\\n */\\n getAttribute(qualifiedName: string): string | null;\\n /**\\n * Returns element's attribute whose namespace is namespace and local name is localName, and null if there is no such attribute otherwise.\\n */\\n getAttributeNS(namespace: string | null, localName: string): string | null;\\n /**\\n * Returns the qualified names of all element's attributes. Can contain duplicates.\\n */\\n getAttributeNames(): string[];\\n getAttributeNode(qualifiedName: string): Attr | null;\\n getAttributeNodeNS(namespace: string | null, localName: string): Attr | null;\\n getBoundingClientRect(): DOMRect;\\n getClientRects(): DOMRectList;\\n /**\\n * Returns a HTMLCollection of the elements in the object on which the method was invoked (a document or an element) that have all the classes given by classNames. The classNames argument is interpreted as a space-separated list of classes.\\n */\\n getElementsByClassName(classNames: string): HTMLCollectionOf;\\n getElementsByTagName(qualifiedName: K): HTMLCollectionOf;\\n getElementsByTagName(qualifiedName: K): HTMLCollectionOf;\\n getElementsByTagName(qualifiedName: string): HTMLCollectionOf;\\n getElementsByTagNameNS(namespaceURI: \\\"http://www.w3.org/1999/xhtml\\\", localName: string): HTMLCollectionOf;\\n getElementsByTagNameNS(namespaceURI: \\\"http://www.w3.org/2000/svg\\\", localName: string): HTMLCollectionOf;\\n getElementsByTagNameNS(namespaceURI: string, localName: string): HTMLCollectionOf;\\n /**\\n * Returns true if element has an attribute whose qualified name is qualifiedName, and false otherwise.\\n */\\n hasAttribute(qualifiedName: string): boolean;\\n /**\\n * Returns true if element has an attribute whose namespace is namespace and local name is localName.\\n */\\n hasAttributeNS(namespace: string | null, localName: string): boolean;\\n /**\\n * Returns true if element has attributes, and false otherwise.\\n */\\n hasAttributes(): boolean;\\n hasPointerCapture(pointerId: number): boolean;\\n insertAdjacentElement(position: InsertPosition, insertedElement: Element): Element | null;\\n insertAdjacentHTML(where: InsertPosition, html: string): void;\\n insertAdjacentText(where: InsertPosition, text: string): void;\\n /**\\n * Returns true if matching selectors against element's root yields element, and false otherwise.\\n */\\n matches(selectors: string): boolean;\\n msGetRegionContent(): any;\\n releasePointerCapture(pointerId: number): void;\\n /**\\n * Removes element's first attribute whose qualified name is qualifiedName.\\n */\\n removeAttribute(qualifiedName: string): void;\\n /**\\n * Removes element's attribute whose namespace is namespace and local name is localName.\\n */\\n removeAttributeNS(namespace: string | null, localName: string): void;\\n removeAttributeNode(attr: Attr): Attr;\\n /**\\n * Displays element fullscreen and resolves promise when done.\\n * \\n * When supplied, options's navigationUI member indicates whether showing navigation UI while in fullscreen is preferred or not. If set to \\\"show\\\", navigation simplicity is preferred over screen space, and if set to \\\"hide\\\", more screen space is preferred. User agents are always free to honor user preference over the application's. The default value \\\"auto\\\" indicates no application preference.\\n */\\n requestFullscreen(options?: FullscreenOptions): Promise;\\n requestPointerLock(): void;\\n scroll(options?: ScrollToOptions): void;\\n scroll(x: number, y: number): void;\\n scrollBy(options?: ScrollToOptions): void;\\n scrollBy(x: number, y: number): void;\\n scrollIntoView(arg?: boolean | ScrollIntoViewOptions): void;\\n scrollTo(options?: ScrollToOptions): void;\\n scrollTo(x: number, y: number): void;\\n /**\\n * Sets the value of element's first attribute whose qualified name is qualifiedName to value.\\n */\\n setAttribute(qualifiedName: string, value: string): void;\\n /**\\n * Sets the value of element's attribute whose namespace is namespace and local name is localName to value.\\n */\\n setAttributeNS(namespace: string | null, qualifiedName: string, value: string): void;\\n setAttributeNode(attr: Attr): Attr | null;\\n setAttributeNodeNS(attr: Attr): Attr | null;\\n setPointerCapture(pointerId: number): void;\\n /**\\n * If force is not given, \\\"toggles\\\" qualifiedName, removing it if it is present and adding it if it is not present. If force is true, adds qualifiedName. If force is false, removes qualifiedName.\\n * \\n * Returns true if qualifiedName is now present, and false otherwise.\\n */\\n toggleAttribute(qualifiedName: string, force?: boolean): boolean;\\n webkitMatchesSelector(selectors: string): boolean;\\n addEventListener(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\\n removeEventListener(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\\n}\\n\\ndeclare var Element: {\\n prototype: Element;\\n new(): Element;\\n};\\n\\ninterface ElementCSSInlineStyle {\\n readonly style: CSSStyleDeclaration;\\n}\\n\\ninterface ElementContentEditable {\\n contentEditable: string;\\n enterKeyHint: string;\\n inputMode: string;\\n readonly isContentEditable: boolean;\\n}\\n\\n/** Events providing information related to errors in scripts or in files. */\\ninterface ErrorEvent extends Event {\\n readonly colno: number;\\n readonly error: any;\\n readonly filename: string;\\n readonly lineno: number;\\n readonly message: string;\\n}\\n\\ndeclare var ErrorEvent: {\\n prototype: ErrorEvent;\\n new(type: string, eventInitDict?: ErrorEventInit): ErrorEvent;\\n};\\n\\n/** An event which takes place in the DOM. */\\ninterface Event {\\n /**\\n * Returns true or false depending on how event was initialized. True if event goes through its target's ancestors in reverse tree order, and false otherwise.\\n */\\n readonly bubbles: boolean;\\n cancelBubble: boolean;\\n /**\\n * Returns true or false depending on how event was initialized. Its return value does not always carry meaning, but true can indicate that part of the operation during which event was dispatched, can be canceled by invoking the preventDefault() method.\\n */\\n readonly cancelable: boolean;\\n /**\\n * Returns true or false depending on how event was initialized. True if event invokes listeners past a ShadowRoot node that is the root of its target, and false otherwise.\\n */\\n readonly composed: boolean;\\n /**\\n * Returns the object whose event listener's callback is currently being invoked.\\n */\\n readonly currentTarget: EventTarget | null;\\n /**\\n * Returns true if preventDefault() was invoked successfully to indicate cancelation, and false otherwise.\\n */\\n readonly defaultPrevented: boolean;\\n /**\\n * Returns the event's phase, which is one of NONE, CAPTURING_PHASE, AT_TARGET, and BUBBLING_PHASE.\\n */\\n readonly eventPhase: number;\\n /**\\n * Returns true if event was dispatched by the user agent, and false otherwise.\\n */\\n readonly isTrusted: boolean;\\n returnValue: boolean;\\n /** @deprecated */\\n readonly srcElement: EventTarget | null;\\n /**\\n * Returns the object to which event is dispatched (its target).\\n */\\n readonly target: EventTarget | null;\\n /**\\n * Returns the event's timestamp as the number of milliseconds measured relative to the time origin.\\n */\\n readonly timeStamp: number;\\n /**\\n * Returns the type of event, e.g. \\\"click\\\", \\\"hashchange\\\", or \\\"submit\\\".\\n */\\n readonly type: string;\\n /**\\n * Returns the invocation target objects of event's path (objects on which listeners will be invoked), except for any nodes in shadow trees of which the shadow root's mode is \\\"closed\\\" that are not reachable from event's currentTarget.\\n */\\n composedPath(): EventTarget[];\\n initEvent(type: string, bubbles?: boolean, cancelable?: boolean): void;\\n /**\\n * If invoked when the cancelable attribute value is true, and while executing a listener for the event with passive set to false, signals to the operation that caused event to be dispatched that it needs to be canceled.\\n */\\n preventDefault(): void;\\n /**\\n * Invoking this method prevents event from reaching any registered event listeners after the current one finishes running and, when dispatched in a tree, also prevents event from reaching any other objects.\\n */\\n stopImmediatePropagation(): void;\\n /**\\n * When dispatched in a tree, invoking this method prevents event from reaching any objects other than the current object.\\n */\\n stopPropagation(): void;\\n readonly AT_TARGET: number;\\n readonly BUBBLING_PHASE: number;\\n readonly CAPTURING_PHASE: number;\\n readonly NONE: number;\\n}\\n\\ndeclare var Event: {\\n prototype: Event;\\n new(type: string, eventInitDict?: EventInit): Event;\\n readonly AT_TARGET: number;\\n readonly BUBBLING_PHASE: number;\\n readonly CAPTURING_PHASE: number;\\n readonly NONE: number;\\n};\\n\\ninterface EventListenerObject {\\n handleEvent(evt: Event): void;\\n}\\n\\ninterface EventSourceEventMap {\\n \\\"error\\\": Event;\\n \\\"message\\\": MessageEvent;\\n \\\"open\\\": Event;\\n}\\n\\ninterface EventSource extends EventTarget {\\n onerror: ((this: EventSource, ev: Event) => any) | null;\\n onmessage: ((this: EventSource, ev: MessageEvent) => any) | null;\\n onopen: ((this: EventSource, ev: Event) => any) | null;\\n /**\\n * Returns the state of this EventSource object's connection. It can have the values described below.\\n */\\n readonly readyState: number;\\n /**\\n * Returns the URL providing the event stream.\\n */\\n readonly url: string;\\n /**\\n * Returns true if the credentials mode for connection requests to the URL providing the event stream is set to \\\"include\\\", and false otherwise.\\n */\\n readonly withCredentials: boolean;\\n /**\\n * Aborts any instances of the fetch algorithm started for this EventSource object, and sets the readyState attribute to CLOSED.\\n */\\n close(): void;\\n readonly CLOSED: number;\\n readonly CONNECTING: number;\\n readonly OPEN: number;\\n addEventListener(type: K, listener: (this: EventSource, ev: EventSourceEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\\n removeEventListener(type: K, listener: (this: EventSource, ev: EventSourceEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\\n}\\n\\ndeclare var EventSource: {\\n prototype: EventSource;\\n new(url: string, eventSourceInitDict?: EventSourceInit): EventSource;\\n readonly CLOSED: number;\\n readonly CONNECTING: number;\\n readonly OPEN: number;\\n};\\n\\n/** EventTarget is a DOM interface implemented by objects that can receive events and may have listeners for them. */\\ninterface EventTarget {\\n /**\\n * Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched.\\n * \\n * The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture.\\n * \\n * When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET.\\n * \\n * When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners.\\n * \\n * When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed.\\n * \\n * The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.\\n */\\n addEventListener(type: string, listener: EventListenerOrEventListenerObject | null, options?: boolean | AddEventListenerOptions): void;\\n /**\\n * Dispatches a synthetic event event to target and returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise.\\n */\\n dispatchEvent(event: Event): boolean;\\n /**\\n * Removes the event listener in target's event listener list with the same type, callback, and options.\\n */\\n removeEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: EventListenerOptions | boolean): void;\\n}\\n\\ndeclare var EventTarget: {\\n prototype: EventTarget;\\n new(): EventTarget;\\n};\\n\\ninterface ExtensionScriptApis {\\n extensionIdToShortId(extensionId: string): number;\\n fireExtensionApiTelemetry(functionName: string, isSucceeded: boolean, isSupported: boolean, errorString: string): void;\\n genericFunction(routerAddress: any, parameters?: string, callbackId?: number): void;\\n genericSynchronousFunction(functionId: number, parameters?: string): string;\\n genericWebRuntimeCallout(to: any, from: any, payload: string): void;\\n getExtensionId(): string;\\n registerGenericFunctionCallbackHandler(callbackHandler: Function): void;\\n registerGenericPersistentCallbackHandler(callbackHandler: Function): void;\\n registerWebRuntimeCallbackHandler(handler: Function): any;\\n}\\n\\ndeclare var ExtensionScriptApis: {\\n prototype: ExtensionScriptApis;\\n new(): ExtensionScriptApis;\\n};\\n\\ninterface External {\\n /** @deprecated */\\n AddSearchProvider(): void;\\n /** @deprecated */\\n IsSearchProviderInstalled(): void;\\n}\\n\\ndeclare var External: {\\n prototype: External;\\n new(): External;\\n};\\n\\n/** Provides information about files and allows JavaScript in a web page to access their content. */\\ninterface File extends Blob {\\n readonly lastModified: number;\\n readonly name: string;\\n}\\n\\ndeclare var File: {\\n prototype: File;\\n new(fileBits: BlobPart[], fileName: string, options?: FilePropertyBag): File;\\n};\\n\\n/** An object of this type is returned by the files property of the HTML element; this lets you access the list of files selected with the element. It's also used for a list of files dropped into web content when using the drag and drop API; see the DataTransfer object for details on this usage. */\\ninterface FileList {\\n readonly length: number;\\n item(index: number): File | null;\\n [index: number]: File;\\n}\\n\\ndeclare var FileList: {\\n prototype: FileList;\\n new(): FileList;\\n};\\n\\ninterface FileReaderEventMap {\\n \\\"abort\\\": ProgressEvent;\\n \\\"error\\\": ProgressEvent;\\n \\\"load\\\": ProgressEvent;\\n \\\"loadend\\\": ProgressEvent;\\n \\\"loadstart\\\": ProgressEvent;\\n \\\"progress\\\": ProgressEvent;\\n}\\n\\n/** Lets web applications asynchronously read the contents of files (or raw data buffers) stored on the user's computer, using File or Blob objects to specify the file or data to read. */\\ninterface FileReader extends EventTarget {\\n readonly error: DOMException | null;\\n onabort: ((this: FileReader, ev: ProgressEvent) => any) | null;\\n onerror: ((this: FileReader, ev: ProgressEvent) => any) | null;\\n onload: ((this: FileReader, ev: ProgressEvent) => any) | null;\\n onloadend: ((this: FileReader, ev: ProgressEvent) => any) | null;\\n onloadstart: ((this: FileReader, ev: ProgressEvent) => any) | null;\\n onprogress: ((this: FileReader, ev: ProgressEvent) => any) | null;\\n readonly readyState: number;\\n readonly result: string | ArrayBuffer | null;\\n abort(): void;\\n readAsArrayBuffer(blob: Blob): void;\\n readAsBinaryString(blob: Blob): void;\\n readAsDataURL(blob: Blob): void;\\n readAsText(blob: Blob, encoding?: string): void;\\n readonly DONE: number;\\n readonly EMPTY: number;\\n readonly LOADING: number;\\n addEventListener(type: K, listener: (this: FileReader, ev: FileReaderEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\\n removeEventListener(type: K, listener: (this: FileReader, ev: FileReaderEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\\n}\\n\\ndeclare var FileReader: {\\n prototype: FileReader;\\n new(): FileReader;\\n readonly DONE: number;\\n readonly EMPTY: number;\\n readonly LOADING: number;\\n};\\n\\n/** Focus-related events like focus, blur, focusin, or focusout. */\\ninterface FocusEvent extends UIEvent {\\n readonly relatedTarget: EventTarget | null;\\n}\\n\\ndeclare var FocusEvent: {\\n prototype: FocusEvent;\\n new(type: string, eventInitDict?: FocusEventInit): FocusEvent;\\n};\\n\\ninterface FocusNavigationEvent extends Event {\\n readonly navigationReason: NavigationReason;\\n readonly originHeight: number;\\n readonly originLeft: number;\\n readonly originTop: number;\\n readonly originWidth: number;\\n requestFocus(): void;\\n}\\n\\ndeclare var FocusNavigationEvent: {\\n prototype: FocusNavigationEvent;\\n new(type: string, eventInitDict?: FocusNavigationEventInit): FocusNavigationEvent;\\n};\\n\\n/** Provides a way to easily construct a set of key/value pairs representing form fields and their values, which can then be easily sent using the XMLHttpRequest.send() method. It uses the same format a form would use if the encoding type were set to \\\"multipart/form-data\\\". */\\ninterface FormData {\\n append(name: string, value: string | Blob, fileName?: string): void;\\n delete(name: string): void;\\n get(name: string): FormDataEntryValue | null;\\n getAll(name: string): FormDataEntryValue[];\\n has(name: string): boolean;\\n set(name: string, value: string | Blob, fileName?: string): void;\\n forEach(callbackfn: (value: FormDataEntryValue, key: string, parent: FormData) => void, thisArg?: any): void;\\n}\\n\\ndeclare var FormData: {\\n prototype: FormData;\\n new(form?: HTMLFormElement): FormData;\\n};\\n\\n/** A change in volume. It is an AudioNode audio-processing module that causes a given gain to be applied to the input data before its propagation to the output. A GainNode always has exactly one input and one output, both with the same number of channels. */\\ninterface GainNode extends AudioNode {\\n readonly gain: AudioParam;\\n}\\n\\ndeclare var GainNode: {\\n prototype: GainNode;\\n new(context: BaseAudioContext, options?: GainOptions): GainNode;\\n};\\n\\n/** This Gamepad API interface defines an individual gamepad or other controller, allowing access to information such as button presses, axis positions, and id. */\\ninterface Gamepad {\\n readonly axes: ReadonlyArray;\\n readonly buttons: ReadonlyArray;\\n readonly connected: boolean;\\n readonly hand: GamepadHand;\\n readonly hapticActuators: ReadonlyArray;\\n readonly id: string;\\n readonly index: number;\\n readonly mapping: GamepadMappingType;\\n readonly pose: GamepadPose | null;\\n readonly timestamp: number;\\n}\\n\\ndeclare var Gamepad: {\\n prototype: Gamepad;\\n new(): Gamepad;\\n};\\n\\n/** An individual button of a gamepad or other controller, allowing access to the current state of different types of buttons available on the control device. */\\ninterface GamepadButton {\\n readonly pressed: boolean;\\n readonly touched: boolean;\\n readonly value: number;\\n}\\n\\ndeclare var GamepadButton: {\\n prototype: GamepadButton;\\n new(): GamepadButton;\\n};\\n\\n/** This Gamepad API interface contains references to gamepads connected to the system, which is what the gamepad events Window.gamepadconnected and Window.gamepaddisconnected are fired in response to. */\\ninterface GamepadEvent extends Event {\\n readonly gamepad: Gamepad;\\n}\\n\\ndeclare var GamepadEvent: {\\n prototype: GamepadEvent;\\n new(type: string, eventInitDict: GamepadEventInit): GamepadEvent;\\n};\\n\\n/** This Gamepad API interface represents hardware in the controller designed to provide haptic feedback to the user (if available), most commonly vibration hardware. */\\ninterface GamepadHapticActuator {\\n readonly type: GamepadHapticActuatorType;\\n pulse(value: number, duration: number): Promise;\\n}\\n\\ndeclare var GamepadHapticActuator: {\\n prototype: GamepadHapticActuator;\\n new(): GamepadHapticActuator;\\n};\\n\\n/** This Gamepad API interface represents the pose of a WebVR controller at a given timestamp (which includes orientation, position, velocity, and acceleration information.) */\\ninterface GamepadPose {\\n readonly angularAcceleration: Float32Array | null;\\n readonly angularVelocity: Float32Array | null;\\n readonly hasOrientation: boolean;\\n readonly hasPosition: boolean;\\n readonly linearAcceleration: Float32Array | null;\\n readonly linearVelocity: Float32Array | null;\\n readonly orientation: Float32Array | null;\\n readonly position: Float32Array | null;\\n}\\n\\ndeclare var GamepadPose: {\\n prototype: GamepadPose;\\n new(): GamepadPose;\\n};\\n\\ninterface GenericTransformStream {\\n readonly readable: ReadableStream;\\n readonly writable: WritableStream;\\n}\\n\\n/** An object able to programmatically obtain the position of the device. It gives Web content access to the location of the device. This allows a Web site or app to offer customized results based on the user's location. */\\ninterface Geolocation {\\n clearWatch(watchId: number): void;\\n getCurrentPosition(successCallback: PositionCallback, errorCallback?: PositionErrorCallback, options?: PositionOptions): void;\\n watchPosition(successCallback: PositionCallback, errorCallback?: PositionErrorCallback, options?: PositionOptions): number;\\n}\\n\\ndeclare var Geolocation: {\\n prototype: Geolocation;\\n new(): Geolocation;\\n};\\n\\ninterface GeolocationCoordinates {\\n readonly accuracy: number;\\n readonly altitude: number | null;\\n readonly altitudeAccuracy: number | null;\\n readonly heading: number | null;\\n readonly latitude: number;\\n readonly longitude: number;\\n readonly speed: number | null;\\n}\\n\\ndeclare var GeolocationCoordinates: {\\n prototype: GeolocationCoordinates;\\n new(): GeolocationCoordinates;\\n};\\n\\ninterface GeolocationPosition {\\n readonly coords: GeolocationCoordinates;\\n readonly timestamp: number;\\n}\\n\\ndeclare var GeolocationPosition: {\\n prototype: GeolocationPosition;\\n new(): GeolocationPosition;\\n};\\n\\ninterface GeolocationPositionError {\\n readonly code: number;\\n readonly message: string;\\n readonly PERMISSION_DENIED: number;\\n readonly POSITION_UNAVAILABLE: number;\\n readonly TIMEOUT: number;\\n}\\n\\ndeclare var GeolocationPositionError: {\\n prototype: GeolocationPositionError;\\n new(): GeolocationPositionError;\\n readonly PERMISSION_DENIED: number;\\n readonly POSITION_UNAVAILABLE: number;\\n readonly TIMEOUT: number;\\n};\\n\\ninterface GlobalEventHandlersEventMap {\\n \\\"abort\\\": UIEvent;\\n \\\"animationcancel\\\": AnimationEvent;\\n \\\"animationend\\\": AnimationEvent;\\n \\\"animationiteration\\\": AnimationEvent;\\n \\\"animationstart\\\": AnimationEvent;\\n \\\"auxclick\\\": MouseEvent;\\n \\\"beforeinput\\\": InputEvent;\\n \\\"blur\\\": FocusEvent;\\n \\\"cancel\\\": Event;\\n \\\"canplay\\\": Event;\\n \\\"canplaythrough\\\": Event;\\n \\\"change\\\": Event;\\n \\\"click\\\": MouseEvent;\\n \\\"close\\\": Event;\\n \\\"compositionend\\\": CompositionEvent;\\n \\\"compositionstart\\\": CompositionEvent;\\n \\\"compositionupdate\\\": CompositionEvent;\\n \\\"contextmenu\\\": MouseEvent;\\n \\\"cuechange\\\": Event;\\n \\\"dblclick\\\": MouseEvent;\\n \\\"drag\\\": DragEvent;\\n \\\"dragend\\\": DragEvent;\\n \\\"dragenter\\\": DragEvent;\\n \\\"dragexit\\\": Event;\\n \\\"dragleave\\\": DragEvent;\\n \\\"dragover\\\": DragEvent;\\n \\\"dragstart\\\": DragEvent;\\n \\\"drop\\\": DragEvent;\\n \\\"durationchange\\\": Event;\\n \\\"emptied\\\": Event;\\n \\\"ended\\\": Event;\\n \\\"error\\\": ErrorEvent;\\n \\\"focus\\\": FocusEvent;\\n \\\"focusin\\\": FocusEvent;\\n \\\"focusout\\\": FocusEvent;\\n \\\"gotpointercapture\\\": PointerEvent;\\n \\\"input\\\": Event;\\n \\\"invalid\\\": Event;\\n \\\"keydown\\\": KeyboardEvent;\\n \\\"keypress\\\": KeyboardEvent;\\n \\\"keyup\\\": KeyboardEvent;\\n \\\"load\\\": Event;\\n \\\"loadeddata\\\": Event;\\n \\\"loadedmetadata\\\": Event;\\n \\\"loadstart\\\": Event;\\n \\\"lostpointercapture\\\": PointerEvent;\\n \\\"mousedown\\\": MouseEvent;\\n \\\"mouseenter\\\": MouseEvent;\\n \\\"mouseleave\\\": MouseEvent;\\n \\\"mousemove\\\": MouseEvent;\\n \\\"mouseout\\\": MouseEvent;\\n \\\"mouseover\\\": MouseEvent;\\n \\\"mouseup\\\": MouseEvent;\\n \\\"pause\\\": Event;\\n \\\"play\\\": Event;\\n \\\"playing\\\": Event;\\n \\\"pointercancel\\\": PointerEvent;\\n \\\"pointerdown\\\": PointerEvent;\\n \\\"pointerenter\\\": PointerEvent;\\n \\\"pointerleave\\\": PointerEvent;\\n \\\"pointermove\\\": PointerEvent;\\n \\\"pointerout\\\": PointerEvent;\\n \\\"pointerover\\\": PointerEvent;\\n \\\"pointerup\\\": PointerEvent;\\n \\\"progress\\\": ProgressEvent;\\n \\\"ratechange\\\": Event;\\n \\\"reset\\\": Event;\\n \\\"resize\\\": UIEvent;\\n \\\"scroll\\\": Event;\\n \\\"securitypolicyviolation\\\": SecurityPolicyViolationEvent;\\n \\\"seeked\\\": Event;\\n \\\"seeking\\\": Event;\\n \\\"select\\\": Event;\\n \\\"selectionchange\\\": Event;\\n \\\"selectstart\\\": Event;\\n \\\"stalled\\\": Event;\\n \\\"submit\\\": Event;\\n \\\"suspend\\\": Event;\\n \\\"timeupdate\\\": Event;\\n \\\"toggle\\\": Event;\\n \\\"touchcancel\\\": TouchEvent;\\n \\\"touchend\\\": TouchEvent;\\n \\\"touchmove\\\": TouchEvent;\\n \\\"touchstart\\\": TouchEvent;\\n \\\"transitioncancel\\\": TransitionEvent;\\n \\\"transitionend\\\": TransitionEvent;\\n \\\"transitionrun\\\": TransitionEvent;\\n \\\"transitionstart\\\": TransitionEvent;\\n \\\"volumechange\\\": Event;\\n \\\"waiting\\\": Event;\\n \\\"wheel\\\": WheelEvent;\\n}\\n\\ninterface GlobalEventHandlers {\\n /**\\n * Fires when the user aborts the download.\\n * @param ev The event.\\n */\\n onabort: ((this: GlobalEventHandlers, ev: UIEvent) => any) | null;\\n onanimationcancel: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;\\n onanimationend: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;\\n onanimationiteration: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;\\n onanimationstart: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;\\n onauxclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\\n /**\\n * Fires when the object loses the input focus.\\n * @param ev The focus event.\\n */\\n onblur: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null;\\n oncancel: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n /**\\n * Occurs when playback is possible, but would require further buffering.\\n * @param ev The event.\\n */\\n oncanplay: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n oncanplaythrough: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n /**\\n * Fires when the contents of the object or selection have changed.\\n * @param ev The event.\\n */\\n onchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n /**\\n * Fires when the user clicks the left mouse button on the object\\n * @param ev The mouse event.\\n */\\n onclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\\n onclose: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n /**\\n * Fires when the user clicks the right mouse button in the client area, opening the context menu.\\n * @param ev The mouse event.\\n */\\n oncontextmenu: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\\n oncuechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n /**\\n * Fires when the user double-clicks the object.\\n * @param ev The mouse event.\\n */\\n ondblclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\\n /**\\n * Fires on the source object continuously during a drag operation.\\n * @param ev The event.\\n */\\n ondrag: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\\n /**\\n * Fires on the source object when the user releases the mouse at the close of a drag operation.\\n * @param ev The event.\\n */\\n ondragend: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\\n /**\\n * Fires on the target element when the user drags the object to a valid drop target.\\n * @param ev The drag event.\\n */\\n ondragenter: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\\n ondragexit: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n /**\\n * Fires on the target object when the user moves the mouse out of a valid drop target during a drag operation.\\n * @param ev The drag event.\\n */\\n ondragleave: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\\n /**\\n * Fires on the target element continuously while the user drags the object over a valid drop target.\\n * @param ev The event.\\n */\\n ondragover: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\\n /**\\n * Fires on the source object when the user starts to drag a text selection or selected object.\\n * @param ev The event.\\n */\\n ondragstart: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\\n ondrop: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\\n /**\\n * Occurs when the duration attribute is updated.\\n * @param ev The event.\\n */\\n ondurationchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n /**\\n * Occurs when the media element is reset to its initial state.\\n * @param ev The event.\\n */\\n onemptied: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n /**\\n * Occurs when the end of playback is reached.\\n * @param ev The event\\n */\\n onended: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n /**\\n * Fires when an error occurs during object loading.\\n * @param ev The event.\\n */\\n onerror: OnErrorEventHandler;\\n /**\\n * Fires when the object receives focus.\\n * @param ev The event.\\n */\\n onfocus: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null;\\n ongotpointercapture: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\\n oninput: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n oninvalid: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n /**\\n * Fires when the user presses a key.\\n * @param ev The keyboard event\\n */\\n onkeydown: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;\\n /**\\n * Fires when the user presses an alphanumeric key.\\n * @param ev The event.\\n */\\n onkeypress: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;\\n /**\\n * Fires when the user releases a key.\\n * @param ev The keyboard event\\n */\\n onkeyup: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;\\n /**\\n * Fires immediately after the browser loads the object.\\n * @param ev The event.\\n */\\n onload: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n /**\\n * Occurs when media data is loaded at the current playback position.\\n * @param ev The event.\\n */\\n onloadeddata: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n /**\\n * Occurs when the duration and dimensions of the media have been determined.\\n * @param ev The event.\\n */\\n onloadedmetadata: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n /**\\n * Occurs when Internet Explorer begins looking for media data.\\n * @param ev The event.\\n */\\n onloadstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n onlostpointercapture: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\\n /**\\n * Fires when the user clicks the object with either mouse button.\\n * @param ev The mouse event.\\n */\\n onmousedown: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\\n onmouseenter: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\\n onmouseleave: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\\n /**\\n * Fires when the user moves the mouse over the object.\\n * @param ev The mouse event.\\n */\\n onmousemove: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\\n /**\\n * Fires when the user moves the mouse pointer outside the boundaries of the object.\\n * @param ev The mouse event.\\n */\\n onmouseout: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\\n /**\\n * Fires when the user moves the mouse pointer into the object.\\n * @param ev The mouse event.\\n */\\n onmouseover: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\\n /**\\n * Fires when the user releases a mouse button while the mouse is over the object.\\n * @param ev The mouse event.\\n */\\n onmouseup: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\\n /**\\n * Occurs when playback is paused.\\n * @param ev The event.\\n */\\n onpause: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n /**\\n * Occurs when the play method is requested.\\n * @param ev The event.\\n */\\n onplay: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n /**\\n * Occurs when the audio or video has started playing.\\n * @param ev The event.\\n */\\n onplaying: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n onpointercancel: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\\n onpointerdown: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\\n onpointerenter: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\\n onpointerleave: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\\n onpointermove: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\\n onpointerout: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\\n onpointerover: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\\n onpointerup: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\\n /**\\n * Occurs to indicate progress while downloading media data.\\n * @param ev The event.\\n */\\n onprogress: ((this: GlobalEventHandlers, ev: ProgressEvent) => any) | null;\\n /**\\n * Occurs when the playback rate is increased or decreased.\\n * @param ev The event.\\n */\\n onratechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n /**\\n * Fires when the user resets a form.\\n * @param ev The event.\\n */\\n onreset: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n onresize: ((this: GlobalEventHandlers, ev: UIEvent) => any) | null;\\n /**\\n * Fires when the user repositions the scroll box in the scroll bar on the object.\\n * @param ev The event.\\n */\\n onscroll: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n onsecuritypolicyviolation: ((this: GlobalEventHandlers, ev: SecurityPolicyViolationEvent) => any) | null;\\n /**\\n * Occurs when the seek operation ends.\\n * @param ev The event.\\n */\\n onseeked: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n /**\\n * Occurs when the current playback position is moved.\\n * @param ev The event.\\n */\\n onseeking: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n /**\\n * Fires when the current selection changes.\\n * @param ev The event.\\n */\\n onselect: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n onselectionchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n onselectstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n /**\\n * Occurs when the download has stopped.\\n * @param ev The event.\\n */\\n onstalled: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n onsubmit: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n /**\\n * Occurs if the load operation has been intentionally halted.\\n * @param ev The event.\\n */\\n onsuspend: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n /**\\n * Occurs to indicate the current playback position.\\n * @param ev The event.\\n */\\n ontimeupdate: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n ontoggle: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n ontouchcancel?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null;\\n ontouchend?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null;\\n ontouchmove?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null;\\n ontouchstart?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null;\\n ontransitioncancel: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;\\n ontransitionend: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;\\n ontransitionrun: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;\\n ontransitionstart: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;\\n /**\\n * Occurs when the volume is changed, or playback is muted or unmuted.\\n * @param ev The event.\\n */\\n onvolumechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n /**\\n * Occurs when playback stops because the next frame of a video resource is not available.\\n * @param ev The event.\\n */\\n onwaiting: ((this: GlobalEventHandlers, ev: Event) => any) | null;\\n onwheel: ((this: GlobalEventHandlers, ev: WheelEvent) => any) | null;\\n addEventListener(type: K, listener: (this: GlobalEventHandlers, ev: GlobalEventHandlersEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\\n removeEventListener(type: K, listener: (this: GlobalEventHandlers, ev: GlobalEventHandlersEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\\n}\\n\\ninterface HTMLAllCollection {\\n /**\\n * Returns the number of elements in the collection.\\n */\\n readonly length: number;\\n /**\\n * Returns the item with index index from the collection (determined by tree order).\\n */\\n item(nameOrIndex?: string): HTMLCollection | Element | null;\\n /**\\n * Returns the item with ID or name name from the collection.\\n * \\n * If there are multiple matching items, then an HTMLCollection object containing all those elements is returned.\\n * \\n * Only button, form, iframe, input, map, meta, object, select, and textarea elements can have a name for the purpose of this method; their name is given by the value of their name attribute.\\n */\\n namedItem(name: string): HTMLCollection | Element | null;\\n [index: number]: Element;\\n}\\n\\ndeclare var HTMLAllCollection: {\\n prototype: HTMLAllCollection;\\n new(): HTMLAllCollection;\\n};\\n\\n/** Hyperlink elements and provides special properties and methods (beyond those of the regular HTMLElement object interface that they inherit from) for manipulating the layout and presentation of such elements. */\\ninterface HTMLAnchorElement extends HTMLElement, HTMLHyperlinkElementUtils {\\n /**\\n * Sets or retrieves the character set used to encode the object.\\n */\\n /** @deprecated */\\n charset: string;\\n /**\\n * Sets or retrieves the coordinates of the object.\\n */\\n /** @deprecated */\\n coords: string;\\n download: string;\\n /**\\n * Sets or retrieves the language code of the object.\\n */\\n hreflang: string;\\n /**\\n * Sets or retrieves the shape of the object.\\n */\\n /** @deprecated */\\n name: string;\\n ping: string;\\n referrerPolicy: string;\\n /**\\n * Sets or retrieves the relationship between the object and the destination of the link.\\n */\\n rel: string;\\n readonly relList: DOMTokenList;\\n /**\\n * Sets or retrieves the relationship between the object and the destination of the link.\\n */\\n /** @deprecated */\\n rev: string;\\n /**\\n * Sets or retrieves the shape of the object.\\n */\\n /** @deprecated */\\n shape: string;\\n /**\\n * Sets or retrieves the window or frame at which to target content.\\n */\\n target: string;\\n /**\\n * Retrieves or sets the text of the object as a string.\\n */\\n text: string;\\n type: string;\\n addEventListener(type: K, listener: (this: HTMLAnchorElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\\n removeEventListener(type: K, listener: (this: HTMLAnchorElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\\n}\\n\\ndeclare var HTMLAnchorElement: {\\n prototype: HTMLAnchorElement;\\n new(): HTMLAnchorElement;\\n};\\n\\ninterface HTMLAppletElement extends HTMLElement {\\n /** @deprecated */\\n align: string;\\n /**\\n * Sets or retrieves a text alternative to the graphic.\\n */\\n /** @deprecated */\\n alt: string;\\n /**\\n * Sets or retrieves a character string that can be used to implement your own archive functionality for the object.\\n */\\n /** @deprecated */\\n archive: string;\\n /** @deprecated */\\n code: string;\\n /**\\n * Sets or retrieves the URL of the component.\\n */\\n /** @deprecated */\\n codeBase: string;\\n readonly form: HTMLFormElement | null;\\n /**\\n * Sets or retrieves the height of the object.\\n */\\n /** @deprecated */\\n height: string;\\n /** @deprecated */\\n hspace: number;\\n /**\\n * Sets or retrieves the shape of the object.\\n */\\n /** @deprecated */\\n name: string;\\n /** @deprecated */\\n object: string;\\n /** @deprecated */\\n vspace: number;\\n /** @deprecated */\\n width: string;\\n addEventListener(type: K, listener: (this: HTMLAppletElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\\n removeEventListener(type: K, listener: (this: HTMLAppletElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\\n}\\n\\ndeclare var HTMLAppletElement: {\\n prototype: HTMLAppletElement;\\n new(): HTMLAppletElement;\\n};\\n\\n/** Provides special properties and methods (beyond those of the regular object HTMLElement interface it also has available to it by inheritance) for manipulating the layout and presentation of elements. */\\ninterface HTMLAreaElement extends HTMLElement, HTMLHyperlinkElementUtils {\\n /**\\n * Sets or retrieves a text alternative to the graphic.\\n */\\n alt: string;\\n /**\\n * Sets or retrieves the coordinates of the object.\\n */\\n coords: string;\\n download: string;\\n /**\\n * Sets or gets whether clicks in this region cause action.\\n */\\n /** @deprecated */\\n noHref: boolean;\\n ping: string;\\n referrerPolicy: string;\\n rel: string;\\n readonly relList: DOMTokenList;\\n /**\\n * Sets or retrieves the shape of the object.\\n */\\n shape: string;\\n /**\\n * Sets or retrieves the window or frame at which to target content.\\n */\\n target: string;\\n addEventListener(type: K, listener: (this: HTMLAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\\n removeEventListener(type: K, listener: (this: HTMLAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\\n}\\n\\ndeclare var HTMLAreaElement: {\\n prototype: HTMLAreaElement;\\n new(): HTMLAreaElement;\\n};\\n\\n/** Provides access to the properties of