@knime/kds-code-editor 11.3.0 → 11.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/dist/assets/{editor.worker-e3drisr8.js.map → editor.worker-ynKJXNbh.js.map} +1 -1
- package/dist/assets/{json.worker-BxEEOmOS.js.map → json.worker-D0DAGjXV.js.map} +1 -1
- package/dist/{editor.worker-BaqEYUwK.js → editor.worker-DtlMnW0e.js} +2 -2
- package/dist/editor.worker-DtlMnW0e.js.map +1 -0
- package/dist/index.js +58 -2
- package/dist/index.js.map +1 -1
- package/dist/json.worker-CQ_9P0P7.js +21 -0
- package/dist/json.worker-CQ_9P0P7.js.map +1 -0
- package/package.json +3 -3
- package/dist/editor.worker-BaqEYUwK.js.map +0 -1
- package/dist/json.worker-CzwQ13T2.js +0 -21
- package/dist/json.worker-CzwQ13T2.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/editor.worker.js?worker&inline
|
|
2
|
-
var jsContent = "(function() {\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/errors.js\n var ErrorHandler = class {\n constructor() {\n this.listeners = [];\n this.unexpectedErrorHandler = function(e) {\n setTimeout(() => {\n if (e.stack) {\n if (ErrorNoTelemetry.isErrorNoTelemetry(e)) throw new ErrorNoTelemetry(e.message + \"\\n\\n\" + e.stack);\n throw new Error(e.message + \"\\n\\n\" + e.stack);\n }\n throw e;\n }, 0);\n };\n }\n emit(e) {\n this.listeners.forEach((listener) => {\n listener(e);\n });\n }\n onUnexpectedError(e) {\n this.unexpectedErrorHandler(e);\n this.emit(e);\n }\n onUnexpectedExternalError(e) {\n this.unexpectedErrorHandler(e);\n }\n };\n const errorHandler = new ErrorHandler();\n function onUnexpectedError(e) {\n if (!isCancellationError(e)) errorHandler.onUnexpectedError(e);\n }\n function transformErrorForSerialization(error) {\n if (error instanceof Error) {\n const { name, message, cause } = error;\n return {\n $isError: true,\n name,\n message,\n stack: error.stacktrace || error.stack,\n noTelemetry: ErrorNoTelemetry.isErrorNoTelemetry(error),\n cause: cause ? transformErrorForSerialization(cause) : void 0,\n code: error.code\n };\n }\n return error;\n }\n const canceledName = \"Canceled\";\n /**\n * Checks if the given error is a promise in canceled state\n */\n function isCancellationError(error) {\n if (error instanceof CancellationError) return true;\n return error instanceof Error && error.name === \"Canceled\" && error.message === \"Canceled\";\n }\n var CancellationError = class extends Error {\n constructor() {\n super(canceledName);\n this.name = this.message;\n }\n };\n /**\n * Error that when thrown won't be logged in telemetry as an unhandled error.\n */\n var ErrorNoTelemetry = class ErrorNoTelemetry extends Error {\n constructor(msg) {\n super(msg);\n this.name = \"CodeExpectedError\";\n }\n static fromError(err) {\n if (err instanceof ErrorNoTelemetry) return err;\n const result = new ErrorNoTelemetry();\n result.message = err.message;\n result.stack = err.stack;\n return result;\n }\n static isErrorNoTelemetry(err) {\n return err.name === \"CodeExpectedError\";\n }\n };\n /**\n * This error indicates a bug.\n * Do not throw this for invalid user input.\n * Only catch this error to recover gracefully from bugs.\n */\n var BugIndicatingError = class BugIndicatingError extends Error {\n constructor(message) {\n super(message || \"An unexpected bug occurred.\");\n Object.setPrototypeOf(this, BugIndicatingError.prototype);\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/assert.js\n function assertNever(value, message = \"Unreachable\") {\n throw new Error(message);\n }\n /**\n * Asserts that a condition is `truthy`.\n *\n * @throws provided {@linkcode messageOrError} if the {@linkcode condition} is `falsy`.\n *\n * @param condition The condition to assert.\n * @param messageOrError An error message or error object to throw if condition is `falsy`.\n */\n function assert(condition, messageOrError = \"unexpected state\") {\n if (!condition) throw typeof messageOrError === \"string\" ? new BugIndicatingError(`Assertion Failed: ${messageOrError}`) : messageOrError;\n }\n /**\n * condition must be side-effect free!\n */\n function assertFn(condition) {\n if (!condition()) {\n debugger;\n condition();\n onUnexpectedError(new BugIndicatingError(\"Assertion Failed\"));\n }\n }\n function checkAdjacentItems(items, predicate) {\n let i = 0;\n while (i < items.length - 1) {\n const a = items[i];\n const b = items[i + 1];\n if (!predicate(a, b)) return false;\n i++;\n }\n return true;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/types.js\n /**\n * @returns whether the provided parameter is a JavaScript String or not.\n */\n function isString(str) {\n return typeof str === \"string\";\n }\n /**\n * @returns whether the provided parameter is an Iterable, casting to the given generic\n */\n function isIterable(obj) {\n return !!obj && typeof obj[Symbol.iterator] === \"function\";\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/iterator.js\n var Iterable;\n (function(Iterable) {\n function is(thing) {\n return !!thing && typeof thing === \"object\" && typeof thing[Symbol.iterator] === \"function\";\n }\n Iterable.is = is;\n const _empty = Object.freeze([]);\n function empty() {\n return _empty;\n }\n Iterable.empty = empty;\n function* single(element) {\n yield element;\n }\n Iterable.single = single;\n function wrap(iterableOrElement) {\n if (is(iterableOrElement)) return iterableOrElement;\n else return single(iterableOrElement);\n }\n Iterable.wrap = wrap;\n function from(iterable) {\n return iterable || _empty;\n }\n Iterable.from = from;\n function* reverse(array) {\n for (let i = array.length - 1; i >= 0; i--) yield array[i];\n }\n Iterable.reverse = reverse;\n function isEmpty(iterable) {\n return !iterable || iterable[Symbol.iterator]().next().done === true;\n }\n Iterable.isEmpty = isEmpty;\n function first(iterable) {\n return iterable[Symbol.iterator]().next().value;\n }\n Iterable.first = first;\n function some(iterable, predicate) {\n let i = 0;\n for (const element of iterable) if (predicate(element, i++)) return true;\n return false;\n }\n Iterable.some = some;\n function every(iterable, predicate) {\n let i = 0;\n for (const element of iterable) if (!predicate(element, i++)) return false;\n return true;\n }\n Iterable.every = every;\n function find(iterable, predicate) {\n for (const element of iterable) if (predicate(element)) return element;\n }\n Iterable.find = find;\n function* filter(iterable, predicate) {\n for (const element of iterable) if (predicate(element)) yield element;\n }\n Iterable.filter = filter;\n function* map(iterable, fn) {\n let index = 0;\n for (const element of iterable) yield fn(element, index++);\n }\n Iterable.map = map;\n function* flatMap(iterable, fn) {\n let index = 0;\n for (const element of iterable) yield* fn(element, index++);\n }\n Iterable.flatMap = flatMap;\n function* concat(...iterables) {\n for (const item of iterables) if (isIterable(item)) yield* item;\n else yield item;\n }\n Iterable.concat = concat;\n function reduce(iterable, reducer, initialValue) {\n let value = initialValue;\n for (const element of iterable) value = reducer(value, element);\n return value;\n }\n Iterable.reduce = reduce;\n function length(iterable) {\n let count = 0;\n for (const _ of iterable) count++;\n return count;\n }\n Iterable.length = length;\n /**\n * Returns an iterable slice of the array, with the same semantics as `array.slice()`.\n */\n function* slice(arr, from, to = arr.length) {\n if (from < -arr.length) from = 0;\n if (from < 0) from += arr.length;\n if (to < 0) to += arr.length;\n else if (to > arr.length) to = arr.length;\n for (; from < to; from++) yield arr[from];\n }\n Iterable.slice = slice;\n /**\n * Consumes `atMost` elements from iterable and returns the consumed elements,\n * and an iterable for the rest of the elements.\n */\n function consume(iterable, atMost = Number.POSITIVE_INFINITY) {\n const consumed = [];\n if (atMost === 0) return [consumed, iterable];\n const iterator = iterable[Symbol.iterator]();\n for (let i = 0; i < atMost; i++) {\n const next = iterator.next();\n if (next.done) return [consumed, Iterable.empty()];\n consumed.push(next.value);\n }\n return [consumed, { [Symbol.iterator]() {\n return iterator;\n } }];\n }\n Iterable.consume = consume;\n async function asyncToArray(iterable) {\n const result = [];\n for await (const item of iterable) result.push(item);\n return result;\n }\n Iterable.asyncToArray = asyncToArray;\n async function asyncToArrayFlat(iterable) {\n let result = [];\n for await (const item of iterable) result = result.concat(item);\n return result;\n }\n Iterable.asyncToArrayFlat = asyncToArrayFlat;\n })(Iterable || (Iterable = {}));\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\n function dispose(arg) {\n if (Iterable.is(arg)) {\n const errors = [];\n for (const d of arg) if (d) try {\n d.dispose();\n } catch (e) {\n errors.push(e);\n }\n if (errors.length === 1) throw errors[0];\n else if (errors.length > 1) throw new AggregateError(errors, \"Encountered errors while disposing of store\");\n return Array.isArray(arg) ? [] : arg;\n } else if (arg) {\n arg.dispose();\n return arg;\n }\n }\n /**\n * Combine multiple disposable values into a single {@link IDisposable}.\n */\n function combinedDisposable(...disposables) {\n return toDisposable(() => dispose(disposables));\n }\n var FunctionDisposable = class {\n constructor(fn) {\n this._isDisposed = false;\n this._fn = fn;\n }\n dispose() {\n if (this._isDisposed) return;\n if (!this._fn) throw new Error(`Unbound disposable context: Need to use an arrow function to preserve the value of this`);\n this._isDisposed = true;\n this._fn();\n }\n };\n /**\n * Turn a function that implements dispose into an {@link IDisposable}.\n *\n * @param fn Clean up function, guaranteed to be called only **once**.\n */\n function toDisposable(fn) {\n return new FunctionDisposable(fn);\n }\n /**\n * Manages a collection of disposable values.\n *\n * This is the preferred way to manage multiple disposables. A `DisposableStore` is safer to work with than an\n * `IDisposable[]` as it considers edge cases, such as registering the same value multiple times or adding an item to a\n * store that has already been disposed of.\n */\n var DisposableStore = class DisposableStore {\n static {\n this.DISABLE_DISPOSED_WARNING = false;\n }\n constructor() {\n this._toDispose = /* @__PURE__ */ new Set();\n this._isDisposed = false;\n }\n /**\n * Dispose of all registered disposables and mark this object as disposed.\n *\n * Any future disposables added to this object will be disposed of on `add`.\n */\n dispose() {\n if (this._isDisposed) return;\n this._isDisposed = true;\n this.clear();\n }\n /**\n * @return `true` if this object has been disposed of.\n */\n get isDisposed() {\n return this._isDisposed;\n }\n /**\n * Dispose of all registered disposables but do not mark this object as disposed.\n */\n clear() {\n if (this._toDispose.size === 0) return;\n try {\n dispose(this._toDispose);\n } finally {\n this._toDispose.clear();\n }\n }\n /**\n * Add a new {@link IDisposable disposable} to the collection.\n */\n add(o) {\n if (!o || o === Disposable.None) return o;\n if (o === this) throw new Error(\"Cannot register a disposable on itself!\");\n if (this._isDisposed) {\n if (!DisposableStore.DISABLE_DISPOSED_WARNING) console.warn((/* @__PURE__ */ new Error(\"Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!\")).stack);\n } else this._toDispose.add(o);\n return o;\n }\n /**\n * Deletes a disposable from store and disposes of it. This will not throw or warn and proceed to dispose the\n * disposable even when the disposable is not part in the store.\n */\n delete(o) {\n if (!o) return;\n if (o === this) throw new Error(\"Cannot dispose a disposable on itself!\");\n this._toDispose.delete(o);\n o.dispose();\n }\n };\n /**\n * Abstract base class for a {@link IDisposable disposable} object.\n *\n * Subclasses can {@linkcode _register} disposables that will be automatically cleaned up when this object is disposed of.\n */\n var Disposable = class {\n /**\n * A disposable that does nothing when it is disposed of.\n *\n * TODO: This should not be a static property.\n */\n static {\n this.None = Object.freeze({ dispose() {} });\n }\n constructor() {\n this._store = new DisposableStore();\n this._store;\n }\n dispose() {\n this._store.dispose();\n }\n /**\n * Adds `o` to the collection of disposables managed by this object.\n */\n _register(o) {\n if (o === this) throw new Error(\"Cannot register a disposable on itself!\");\n return this._store.add(o);\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/linkedList.js\n var Node = class Node {\n static {\n this.Undefined = new Node(void 0);\n }\n constructor(element) {\n this.element = element;\n this.next = Node.Undefined;\n this.prev = Node.Undefined;\n }\n };\n var LinkedList = class {\n constructor() {\n this._first = Node.Undefined;\n this._last = Node.Undefined;\n this._size = 0;\n }\n get size() {\n return this._size;\n }\n isEmpty() {\n return this._first === Node.Undefined;\n }\n clear() {\n let node = this._first;\n while (node !== Node.Undefined) {\n const next = node.next;\n node.prev = Node.Undefined;\n node.next = Node.Undefined;\n node = next;\n }\n this._first = Node.Undefined;\n this._last = Node.Undefined;\n this._size = 0;\n }\n unshift(element) {\n return this._insert(element, false);\n }\n push(element) {\n return this._insert(element, true);\n }\n _insert(element, atTheEnd) {\n const newNode = new Node(element);\n if (this._first === Node.Undefined) {\n this._first = newNode;\n this._last = newNode;\n } else if (atTheEnd) {\n const oldLast = this._last;\n this._last = newNode;\n newNode.prev = oldLast;\n oldLast.next = newNode;\n } else {\n const oldFirst = this._first;\n this._first = newNode;\n newNode.next = oldFirst;\n oldFirst.prev = newNode;\n }\n this._size += 1;\n let didRemove = false;\n return () => {\n if (!didRemove) {\n didRemove = true;\n this._remove(newNode);\n }\n };\n }\n shift() {\n if (this._first === Node.Undefined) return;\n else {\n const res = this._first.element;\n this._remove(this._first);\n return res;\n }\n }\n pop() {\n if (this._last === Node.Undefined) return;\n else {\n const res = this._last.element;\n this._remove(this._last);\n return res;\n }\n }\n _remove(node) {\n if (node.prev !== Node.Undefined && node.next !== Node.Undefined) {\n const anchor = node.prev;\n anchor.next = node.next;\n node.next.prev = anchor;\n } else if (node.prev === Node.Undefined && node.next === Node.Undefined) {\n this._first = Node.Undefined;\n this._last = Node.Undefined;\n } else if (node.next === Node.Undefined) {\n this._last = this._last.prev;\n this._last.next = Node.Undefined;\n } else if (node.prev === Node.Undefined) {\n this._first = this._first.next;\n this._first.prev = Node.Undefined;\n }\n this._size -= 1;\n }\n *[Symbol.iterator]() {\n let node = this._first;\n while (node !== Node.Undefined) {\n yield node.element;\n node = node.next;\n }\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/stopwatch.js\n const performanceNow = globalThis.performance.now.bind(globalThis.performance);\n var StopWatch = class StopWatch {\n static create(highResolution) {\n return new StopWatch(highResolution);\n }\n constructor(highResolution) {\n this._now = highResolution === false ? Date.now : performanceNow;\n this._startTime = this._now();\n this._stopTime = -1;\n }\n stop() {\n this._stopTime = this._now();\n }\n reset() {\n this._startTime = this._now();\n this._stopTime = -1;\n }\n elapsed() {\n if (this._stopTime !== -1) return this._stopTime - this._startTime;\n return this._now() - this._startTime;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/event.js\n var Event;\n (function(Event) {\n Event.None = () => Disposable.None;\n /**\n * Given an event, returns another event which debounces calls and defers the listeners to a later task via a shared\n * `setTimeout`. The event is converted into a signal (`Event<void>`) to avoid additional object creation as a\n * result of merging events and to try prevent race conditions that could arise when using related deferred and\n * non-deferred events.\n *\n * This is useful for deferring non-critical work (eg. general UI updates) to ensure it does not block critical work\n * (eg. latency of keypress to text rendered).\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n *\n * @param event The event source for the new event.\n * @param disposable A disposable store to add the new EventEmitter to.\n */\n function defer(event, disposable) {\n return debounce(event, () => void 0, 0, void 0, true, void 0, disposable);\n }\n Event.defer = defer;\n /**\n * Given an event, returns another event which only fires once.\n *\n * @param event The event source for the new event.\n */\n function once(event) {\n return (listener, thisArgs = null, disposables) => {\n let didFire = false;\n let result = void 0;\n result = event((e) => {\n if (didFire) return;\n else if (result) result.dispose();\n else didFire = true;\n return listener.call(thisArgs, e);\n }, null, disposables);\n if (didFire) result.dispose();\n return result;\n };\n }\n Event.once = once;\n /**\n * Given an event, returns another event which only fires once, and only when the condition is met.\n *\n * @param event The event source for the new event.\n */\n function onceIf(event, condition) {\n return Event.once(Event.filter(event, condition));\n }\n Event.onceIf = onceIf;\n /**\n * Maps an event of one type into an event of another type using a mapping function, similar to how\n * `Array.prototype.map` works.\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n *\n * @param event The event source for the new event.\n * @param map The mapping function.\n * @param disposable A disposable store to add the new EventEmitter to.\n */\n function map(event, map, disposable) {\n return snapshot((listener, thisArgs = null, disposables) => event((i) => listener.call(thisArgs, map(i)), null, disposables), disposable);\n }\n Event.map = map;\n /**\n * Wraps an event in another event that performs some function on the event object before firing.\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n *\n * @param event The event source for the new event.\n * @param each The function to perform on the event object.\n * @param disposable A disposable store to add the new EventEmitter to.\n */\n function forEach(event, each, disposable) {\n return snapshot((listener, thisArgs = null, disposables) => event((i) => {\n each(i);\n listener.call(thisArgs, i);\n }, null, disposables), disposable);\n }\n Event.forEach = forEach;\n function filter(event, filter, disposable) {\n return snapshot((listener, thisArgs = null, disposables) => event((e) => filter(e) && listener.call(thisArgs, e), null, disposables), disposable);\n }\n Event.filter = filter;\n /**\n * Given an event, returns the same event but typed as `Event<void>`.\n */\n function signal(event) {\n return event;\n }\n Event.signal = signal;\n function any(...events) {\n return (listener, thisArgs = null, disposables) => {\n return addAndReturnDisposable(combinedDisposable(...events.map((event) => event((e) => listener.call(thisArgs, e)))), disposables);\n };\n }\n Event.any = any;\n /**\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n */\n function reduce(event, merge, initial, disposable) {\n let output = initial;\n return map(event, (e) => {\n output = merge(output, e);\n return output;\n }, disposable);\n }\n Event.reduce = reduce;\n function snapshot(event, disposable) {\n let listener;\n const emitter = new Emitter({\n onWillAddFirstListener() {\n listener = event(emitter.fire, emitter);\n },\n onDidRemoveLastListener() {\n listener?.dispose();\n }\n });\n disposable?.add(emitter);\n return emitter.event;\n }\n /**\n * Adds the IDisposable to the store if it's set, and returns it. Useful to\n * Event function implementation.\n */\n function addAndReturnDisposable(d, store) {\n if (store instanceof Array) store.push(d);\n else if (store) store.add(d);\n return d;\n }\n function debounce(event, merge, delay = 100, leading = false, flushOnListenerRemove = false, leakWarningThreshold, disposable) {\n let subscription;\n let output = void 0;\n let handle = void 0;\n let numDebouncedCalls = 0;\n let doFire;\n const emitter = new Emitter({\n leakWarningThreshold,\n onWillAddFirstListener() {\n subscription = event((cur) => {\n numDebouncedCalls++;\n output = merge(output, cur);\n if (leading && !handle) {\n emitter.fire(output);\n output = void 0;\n }\n doFire = () => {\n const _output = output;\n output = void 0;\n handle = void 0;\n if (!leading || numDebouncedCalls > 1) emitter.fire(_output);\n numDebouncedCalls = 0;\n };\n if (typeof delay === \"number\") {\n if (handle) clearTimeout(handle);\n handle = setTimeout(doFire, delay);\n } else if (handle === void 0) {\n handle = null;\n queueMicrotask(doFire);\n }\n });\n },\n onWillRemoveListener() {\n if (flushOnListenerRemove && numDebouncedCalls > 0) doFire?.();\n },\n onDidRemoveLastListener() {\n doFire = void 0;\n subscription.dispose();\n }\n });\n disposable?.add(emitter);\n return emitter.event;\n }\n Event.debounce = debounce;\n /**\n * Debounces an event, firing after some delay (default=0) with an array of all event original objects.\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n */\n function accumulate(event, delay = 0, disposable) {\n return Event.debounce(event, (last, e) => {\n if (!last) return [e];\n last.push(e);\n return last;\n }, delay, void 0, true, void 0, disposable);\n }\n Event.accumulate = accumulate;\n /**\n * Filters an event such that some condition is _not_ met more than once in a row, effectively ensuring duplicate\n * event objects from different sources do not fire the same event object.\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n *\n * @param event The event source for the new event.\n * @param equals The equality condition.\n * @param disposable A disposable store to add the new EventEmitter to.\n *\n * @example\n * ```\n * // Fire only one time when a single window is opened or focused\n * Event.latch(Event.any(onDidOpenWindow, onDidFocusWindow))\n * ```\n */\n function latch(event, equals = (a, b) => a === b, disposable) {\n let firstCall = true;\n let cache;\n return filter(event, (value) => {\n const shouldEmit = firstCall || !equals(value, cache);\n firstCall = false;\n cache = value;\n return shouldEmit;\n }, disposable);\n }\n Event.latch = latch;\n /**\n * Splits an event whose parameter is a union type into 2 separate events for each type in the union.\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n *\n * @example\n * ```\n * const event = new EventEmitter<number | undefined>().event;\n * const [numberEvent, undefinedEvent] = Event.split(event, isUndefined);\n * ```\n *\n * @param event The event source for the new event.\n * @param isT A function that determines what event is of the first type.\n * @param disposable A disposable store to add the new EventEmitter to.\n */\n function split(event, isT, disposable) {\n return [Event.filter(event, isT, disposable), Event.filter(event, (e) => !isT(e), disposable)];\n }\n Event.split = split;\n /**\n * Buffers an event until it has a listener attached.\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n *\n * @param event The event source for the new event.\n * @param flushAfterTimeout Determines whether to flush the buffer after a timeout immediately or after a\n * `setTimeout` when the first event listener is added.\n * @param _buffer Internal: A source event array used for tests.\n *\n * @example\n * ```\n * // Start accumulating events, when the first listener is attached, flush\n * // the event after a timeout such that multiple listeners attached before\n * // the timeout would receive the event\n * this.onInstallExtension = Event.buffer(service.onInstallExtension, true);\n * ```\n */\n function buffer(event, flushAfterTimeout = false, _buffer = [], disposable) {\n let buffer = _buffer.slice();\n let listener = event((e) => {\n if (buffer) buffer.push(e);\n else emitter.fire(e);\n });\n if (disposable) disposable.add(listener);\n const flush = () => {\n buffer?.forEach((e) => emitter.fire(e));\n buffer = null;\n };\n const emitter = new Emitter({\n onWillAddFirstListener() {\n if (!listener) {\n listener = event((e) => emitter.fire(e));\n if (disposable) disposable.add(listener);\n }\n },\n onDidAddFirstListener() {\n if (buffer) if (flushAfterTimeout) setTimeout(flush);\n else flush();\n },\n onDidRemoveLastListener() {\n if (listener) listener.dispose();\n listener = null;\n }\n });\n if (disposable) disposable.add(emitter);\n return emitter.event;\n }\n Event.buffer = buffer;\n /**\n * Wraps the event in an {@link IChainableEvent}, allowing a more functional programming style.\n *\n * @example\n * ```\n * // Normal\n * const onEnterPressNormal = Event.filter(\n * Event.map(onKeyPress.event, e => new StandardKeyboardEvent(e)),\n * e.keyCode === KeyCode.Enter\n * ).event;\n *\n * // Using chain\n * const onEnterPressChain = Event.chain(onKeyPress.event, $ => $\n * .map(e => new StandardKeyboardEvent(e))\n * .filter(e => e.keyCode === KeyCode.Enter)\n * );\n * ```\n */\n function chain(event, sythensize) {\n const fn = (listener, thisArgs, disposables) => {\n const cs = sythensize(new ChainableSynthesis());\n return event(function(value) {\n const result = cs.evaluate(value);\n if (result !== HaltChainable) listener.call(thisArgs, result);\n }, void 0, disposables);\n };\n return fn;\n }\n Event.chain = chain;\n const HaltChainable = Symbol(\"HaltChainable\");\n class ChainableSynthesis {\n constructor() {\n this.steps = [];\n }\n map(fn) {\n this.steps.push(fn);\n return this;\n }\n forEach(fn) {\n this.steps.push((v) => {\n fn(v);\n return v;\n });\n return this;\n }\n filter(fn) {\n this.steps.push((v) => fn(v) ? v : HaltChainable);\n return this;\n }\n reduce(merge, initial) {\n let last = initial;\n this.steps.push((v) => {\n last = merge(last, v);\n return last;\n });\n return this;\n }\n latch(equals = (a, b) => a === b) {\n let firstCall = true;\n let cache;\n this.steps.push((value) => {\n const shouldEmit = firstCall || !equals(value, cache);\n firstCall = false;\n cache = value;\n return shouldEmit ? value : HaltChainable;\n });\n return this;\n }\n evaluate(value) {\n for (const step of this.steps) {\n value = step(value);\n if (value === HaltChainable) break;\n }\n return value;\n }\n }\n /**\n * Creates an {@link Event} from a node event emitter.\n */\n function fromNodeEventEmitter(emitter, eventName, map = (id) => id) {\n const fn = (...args) => result.fire(map(...args));\n const onFirstListenerAdd = () => emitter.on(eventName, fn);\n const onLastListenerRemove = () => emitter.removeListener(eventName, fn);\n const result = new Emitter({\n onWillAddFirstListener: onFirstListenerAdd,\n onDidRemoveLastListener: onLastListenerRemove\n });\n return result.event;\n }\n Event.fromNodeEventEmitter = fromNodeEventEmitter;\n /**\n * Creates an {@link Event} from a DOM event emitter.\n */\n function fromDOMEventEmitter(emitter, eventName, map = (id) => id) {\n const fn = (...args) => result.fire(map(...args));\n const onFirstListenerAdd = () => emitter.addEventListener(eventName, fn);\n const onLastListenerRemove = () => emitter.removeEventListener(eventName, fn);\n const result = new Emitter({\n onWillAddFirstListener: onFirstListenerAdd,\n onDidRemoveLastListener: onLastListenerRemove\n });\n return result.event;\n }\n Event.fromDOMEventEmitter = fromDOMEventEmitter;\n /**\n * Creates a promise out of an event, using the {@link Event.once} helper.\n */\n function toPromise(event, disposables) {\n let cancelRef;\n const promise = new Promise((resolve, reject) => {\n const listener = once(event)(resolve, null, disposables);\n cancelRef = () => listener.dispose();\n });\n promise.cancel = cancelRef;\n return promise;\n }\n Event.toPromise = toPromise;\n /**\n * A convenience function for forwarding an event to another emitter which\n * improves readability.\n *\n * This is similar to {@link Relay} but allows instantiating and forwarding\n * on a single line and also allows for multiple source events.\n * @param from The event to forward.\n * @param to The emitter to forward the event to.\n * @example\n * Event.forward(event, emitter);\n * // equivalent to\n * event(e => emitter.fire(e));\n * // equivalent to\n * event(emitter.fire, emitter);\n */\n function forward(from, to) {\n return from((e) => to.fire(e));\n }\n Event.forward = forward;\n function runAndSubscribe(event, handler, initial) {\n handler(initial);\n return event((e) => handler(e));\n }\n Event.runAndSubscribe = runAndSubscribe;\n class EmitterObserver {\n constructor(_observable, store) {\n this._observable = _observable;\n this._counter = 0;\n this._hasChanged = false;\n const options = {\n onWillAddFirstListener: () => {\n _observable.addObserver(this);\n this._observable.reportChanges();\n },\n onDidRemoveLastListener: () => {\n _observable.removeObserver(this);\n }\n };\n this.emitter = new Emitter(options);\n if (store) store.add(this.emitter);\n }\n beginUpdate(_observable) {\n this._counter++;\n }\n handlePossibleChange(_observable) {}\n handleChange(_observable, _change) {\n this._hasChanged = true;\n }\n endUpdate(_observable) {\n this._counter--;\n if (this._counter === 0) {\n this._observable.reportChanges();\n if (this._hasChanged) {\n this._hasChanged = false;\n this.emitter.fire(this._observable.get());\n }\n }\n }\n }\n /**\n * Creates an event emitter that is fired when the observable changes.\n * Each listeners subscribes to the emitter.\n */\n function fromObservable(obs, store) {\n return new EmitterObserver(obs, store).emitter.event;\n }\n Event.fromObservable = fromObservable;\n /**\n * Each listener is attached to the observable directly.\n */\n function fromObservableLight(observable) {\n return (listener, thisArgs, disposables) => {\n let count = 0;\n let didChange = false;\n const observer = {\n beginUpdate() {\n count++;\n },\n endUpdate() {\n count--;\n if (count === 0) {\n observable.reportChanges();\n if (didChange) {\n didChange = false;\n listener.call(thisArgs);\n }\n }\n },\n handlePossibleChange() {},\n handleChange() {\n didChange = true;\n }\n };\n observable.addObserver(observer);\n observable.reportChanges();\n const disposable = { dispose() {\n observable.removeObserver(observer);\n } };\n if (disposables instanceof DisposableStore) disposables.add(disposable);\n else if (Array.isArray(disposables)) disposables.push(disposable);\n return disposable;\n };\n }\n Event.fromObservableLight = fromObservableLight;\n })(Event || (Event = {}));\n var EventProfiling = class EventProfiling {\n static {\n this.all = /* @__PURE__ */ new Set();\n }\n static {\n this._idPool = 0;\n }\n constructor(name) {\n this.listenerCount = 0;\n this.invocationCount = 0;\n this.elapsedOverall = 0;\n this.durations = [];\n this.name = `${name}_${EventProfiling._idPool++}`;\n EventProfiling.all.add(this);\n }\n start(listenerCount) {\n this._stopWatch = new StopWatch();\n this.listenerCount = listenerCount;\n }\n stop() {\n if (this._stopWatch) {\n const elapsed = this._stopWatch.elapsed();\n this.durations.push(elapsed);\n this.elapsedOverall += elapsed;\n this.invocationCount += 1;\n this._stopWatch = void 0;\n }\n }\n };\n let _globalLeakWarningThreshold = -1;\n var LeakageMonitor = class LeakageMonitor {\n static {\n this._idPool = 1;\n }\n constructor(_errorHandler, threshold, name = (LeakageMonitor._idPool++).toString(16).padStart(3, \"0\")) {\n this._errorHandler = _errorHandler;\n this.threshold = threshold;\n this.name = name;\n this._warnCountdown = 0;\n }\n dispose() {\n this._stacks?.clear();\n }\n check(stack, listenerCount) {\n const threshold = this.threshold;\n if (threshold <= 0 || listenerCount < threshold) return;\n if (!this._stacks) this._stacks = /* @__PURE__ */ new Map();\n const count = this._stacks.get(stack.value) || 0;\n this._stacks.set(stack.value, count + 1);\n this._warnCountdown -= 1;\n if (this._warnCountdown <= 0) {\n this._warnCountdown = threshold * .5;\n const [topStack, topCount] = this.getMostFrequentStack();\n const message = `[${this.name}] potential listener LEAK detected, having ${listenerCount} listeners already. MOST frequent listener (${topCount}):`;\n console.warn(message);\n console.warn(topStack);\n const error = new ListenerLeakError(message, topStack);\n this._errorHandler(error);\n }\n return () => {\n const count = this._stacks.get(stack.value) || 0;\n this._stacks.set(stack.value, count - 1);\n };\n }\n getMostFrequentStack() {\n if (!this._stacks) return;\n let topStack;\n let topCount = 0;\n for (const [stack, count] of this._stacks) if (!topStack || topCount < count) {\n topStack = [stack, count];\n topCount = count;\n }\n return topStack;\n }\n };\n var Stacktrace = class Stacktrace {\n static create() {\n return new Stacktrace((/* @__PURE__ */ new Error()).stack ?? \"\");\n }\n constructor(value) {\n this.value = value;\n }\n print() {\n console.warn(this.value.split(\"\\n\").slice(2).join(\"\\n\"));\n }\n };\n var ListenerLeakError = class extends Error {\n constructor(message, stack) {\n super(message);\n this.name = \"ListenerLeakError\";\n this.stack = stack;\n }\n };\n var ListenerRefusalError = class extends Error {\n constructor(message, stack) {\n super(message);\n this.name = \"ListenerRefusalError\";\n this.stack = stack;\n }\n };\n var UniqueContainer = class {\n constructor(value) {\n this.value = value;\n }\n };\n const compactionThreshold = 2;\n /**\n * The Emitter can be used to expose an Event to the public\n * to fire it from the insides.\n * Sample:\n class Document {\n \n private readonly _onDidChange = new Emitter<(value:string)=>any>();\n \n public onDidChange = this._onDidChange.event;\n \n // getter-style\n // get onDidChange(): Event<(value:string)=>any> {\n // return this._onDidChange.event;\n // }\n \n private _doIt() {\n //...\n this._onDidChange.fire(value);\n }\n }\n */\n var Emitter = class {\n constructor(options) {\n this._size = 0;\n this._options = options;\n this._leakageMon = this._options?.leakWarningThreshold ? new LeakageMonitor(options?.onListenerError ?? onUnexpectedError, this._options?.leakWarningThreshold ?? _globalLeakWarningThreshold) : void 0;\n this._perfMon = this._options?._profName ? new EventProfiling(this._options._profName) : void 0;\n this._deliveryQueue = this._options?.deliveryQueue;\n }\n dispose() {\n if (!this._disposed) {\n this._disposed = true;\n if (this._deliveryQueue?.current === this) this._deliveryQueue.reset();\n if (this._listeners) {\n this._listeners = void 0;\n this._size = 0;\n }\n this._options?.onDidRemoveLastListener?.();\n this._leakageMon?.dispose();\n }\n }\n /**\n * For the public to allow to subscribe\n * to events from this Emitter\n */\n get event() {\n this._event ??= (callback, thisArgs, disposables) => {\n if (this._leakageMon && this._size > this._leakageMon.threshold ** 2) {\n const message = `[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;\n console.warn(message);\n const tuple = this._leakageMon.getMostFrequentStack() ?? [\"UNKNOWN stack\", -1];\n const error = new ListenerRefusalError(`${message}. HINT: Stack shows most frequent listener (${tuple[1]}-times)`, tuple[0]);\n (this._options?.onListenerError || onUnexpectedError)(error);\n return Disposable.None;\n }\n if (this._disposed) return Disposable.None;\n if (thisArgs) callback = callback.bind(thisArgs);\n const contained = new UniqueContainer(callback);\n let removeMonitor;\n if (this._leakageMon && this._size >= Math.ceil(this._leakageMon.threshold * .2)) {\n contained.stack = Stacktrace.create();\n removeMonitor = this._leakageMon.check(contained.stack, this._size + 1);\n }\n if (!this._listeners) {\n this._options?.onWillAddFirstListener?.(this);\n this._listeners = contained;\n this._options?.onDidAddFirstListener?.(this);\n } else if (this._listeners instanceof UniqueContainer) {\n this._deliveryQueue ??= new EventDeliveryQueuePrivate();\n this._listeners = [this._listeners, contained];\n } else this._listeners.push(contained);\n this._options?.onDidAddListener?.(this);\n this._size++;\n const result = toDisposable(() => {\n removeMonitor?.();\n this._removeListener(contained);\n });\n if (disposables instanceof DisposableStore) disposables.add(result);\n else if (Array.isArray(disposables)) disposables.push(result);\n return result;\n };\n return this._event;\n }\n _removeListener(listener) {\n this._options?.onWillRemoveListener?.(this);\n if (!this._listeners) return;\n if (this._size === 1) {\n this._listeners = void 0;\n this._options?.onDidRemoveLastListener?.(this);\n this._size = 0;\n return;\n }\n const listeners = this._listeners;\n const index = listeners.indexOf(listener);\n if (index === -1) {\n console.log(\"disposed?\", this._disposed);\n console.log(\"size?\", this._size);\n console.log(\"arr?\", JSON.stringify(this._listeners));\n throw new Error(\"Attempted to dispose unknown listener\");\n }\n this._size--;\n listeners[index] = void 0;\n const adjustDeliveryQueue = this._deliveryQueue.current === this;\n if (this._size * compactionThreshold <= listeners.length) {\n let n = 0;\n for (let i = 0; i < listeners.length; i++) if (listeners[i]) listeners[n++] = listeners[i];\n else if (adjustDeliveryQueue && n < this._deliveryQueue.end) {\n this._deliveryQueue.end--;\n if (n < this._deliveryQueue.i) this._deliveryQueue.i--;\n }\n listeners.length = n;\n }\n }\n _deliver(listener, value) {\n if (!listener) return;\n const errorHandler = this._options?.onListenerError || onUnexpectedError;\n if (!errorHandler) {\n listener.value(value);\n return;\n }\n try {\n listener.value(value);\n } catch (e) {\n errorHandler(e);\n }\n }\n /** Delivers items in the queue. Assumes the queue is ready to go. */\n _deliverQueue(dq) {\n const listeners = dq.current._listeners;\n while (dq.i < dq.end) this._deliver(listeners[dq.i++], dq.value);\n dq.reset();\n }\n /**\n * To be kept private to fire an event to\n * subscribers\n */\n fire(event) {\n if (this._deliveryQueue?.current) {\n this._deliverQueue(this._deliveryQueue);\n this._perfMon?.stop();\n }\n this._perfMon?.start(this._size);\n if (!this._listeners);\n else if (this._listeners instanceof UniqueContainer) this._deliver(this._listeners, event);\n else {\n const dq = this._deliveryQueue;\n dq.enqueue(this, event, this._listeners.length);\n this._deliverQueue(dq);\n }\n this._perfMon?.stop();\n }\n hasListeners() {\n return this._size > 0;\n }\n };\n var EventDeliveryQueuePrivate = class {\n constructor() {\n /**\n * Index in current's listener list.\n */\n this.i = -1;\n /**\n * The last index in the listener's list to deliver.\n */\n this.end = 0;\n }\n enqueue(emitter, value, end) {\n this.i = 0;\n this.end = end;\n this.current = emitter;\n this.value = value;\n }\n reset() {\n this.i = this.end;\n this.current = void 0;\n this.value = void 0;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/nls.messages.js\n function getNLSMessages() {\n return globalThis._VSCODE_NLS_MESSAGES;\n }\n function getNLSLanguage() {\n return globalThis._VSCODE_NLS_LANGUAGE;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/nls.js\n const isPseudo = getNLSLanguage() === \"pseudo\" || typeof document !== \"undefined\" && document.location && typeof document.location.hash === \"string\" && document.location.hash.indexOf(\"pseudo=true\") >= 0;\n function _format$1(message, args) {\n let result;\n if (args.length === 0) result = message;\n else result = message.replace(/\\{(\\d+)\\}/g, (match, rest) => {\n const arg = args[rest[0]];\n let result = match;\n if (typeof arg === \"string\") result = arg;\n else if (typeof arg === \"number\" || typeof arg === \"boolean\" || arg === void 0 || arg === null) result = String(arg);\n return result;\n });\n if (isPseudo) result = \"[\" + result.replace(/[aouei]/g, \"$&$&\") + \"]\";\n return result;\n }\n /**\n * @skipMangle\n */\n function localize(data, message, ...args) {\n if (typeof data === \"number\") return _format$1(lookupMessage(data, message), args);\n return _format$1(message, args);\n }\n /**\n * Only used when built: Looks up the message in the global NLS table.\n * This table is being made available as a global through bootstrapping\n * depending on the target context.\n */\n function lookupMessage(index, fallback) {\n const message = getNLSMessages()?.[index];\n if (typeof message !== \"string\") {\n if (typeof fallback === \"string\") return fallback;\n throw new Error(`!!! NLS MISSING: ${index} !!!`);\n }\n return message;\n }\n let _isWindows = false;\n let _isMacintosh = false;\n let _isLinux = false;\n let _isWeb = false;\n let _userAgent = void 0;\n const $globalThis = globalThis;\n let nodeProcess = void 0;\n if (typeof $globalThis.vscode !== \"undefined\" && typeof $globalThis.vscode.process !== \"undefined\") nodeProcess = $globalThis.vscode.process;\n else if (typeof process !== \"undefined\" && typeof process?.versions?.node === \"string\") nodeProcess = process;\n const isElectronRenderer = typeof nodeProcess?.versions?.electron === \"string\" && nodeProcess?.type === \"renderer\";\n if (typeof nodeProcess === \"object\") {\n _isWindows = nodeProcess.platform === \"win32\";\n _isMacintosh = nodeProcess.platform === \"darwin\";\n _isLinux = nodeProcess.platform === \"linux\";\n _isLinux && nodeProcess.env[\"SNAP\"] && nodeProcess.env[\"SNAP_REVISION\"];\n nodeProcess.env[\"CI\"] || nodeProcess.env[\"BUILD_ARTIFACTSTAGINGDIRECTORY\"] || nodeProcess.env[\"GITHUB_WORKSPACE\"];\n const rawNlsConfig = nodeProcess.env[\"VSCODE_NLS_CONFIG\"];\n if (rawNlsConfig) try {\n const nlsConfig = JSON.parse(rawNlsConfig);\n nlsConfig.userLocale;\n nlsConfig.osLocale;\n nlsConfig.resolvedLanguage;\n nlsConfig.languagePack?.translationsConfigFile;\n } catch (e) {}\n } else if (typeof navigator === \"object\" && !isElectronRenderer) {\n _userAgent = navigator.userAgent;\n _isWindows = _userAgent.indexOf(\"Windows\") >= 0;\n _isMacintosh = _userAgent.indexOf(\"Macintosh\") >= 0;\n (_userAgent.indexOf(\"Macintosh\") >= 0 || _userAgent.indexOf(\"iPad\") >= 0 || _userAgent.indexOf(\"iPhone\") >= 0) && navigator.maxTouchPoints && navigator.maxTouchPoints;\n _isLinux = _userAgent.indexOf(\"Linux\") >= 0;\n _userAgent?.indexOf(\"Mobi\");\n _isWeb = true;\n getNLSLanguage();\n navigator.language.toLowerCase();\n } else console.error(\"Unable to resolve platform.\");\n if (_isMacintosh);\n else if (_isWindows);\n else if (_isLinux);\n const isWindows = _isWindows;\n const isMacintosh = _isMacintosh;\n _isWeb && typeof $globalThis.importScripts === \"function\" && $globalThis.origin;\n const userAgent = _userAgent;\n const setTimeout0IsFaster = typeof $globalThis.postMessage === \"function\" && !$globalThis.importScripts;\n (() => {\n if (setTimeout0IsFaster) {\n const pending = [];\n $globalThis.addEventListener(\"message\", (e) => {\n if (e.data && e.data.vscodeScheduleAsyncWork) for (let i = 0, len = pending.length; i < len; i++) {\n const candidate = pending[i];\n if (candidate.id === e.data.vscodeScheduleAsyncWork) {\n pending.splice(i, 1);\n candidate.callback();\n return;\n }\n }\n });\n let lastId = 0;\n return (callback) => {\n const myId = ++lastId;\n pending.push({\n id: myId,\n callback\n });\n $globalThis.postMessage({ vscodeScheduleAsyncWork: myId }, \"*\");\n };\n }\n return (callback) => setTimeout(callback);\n })();\n const isChrome = !!(userAgent && userAgent.indexOf(\"Chrome\") >= 0);\n userAgent && userAgent.indexOf(\"Firefox\");\n !isChrome && userAgent && userAgent.indexOf(\"Safari\");\n userAgent && userAgent.indexOf(\"Edg/\");\n userAgent && userAgent.indexOf(\"Android\");\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/cache.js\n function identity(t) {\n return t;\n }\n /**\n * Uses a LRU cache to make a given parametrized function cached.\n * Caches just the last key/value.\n */\n var LRUCachedFunction = class {\n constructor(arg1, arg2) {\n this.lastCache = void 0;\n this.lastArgKey = void 0;\n if (typeof arg1 === \"function\") {\n this._fn = arg1;\n this._computeKey = identity;\n } else {\n this._fn = arg2;\n this._computeKey = arg1.getCacheKey;\n }\n }\n get(arg) {\n const key = this._computeKey(arg);\n if (this.lastArgKey !== key) {\n this.lastArgKey = key;\n this.lastCache = this._fn(arg);\n }\n return this.lastCache;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/lazy.js\n var LazyValueState;\n (function(LazyValueState) {\n LazyValueState[LazyValueState[\"Uninitialized\"] = 0] = \"Uninitialized\";\n LazyValueState[LazyValueState[\"Running\"] = 1] = \"Running\";\n LazyValueState[LazyValueState[\"Completed\"] = 2] = \"Completed\";\n })(LazyValueState || (LazyValueState = {}));\n var Lazy = class {\n constructor(executor) {\n this.executor = executor;\n this._state = LazyValueState.Uninitialized;\n }\n /**\n * Get the wrapped value.\n *\n * This will force evaluation of the lazy value if it has not been resolved yet. Lazy values are only\n * resolved once. `getValue` will re-throw exceptions that are hit while resolving the value\n */\n get value() {\n if (this._state === LazyValueState.Uninitialized) {\n this._state = LazyValueState.Running;\n try {\n this._value = this.executor();\n } catch (err) {\n this._error = err;\n } finally {\n this._state = LazyValueState.Completed;\n }\n } else if (this._state === LazyValueState.Running) throw new Error(\"Cannot read the value of a lazy that is being initialized\");\n if (this._error) throw this._error;\n return this._value;\n }\n /**\n * Get the wrapped value without forcing evaluation.\n */\n get rawValue() {\n return this._value;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/strings.js\n /**\n * Escapes regular expression characters in a given string\n */\n function escapeRegExpCharacters(value) {\n return value.replace(/[\\\\\\{\\}\\*\\+\\?\\|\\^\\$\\.\\[\\]\\(\\)]/g, \"\\\\$&\");\n }\n function regExpLeadsToEndlessLoop(regexp) {\n if (regexp.source === \"^\" || regexp.source === \"^$\" || regexp.source === \"$\" || regexp.source === \"^\\\\s*$\") return false;\n return !!(regexp.exec(\"\") && regexp.lastIndex === 0);\n }\n function splitLines(str) {\n return str.split(/\\r\\n|\\r|\\n/);\n }\n /**\n * Returns first index of the string that is not whitespace.\n * If string is empty or contains only whitespaces, returns -1\n */\n function firstNonWhitespaceIndex(str) {\n for (let i = 0, len = str.length; i < len; i++) {\n const chCode = str.charCodeAt(i);\n if (chCode !== 32 && chCode !== 9) return i;\n }\n return -1;\n }\n /**\n * Returns last index of the string that is not whitespace.\n * If string is empty or contains only whitespaces, returns -1\n */\n function lastNonWhitespaceIndex(str, startIndex = str.length - 1) {\n for (let i = startIndex; i >= 0; i--) {\n const chCode = str.charCodeAt(i);\n if (chCode !== 32 && chCode !== 9) return i;\n }\n return -1;\n }\n function isUpperAsciiLetter(code) {\n return code >= 65 && code <= 90;\n }\n /**\n * @returns the length of the common prefix of the two strings.\n */\n function commonPrefixLength(a, b) {\n const len = Math.min(a.length, b.length);\n let i;\n for (i = 0; i < len; i++) if (a.charCodeAt(i) !== b.charCodeAt(i)) return i;\n return len;\n }\n /**\n * @returns the length of the common suffix of the two strings.\n */\n function commonSuffixLength(a, b) {\n const len = Math.min(a.length, b.length);\n let i;\n const aLastIndex = a.length - 1;\n const bLastIndex = b.length - 1;\n for (i = 0; i < len; i++) if (a.charCodeAt(aLastIndex - i) !== b.charCodeAt(bLastIndex - i)) return i;\n return len;\n }\n /**\n * See http://en.wikipedia.org/wiki/Surrogate_pair\n */\n function isHighSurrogate(charCode) {\n return 55296 <= charCode && charCode <= 56319;\n }\n /**\n * See http://en.wikipedia.org/wiki/Surrogate_pair\n */\n function isLowSurrogate(charCode) {\n return 56320 <= charCode && charCode <= 57343;\n }\n /**\n * See http://en.wikipedia.org/wiki/Surrogate_pair\n */\n function computeCodePoint(highSurrogate, lowSurrogate) {\n return (highSurrogate - 55296 << 10) + (lowSurrogate - 56320) + 65536;\n }\n /**\n * get the code point that begins at offset `offset`\n */\n function getNextCodePoint(str, len, offset) {\n const charCode = str.charCodeAt(offset);\n if (isHighSurrogate(charCode) && offset + 1 < len) {\n const nextCharCode = str.charCodeAt(offset + 1);\n if (isLowSurrogate(nextCharCode)) return computeCodePoint(charCode, nextCharCode);\n }\n return charCode;\n }\n const IS_BASIC_ASCII = /^[\\t\\n\\r\\x20-\\x7E]*$/;\n /**\n * Returns true if `str` contains only basic ASCII characters in the range 32 - 126 (including 32 and 126) or \\n, \\r, \\t\n */\n function isBasicASCII(str) {\n return IS_BASIC_ASCII.test(str);\n }\n (class GraphemeBreakTree {\n static {\n this._INSTANCE = null;\n }\n static getInstance() {\n if (!GraphemeBreakTree._INSTANCE) GraphemeBreakTree._INSTANCE = new GraphemeBreakTree();\n return GraphemeBreakTree._INSTANCE;\n }\n constructor() {\n this._data = getGraphemeBreakRawData();\n }\n getGraphemeBreakType(codePoint) {\n if (codePoint < 32) {\n if (codePoint === 10) return 3;\n if (codePoint === 13) return 2;\n return 4;\n }\n if (codePoint < 127) return 0;\n const data = this._data;\n const nodeCount = data.length / 3;\n let nodeIndex = 1;\n while (nodeIndex <= nodeCount) if (codePoint < data[3 * nodeIndex]) nodeIndex = 2 * nodeIndex;\n else if (codePoint > data[3 * nodeIndex + 1]) nodeIndex = 2 * nodeIndex + 1;\n else return data[3 * nodeIndex + 2];\n return 0;\n }\n });\n function getGraphemeBreakRawData() {\n return JSON.parse(\"[0,0,0,51229,51255,12,44061,44087,12,127462,127487,6,7083,7085,5,47645,47671,12,54813,54839,12,128678,128678,14,3270,3270,5,9919,9923,14,45853,45879,12,49437,49463,12,53021,53047,12,71216,71218,7,128398,128399,14,129360,129374,14,2519,2519,5,4448,4519,9,9742,9742,14,12336,12336,14,44957,44983,12,46749,46775,12,48541,48567,12,50333,50359,12,52125,52151,12,53917,53943,12,69888,69890,5,73018,73018,5,127990,127990,14,128558,128559,14,128759,128760,14,129653,129655,14,2027,2035,5,2891,2892,7,3761,3761,5,6683,6683,5,8293,8293,4,9825,9826,14,9999,9999,14,43452,43453,5,44509,44535,12,45405,45431,12,46301,46327,12,47197,47223,12,48093,48119,12,48989,49015,12,49885,49911,12,50781,50807,12,51677,51703,12,52573,52599,12,53469,53495,12,54365,54391,12,65279,65279,4,70471,70472,7,72145,72147,7,119173,119179,5,127799,127818,14,128240,128244,14,128512,128512,14,128652,128652,14,128721,128722,14,129292,129292,14,129445,129450,14,129734,129743,14,1476,1477,5,2366,2368,7,2750,2752,7,3076,3076,5,3415,3415,5,4141,4144,5,6109,6109,5,6964,6964,5,7394,7400,5,9197,9198,14,9770,9770,14,9877,9877,14,9968,9969,14,10084,10084,14,43052,43052,5,43713,43713,5,44285,44311,12,44733,44759,12,45181,45207,12,45629,45655,12,46077,46103,12,46525,46551,12,46973,46999,12,47421,47447,12,47869,47895,12,48317,48343,12,48765,48791,12,49213,49239,12,49661,49687,12,50109,50135,12,50557,50583,12,51005,51031,12,51453,51479,12,51901,51927,12,52349,52375,12,52797,52823,12,53245,53271,12,53693,53719,12,54141,54167,12,54589,54615,12,55037,55063,12,69506,69509,5,70191,70193,5,70841,70841,7,71463,71467,5,72330,72342,5,94031,94031,5,123628,123631,5,127763,127765,14,127941,127941,14,128043,128062,14,128302,128317,14,128465,128467,14,128539,128539,14,128640,128640,14,128662,128662,14,128703,128703,14,128745,128745,14,129004,129007,14,129329,129330,14,129402,129402,14,129483,129483,14,129686,129704,14,130048,131069,14,173,173,4,1757,1757,1,2200,2207,5,2434,2435,7,2631,2632,5,2817,2817,5,3008,3008,5,3201,3201,5,3387,3388,5,3542,3542,5,3902,3903,7,4190,4192,5,6002,6003,5,6439,6440,5,6765,6770,7,7019,7027,5,7154,7155,7,8205,8205,13,8505,8505,14,9654,9654,14,9757,9757,14,9792,9792,14,9852,9853,14,9890,9894,14,9937,9937,14,9981,9981,14,10035,10036,14,11035,11036,14,42654,42655,5,43346,43347,7,43587,43587,5,44006,44007,7,44173,44199,12,44397,44423,12,44621,44647,12,44845,44871,12,45069,45095,12,45293,45319,12,45517,45543,12,45741,45767,12,45965,45991,12,46189,46215,12,46413,46439,12,46637,46663,12,46861,46887,12,47085,47111,12,47309,47335,12,47533,47559,12,47757,47783,12,47981,48007,12,48205,48231,12,48429,48455,12,48653,48679,12,48877,48903,12,49101,49127,12,49325,49351,12,49549,49575,12,49773,49799,12,49997,50023,12,50221,50247,12,50445,50471,12,50669,50695,12,50893,50919,12,51117,51143,12,51341,51367,12,51565,51591,12,51789,51815,12,52013,52039,12,52237,52263,12,52461,52487,12,52685,52711,12,52909,52935,12,53133,53159,12,53357,53383,12,53581,53607,12,53805,53831,12,54029,54055,12,54253,54279,12,54477,54503,12,54701,54727,12,54925,54951,12,55149,55175,12,68101,68102,5,69762,69762,7,70067,70069,7,70371,70378,5,70720,70721,7,71087,71087,5,71341,71341,5,71995,71996,5,72249,72249,7,72850,72871,5,73109,73109,5,118576,118598,5,121505,121519,5,127245,127247,14,127568,127569,14,127777,127777,14,127872,127891,14,127956,127967,14,128015,128016,14,128110,128172,14,128259,128259,14,128367,128368,14,128424,128424,14,128488,128488,14,128530,128532,14,128550,128551,14,128566,128566,14,128647,128647,14,128656,128656,14,128667,128673,14,128691,128693,14,128715,128715,14,128728,128732,14,128752,128752,14,128765,128767,14,129096,129103,14,129311,129311,14,129344,129349,14,129394,129394,14,129413,129425,14,129466,129471,14,129511,129535,14,129664,129666,14,129719,129722,14,129760,129767,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2307,2307,7,2382,2383,7,2497,2500,5,2563,2563,7,2677,2677,5,2763,2764,7,2879,2879,5,2914,2915,5,3021,3021,5,3142,3144,5,3263,3263,5,3285,3286,5,3398,3400,7,3530,3530,5,3633,3633,5,3864,3865,5,3974,3975,5,4155,4156,7,4229,4230,5,5909,5909,7,6078,6085,7,6277,6278,5,6451,6456,7,6744,6750,5,6846,6846,5,6972,6972,5,7074,7077,5,7146,7148,7,7222,7223,5,7416,7417,5,8234,8238,4,8417,8417,5,9000,9000,14,9203,9203,14,9730,9731,14,9748,9749,14,9762,9763,14,9776,9783,14,9800,9811,14,9831,9831,14,9872,9873,14,9882,9882,14,9900,9903,14,9929,9933,14,9941,9960,14,9974,9974,14,9989,9989,14,10006,10006,14,10062,10062,14,10160,10160,14,11647,11647,5,12953,12953,14,43019,43019,5,43232,43249,5,43443,43443,5,43567,43568,7,43696,43696,5,43765,43765,7,44013,44013,5,44117,44143,12,44229,44255,12,44341,44367,12,44453,44479,12,44565,44591,12,44677,44703,12,44789,44815,12,44901,44927,12,45013,45039,12,45125,45151,12,45237,45263,12,45349,45375,12,45461,45487,12,45573,45599,12,45685,45711,12,45797,45823,12,45909,45935,12,46021,46047,12,46133,46159,12,46245,46271,12,46357,46383,12,46469,46495,12,46581,46607,12,46693,46719,12,46805,46831,12,46917,46943,12,47029,47055,12,47141,47167,12,47253,47279,12,47365,47391,12,47477,47503,12,47589,47615,12,47701,47727,12,47813,47839,12,47925,47951,12,48037,48063,12,48149,48175,12,48261,48287,12,48373,48399,12,48485,48511,12,48597,48623,12,48709,48735,12,48821,48847,12,48933,48959,12,49045,49071,12,49157,49183,12,49269,49295,12,49381,49407,12,49493,49519,12,49605,49631,12,49717,49743,12,49829,49855,12,49941,49967,12,50053,50079,12,50165,50191,12,50277,50303,12,50389,50415,12,50501,50527,12,50613,50639,12,50725,50751,12,50837,50863,12,50949,50975,12,51061,51087,12,51173,51199,12,51285,51311,12,51397,51423,12,51509,51535,12,51621,51647,12,51733,51759,12,51845,51871,12,51957,51983,12,52069,52095,12,52181,52207,12,52293,52319,12,52405,52431,12,52517,52543,12,52629,52655,12,52741,52767,12,52853,52879,12,52965,52991,12,53077,53103,12,53189,53215,12,53301,53327,12,53413,53439,12,53525,53551,12,53637,53663,12,53749,53775,12,53861,53887,12,53973,53999,12,54085,54111,12,54197,54223,12,54309,54335,12,54421,54447,12,54533,54559,12,54645,54671,12,54757,54783,12,54869,54895,12,54981,55007,12,55093,55119,12,55243,55291,10,66045,66045,5,68325,68326,5,69688,69702,5,69817,69818,5,69957,69958,7,70089,70092,5,70198,70199,5,70462,70462,5,70502,70508,5,70750,70750,5,70846,70846,7,71100,71101,5,71230,71230,7,71351,71351,5,71737,71738,5,72000,72000,7,72160,72160,5,72273,72278,5,72752,72758,5,72882,72883,5,73031,73031,5,73461,73462,7,94192,94193,7,119149,119149,7,121403,121452,5,122915,122916,5,126980,126980,14,127358,127359,14,127535,127535,14,127759,127759,14,127771,127771,14,127792,127793,14,127825,127867,14,127897,127899,14,127945,127945,14,127985,127986,14,128000,128007,14,128021,128021,14,128066,128100,14,128184,128235,14,128249,128252,14,128266,128276,14,128335,128335,14,128379,128390,14,128407,128419,14,128444,128444,14,128481,128481,14,128499,128499,14,128526,128526,14,128536,128536,14,128543,128543,14,128556,128556,14,128564,128564,14,128577,128580,14,128643,128645,14,128649,128649,14,128654,128654,14,128660,128660,14,128664,128664,14,128675,128675,14,128686,128689,14,128695,128696,14,128705,128709,14,128717,128719,14,128725,128725,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129009,129023,14,129160,129167,14,129296,129304,14,129320,129327,14,129340,129342,14,129356,129356,14,129388,129392,14,129399,129400,14,129404,129407,14,129432,129442,14,129454,129455,14,129473,129474,14,129485,129487,14,129648,129651,14,129659,129660,14,129671,129679,14,129709,129711,14,129728,129730,14,129751,129753,14,129776,129782,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,2274,2274,1,2363,2363,7,2377,2380,7,2402,2403,5,2494,2494,5,2507,2508,7,2558,2558,5,2622,2624,7,2641,2641,5,2691,2691,7,2759,2760,5,2786,2787,5,2876,2876,5,2881,2884,5,2901,2902,5,3006,3006,5,3014,3016,7,3072,3072,5,3134,3136,5,3157,3158,5,3260,3260,5,3266,3266,5,3274,3275,7,3328,3329,5,3391,3392,7,3405,3405,5,3457,3457,5,3536,3537,7,3551,3551,5,3636,3642,5,3764,3772,5,3895,3895,5,3967,3967,7,3993,4028,5,4146,4151,5,4182,4183,7,4226,4226,5,4253,4253,5,4957,4959,5,5940,5940,7,6070,6070,7,6087,6088,7,6158,6158,4,6432,6434,5,6448,6449,7,6679,6680,5,6742,6742,5,6754,6754,5,6783,6783,5,6912,6915,5,6966,6970,5,6978,6978,5,7042,7042,7,7080,7081,5,7143,7143,7,7150,7150,7,7212,7219,5,7380,7392,5,7412,7412,5,8203,8203,4,8232,8232,4,8265,8265,14,8400,8412,5,8421,8432,5,8617,8618,14,9167,9167,14,9200,9200,14,9410,9410,14,9723,9726,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9774,14,9786,9786,14,9794,9794,14,9823,9823,14,9828,9828,14,9833,9850,14,9855,9855,14,9875,9875,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9935,9935,14,9939,9939,14,9962,9962,14,9972,9972,14,9978,9978,14,9986,9986,14,9997,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10133,10135,14,10548,10549,14,11093,11093,14,12330,12333,5,12441,12442,5,42608,42610,5,43010,43010,5,43045,43046,5,43188,43203,7,43302,43309,5,43392,43394,5,43446,43449,5,43493,43493,5,43571,43572,7,43597,43597,7,43703,43704,5,43756,43757,5,44003,44004,7,44009,44010,7,44033,44059,12,44089,44115,12,44145,44171,12,44201,44227,12,44257,44283,12,44313,44339,12,44369,44395,12,44425,44451,12,44481,44507,12,44537,44563,12,44593,44619,12,44649,44675,12,44705,44731,12,44761,44787,12,44817,44843,12,44873,44899,12,44929,44955,12,44985,45011,12,45041,45067,12,45097,45123,12,45153,45179,12,45209,45235,12,45265,45291,12,45321,45347,12,45377,45403,12,45433,45459,12,45489,45515,12,45545,45571,12,45601,45627,12,45657,45683,12,45713,45739,12,45769,45795,12,45825,45851,12,45881,45907,12,45937,45963,12,45993,46019,12,46049,46075,12,46105,46131,12,46161,46187,12,46217,46243,12,46273,46299,12,46329,46355,12,46385,46411,12,46441,46467,12,46497,46523,12,46553,46579,12,46609,46635,12,46665,46691,12,46721,46747,12,46777,46803,12,46833,46859,12,46889,46915,12,46945,46971,12,47001,47027,12,47057,47083,12,47113,47139,12,47169,47195,12,47225,47251,12,47281,47307,12,47337,47363,12,47393,47419,12,47449,47475,12,47505,47531,12,47561,47587,12,47617,47643,12,47673,47699,12,47729,47755,12,47785,47811,12,47841,47867,12,47897,47923,12,47953,47979,12,48009,48035,12,48065,48091,12,48121,48147,12,48177,48203,12,48233,48259,12,48289,48315,12,48345,48371,12,48401,48427,12,48457,48483,12,48513,48539,12,48569,48595,12,48625,48651,12,48681,48707,12,48737,48763,12,48793,48819,12,48849,48875,12,48905,48931,12,48961,48987,12,49017,49043,12,49073,49099,12,49129,49155,12,49185,49211,12,49241,49267,12,49297,49323,12,49353,49379,12,49409,49435,12,49465,49491,12,49521,49547,12,49577,49603,12,49633,49659,12,49689,49715,12,49745,49771,12,49801,49827,12,49857,49883,12,49913,49939,12,49969,49995,12,50025,50051,12,50081,50107,12,50137,50163,12,50193,50219,12,50249,50275,12,50305,50331,12,50361,50387,12,50417,50443,12,50473,50499,12,50529,50555,12,50585,50611,12,50641,50667,12,50697,50723,12,50753,50779,12,50809,50835,12,50865,50891,12,50921,50947,12,50977,51003,12,51033,51059,12,51089,51115,12,51145,51171,12,51201,51227,12,51257,51283,12,51313,51339,12,51369,51395,12,51425,51451,12,51481,51507,12,51537,51563,12,51593,51619,12,51649,51675,12,51705,51731,12,51761,51787,12,51817,51843,12,51873,51899,12,51929,51955,12,51985,52011,12,52041,52067,12,52097,52123,12,52153,52179,12,52209,52235,12,52265,52291,12,52321,52347,12,52377,52403,12,52433,52459,12,52489,52515,12,52545,52571,12,52601,52627,12,52657,52683,12,52713,52739,12,52769,52795,12,52825,52851,12,52881,52907,12,52937,52963,12,52993,53019,12,53049,53075,12,53105,53131,12,53161,53187,12,53217,53243,12,53273,53299,12,53329,53355,12,53385,53411,12,53441,53467,12,53497,53523,12,53553,53579,12,53609,53635,12,53665,53691,12,53721,53747,12,53777,53803,12,53833,53859,12,53889,53915,12,53945,53971,12,54001,54027,12,54057,54083,12,54113,54139,12,54169,54195,12,54225,54251,12,54281,54307,12,54337,54363,12,54393,54419,12,54449,54475,12,54505,54531,12,54561,54587,12,54617,54643,12,54673,54699,12,54729,54755,12,54785,54811,12,54841,54867,12,54897,54923,12,54953,54979,12,55009,55035,12,55065,55091,12,55121,55147,12,55177,55203,12,65024,65039,5,65520,65528,4,66422,66426,5,68152,68154,5,69291,69292,5,69633,69633,5,69747,69748,5,69811,69814,5,69826,69826,5,69932,69932,7,70016,70017,5,70079,70080,7,70095,70095,5,70196,70196,5,70367,70367,5,70402,70403,7,70464,70464,5,70487,70487,5,70709,70711,7,70725,70725,7,70833,70834,7,70843,70844,7,70849,70849,7,71090,71093,5,71103,71104,5,71227,71228,7,71339,71339,5,71344,71349,5,71458,71461,5,71727,71735,5,71985,71989,7,71998,71998,5,72002,72002,7,72154,72155,5,72193,72202,5,72251,72254,5,72281,72283,5,72344,72345,5,72766,72766,7,72874,72880,5,72885,72886,5,73023,73029,5,73104,73105,5,73111,73111,5,92912,92916,5,94095,94098,5,113824,113827,4,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,125252,125258,5,127183,127183,14,127340,127343,14,127377,127386,14,127491,127503,14,127548,127551,14,127744,127756,14,127761,127761,14,127769,127769,14,127773,127774,14,127780,127788,14,127796,127797,14,127820,127823,14,127869,127869,14,127894,127895,14,127902,127903,14,127943,127943,14,127947,127950,14,127972,127972,14,127988,127988,14,127992,127994,14,128009,128011,14,128019,128019,14,128023,128041,14,128064,128064,14,128102,128107,14,128174,128181,14,128238,128238,14,128246,128247,14,128254,128254,14,128264,128264,14,128278,128299,14,128329,128330,14,128348,128359,14,128371,128377,14,128392,128393,14,128401,128404,14,128421,128421,14,128433,128434,14,128450,128452,14,128476,128478,14,128483,128483,14,128495,128495,14,128506,128506,14,128519,128520,14,128528,128528,14,128534,128534,14,128538,128538,14,128540,128542,14,128544,128549,14,128552,128555,14,128557,128557,14,128560,128563,14,128565,128565,14,128567,128576,14,128581,128591,14,128641,128642,14,128646,128646,14,128648,128648,14,128650,128651,14,128653,128653,14,128655,128655,14,128657,128659,14,128661,128661,14,128663,128663,14,128665,128666,14,128674,128674,14,128676,128677,14,128679,128685,14,128690,128690,14,128694,128694,14,128697,128702,14,128704,128704,14,128710,128714,14,128716,128716,14,128720,128720,14,128723,128724,14,128726,128727,14,128733,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,129008,129008,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,129661,129663,14,129667,129670,14,129680,129685,14,129705,129708,14,129712,129718,14,129723,129727,14,129731,129733,14,129744,129750,14,129754,129759,14,129768,129775,14,129783,129791,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,2192,2193,1,2250,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,3132,3132,5,3137,3140,7,3146,3149,5,3170,3171,5,3202,3203,7,3262,3262,7,3264,3265,7,3267,3268,7,3271,3272,7,3276,3277,5,3298,3299,5,3330,3331,7,3390,3390,5,3393,3396,5,3402,3404,7,3406,3406,1,3426,3427,5,3458,3459,7,3535,3535,5,3538,3540,5,3544,3550,7,3570,3571,7,3635,3635,7,3655,3662,5,3763,3763,7,3784,3789,5,3893,3893,5,3897,3897,5,3953,3966,5,3968,3972,5,3981,3991,5,4038,4038,5,4145,4145,7,4153,4154,5,4157,4158,5,4184,4185,5,4209,4212,5,4228,4228,7,4237,4237,5,4352,4447,8,4520,4607,10,5906,5908,5,5938,5939,5,5970,5971,5,6068,6069,5,6071,6077,5,6086,6086,5,6089,6099,5,6155,6157,5,6159,6159,5,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,6862,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,7679,5,8204,8204,5,8206,8207,4,8233,8233,4,8252,8252,14,8288,8292,4,8294,8303,4,8413,8416,5,8418,8420,5,8482,8482,14,8596,8601,14,8986,8987,14,9096,9096,14,9193,9196,14,9199,9199,14,9201,9202,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9729,14,9732,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,9775,9775,14,9784,9785,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,9874,14,9876,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,9934,14,9936,9936,14,9938,9938,14,9940,9940,14,9961,9961,14,9963,9967,14,9970,9971,14,9973,9973,14,9975,9977,14,9979,9980,14,9982,9985,14,9987,9988,14,9992,9996,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,10083,14,10085,10087,14,10145,10145,14,10175,10175,14,11013,11015,14,11088,11088,14,11503,11505,5,11744,11775,5,12334,12335,5,12349,12349,14,12951,12951,14,42607,42607,5,42612,42621,5,42736,42737,5,43014,43014,5,43043,43044,7,43047,43047,7,43136,43137,7,43204,43205,5,43263,43263,5,43335,43345,5,43360,43388,8,43395,43395,7,43444,43445,7,43450,43451,7,43454,43456,7,43561,43566,5,43569,43570,5,43573,43574,5,43596,43596,5,43644,43644,5,43698,43700,5,43710,43711,5,43755,43755,7,43758,43759,7,43766,43766,5,44005,44005,5,44008,44008,5,44012,44012,7,44032,44032,11,44060,44060,11,44088,44088,11,44116,44116,11,44144,44144,11,44172,44172,11,44200,44200,11,44228,44228,11,44256,44256,11,44284,44284,11,44312,44312,11,44340,44340,11,44368,44368,11,44396,44396,11,44424,44424,11,44452,44452,11,44480,44480,11,44508,44508,11,44536,44536,11,44564,44564,11,44592,44592,11,44620,44620,11,44648,44648,11,44676,44676,11,44704,44704,11,44732,44732,11,44760,44760,11,44788,44788,11,44816,44816,11,44844,44844,11,44872,44872,11,44900,44900,11,44928,44928,11,44956,44956,11,44984,44984,11,45012,45012,11,45040,45040,11,45068,45068,11,45096,45096,11,45124,45124,11,45152,45152,11,45180,45180,11,45208,45208,11,45236,45236,11,45264,45264,11,45292,45292,11,45320,45320,11,45348,45348,11,45376,45376,11,45404,45404,11,45432,45432,11,45460,45460,11,45488,45488,11,45516,45516,11,45544,45544,11,45572,45572,11,45600,45600,11,45628,45628,11,45656,45656,11,45684,45684,11,45712,45712,11,45740,45740,11,45768,45768,11,45796,45796,11,45824,45824,11,45852,45852,11,45880,45880,11,45908,45908,11,45936,45936,11,45964,45964,11,45992,45992,11,46020,46020,11,46048,46048,11,46076,46076,11,46104,46104,11,46132,46132,11,46160,46160,11,46188,46188,11,46216,46216,11,46244,46244,11,46272,46272,11,46300,46300,11,46328,46328,11,46356,46356,11,46384,46384,11,46412,46412,11,46440,46440,11,46468,46468,11,46496,46496,11,46524,46524,11,46552,46552,11,46580,46580,11,46608,46608,11,46636,46636,11,46664,46664,11,46692,46692,11,46720,46720,11,46748,46748,11,46776,46776,11,46804,46804,11,46832,46832,11,46860,46860,11,46888,46888,11,46916,46916,11,46944,46944,11,46972,46972,11,47000,47000,11,47028,47028,11,47056,47056,11,47084,47084,11,47112,47112,11,47140,47140,11,47168,47168,11,47196,47196,11,47224,47224,11,47252,47252,11,47280,47280,11,47308,47308,11,47336,47336,11,47364,47364,11,47392,47392,11,47420,47420,11,47448,47448,11,47476,47476,11,47504,47504,11,47532,47532,11,47560,47560,11,47588,47588,11,47616,47616,11,47644,47644,11,47672,47672,11,47700,47700,11,47728,47728,11,47756,47756,11,47784,47784,11,47812,47812,11,47840,47840,11,47868,47868,11,47896,47896,11,47924,47924,11,47952,47952,11,47980,47980,11,48008,48008,11,48036,48036,11,48064,48064,11,48092,48092,11,48120,48120,11,48148,48148,11,48176,48176,11,48204,48204,11,48232,48232,11,48260,48260,11,48288,48288,11,48316,48316,11,48344,48344,11,48372,48372,11,48400,48400,11,48428,48428,11,48456,48456,11,48484,48484,11,48512,48512,11,48540,48540,11,48568,48568,11,48596,48596,11,48624,48624,11,48652,48652,11,48680,48680,11,48708,48708,11,48736,48736,11,48764,48764,11,48792,48792,11,48820,48820,11,48848,48848,11,48876,48876,11,48904,48904,11,48932,48932,11,48960,48960,11,48988,48988,11,49016,49016,11,49044,49044,11,49072,49072,11,49100,49100,11,49128,49128,11,49156,49156,11,49184,49184,11,49212,49212,11,49240,49240,11,49268,49268,11,49296,49296,11,49324,49324,11,49352,49352,11,49380,49380,11,49408,49408,11,49436,49436,11,49464,49464,11,49492,49492,11,49520,49520,11,49548,49548,11,49576,49576,11,49604,49604,11,49632,49632,11,49660,49660,11,49688,49688,11,49716,49716,11,49744,49744,11,49772,49772,11,49800,49800,11,49828,49828,11,49856,49856,11,49884,49884,11,49912,49912,11,49940,49940,11,49968,49968,11,49996,49996,11,50024,50024,11,50052,50052,11,50080,50080,11,50108,50108,11,50136,50136,11,50164,50164,11,50192,50192,11,50220,50220,11,50248,50248,11,50276,50276,11,50304,50304,11,50332,50332,11,50360,50360,11,50388,50388,11,50416,50416,11,50444,50444,11,50472,50472,11,50500,50500,11,50528,50528,11,50556,50556,11,50584,50584,11,50612,50612,11,50640,50640,11,50668,50668,11,50696,50696,11,50724,50724,11,50752,50752,11,50780,50780,11,50808,50808,11,50836,50836,11,50864,50864,11,50892,50892,11,50920,50920,11,50948,50948,11,50976,50976,11,51004,51004,11,51032,51032,11,51060,51060,11,51088,51088,11,51116,51116,11,51144,51144,11,51172,51172,11,51200,51200,11,51228,51228,11,51256,51256,11,51284,51284,11,51312,51312,11,51340,51340,11,51368,51368,11,51396,51396,11,51424,51424,11,51452,51452,11,51480,51480,11,51508,51508,11,51536,51536,11,51564,51564,11,51592,51592,11,51620,51620,11,51648,51648,11,51676,51676,11,51704,51704,11,51732,51732,11,51760,51760,11,51788,51788,11,51816,51816,11,51844,51844,11,51872,51872,11,51900,51900,11,51928,51928,11,51956,51956,11,51984,51984,11,52012,52012,11,52040,52040,11,52068,52068,11,52096,52096,11,52124,52124,11,52152,52152,11,52180,52180,11,52208,52208,11,52236,52236,11,52264,52264,11,52292,52292,11,52320,52320,11,52348,52348,11,52376,52376,11,52404,52404,11,52432,52432,11,52460,52460,11,52488,52488,11,52516,52516,11,52544,52544,11,52572,52572,11,52600,52600,11,52628,52628,11,52656,52656,11,52684,52684,11,52712,52712,11,52740,52740,11,52768,52768,11,52796,52796,11,52824,52824,11,52852,52852,11,52880,52880,11,52908,52908,11,52936,52936,11,52964,52964,11,52992,52992,11,53020,53020,11,53048,53048,11,53076,53076,11,53104,53104,11,53132,53132,11,53160,53160,11,53188,53188,11,53216,53216,11,53244,53244,11,53272,53272,11,53300,53300,11,53328,53328,11,53356,53356,11,53384,53384,11,53412,53412,11,53440,53440,11,53468,53468,11,53496,53496,11,53524,53524,11,53552,53552,11,53580,53580,11,53608,53608,11,53636,53636,11,53664,53664,11,53692,53692,11,53720,53720,11,53748,53748,11,53776,53776,11,53804,53804,11,53832,53832,11,53860,53860,11,53888,53888,11,53916,53916,11,53944,53944,11,53972,53972,11,54000,54000,11,54028,54028,11,54056,54056,11,54084,54084,11,54112,54112,11,54140,54140,11,54168,54168,11,54196,54196,11,54224,54224,11,54252,54252,11,54280,54280,11,54308,54308,11,54336,54336,11,54364,54364,11,54392,54392,11,54420,54420,11,54448,54448,11,54476,54476,11,54504,54504,11,54532,54532,11,54560,54560,11,54588,54588,11,54616,54616,11,54644,54644,11,54672,54672,11,54700,54700,11,54728,54728,11,54756,54756,11,54784,54784,11,54812,54812,11,54840,54840,11,54868,54868,11,54896,54896,11,54924,54924,11,54952,54952,11,54980,54980,11,55008,55008,11,55036,55036,11,55064,55064,11,55092,55092,11,55120,55120,11,55148,55148,11,55176,55176,11,55216,55238,9,64286,64286,5,65056,65071,5,65438,65439,5,65529,65531,4,66272,66272,5,68097,68099,5,68108,68111,5,68159,68159,5,68900,68903,5,69446,69456,5,69632,69632,7,69634,69634,7,69744,69744,5,69759,69761,5,69808,69810,7,69815,69816,7,69821,69821,1,69837,69837,1,69927,69931,5,69933,69940,5,70003,70003,5,70018,70018,7,70070,70078,5,70082,70083,1,70094,70094,7,70188,70190,7,70194,70195,7,70197,70197,7,70206,70206,5,70368,70370,7,70400,70401,5,70459,70460,5,70463,70463,7,70465,70468,7,70475,70477,7,70498,70499,7,70512,70516,5,70712,70719,5,70722,70724,5,70726,70726,5,70832,70832,5,70835,70840,5,70842,70842,5,70845,70845,5,70847,70848,5,70850,70851,5,71088,71089,7,71096,71099,7,71102,71102,7,71132,71133,5,71219,71226,5,71229,71229,5,71231,71232,5,71340,71340,7,71342,71343,7,71350,71350,7,71453,71455,5,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,118528,118573,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,123566,123566,5,125136,125142,5,126976,126979,14,126981,127182,14,127184,127231,14,127279,127279,14,127344,127345,14,127374,127374,14,127405,127461,14,127489,127490,14,127514,127514,14,127538,127546,14,127561,127567,14,127570,127743,14,127757,127758,14,127760,127760,14,127762,127762,14,127766,127768,14,127770,127770,14,127772,127772,14,127775,127776,14,127778,127779,14,127789,127791,14,127794,127795,14,127798,127798,14,127819,127819,14,127824,127824,14,127868,127868,14,127870,127871,14,127892,127893,14,127896,127896,14,127900,127901,14,127904,127940,14,127942,127942,14,127944,127944,14,127946,127946,14,127951,127955,14,127968,127971,14,127973,127984,14,127987,127987,14,127989,127989,14,127991,127991,14,127995,127999,5,128008,128008,14,128012,128014,14,128017,128018,14,128020,128020,14,128022,128022,14,128042,128042,14,128063,128063,14,128065,128065,14,128101,128101,14,128108,128109,14,128173,128173,14,128182,128183,14,128236,128237,14,128239,128239,14,128245,128245,14,128248,128248,14,128253,128253,14,128255,128258,14,128260,128263,14,128265,128265,14,128277,128277,14,128300,128301,14,128326,128328,14,128331,128334,14,128336,128347,14,128360,128366,14,128369,128370,14,128378,128378,14,128391,128391,14,128394,128397,14,128400,128400,14,128405,128406,14,128420,128420,14,128422,128423,14,128425,128432,14,128435,128443,14,128445,128449,14,128453,128464,14,128468,128475,14,128479,128480,14,128482,128482,14,128484,128487,14,128489,128494,14,128496,128498,14,128500,128505,14,128507,128511,14,128513,128518,14,128521,128525,14,128527,128527,14,128529,128529,14,128533,128533,14,128535,128535,14,128537,128537,14]\");\n }\n var AmbiguousCharacters = class AmbiguousCharacters {\n static {\n this.ambiguousCharacterData = new Lazy(() => {\n return JSON.parse(\"{\\\"_common\\\":[8232,32,8233,32,5760,32,8192,32,8193,32,8194,32,8195,32,8196,32,8197,32,8198,32,8200,32,8201,32,8202,32,8287,32,8199,32,8239,32,2042,95,65101,95,65102,95,65103,95,8208,45,8209,45,8210,45,65112,45,1748,45,8259,45,727,45,8722,45,10134,45,11450,45,1549,44,1643,44,184,44,42233,44,894,59,2307,58,2691,58,1417,58,1795,58,1796,58,5868,58,65072,58,6147,58,6153,58,8282,58,1475,58,760,58,42889,58,8758,58,720,58,42237,58,451,33,11601,33,660,63,577,63,2429,63,5038,63,42731,63,119149,46,8228,46,1793,46,1794,46,42510,46,68176,46,1632,46,1776,46,42232,46,1373,96,65287,96,8219,96,1523,96,8242,96,1370,96,8175,96,65344,96,900,96,8189,96,8125,96,8127,96,8190,96,697,96,884,96,712,96,714,96,715,96,756,96,699,96,701,96,700,96,702,96,42892,96,1497,96,2036,96,2037,96,5194,96,5836,96,94033,96,94034,96,65339,91,10088,40,10098,40,12308,40,64830,40,65341,93,10089,41,10099,41,12309,41,64831,41,10100,123,119060,123,10101,125,65342,94,8270,42,1645,42,8727,42,66335,42,5941,47,8257,47,8725,47,8260,47,9585,47,10187,47,10744,47,119354,47,12755,47,12339,47,11462,47,20031,47,12035,47,65340,92,65128,92,8726,92,10189,92,10741,92,10745,92,119311,92,119355,92,12756,92,20022,92,12034,92,42872,38,708,94,710,94,5869,43,10133,43,66203,43,8249,60,10094,60,706,60,119350,60,5176,60,5810,60,5120,61,11840,61,12448,61,42239,61,8250,62,10095,62,707,62,119351,62,5171,62,94015,62,8275,126,732,126,8128,126,8764,126,65372,124,65293,45,118002,50,120784,50,120794,50,120804,50,120814,50,120824,50,130034,50,42842,50,423,50,1000,50,42564,50,5311,50,42735,50,119302,51,118003,51,120785,51,120795,51,120805,51,120815,51,120825,51,130035,51,42923,51,540,51,439,51,42858,51,11468,51,1248,51,94011,51,71882,51,118004,52,120786,52,120796,52,120806,52,120816,52,120826,52,130036,52,5070,52,71855,52,118005,53,120787,53,120797,53,120807,53,120817,53,120827,53,130037,53,444,53,71867,53,118006,54,120788,54,120798,54,120808,54,120818,54,120828,54,130038,54,11474,54,5102,54,71893,54,119314,55,118007,55,120789,55,120799,55,120809,55,120819,55,120829,55,130039,55,66770,55,71878,55,2819,56,2538,56,2666,56,125131,56,118008,56,120790,56,120800,56,120810,56,120820,56,120830,56,130040,56,547,56,546,56,66330,56,2663,57,2920,57,2541,57,3437,57,118009,57,120791,57,120801,57,120811,57,120821,57,120831,57,130041,57,42862,57,11466,57,71884,57,71852,57,71894,57,9082,97,65345,97,119834,97,119886,97,119938,97,119990,97,120042,97,120094,97,120146,97,120198,97,120250,97,120302,97,120354,97,120406,97,120458,97,593,97,945,97,120514,97,120572,97,120630,97,120688,97,120746,97,65313,65,117974,65,119808,65,119860,65,119912,65,119964,65,120016,65,120068,65,120120,65,120172,65,120224,65,120276,65,120328,65,120380,65,120432,65,913,65,120488,65,120546,65,120604,65,120662,65,120720,65,5034,65,5573,65,42222,65,94016,65,66208,65,119835,98,119887,98,119939,98,119991,98,120043,98,120095,98,120147,98,120199,98,120251,98,120303,98,120355,98,120407,98,120459,98,388,98,5071,98,5234,98,5551,98,65314,66,8492,66,117975,66,119809,66,119861,66,119913,66,120017,66,120069,66,120121,66,120173,66,120225,66,120277,66,120329,66,120381,66,120433,66,42932,66,914,66,120489,66,120547,66,120605,66,120663,66,120721,66,5108,66,5623,66,42192,66,66178,66,66209,66,66305,66,65347,99,8573,99,119836,99,119888,99,119940,99,119992,99,120044,99,120096,99,120148,99,120200,99,120252,99,120304,99,120356,99,120408,99,120460,99,7428,99,1010,99,11429,99,43951,99,66621,99,128844,67,71913,67,71922,67,65315,67,8557,67,8450,67,8493,67,117976,67,119810,67,119862,67,119914,67,119966,67,120018,67,120174,67,120226,67,120278,67,120330,67,120382,67,120434,67,1017,67,11428,67,5087,67,42202,67,66210,67,66306,67,66581,67,66844,67,8574,100,8518,100,119837,100,119889,100,119941,100,119993,100,120045,100,120097,100,120149,100,120201,100,120253,100,120305,100,120357,100,120409,100,120461,100,1281,100,5095,100,5231,100,42194,100,8558,68,8517,68,117977,68,119811,68,119863,68,119915,68,119967,68,120019,68,120071,68,120123,68,120175,68,120227,68,120279,68,120331,68,120383,68,120435,68,5024,68,5598,68,5610,68,42195,68,8494,101,65349,101,8495,101,8519,101,119838,101,119890,101,119942,101,120046,101,120098,101,120150,101,120202,101,120254,101,120306,101,120358,101,120410,101,120462,101,43826,101,1213,101,8959,69,65317,69,8496,69,117978,69,119812,69,119864,69,119916,69,120020,69,120072,69,120124,69,120176,69,120228,69,120280,69,120332,69,120384,69,120436,69,917,69,120492,69,120550,69,120608,69,120666,69,120724,69,11577,69,5036,69,42224,69,71846,69,71854,69,66182,69,119839,102,119891,102,119943,102,119995,102,120047,102,120099,102,120151,102,120203,102,120255,102,120307,102,120359,102,120411,102,120463,102,43829,102,42905,102,383,102,7837,102,1412,102,119315,70,8497,70,117979,70,119813,70,119865,70,119917,70,120021,70,120073,70,120125,70,120177,70,120229,70,120281,70,120333,70,120385,70,120437,70,42904,70,988,70,120778,70,5556,70,42205,70,71874,70,71842,70,66183,70,66213,70,66853,70,65351,103,8458,103,119840,103,119892,103,119944,103,120048,103,120100,103,120152,103,120204,103,120256,103,120308,103,120360,103,120412,103,120464,103,609,103,7555,103,397,103,1409,103,117980,71,119814,71,119866,71,119918,71,119970,71,120022,71,120074,71,120126,71,120178,71,120230,71,120282,71,120334,71,120386,71,120438,71,1292,71,5056,71,5107,71,42198,71,65352,104,8462,104,119841,104,119945,104,119997,104,120049,104,120101,104,120153,104,120205,104,120257,104,120309,104,120361,104,120413,104,120465,104,1211,104,1392,104,5058,104,65320,72,8459,72,8460,72,8461,72,117981,72,119815,72,119867,72,119919,72,120023,72,120179,72,120231,72,120283,72,120335,72,120387,72,120439,72,919,72,120494,72,120552,72,120610,72,120668,72,120726,72,11406,72,5051,72,5500,72,42215,72,66255,72,731,105,9075,105,65353,105,8560,105,8505,105,8520,105,119842,105,119894,105,119946,105,119998,105,120050,105,120102,105,120154,105,120206,105,120258,105,120310,105,120362,105,120414,105,120466,105,120484,105,618,105,617,105,953,105,8126,105,890,105,120522,105,120580,105,120638,105,120696,105,120754,105,1110,105,42567,105,1231,105,43893,105,5029,105,71875,105,65354,106,8521,106,119843,106,119895,106,119947,106,119999,106,120051,106,120103,106,120155,106,120207,106,120259,106,120311,106,120363,106,120415,106,120467,106,1011,106,1112,106,65322,74,117983,74,119817,74,119869,74,119921,74,119973,74,120025,74,120077,74,120129,74,120181,74,120233,74,120285,74,120337,74,120389,74,120441,74,42930,74,895,74,1032,74,5035,74,5261,74,42201,74,119844,107,119896,107,119948,107,120000,107,120052,107,120104,107,120156,107,120208,107,120260,107,120312,107,120364,107,120416,107,120468,107,8490,75,65323,75,117984,75,119818,75,119870,75,119922,75,119974,75,120026,75,120078,75,120130,75,120182,75,120234,75,120286,75,120338,75,120390,75,120442,75,922,75,120497,75,120555,75,120613,75,120671,75,120729,75,11412,75,5094,75,5845,75,42199,75,66840,75,1472,108,8739,73,9213,73,65512,73,1633,108,1777,73,66336,108,125127,108,118001,108,120783,73,120793,73,120803,73,120813,73,120823,73,130033,73,65321,73,8544,73,8464,73,8465,73,117982,108,119816,73,119868,73,119920,73,120024,73,120128,73,120180,73,120232,73,120284,73,120336,73,120388,73,120440,73,65356,108,8572,73,8467,108,119845,108,119897,108,119949,108,120001,108,120053,108,120105,73,120157,73,120209,73,120261,73,120313,73,120365,73,120417,73,120469,73,448,73,120496,73,120554,73,120612,73,120670,73,120728,73,11410,73,1030,73,1216,73,1493,108,1503,108,1575,108,126464,108,126592,108,65166,108,65165,108,1994,108,11599,73,5825,73,42226,73,93992,73,66186,124,66313,124,119338,76,8556,76,8466,76,117985,76,119819,76,119871,76,119923,76,120027,76,120079,76,120131,76,120183,76,120235,76,120287,76,120339,76,120391,76,120443,76,11472,76,5086,76,5290,76,42209,76,93974,76,71843,76,71858,76,66587,76,66854,76,65325,77,8559,77,8499,77,117986,77,119820,77,119872,77,119924,77,120028,77,120080,77,120132,77,120184,77,120236,77,120288,77,120340,77,120392,77,120444,77,924,77,120499,77,120557,77,120615,77,120673,77,120731,77,1018,77,11416,77,5047,77,5616,77,5846,77,42207,77,66224,77,66321,77,119847,110,119899,110,119951,110,120003,110,120055,110,120107,110,120159,110,120211,110,120263,110,120315,110,120367,110,120419,110,120471,110,1400,110,1404,110,65326,78,8469,78,117987,78,119821,78,119873,78,119925,78,119977,78,120029,78,120081,78,120185,78,120237,78,120289,78,120341,78,120393,78,120445,78,925,78,120500,78,120558,78,120616,78,120674,78,120732,78,11418,78,42208,78,66835,78,3074,111,3202,111,3330,111,3458,111,2406,111,2662,111,2790,111,3046,111,3174,111,3302,111,3430,111,3664,111,3792,111,4160,111,1637,111,1781,111,65359,111,8500,111,119848,111,119900,111,119952,111,120056,111,120108,111,120160,111,120212,111,120264,111,120316,111,120368,111,120420,111,120472,111,7439,111,7441,111,43837,111,959,111,120528,111,120586,111,120644,111,120702,111,120760,111,963,111,120532,111,120590,111,120648,111,120706,111,120764,111,11423,111,4351,111,1413,111,1505,111,1607,111,126500,111,126564,111,126596,111,65259,111,65260,111,65258,111,65257,111,1726,111,64428,111,64429,111,64427,111,64426,111,1729,111,64424,111,64425,111,64423,111,64422,111,1749,111,3360,111,4125,111,66794,111,71880,111,71895,111,66604,111,1984,79,2534,79,2918,79,12295,79,70864,79,71904,79,118000,79,120782,79,120792,79,120802,79,120812,79,120822,79,130032,79,65327,79,117988,79,119822,79,119874,79,119926,79,119978,79,120030,79,120082,79,120134,79,120186,79,120238,79,120290,79,120342,79,120394,79,120446,79,927,79,120502,79,120560,79,120618,79,120676,79,120734,79,11422,79,1365,79,11604,79,4816,79,2848,79,66754,79,42227,79,71861,79,66194,79,66219,79,66564,79,66838,79,9076,112,65360,112,119849,112,119901,112,119953,112,120005,112,120057,112,120109,112,120161,112,120213,112,120265,112,120317,112,120369,112,120421,112,120473,112,961,112,120530,112,120544,112,120588,112,120602,112,120646,112,120660,112,120704,112,120718,112,120762,112,120776,112,11427,112,65328,80,8473,80,117989,80,119823,80,119875,80,119927,80,119979,80,120031,80,120083,80,120187,80,120239,80,120291,80,120343,80,120395,80,120447,80,929,80,120504,80,120562,80,120620,80,120678,80,120736,80,11426,80,5090,80,5229,80,42193,80,66197,80,119850,113,119902,113,119954,113,120006,113,120058,113,120110,113,120162,113,120214,113,120266,113,120318,113,120370,113,120422,113,120474,113,1307,113,1379,113,1382,113,8474,81,117990,81,119824,81,119876,81,119928,81,119980,81,120032,81,120084,81,120188,81,120240,81,120292,81,120344,81,120396,81,120448,81,11605,81,119851,114,119903,114,119955,114,120007,114,120059,114,120111,114,120163,114,120215,114,120267,114,120319,114,120371,114,120423,114,120475,114,43847,114,43848,114,7462,114,11397,114,43905,114,119318,82,8475,82,8476,82,8477,82,117991,82,119825,82,119877,82,119929,82,120033,82,120189,82,120241,82,120293,82,120345,82,120397,82,120449,82,422,82,5025,82,5074,82,66740,82,5511,82,42211,82,94005,82,65363,115,119852,115,119904,115,119956,115,120008,115,120060,115,120112,115,120164,115,120216,115,120268,115,120320,115,120372,115,120424,115,120476,115,42801,115,445,115,1109,115,43946,115,71873,115,66632,115,65331,83,117992,83,119826,83,119878,83,119930,83,119982,83,120034,83,120086,83,120138,83,120190,83,120242,83,120294,83,120346,83,120398,83,120450,83,1029,83,1359,83,5077,83,5082,83,42210,83,94010,83,66198,83,66592,83,119853,116,119905,116,119957,116,120009,116,120061,116,120113,116,120165,116,120217,116,120269,116,120321,116,120373,116,120425,116,120477,116,8868,84,10201,84,128872,84,65332,84,117993,84,119827,84,119879,84,119931,84,119983,84,120035,84,120087,84,120139,84,120191,84,120243,84,120295,84,120347,84,120399,84,120451,84,932,84,120507,84,120565,84,120623,84,120681,84,120739,84,11430,84,5026,84,42196,84,93962,84,71868,84,66199,84,66225,84,66325,84,119854,117,119906,117,119958,117,120010,117,120062,117,120114,117,120166,117,120218,117,120270,117,120322,117,120374,117,120426,117,120478,117,42911,117,7452,117,43854,117,43858,117,651,117,965,117,120534,117,120592,117,120650,117,120708,117,120766,117,1405,117,66806,117,71896,117,8746,85,8899,85,117994,85,119828,85,119880,85,119932,85,119984,85,120036,85,120088,85,120140,85,120192,85,120244,85,120296,85,120348,85,120400,85,120452,85,1357,85,4608,85,66766,85,5196,85,42228,85,94018,85,71864,85,8744,118,8897,118,65366,118,8564,118,119855,118,119907,118,119959,118,120011,118,120063,118,120115,118,120167,118,120219,118,120271,118,120323,118,120375,118,120427,118,120479,118,7456,118,957,118,120526,118,120584,118,120642,118,120700,118,120758,118,1141,118,1496,118,71430,118,43945,118,71872,118,119309,86,1639,86,1783,86,8548,86,117995,86,119829,86,119881,86,119933,86,119985,86,120037,86,120089,86,120141,86,120193,86,120245,86,120297,86,120349,86,120401,86,120453,86,1140,86,11576,86,5081,86,5167,86,42719,86,42214,86,93960,86,71840,86,66845,86,623,119,119856,119,119908,119,119960,119,120012,119,120064,119,120116,119,120168,119,120220,119,120272,119,120324,119,120376,119,120428,119,120480,119,7457,119,1121,119,1309,119,1377,119,71434,119,71438,119,71439,119,43907,119,71910,87,71919,87,117996,87,119830,87,119882,87,119934,87,119986,87,120038,87,120090,87,120142,87,120194,87,120246,87,120298,87,120350,87,120402,87,120454,87,1308,87,5043,87,5076,87,42218,87,5742,120,10539,120,10540,120,10799,120,65368,120,8569,120,119857,120,119909,120,119961,120,120013,120,120065,120,120117,120,120169,120,120221,120,120273,120,120325,120,120377,120,120429,120,120481,120,5441,120,5501,120,5741,88,9587,88,66338,88,71916,88,65336,88,8553,88,117997,88,119831,88,119883,88,119935,88,119987,88,120039,88,120091,88,120143,88,120195,88,120247,88,120299,88,120351,88,120403,88,120455,88,42931,88,935,88,120510,88,120568,88,120626,88,120684,88,120742,88,11436,88,11613,88,5815,88,42219,88,66192,88,66228,88,66327,88,66855,88,611,121,7564,121,65369,121,119858,121,119910,121,119962,121,120014,121,120066,121,120118,121,120170,121,120222,121,120274,121,120326,121,120378,121,120430,121,120482,121,655,121,7935,121,43866,121,947,121,8509,121,120516,121,120574,121,120632,121,120690,121,120748,121,1199,121,4327,121,71900,121,65337,89,117998,89,119832,89,119884,89,119936,89,119988,89,120040,89,120092,89,120144,89,120196,89,120248,89,120300,89,120352,89,120404,89,120456,89,933,89,978,89,120508,89,120566,89,120624,89,120682,89,120740,89,11432,89,1198,89,5033,89,5053,89,42220,89,94019,89,71844,89,66226,89,119859,122,119911,122,119963,122,120015,122,120067,122,120119,122,120171,122,120223,122,120275,122,120327,122,120379,122,120431,122,120483,122,7458,122,43923,122,71876,122,71909,90,66293,90,65338,90,8484,90,8488,90,117999,90,119833,90,119885,90,119937,90,119989,90,120041,90,120197,90,120249,90,120301,90,120353,90,120405,90,120457,90,918,90,120493,90,120551,90,120609,90,120667,90,120725,90,5059,90,42204,90,71849,90,65282,34,65283,35,65284,36,65285,37,65286,38,65290,42,65291,43,65294,46,65295,47,65296,48,65298,50,65299,51,65300,52,65301,53,65302,54,65303,55,65304,56,65305,57,65308,60,65309,61,65310,62,65312,64,65316,68,65318,70,65319,71,65324,76,65329,81,65330,82,65333,85,65334,86,65335,87,65343,95,65346,98,65348,100,65350,102,65355,107,65357,109,65358,110,65361,113,65362,114,65364,116,65365,117,65367,119,65370,122,65371,123,65373,125,119846,109],\\\"_default\\\":[160,32,8211,45,65374,126,8218,44,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],\\\"cs\\\":[65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],\\\"de\\\":[65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],\\\"es\\\":[8211,45,65374,126,8218,44,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],\\\"fr\\\":[65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],\\\"it\\\":[160,32,8211,45,65374,126,8218,44,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],\\\"ja\\\":[8211,45,8218,44,65281,33,8216,96,8245,96,180,96,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65292,44,65297,49,65307,59],\\\"ko\\\":[8211,45,65374,126,8218,44,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],\\\"pl\\\":[65374,126,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],\\\"pt-BR\\\":[65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],\\\"qps-ploc\\\":[160,32,8211,45,65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],\\\"ru\\\":[65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,305,105,921,73,1009,112,215,120,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],\\\"tr\\\":[160,32,8211,45,65374,126,8218,44,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],\\\"zh-hans\\\":[160,32,65374,126,8218,44,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65297,49],\\\"zh-hant\\\":[8211,45,65374,126,8218,44,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89]}\");\n });\n }\n static {\n this.cache = new LRUCachedFunction({ getCacheKey: JSON.stringify }, (locales) => {\n function arrayToMap(arr) {\n const result = /* @__PURE__ */ new Map();\n for (let i = 0; i < arr.length; i += 2) result.set(arr[i], arr[i + 1]);\n return result;\n }\n function mergeMaps(map1, map2) {\n const result = new Map(map1);\n for (const [key, value] of map2) result.set(key, value);\n return result;\n }\n function intersectMaps(map1, map2) {\n if (!map1) return map2;\n const result = /* @__PURE__ */ new Map();\n for (const [key, value] of map1) if (map2.has(key)) result.set(key, value);\n return result;\n }\n const data = this.ambiguousCharacterData.value;\n let filteredLocales = locales.filter((l) => !l.startsWith(\"_\") && Object.hasOwn(data, l));\n if (filteredLocales.length === 0) filteredLocales = [\"_default\"];\n let languageSpecificMap = void 0;\n for (const locale of filteredLocales) {\n const map = arrayToMap(data[locale]);\n languageSpecificMap = intersectMaps(languageSpecificMap, map);\n }\n const map = mergeMaps(arrayToMap(data[\"_common\"]), languageSpecificMap);\n return new AmbiguousCharacters(map);\n });\n }\n static getInstance(locales) {\n return AmbiguousCharacters.cache.get(Array.from(locales));\n }\n static {\n this._locales = new Lazy(() => Object.keys(AmbiguousCharacters.ambiguousCharacterData.value).filter((k) => !k.startsWith(\"_\")));\n }\n static getLocales() {\n return AmbiguousCharacters._locales.value;\n }\n constructor(confusableDictionary) {\n this.confusableDictionary = confusableDictionary;\n }\n isAmbiguous(codePoint) {\n return this.confusableDictionary.has(codePoint);\n }\n /**\n * Returns the non basic ASCII code point that the given code point can be confused,\n * or undefined if such code point does note exist.\n */\n getPrimaryConfusable(codePoint) {\n return this.confusableDictionary.get(codePoint);\n }\n getConfusableCodePoints() {\n return new Set(this.confusableDictionary.keys());\n }\n };\n var InvisibleCharacters = class InvisibleCharacters {\n static getRawData() {\n return JSON.parse(\"{\\\"_common\\\":[11,12,13,127,847,1564,4447,4448,6068,6069,6155,6156,6157,6158,7355,7356,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8204,8205,8206,8207,8234,8235,8236,8237,8238,8239,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,10240,12644,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65279,65440,65520,65521,65522,65523,65524,65525,65526,65527,65528,65532,78844,119155,119156,119157,119158,119159,119160,119161,119162,917504,917505,917506,917507,917508,917509,917510,917511,917512,917513,917514,917515,917516,917517,917518,917519,917520,917521,917522,917523,917524,917525,917526,917527,917528,917529,917530,917531,917532,917533,917534,917535,917536,917537,917538,917539,917540,917541,917542,917543,917544,917545,917546,917547,917548,917549,917550,917551,917552,917553,917554,917555,917556,917557,917558,917559,917560,917561,917562,917563,917564,917565,917566,917567,917568,917569,917570,917571,917572,917573,917574,917575,917576,917577,917578,917579,917580,917581,917582,917583,917584,917585,917586,917587,917588,917589,917590,917591,917592,917593,917594,917595,917596,917597,917598,917599,917600,917601,917602,917603,917604,917605,917606,917607,917608,917609,917610,917611,917612,917613,917614,917615,917616,917617,917618,917619,917620,917621,917622,917623,917624,917625,917626,917627,917628,917629,917630,917631,917760,917761,917762,917763,917764,917765,917766,917767,917768,917769,917770,917771,917772,917773,917774,917775,917776,917777,917778,917779,917780,917781,917782,917783,917784,917785,917786,917787,917788,917789,917790,917791,917792,917793,917794,917795,917796,917797,917798,917799,917800,917801,917802,917803,917804,917805,917806,917807,917808,917809,917810,917811,917812,917813,917814,917815,917816,917817,917818,917819,917820,917821,917822,917823,917824,917825,917826,917827,917828,917829,917830,917831,917832,917833,917834,917835,917836,917837,917838,917839,917840,917841,917842,917843,917844,917845,917846,917847,917848,917849,917850,917851,917852,917853,917854,917855,917856,917857,917858,917859,917860,917861,917862,917863,917864,917865,917866,917867,917868,917869,917870,917871,917872,917873,917874,917875,917876,917877,917878,917879,917880,917881,917882,917883,917884,917885,917886,917887,917888,917889,917890,917891,917892,917893,917894,917895,917896,917897,917898,917899,917900,917901,917902,917903,917904,917905,917906,917907,917908,917909,917910,917911,917912,917913,917914,917915,917916,917917,917918,917919,917920,917921,917922,917923,917924,917925,917926,917927,917928,917929,917930,917931,917932,917933,917934,917935,917936,917937,917938,917939,917940,917941,917942,917943,917944,917945,917946,917947,917948,917949,917950,917951,917952,917953,917954,917955,917956,917957,917958,917959,917960,917961,917962,917963,917964,917965,917966,917967,917968,917969,917970,917971,917972,917973,917974,917975,917976,917977,917978,917979,917980,917981,917982,917983,917984,917985,917986,917987,917988,917989,917990,917991,917992,917993,917994,917995,917996,917997,917998,917999],\\\"cs\\\":[173,8203,12288],\\\"de\\\":[173,8203,12288],\\\"es\\\":[8203,12288],\\\"fr\\\":[173,8203,12288],\\\"it\\\":[160,173,12288],\\\"ja\\\":[173],\\\"ko\\\":[173,12288],\\\"pl\\\":[173,8203,12288],\\\"pt-BR\\\":[173,8203,12288],\\\"qps-ploc\\\":[160,173,8203,12288],\\\"ru\\\":[173,12288],\\\"tr\\\":[160,173,8203,12288],\\\"zh-hans\\\":[160,173,8203,12288],\\\"zh-hant\\\":[173,12288]}\");\n }\n static {\n this._data = void 0;\n }\n static getData() {\n if (!this._data) this._data = new Set([...Object.values(InvisibleCharacters.getRawData())].flat());\n return this._data;\n }\n static isInvisibleCharacter(codePoint) {\n return InvisibleCharacters.getData().has(codePoint);\n }\n static get codePoints() {\n return InvisibleCharacters.getData();\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/worker/webWorker.js\n const DEFAULT_CHANNEL = \"default\";\n const INITIALIZE = \"$initialize\";\n var RequestMessage = class {\n constructor(vsWorker, req, channel, method, args) {\n this.vsWorker = vsWorker;\n this.req = req;\n this.channel = channel;\n this.method = method;\n this.args = args;\n this.type = 0;\n }\n };\n var ReplyMessage = class {\n constructor(vsWorker, seq, res, err) {\n this.vsWorker = vsWorker;\n this.seq = seq;\n this.res = res;\n this.err = err;\n this.type = 1;\n }\n };\n var SubscribeEventMessage = class {\n constructor(vsWorker, req, channel, eventName, arg) {\n this.vsWorker = vsWorker;\n this.req = req;\n this.channel = channel;\n this.eventName = eventName;\n this.arg = arg;\n this.type = 2;\n }\n };\n var EventMessage = class {\n constructor(vsWorker, req, event) {\n this.vsWorker = vsWorker;\n this.req = req;\n this.event = event;\n this.type = 3;\n }\n };\n var UnsubscribeEventMessage = class {\n constructor(vsWorker, req) {\n this.vsWorker = vsWorker;\n this.req = req;\n this.type = 4;\n }\n };\n var WebWorkerProtocol = class {\n constructor(handler) {\n this._workerId = -1;\n this._handler = handler;\n this._lastSentReq = 0;\n this._pendingReplies = Object.create(null);\n this._pendingEmitters = /* @__PURE__ */ new Map();\n this._pendingEvents = /* @__PURE__ */ new Map();\n }\n setWorkerId(workerId) {\n this._workerId = workerId;\n }\n async sendMessage(channel, method, args) {\n const req = String(++this._lastSentReq);\n return new Promise((resolve, reject) => {\n this._pendingReplies[req] = {\n resolve,\n reject\n };\n this._send(new RequestMessage(this._workerId, req, channel, method, args));\n });\n }\n listen(channel, eventName, arg) {\n let req = null;\n const emitter = new Emitter({\n onWillAddFirstListener: () => {\n req = String(++this._lastSentReq);\n this._pendingEmitters.set(req, emitter);\n this._send(new SubscribeEventMessage(this._workerId, req, channel, eventName, arg));\n },\n onDidRemoveLastListener: () => {\n this._pendingEmitters.delete(req);\n this._send(new UnsubscribeEventMessage(this._workerId, req));\n req = null;\n }\n });\n return emitter.event;\n }\n handleMessage(message) {\n if (!message || !message.vsWorker) return;\n if (this._workerId !== -1 && message.vsWorker !== this._workerId) return;\n this._handleMessage(message);\n }\n createProxyToRemoteChannel(channel, sendMessageBarrier) {\n return new Proxy(Object.create(null), { get: (target, name) => {\n if (typeof name === \"string\" && !target[name]) {\n if (propertyIsDynamicEvent(name)) target[name] = (arg) => {\n return this.listen(channel, name, arg);\n };\n else if (propertyIsEvent(name)) target[name] = this.listen(channel, name, void 0);\n else if (name.charCodeAt(0) === 36) target[name] = async (...myArgs) => {\n await sendMessageBarrier?.();\n return this.sendMessage(channel, name, myArgs);\n };\n }\n return target[name];\n } });\n }\n _handleMessage(msg) {\n switch (msg.type) {\n case 1: return this._handleReplyMessage(msg);\n case 0: return this._handleRequestMessage(msg);\n case 2: return this._handleSubscribeEventMessage(msg);\n case 3: return this._handleEventMessage(msg);\n case 4: return this._handleUnsubscribeEventMessage(msg);\n }\n }\n _handleReplyMessage(replyMessage) {\n if (!this._pendingReplies[replyMessage.seq]) {\n console.warn(\"Got reply to unknown seq\");\n return;\n }\n const reply = this._pendingReplies[replyMessage.seq];\n delete this._pendingReplies[replyMessage.seq];\n if (replyMessage.err) {\n let err = replyMessage.err;\n if (replyMessage.err.$isError) {\n const newErr = /* @__PURE__ */ new Error();\n newErr.name = replyMessage.err.name;\n newErr.message = replyMessage.err.message;\n newErr.stack = replyMessage.err.stack;\n err = newErr;\n }\n reply.reject(err);\n return;\n }\n reply.resolve(replyMessage.res);\n }\n _handleRequestMessage(requestMessage) {\n const req = requestMessage.req;\n this._handler.handleMessage(requestMessage.channel, requestMessage.method, requestMessage.args).then((r) => {\n this._send(new ReplyMessage(this._workerId, req, r, void 0));\n }, (e) => {\n if (e.detail instanceof Error) e.detail = transformErrorForSerialization(e.detail);\n this._send(new ReplyMessage(this._workerId, req, void 0, transformErrorForSerialization(e)));\n });\n }\n _handleSubscribeEventMessage(msg) {\n const req = msg.req;\n const disposable = this._handler.handleEvent(msg.channel, msg.eventName, msg.arg)((event) => {\n this._send(new EventMessage(this._workerId, req, event));\n });\n this._pendingEvents.set(req, disposable);\n }\n _handleEventMessage(msg) {\n if (!this._pendingEmitters.has(msg.req)) {\n console.warn(\"Got event for unknown req\");\n return;\n }\n this._pendingEmitters.get(msg.req).fire(msg.event);\n }\n _handleUnsubscribeEventMessage(msg) {\n if (!this._pendingEvents.has(msg.req)) {\n console.warn(\"Got unsubscribe for unknown req\");\n return;\n }\n this._pendingEvents.get(msg.req).dispose();\n this._pendingEvents.delete(msg.req);\n }\n _send(msg) {\n const transfer = [];\n if (msg.type === 0) for (let i = 0; i < msg.args.length; i++) {\n const arg = msg.args[i];\n if (arg instanceof ArrayBuffer) transfer.push(arg);\n }\n else if (msg.type === 1) {\n if (msg.res instanceof ArrayBuffer) transfer.push(msg.res);\n }\n this._handler.sendMessage(msg, transfer);\n }\n };\n function propertyIsEvent(name) {\n return name[0] === \"o\" && name[1] === \"n\" && isUpperAsciiLetter(name.charCodeAt(2));\n }\n function propertyIsDynamicEvent(name) {\n return /^onDynamic/.test(name) && isUpperAsciiLetter(name.charCodeAt(9));\n }\n /**\n * Worker side\n */\n var WebWorkerServer = class {\n constructor(postMessage, requestHandlerFactory) {\n this._localChannels = /* @__PURE__ */ new Map();\n this._remoteChannels = /* @__PURE__ */ new Map();\n this._protocol = new WebWorkerProtocol({\n sendMessage: (msg, transfer) => {\n postMessage(msg, transfer);\n },\n handleMessage: (channel, method, args) => this._handleMessage(channel, method, args),\n handleEvent: (channel, eventName, arg) => this._handleEvent(channel, eventName, arg)\n });\n this.requestHandler = requestHandlerFactory(this);\n }\n onmessage(msg) {\n this._protocol.handleMessage(msg);\n }\n _handleMessage(channel, method, args) {\n if (channel === DEFAULT_CHANNEL && method === INITIALIZE) return this.initialize(args[0]);\n const requestHandler = channel === DEFAULT_CHANNEL ? this.requestHandler : this._localChannels.get(channel);\n if (!requestHandler) return Promise.reject(/* @__PURE__ */ new Error(`Missing channel ${channel} on worker thread`));\n const fn = requestHandler[method];\n if (typeof fn !== \"function\") return Promise.reject(/* @__PURE__ */ new Error(`Missing method ${method} on worker thread channel ${channel}`));\n try {\n return Promise.resolve(fn.apply(requestHandler, args));\n } catch (e) {\n return Promise.reject(e);\n }\n }\n _handleEvent(channel, eventName, arg) {\n const requestHandler = channel === DEFAULT_CHANNEL ? this.requestHandler : this._localChannels.get(channel);\n if (!requestHandler) throw new Error(`Missing channel ${channel} on worker thread`);\n if (propertyIsDynamicEvent(eventName)) {\n const fn = requestHandler[eventName];\n if (typeof fn !== \"function\") throw new Error(`Missing dynamic event ${eventName} on request handler.`);\n const event = fn.call(requestHandler, arg);\n if (typeof event !== \"function\") throw new Error(`Missing dynamic event ${eventName} on request handler.`);\n return event;\n }\n if (propertyIsEvent(eventName)) {\n const event = requestHandler[eventName];\n if (typeof event !== \"function\") throw new Error(`Missing event ${eventName} on request handler.`);\n return event;\n }\n throw new Error(`Malformed event name ${eventName}`);\n }\n getChannel(channel) {\n if (!this._remoteChannels.has(channel)) {\n const inst = this._protocol.createProxyToRemoteChannel(channel);\n this._remoteChannels.set(channel, inst);\n }\n return this._remoteChannels.get(channel);\n }\n async initialize(workerId) {\n this._protocol.setWorkerId(workerId);\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/worker/webWorkerBootstrap.js\n let initialized$1 = false;\n function initialize(factory) {\n if (initialized$1) throw new Error(\"WebWorker already initialized!\");\n initialized$1 = true;\n const webWorkerServer = new WebWorkerServer((msg) => globalThis.postMessage(msg), (workerServer) => factory(workerServer));\n globalThis.onmessage = (e) => {\n webWorkerServer.onmessage(e.data);\n };\n return webWorkerServer;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/diff/diffChange.js\n /**\n * Represents information about a specific difference between two sequences.\n */\n var DiffChange = class {\n /**\n * Constructs a new DiffChange with the given sequence information\n * and content.\n */\n constructor(originalStart, originalLength, modifiedStart, modifiedLength) {\n this.originalStart = originalStart;\n this.originalLength = originalLength;\n this.modifiedStart = modifiedStart;\n this.modifiedLength = modifiedLength;\n }\n /**\n * The end point (exclusive) of the change in the original sequence.\n */\n getOriginalEnd() {\n return this.originalStart + this.originalLength;\n }\n /**\n * The end point (exclusive) of the change in the modified sequence.\n */\n getModifiedEnd() {\n return this.modifiedStart + this.modifiedLength;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/buffer.js\n const hasBuffer = typeof Buffer !== \"undefined\";\n new Lazy(() => /* @__PURE__ */ new Uint8Array(256));\n let textDecoder;\n var VSBuffer = class VSBuffer {\n /**\n * When running in a nodejs context, if `actual` is not a nodejs Buffer, the backing store for\n * the returned `VSBuffer` instance might use a nodejs Buffer allocated from node's Buffer pool,\n * which is not transferrable.\n */\n static wrap(actual) {\n if (hasBuffer && !Buffer.isBuffer(actual)) actual = Buffer.from(actual.buffer, actual.byteOffset, actual.byteLength);\n return new VSBuffer(actual);\n }\n constructor(buffer) {\n this.buffer = buffer;\n this.byteLength = this.buffer.byteLength;\n }\n toString() {\n if (hasBuffer) return this.buffer.toString();\n else {\n if (!textDecoder) textDecoder = new TextDecoder();\n return textDecoder.decode(this.buffer);\n }\n }\n };\n const hexChars = \"0123456789abcdef\";\n function encodeHex({ buffer }) {\n let result = \"\";\n for (let i = 0; i < buffer.length; i++) {\n const byte = buffer[i];\n result += hexChars[byte >>> 4];\n result += hexChars[byte & 15];\n }\n return result;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/hash.js\n function numberHash(val, initialHashVal) {\n return (initialHashVal << 5) - initialHashVal + val | 0;\n }\n function stringHash(s, hashVal) {\n hashVal = numberHash(149417, hashVal);\n for (let i = 0, length = s.length; i < length; i++) hashVal = numberHash(s.charCodeAt(i), hashVal);\n return hashVal;\n }\n function leftRotate(value, bits, totalBits = 32) {\n const delta = totalBits - bits;\n const mask = ~((1 << delta) - 1);\n return (value << bits | (mask & value) >>> delta) >>> 0;\n }\n function toHexString(bufferOrValue, bitsize = 32) {\n if (bufferOrValue instanceof ArrayBuffer) return encodeHex(VSBuffer.wrap(new Uint8Array(bufferOrValue)));\n return (bufferOrValue >>> 0).toString(16).padStart(bitsize / 4, \"0\");\n }\n (class StringSHA1 {\n static {\n this._bigBlock32 = /* @__PURE__ */ new DataView(/* @__PURE__ */ new ArrayBuffer(320));\n }\n constructor() {\n this._h0 = 1732584193;\n this._h1 = 4023233417;\n this._h2 = 2562383102;\n this._h3 = 271733878;\n this._h4 = 3285377520;\n this._buff = /* @__PURE__ */ new Uint8Array(67);\n this._buffDV = new DataView(this._buff.buffer);\n this._buffLen = 0;\n this._totalLen = 0;\n this._leftoverHighSurrogate = 0;\n this._finished = false;\n }\n update(str) {\n const strLen = str.length;\n if (strLen === 0) return;\n const buff = this._buff;\n let buffLen = this._buffLen;\n let leftoverHighSurrogate = this._leftoverHighSurrogate;\n let charCode;\n let offset;\n if (leftoverHighSurrogate !== 0) {\n charCode = leftoverHighSurrogate;\n offset = -1;\n leftoverHighSurrogate = 0;\n } else {\n charCode = str.charCodeAt(0);\n offset = 0;\n }\n while (true) {\n let codePoint = charCode;\n if (isHighSurrogate(charCode)) if (offset + 1 < strLen) {\n const nextCharCode = str.charCodeAt(offset + 1);\n if (isLowSurrogate(nextCharCode)) {\n offset++;\n codePoint = computeCodePoint(charCode, nextCharCode);\n } else codePoint = 65533;\n } else {\n leftoverHighSurrogate = charCode;\n break;\n }\n else if (isLowSurrogate(charCode)) codePoint = 65533;\n buffLen = this._push(buff, buffLen, codePoint);\n offset++;\n if (offset < strLen) charCode = str.charCodeAt(offset);\n else break;\n }\n this._buffLen = buffLen;\n this._leftoverHighSurrogate = leftoverHighSurrogate;\n }\n _push(buff, buffLen, codePoint) {\n if (codePoint < 128) buff[buffLen++] = codePoint;\n else if (codePoint < 2048) {\n buff[buffLen++] = 192 | (codePoint & 1984) >>> 6;\n buff[buffLen++] = 128 | (codePoint & 63) >>> 0;\n } else if (codePoint < 65536) {\n buff[buffLen++] = 224 | (codePoint & 61440) >>> 12;\n buff[buffLen++] = 128 | (codePoint & 4032) >>> 6;\n buff[buffLen++] = 128 | (codePoint & 63) >>> 0;\n } else {\n buff[buffLen++] = 240 | (codePoint & 1835008) >>> 18;\n buff[buffLen++] = 128 | (codePoint & 258048) >>> 12;\n buff[buffLen++] = 128 | (codePoint & 4032) >>> 6;\n buff[buffLen++] = 128 | (codePoint & 63) >>> 0;\n }\n if (buffLen >= 64) {\n this._step();\n buffLen -= 64;\n this._totalLen += 64;\n buff[0] = buff[64];\n buff[1] = buff[65];\n buff[2] = buff[66];\n }\n return buffLen;\n }\n digest() {\n if (!this._finished) {\n this._finished = true;\n if (this._leftoverHighSurrogate) {\n this._leftoverHighSurrogate = 0;\n this._buffLen = this._push(this._buff, this._buffLen, 65533);\n }\n this._totalLen += this._buffLen;\n this._wrapUp();\n }\n return toHexString(this._h0) + toHexString(this._h1) + toHexString(this._h2) + toHexString(this._h3) + toHexString(this._h4);\n }\n _wrapUp() {\n this._buff[this._buffLen++] = 128;\n this._buff.subarray(this._buffLen).fill(0);\n if (this._buffLen > 56) {\n this._step();\n this._buff.fill(0);\n }\n const ml = 8 * this._totalLen;\n this._buffDV.setUint32(56, Math.floor(ml / 4294967296), false);\n this._buffDV.setUint32(60, ml % 4294967296, false);\n this._step();\n }\n _step() {\n const bigBlock32 = StringSHA1._bigBlock32;\n const data = this._buffDV;\n for (let j = 0; j < 64; j += 4) bigBlock32.setUint32(j, data.getUint32(j, false), false);\n for (let j = 64; j < 320; j += 4) 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);\n let a = this._h0;\n let b = this._h1;\n let c = this._h2;\n let d = this._h3;\n let e = this._h4;\n let f, k;\n let temp;\n for (let j = 0; j < 80; j++) {\n if (j < 20) {\n f = b & c | ~b & d;\n k = 1518500249;\n } else if (j < 40) {\n f = b ^ c ^ d;\n k = 1859775393;\n } else if (j < 60) {\n f = b & c | b & d | c & d;\n k = 2400959708;\n } else {\n f = b ^ c ^ d;\n k = 3395469782;\n }\n temp = leftRotate(a, 5) + f + e + k + bigBlock32.getUint32(j * 4, false) & 4294967295;\n e = d;\n d = c;\n c = leftRotate(b, 30);\n b = a;\n a = temp;\n }\n this._h0 = this._h0 + a & 4294967295;\n this._h1 = this._h1 + b & 4294967295;\n this._h2 = this._h2 + c & 4294967295;\n this._h3 = this._h3 + d & 4294967295;\n this._h4 = this._h4 + e & 4294967295;\n }\n });\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/diff/diff.js\n var StringDiffSequence = class {\n constructor(source) {\n this.source = source;\n }\n getElements() {\n const source = this.source;\n const characters = new Int32Array(source.length);\n for (let i = 0, len = source.length; i < len; i++) characters[i] = source.charCodeAt(i);\n return characters;\n }\n };\n function stringDiff(original, modified, pretty) {\n return new LcsDiff(new StringDiffSequence(original), new StringDiffSequence(modified)).ComputeDiff(pretty).changes;\n }\n var Debug = class {\n static Assert(condition, message) {\n if (!condition) throw new Error(message);\n }\n };\n var MyArray = class {\n /**\n * Copies a range of elements from an Array starting at the specified source index and pastes\n * them to another Array starting at the specified destination index. The length and the indexes\n * are specified as 64-bit integers.\n * sourceArray:\n * The Array that contains the data to copy.\n * sourceIndex:\n * A 64-bit integer that represents the index in the sourceArray at which copying begins.\n * destinationArray:\n * The Array that receives the data.\n * destinationIndex:\n * A 64-bit integer that represents the index in the destinationArray at which storing begins.\n * length:\n * A 64-bit integer that represents the number of elements to copy.\n */\n static Copy(sourceArray, sourceIndex, destinationArray, destinationIndex, length) {\n for (let i = 0; i < length; i++) destinationArray[destinationIndex + i] = sourceArray[sourceIndex + i];\n }\n static Copy2(sourceArray, sourceIndex, destinationArray, destinationIndex, length) {\n for (let i = 0; i < length; i++) destinationArray[destinationIndex + i] = sourceArray[sourceIndex + i];\n }\n };\n /**\n * A utility class which helps to create the set of DiffChanges from\n * a difference operation. This class accepts original DiffElements and\n * modified DiffElements that are involved in a particular change. The\n * MarkNextChange() method can be called to mark the separation between\n * distinct changes. At the end, the Changes property can be called to retrieve\n * the constructed changes.\n */\n var DiffChangeHelper = class {\n /**\n * Constructs a new DiffChangeHelper for the given DiffSequences.\n */\n constructor() {\n this.m_changes = [];\n this.m_originalStart = 1073741824;\n this.m_modifiedStart = 1073741824;\n this.m_originalCount = 0;\n this.m_modifiedCount = 0;\n }\n /**\n * Marks the beginning of the next change in the set of differences.\n */\n MarkNextChange() {\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) this.m_changes.push(new DiffChange(this.m_originalStart, this.m_originalCount, this.m_modifiedStart, this.m_modifiedCount));\n this.m_originalCount = 0;\n this.m_modifiedCount = 0;\n this.m_originalStart = 1073741824;\n this.m_modifiedStart = 1073741824;\n }\n /**\n * Adds the original element at the given position to the elements\n * affected by the current change. The modified index gives context\n * to the change position with respect to the original sequence.\n * @param originalIndex The index of the original element to add.\n * @param modifiedIndex The index of the modified element that provides corresponding position in the modified sequence.\n */\n AddOriginalElement(originalIndex, modifiedIndex) {\n this.m_originalStart = Math.min(this.m_originalStart, originalIndex);\n this.m_modifiedStart = Math.min(this.m_modifiedStart, modifiedIndex);\n this.m_originalCount++;\n }\n /**\n * Adds the modified element at the given position to the elements\n * affected by the current change. The original index gives context\n * to the change position with respect to the modified sequence.\n * @param originalIndex The index of the original element that provides corresponding position in the original sequence.\n * @param modifiedIndex The index of the modified element to add.\n */\n AddModifiedElement(originalIndex, modifiedIndex) {\n this.m_originalStart = Math.min(this.m_originalStart, originalIndex);\n this.m_modifiedStart = Math.min(this.m_modifiedStart, modifiedIndex);\n this.m_modifiedCount++;\n }\n /**\n * Retrieves all of the changes marked by the class.\n */\n getChanges() {\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) this.MarkNextChange();\n return this.m_changes;\n }\n /**\n * Retrieves all of the changes marked by the class in the reverse order\n */\n getReverseChanges() {\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) this.MarkNextChange();\n this.m_changes.reverse();\n return this.m_changes;\n }\n };\n /**\n * An implementation of the difference algorithm described in\n * \"An O(ND) Difference Algorithm and its variations\" by Eugene W. Myers\n */\n var LcsDiff = class LcsDiff {\n /**\n * Constructs the DiffFinder\n */\n constructor(originalSequence, modifiedSequence, continueProcessingPredicate = null) {\n this.ContinueProcessingPredicate = continueProcessingPredicate;\n this._originalSequence = originalSequence;\n this._modifiedSequence = modifiedSequence;\n const [originalStringElements, originalElementsOrHash, originalHasStrings] = LcsDiff._getElements(originalSequence);\n const [modifiedStringElements, modifiedElementsOrHash, modifiedHasStrings] = LcsDiff._getElements(modifiedSequence);\n this._hasStrings = originalHasStrings && modifiedHasStrings;\n this._originalStringElements = originalStringElements;\n this._originalElementsOrHash = originalElementsOrHash;\n this._modifiedStringElements = modifiedStringElements;\n this._modifiedElementsOrHash = modifiedElementsOrHash;\n this.m_forwardHistory = [];\n this.m_reverseHistory = [];\n }\n static _isStringArray(arr) {\n return arr.length > 0 && typeof arr[0] === \"string\";\n }\n static _getElements(sequence) {\n const elements = sequence.getElements();\n if (LcsDiff._isStringArray(elements)) {\n const hashes = new Int32Array(elements.length);\n for (let i = 0, len = elements.length; i < len; i++) hashes[i] = stringHash(elements[i], 0);\n return [\n elements,\n hashes,\n true\n ];\n }\n if (elements instanceof Int32Array) return [\n [],\n elements,\n false\n ];\n return [\n [],\n new Int32Array(elements),\n false\n ];\n }\n ElementsAreEqual(originalIndex, newIndex) {\n if (this._originalElementsOrHash[originalIndex] !== this._modifiedElementsOrHash[newIndex]) return false;\n return this._hasStrings ? this._originalStringElements[originalIndex] === this._modifiedStringElements[newIndex] : true;\n }\n ElementsAreStrictEqual(originalIndex, newIndex) {\n if (!this.ElementsAreEqual(originalIndex, newIndex)) return false;\n return LcsDiff._getStrictElement(this._originalSequence, originalIndex) === LcsDiff._getStrictElement(this._modifiedSequence, newIndex);\n }\n static _getStrictElement(sequence, index) {\n if (typeof sequence.getStrictElement === \"function\") return sequence.getStrictElement(index);\n return null;\n }\n OriginalElementsAreEqual(index1, index2) {\n if (this._originalElementsOrHash[index1] !== this._originalElementsOrHash[index2]) return false;\n return this._hasStrings ? this._originalStringElements[index1] === this._originalStringElements[index2] : true;\n }\n ModifiedElementsAreEqual(index1, index2) {\n if (this._modifiedElementsOrHash[index1] !== this._modifiedElementsOrHash[index2]) return false;\n return this._hasStrings ? this._modifiedStringElements[index1] === this._modifiedStringElements[index2] : true;\n }\n ComputeDiff(pretty) {\n return this._ComputeDiff(0, this._originalElementsOrHash.length - 1, 0, this._modifiedElementsOrHash.length - 1, pretty);\n }\n /**\n * Computes the differences between the original and modified input\n * sequences on the bounded range.\n * @returns An array of the differences between the two input sequences.\n */\n _ComputeDiff(originalStart, originalEnd, modifiedStart, modifiedEnd, pretty) {\n const quitEarlyArr = [false];\n let changes = this.ComputeDiffRecursive(originalStart, originalEnd, modifiedStart, modifiedEnd, quitEarlyArr);\n if (pretty) changes = this.PrettifyChanges(changes);\n return {\n quitEarly: quitEarlyArr[0],\n changes\n };\n }\n /**\n * Private helper method which computes the differences on the bounded range\n * recursively.\n * @returns An array of the differences between the two input sequences.\n */\n ComputeDiffRecursive(originalStart, originalEnd, modifiedStart, modifiedEnd, quitEarlyArr) {\n quitEarlyArr[0] = false;\n while (originalStart <= originalEnd && modifiedStart <= modifiedEnd && this.ElementsAreEqual(originalStart, modifiedStart)) {\n originalStart++;\n modifiedStart++;\n }\n while (originalEnd >= originalStart && modifiedEnd >= modifiedStart && this.ElementsAreEqual(originalEnd, modifiedEnd)) {\n originalEnd--;\n modifiedEnd--;\n }\n if (originalStart > originalEnd || modifiedStart > modifiedEnd) {\n let changes;\n if (modifiedStart <= modifiedEnd) {\n Debug.Assert(originalStart === originalEnd + 1, \"originalStart should only be one more than originalEnd\");\n changes = [new DiffChange(originalStart, 0, modifiedStart, modifiedEnd - modifiedStart + 1)];\n } else if (originalStart <= originalEnd) {\n Debug.Assert(modifiedStart === modifiedEnd + 1, \"modifiedStart should only be one more than modifiedEnd\");\n changes = [new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, 0)];\n } else {\n Debug.Assert(originalStart === originalEnd + 1, \"originalStart should only be one more than originalEnd\");\n Debug.Assert(modifiedStart === modifiedEnd + 1, \"modifiedStart should only be one more than modifiedEnd\");\n changes = [];\n }\n return changes;\n }\n const midOriginalArr = [0];\n const midModifiedArr = [0];\n const result = this.ComputeRecursionPoint(originalStart, originalEnd, modifiedStart, modifiedEnd, midOriginalArr, midModifiedArr, quitEarlyArr);\n const midOriginal = midOriginalArr[0];\n const midModified = midModifiedArr[0];\n if (result !== null) return result;\n else if (!quitEarlyArr[0]) {\n const leftChanges = this.ComputeDiffRecursive(originalStart, midOriginal, modifiedStart, midModified, quitEarlyArr);\n let rightChanges = [];\n if (!quitEarlyArr[0]) rightChanges = this.ComputeDiffRecursive(midOriginal + 1, originalEnd, midModified + 1, modifiedEnd, quitEarlyArr);\n else rightChanges = [new DiffChange(midOriginal + 1, originalEnd - (midOriginal + 1) + 1, midModified + 1, modifiedEnd - (midModified + 1) + 1)];\n return this.ConcatenateChanges(leftChanges, rightChanges);\n }\n return [new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, modifiedEnd - modifiedStart + 1)];\n }\n WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr) {\n let forwardChanges = null;\n let reverseChanges = null;\n let changeHelper = new DiffChangeHelper();\n let diagonalMin = diagonalForwardStart;\n let diagonalMax = diagonalForwardEnd;\n let diagonalRelative = midOriginalArr[0] - midModifiedArr[0] - diagonalForwardOffset;\n let lastOriginalIndex = -1073741824;\n let historyIndex = this.m_forwardHistory.length - 1;\n do {\n const diagonal = diagonalRelative + diagonalForwardBase;\n if (diagonal === diagonalMin || diagonal < diagonalMax && forwardPoints[diagonal - 1] < forwardPoints[diagonal + 1]) {\n originalIndex = forwardPoints[diagonal + 1];\n modifiedIndex = originalIndex - diagonalRelative - diagonalForwardOffset;\n if (originalIndex < lastOriginalIndex) changeHelper.MarkNextChange();\n lastOriginalIndex = originalIndex;\n changeHelper.AddModifiedElement(originalIndex + 1, modifiedIndex);\n diagonalRelative = diagonal + 1 - diagonalForwardBase;\n } else {\n originalIndex = forwardPoints[diagonal - 1] + 1;\n modifiedIndex = originalIndex - diagonalRelative - diagonalForwardOffset;\n if (originalIndex < lastOriginalIndex) changeHelper.MarkNextChange();\n lastOriginalIndex = originalIndex - 1;\n changeHelper.AddOriginalElement(originalIndex, modifiedIndex + 1);\n diagonalRelative = diagonal - 1 - diagonalForwardBase;\n }\n if (historyIndex >= 0) {\n forwardPoints = this.m_forwardHistory[historyIndex];\n diagonalForwardBase = forwardPoints[0];\n diagonalMin = 1;\n diagonalMax = forwardPoints.length - 1;\n }\n } while (--historyIndex >= -1);\n forwardChanges = changeHelper.getReverseChanges();\n if (quitEarlyArr[0]) {\n let originalStartPoint = midOriginalArr[0] + 1;\n let modifiedStartPoint = midModifiedArr[0] + 1;\n if (forwardChanges !== null && forwardChanges.length > 0) {\n const lastForwardChange = forwardChanges[forwardChanges.length - 1];\n originalStartPoint = Math.max(originalStartPoint, lastForwardChange.getOriginalEnd());\n modifiedStartPoint = Math.max(modifiedStartPoint, lastForwardChange.getModifiedEnd());\n }\n reverseChanges = [new DiffChange(originalStartPoint, originalEnd - originalStartPoint + 1, modifiedStartPoint, modifiedEnd - modifiedStartPoint + 1)];\n } else {\n changeHelper = new DiffChangeHelper();\n diagonalMin = diagonalReverseStart;\n diagonalMax = diagonalReverseEnd;\n diagonalRelative = midOriginalArr[0] - midModifiedArr[0] - diagonalReverseOffset;\n lastOriginalIndex = 1073741824;\n historyIndex = deltaIsEven ? this.m_reverseHistory.length - 1 : this.m_reverseHistory.length - 2;\n do {\n const diagonal = diagonalRelative + diagonalReverseBase;\n if (diagonal === diagonalMin || diagonal < diagonalMax && reversePoints[diagonal - 1] >= reversePoints[diagonal + 1]) {\n originalIndex = reversePoints[diagonal + 1] - 1;\n modifiedIndex = originalIndex - diagonalRelative - diagonalReverseOffset;\n if (originalIndex > lastOriginalIndex) changeHelper.MarkNextChange();\n lastOriginalIndex = originalIndex + 1;\n changeHelper.AddOriginalElement(originalIndex + 1, modifiedIndex + 1);\n diagonalRelative = diagonal + 1 - diagonalReverseBase;\n } else {\n originalIndex = reversePoints[diagonal - 1];\n modifiedIndex = originalIndex - diagonalRelative - diagonalReverseOffset;\n if (originalIndex > lastOriginalIndex) changeHelper.MarkNextChange();\n lastOriginalIndex = originalIndex;\n changeHelper.AddModifiedElement(originalIndex + 1, modifiedIndex + 1);\n diagonalRelative = diagonal - 1 - diagonalReverseBase;\n }\n if (historyIndex >= 0) {\n reversePoints = this.m_reverseHistory[historyIndex];\n diagonalReverseBase = reversePoints[0];\n diagonalMin = 1;\n diagonalMax = reversePoints.length - 1;\n }\n } while (--historyIndex >= -1);\n reverseChanges = changeHelper.getChanges();\n }\n return this.ConcatenateChanges(forwardChanges, reverseChanges);\n }\n /**\n * Given the range to compute the diff on, this method finds the point:\n * (midOriginal, midModified)\n * that exists in the middle of the LCS of the two sequences and\n * is the point at which the LCS problem may be broken down recursively.\n * This method will try to keep the LCS trace in memory. If the LCS recursion\n * point is calculated and the full trace is available in memory, then this method\n * will return the change list.\n * @param originalStart The start bound of the original sequence range\n * @param originalEnd The end bound of the original sequence range\n * @param modifiedStart The start bound of the modified sequence range\n * @param modifiedEnd The end bound of the modified sequence range\n * @param midOriginal The middle point of the original sequence range\n * @param midModified The middle point of the modified sequence range\n * @returns The diff changes, if available, otherwise null\n */\n ComputeRecursionPoint(originalStart, originalEnd, modifiedStart, modifiedEnd, midOriginalArr, midModifiedArr, quitEarlyArr) {\n let originalIndex = 0, modifiedIndex = 0;\n let diagonalForwardStart = 0, diagonalForwardEnd = 0;\n let diagonalReverseStart = 0, diagonalReverseEnd = 0;\n originalStart--;\n modifiedStart--;\n midOriginalArr[0] = 0;\n midModifiedArr[0] = 0;\n this.m_forwardHistory = [];\n this.m_reverseHistory = [];\n const maxDifferences = originalEnd - originalStart + (modifiedEnd - modifiedStart);\n const numDiagonals = maxDifferences + 1;\n const forwardPoints = new Int32Array(numDiagonals);\n const reversePoints = new Int32Array(numDiagonals);\n const diagonalForwardBase = modifiedEnd - modifiedStart;\n const diagonalReverseBase = originalEnd - originalStart;\n const diagonalForwardOffset = originalStart - modifiedStart;\n const diagonalReverseOffset = originalEnd - modifiedEnd;\n const deltaIsEven = (diagonalReverseBase - diagonalForwardBase) % 2 === 0;\n forwardPoints[diagonalForwardBase] = originalStart;\n reversePoints[diagonalReverseBase] = originalEnd;\n quitEarlyArr[0] = false;\n for (let numDifferences = 1; numDifferences <= maxDifferences / 2 + 1; numDifferences++) {\n let furthestOriginalIndex = 0;\n let furthestModifiedIndex = 0;\n diagonalForwardStart = this.ClipDiagonalBound(diagonalForwardBase - numDifferences, numDifferences, diagonalForwardBase, numDiagonals);\n diagonalForwardEnd = this.ClipDiagonalBound(diagonalForwardBase + numDifferences, numDifferences, diagonalForwardBase, numDiagonals);\n for (let diagonal = diagonalForwardStart; diagonal <= diagonalForwardEnd; diagonal += 2) {\n if (diagonal === diagonalForwardStart || diagonal < diagonalForwardEnd && forwardPoints[diagonal - 1] < forwardPoints[diagonal + 1]) originalIndex = forwardPoints[diagonal + 1];\n else originalIndex = forwardPoints[diagonal - 1] + 1;\n modifiedIndex = originalIndex - (diagonal - diagonalForwardBase) - diagonalForwardOffset;\n const tempOriginalIndex = originalIndex;\n while (originalIndex < originalEnd && modifiedIndex < modifiedEnd && this.ElementsAreEqual(originalIndex + 1, modifiedIndex + 1)) {\n originalIndex++;\n modifiedIndex++;\n }\n forwardPoints[diagonal] = originalIndex;\n if (originalIndex + modifiedIndex > furthestOriginalIndex + furthestModifiedIndex) {\n furthestOriginalIndex = originalIndex;\n furthestModifiedIndex = modifiedIndex;\n }\n if (!deltaIsEven && Math.abs(diagonal - diagonalReverseBase) <= numDifferences - 1) {\n if (originalIndex >= reversePoints[diagonal]) {\n midOriginalArr[0] = originalIndex;\n midModifiedArr[0] = modifiedIndex;\n if (tempOriginalIndex <= reversePoints[diagonal] && numDifferences <= 1448) return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\n else return null;\n }\n }\n }\n const matchLengthOfLongest = (furthestOriginalIndex - originalStart + (furthestModifiedIndex - modifiedStart) - numDifferences) / 2;\n if (this.ContinueProcessingPredicate !== null && !this.ContinueProcessingPredicate(furthestOriginalIndex, matchLengthOfLongest)) {\n quitEarlyArr[0] = true;\n midOriginalArr[0] = furthestOriginalIndex;\n midModifiedArr[0] = furthestModifiedIndex;\n if (matchLengthOfLongest > 0 && numDifferences <= 1448) return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\n else {\n originalStart++;\n modifiedStart++;\n return [new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, modifiedEnd - modifiedStart + 1)];\n }\n }\n diagonalReverseStart = this.ClipDiagonalBound(diagonalReverseBase - numDifferences, numDifferences, diagonalReverseBase, numDiagonals);\n diagonalReverseEnd = this.ClipDiagonalBound(diagonalReverseBase + numDifferences, numDifferences, diagonalReverseBase, numDiagonals);\n for (let diagonal = diagonalReverseStart; diagonal <= diagonalReverseEnd; diagonal += 2) {\n if (diagonal === diagonalReverseStart || diagonal < diagonalReverseEnd && reversePoints[diagonal - 1] >= reversePoints[diagonal + 1]) originalIndex = reversePoints[diagonal + 1] - 1;\n else originalIndex = reversePoints[diagonal - 1];\n modifiedIndex = originalIndex - (diagonal - diagonalReverseBase) - diagonalReverseOffset;\n const tempOriginalIndex = originalIndex;\n while (originalIndex > originalStart && modifiedIndex > modifiedStart && this.ElementsAreEqual(originalIndex, modifiedIndex)) {\n originalIndex--;\n modifiedIndex--;\n }\n reversePoints[diagonal] = originalIndex;\n if (deltaIsEven && Math.abs(diagonal - diagonalForwardBase) <= numDifferences) {\n if (originalIndex <= forwardPoints[diagonal]) {\n midOriginalArr[0] = originalIndex;\n midModifiedArr[0] = modifiedIndex;\n if (tempOriginalIndex >= forwardPoints[diagonal] && numDifferences <= 1448) return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\n else return null;\n }\n }\n }\n if (numDifferences <= 1447) {\n let temp = new Int32Array(diagonalForwardEnd - diagonalForwardStart + 2);\n temp[0] = diagonalForwardBase - diagonalForwardStart + 1;\n MyArray.Copy2(forwardPoints, diagonalForwardStart, temp, 1, diagonalForwardEnd - diagonalForwardStart + 1);\n this.m_forwardHistory.push(temp);\n temp = new Int32Array(diagonalReverseEnd - diagonalReverseStart + 2);\n temp[0] = diagonalReverseBase - diagonalReverseStart + 1;\n MyArray.Copy2(reversePoints, diagonalReverseStart, temp, 1, diagonalReverseEnd - diagonalReverseStart + 1);\n this.m_reverseHistory.push(temp);\n }\n }\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\n }\n /**\n * Shifts the given changes to provide a more intuitive diff.\n * While the first element in a diff matches the first element after the diff,\n * we shift the diff down.\n *\n * @param changes The list of changes to shift\n * @returns The shifted changes\n */\n PrettifyChanges(changes) {\n for (let i = 0; i < changes.length; i++) {\n const change = changes[i];\n const originalStop = i < changes.length - 1 ? changes[i + 1].originalStart : this._originalElementsOrHash.length;\n const modifiedStop = i < changes.length - 1 ? changes[i + 1].modifiedStart : this._modifiedElementsOrHash.length;\n const checkOriginal = change.originalLength > 0;\n const checkModified = change.modifiedLength > 0;\n while (change.originalStart + change.originalLength < originalStop && change.modifiedStart + change.modifiedLength < modifiedStop && (!checkOriginal || this.OriginalElementsAreEqual(change.originalStart, change.originalStart + change.originalLength)) && (!checkModified || this.ModifiedElementsAreEqual(change.modifiedStart, change.modifiedStart + change.modifiedLength))) {\n const startStrictEqual = this.ElementsAreStrictEqual(change.originalStart, change.modifiedStart);\n if (this.ElementsAreStrictEqual(change.originalStart + change.originalLength, change.modifiedStart + change.modifiedLength) && !startStrictEqual) break;\n change.originalStart++;\n change.modifiedStart++;\n }\n const mergedChangeArr = [null];\n if (i < changes.length - 1 && this.ChangesOverlap(changes[i], changes[i + 1], mergedChangeArr)) {\n changes[i] = mergedChangeArr[0];\n changes.splice(i + 1, 1);\n i--;\n continue;\n }\n }\n for (let i = changes.length - 1; i >= 0; i--) {\n const change = changes[i];\n let originalStop = 0;\n let modifiedStop = 0;\n if (i > 0) {\n const prevChange = changes[i - 1];\n originalStop = prevChange.originalStart + prevChange.originalLength;\n modifiedStop = prevChange.modifiedStart + prevChange.modifiedLength;\n }\n const checkOriginal = change.originalLength > 0;\n const checkModified = change.modifiedLength > 0;\n let bestDelta = 0;\n let bestScore = this._boundaryScore(change.originalStart, change.originalLength, change.modifiedStart, change.modifiedLength);\n for (let delta = 1;; delta++) {\n const originalStart = change.originalStart - delta;\n const modifiedStart = change.modifiedStart - delta;\n if (originalStart < originalStop || modifiedStart < modifiedStop) break;\n if (checkOriginal && !this.OriginalElementsAreEqual(originalStart, originalStart + change.originalLength)) break;\n if (checkModified && !this.ModifiedElementsAreEqual(modifiedStart, modifiedStart + change.modifiedLength)) break;\n const score = (originalStart === originalStop && modifiedStart === modifiedStop ? 5 : 0) + this._boundaryScore(originalStart, change.originalLength, modifiedStart, change.modifiedLength);\n if (score > bestScore) {\n bestScore = score;\n bestDelta = delta;\n }\n }\n change.originalStart -= bestDelta;\n change.modifiedStart -= bestDelta;\n const mergedChangeArr = [null];\n if (i > 0 && this.ChangesOverlap(changes[i - 1], changes[i], mergedChangeArr)) {\n changes[i - 1] = mergedChangeArr[0];\n changes.splice(i, 1);\n i++;\n continue;\n }\n }\n if (this._hasStrings) for (let i = 1, len = changes.length; i < len; i++) {\n const aChange = changes[i - 1];\n const bChange = changes[i];\n const matchedLength = bChange.originalStart - aChange.originalStart - aChange.originalLength;\n const aOriginalStart = aChange.originalStart;\n const bOriginalEnd = bChange.originalStart + bChange.originalLength;\n const abOriginalLength = bOriginalEnd - aOriginalStart;\n const aModifiedStart = aChange.modifiedStart;\n const bModifiedEnd = bChange.modifiedStart + bChange.modifiedLength;\n const abModifiedLength = bModifiedEnd - aModifiedStart;\n if (matchedLength < 5 && abOriginalLength < 20 && abModifiedLength < 20) {\n const t = this._findBetterContiguousSequence(aOriginalStart, abOriginalLength, aModifiedStart, abModifiedLength, matchedLength);\n if (t) {\n const [originalMatchStart, modifiedMatchStart] = t;\n if (originalMatchStart !== aChange.originalStart + aChange.originalLength || modifiedMatchStart !== aChange.modifiedStart + aChange.modifiedLength) {\n aChange.originalLength = originalMatchStart - aChange.originalStart;\n aChange.modifiedLength = modifiedMatchStart - aChange.modifiedStart;\n bChange.originalStart = originalMatchStart + matchedLength;\n bChange.modifiedStart = modifiedMatchStart + matchedLength;\n bChange.originalLength = bOriginalEnd - bChange.originalStart;\n bChange.modifiedLength = bModifiedEnd - bChange.modifiedStart;\n }\n }\n }\n }\n return changes;\n }\n _findBetterContiguousSequence(originalStart, originalLength, modifiedStart, modifiedLength, desiredLength) {\n if (originalLength < desiredLength || modifiedLength < desiredLength) return null;\n const originalMax = originalStart + originalLength - desiredLength + 1;\n const modifiedMax = modifiedStart + modifiedLength - desiredLength + 1;\n let bestScore = 0;\n let bestOriginalStart = 0;\n let bestModifiedStart = 0;\n for (let i = originalStart; i < originalMax; i++) for (let j = modifiedStart; j < modifiedMax; j++) {\n const score = this._contiguousSequenceScore(i, j, desiredLength);\n if (score > 0 && score > bestScore) {\n bestScore = score;\n bestOriginalStart = i;\n bestModifiedStart = j;\n }\n }\n if (bestScore > 0) return [bestOriginalStart, bestModifiedStart];\n return null;\n }\n _contiguousSequenceScore(originalStart, modifiedStart, length) {\n let score = 0;\n for (let l = 0; l < length; l++) {\n if (!this.ElementsAreEqual(originalStart + l, modifiedStart + l)) return 0;\n score += this._originalStringElements[originalStart + l].length;\n }\n return score;\n }\n _OriginalIsBoundary(index) {\n if (index <= 0 || index >= this._originalElementsOrHash.length - 1) return true;\n return this._hasStrings && /^\\s*$/.test(this._originalStringElements[index]);\n }\n _OriginalRegionIsBoundary(originalStart, originalLength) {\n if (this._OriginalIsBoundary(originalStart) || this._OriginalIsBoundary(originalStart - 1)) return true;\n if (originalLength > 0) {\n const originalEnd = originalStart + originalLength;\n if (this._OriginalIsBoundary(originalEnd - 1) || this._OriginalIsBoundary(originalEnd)) return true;\n }\n return false;\n }\n _ModifiedIsBoundary(index) {\n if (index <= 0 || index >= this._modifiedElementsOrHash.length - 1) return true;\n return this._hasStrings && /^\\s*$/.test(this._modifiedStringElements[index]);\n }\n _ModifiedRegionIsBoundary(modifiedStart, modifiedLength) {\n if (this._ModifiedIsBoundary(modifiedStart) || this._ModifiedIsBoundary(modifiedStart - 1)) return true;\n if (modifiedLength > 0) {\n const modifiedEnd = modifiedStart + modifiedLength;\n if (this._ModifiedIsBoundary(modifiedEnd - 1) || this._ModifiedIsBoundary(modifiedEnd)) return true;\n }\n return false;\n }\n _boundaryScore(originalStart, originalLength, modifiedStart, modifiedLength) {\n return (this._OriginalRegionIsBoundary(originalStart, originalLength) ? 1 : 0) + (this._ModifiedRegionIsBoundary(modifiedStart, modifiedLength) ? 1 : 0);\n }\n /**\n * Concatenates the two input DiffChange lists and returns the resulting\n * list.\n * @param The left changes\n * @param The right changes\n * @returns The concatenated list\n */\n ConcatenateChanges(left, right) {\n const mergedChangeArr = [];\n if (left.length === 0 || right.length === 0) return right.length > 0 ? right : left;\n else if (this.ChangesOverlap(left[left.length - 1], right[0], mergedChangeArr)) {\n const result = new Array(left.length + right.length - 1);\n MyArray.Copy(left, 0, result, 0, left.length - 1);\n result[left.length - 1] = mergedChangeArr[0];\n MyArray.Copy(right, 1, result, left.length, right.length - 1);\n return result;\n } else {\n const result = new Array(left.length + right.length);\n MyArray.Copy(left, 0, result, 0, left.length);\n MyArray.Copy(right, 0, result, left.length, right.length);\n return result;\n }\n }\n /**\n * Returns true if the two changes overlap and can be merged into a single\n * change\n * @param left The left change\n * @param right The right change\n * @param mergedChange The merged change if the two overlap, null otherwise\n * @returns True if the two changes overlap\n */\n ChangesOverlap(left, right, mergedChangeArr) {\n Debug.Assert(left.originalStart <= right.originalStart, \"Left change is not less than or equal to right change\");\n Debug.Assert(left.modifiedStart <= right.modifiedStart, \"Left change is not less than or equal to right change\");\n if (left.originalStart + left.originalLength >= right.originalStart || left.modifiedStart + left.modifiedLength >= right.modifiedStart) {\n const originalStart = left.originalStart;\n let originalLength = left.originalLength;\n const modifiedStart = left.modifiedStart;\n let modifiedLength = left.modifiedLength;\n if (left.originalStart + left.originalLength >= right.originalStart) originalLength = right.originalStart + right.originalLength - left.originalStart;\n if (left.modifiedStart + left.modifiedLength >= right.modifiedStart) modifiedLength = right.modifiedStart + right.modifiedLength - left.modifiedStart;\n mergedChangeArr[0] = new DiffChange(originalStart, originalLength, modifiedStart, modifiedLength);\n return true;\n } else {\n mergedChangeArr[0] = null;\n return false;\n }\n }\n /**\n * Helper method used to clip a diagonal index to the range of valid\n * diagonals. This also decides whether or not the diagonal index,\n * if it exceeds the boundary, should be clipped to the boundary or clipped\n * one inside the boundary depending on the Even/Odd status of the boundary\n * and numDifferences.\n * @param diagonal The index of the diagonal to clip.\n * @param numDifferences The current number of differences being iterated upon.\n * @param diagonalBaseIndex The base reference diagonal.\n * @param numDiagonals The total number of diagonals.\n * @returns The clipped diagonal index.\n */\n ClipDiagonalBound(diagonal, numDifferences, diagonalBaseIndex, numDiagonals) {\n if (diagonal >= 0 && diagonal < numDiagonals) return diagonal;\n const diagonalsBelow = diagonalBaseIndex;\n const diagonalsAbove = numDiagonals - diagonalBaseIndex - 1;\n const diffEven = numDifferences % 2 === 0;\n if (diagonal < 0) return diffEven === (diagonalsBelow % 2 === 0) ? 0 : 1;\n else return diffEven === (diagonalsAbove % 2 === 0) ? numDiagonals - 1 : numDiagonals - 2;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/core/position.js\n /**\n * A position in the editor.\n */\n var Position = class Position {\n constructor(lineNumber, column) {\n this.lineNumber = lineNumber;\n this.column = column;\n }\n /**\n * Create a new position from this position.\n *\n * @param newLineNumber new line number\n * @param newColumn new column\n */\n with(newLineNumber = this.lineNumber, newColumn = this.column) {\n if (newLineNumber === this.lineNumber && newColumn === this.column) return this;\n else return new Position(newLineNumber, newColumn);\n }\n /**\n * Derive a new position from this position.\n *\n * @param deltaLineNumber line number delta\n * @param deltaColumn column delta\n */\n delta(deltaLineNumber = 0, deltaColumn = 0) {\n return this.with(Math.max(1, this.lineNumber + deltaLineNumber), Math.max(1, this.column + deltaColumn));\n }\n /**\n * Test if this position equals other position\n */\n equals(other) {\n return Position.equals(this, other);\n }\n /**\n * Test if position `a` equals position `b`\n */\n static equals(a, b) {\n if (!a && !b) return true;\n return !!a && !!b && a.lineNumber === b.lineNumber && a.column === b.column;\n }\n /**\n * Test if this position is before other position.\n * If the two positions are equal, the result will be false.\n */\n isBefore(other) {\n return Position.isBefore(this, other);\n }\n /**\n * Test if position `a` is before position `b`.\n * If the two positions are equal, the result will be false.\n */\n static isBefore(a, b) {\n if (a.lineNumber < b.lineNumber) return true;\n if (b.lineNumber < a.lineNumber) return false;\n return a.column < b.column;\n }\n /**\n * Test if this position is before other position.\n * If the two positions are equal, the result will be true.\n */\n isBeforeOrEqual(other) {\n return Position.isBeforeOrEqual(this, other);\n }\n /**\n * Test if position `a` is before position `b`.\n * If the two positions are equal, the result will be true.\n */\n static isBeforeOrEqual(a, b) {\n if (a.lineNumber < b.lineNumber) return true;\n if (b.lineNumber < a.lineNumber) return false;\n return a.column <= b.column;\n }\n /**\n * A function that compares positions, useful for sorting\n */\n static compare(a, b) {\n const aLineNumber = a.lineNumber | 0;\n const bLineNumber = b.lineNumber | 0;\n if (aLineNumber === bLineNumber) return (a.column | 0) - (b.column | 0);\n return aLineNumber - bLineNumber;\n }\n /**\n * Clone this position.\n */\n clone() {\n return new Position(this.lineNumber, this.column);\n }\n /**\n * Convert to a human-readable representation.\n */\n toString() {\n return \"(\" + this.lineNumber + \",\" + this.column + \")\";\n }\n /**\n * Create a `Position` from an `IPosition`.\n */\n static lift(pos) {\n return new Position(pos.lineNumber, pos.column);\n }\n /**\n * Test if `obj` is an `IPosition`.\n */\n static isIPosition(obj) {\n return !!obj && typeof obj.lineNumber === \"number\" && typeof obj.column === \"number\";\n }\n toJSON() {\n return {\n lineNumber: this.lineNumber,\n column: this.column\n };\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/core/range.js\n /**\n * A range in the editor. (startLineNumber,startColumn) is <= (endLineNumber,endColumn)\n */\n var Range = class Range {\n constructor(startLineNumber, startColumn, endLineNumber, endColumn) {\n if (startLineNumber > endLineNumber || startLineNumber === endLineNumber && startColumn > endColumn) {\n this.startLineNumber = endLineNumber;\n this.startColumn = endColumn;\n this.endLineNumber = startLineNumber;\n this.endColumn = startColumn;\n } else {\n this.startLineNumber = startLineNumber;\n this.startColumn = startColumn;\n this.endLineNumber = endLineNumber;\n this.endColumn = endColumn;\n }\n }\n /**\n * Test if this range is empty.\n */\n isEmpty() {\n return Range.isEmpty(this);\n }\n /**\n * Test if `range` is empty.\n */\n static isEmpty(range) {\n return range.startLineNumber === range.endLineNumber && range.startColumn === range.endColumn;\n }\n /**\n * Test if position is in this range. If the position is at the edges, will return true.\n */\n containsPosition(position) {\n return Range.containsPosition(this, position);\n }\n /**\n * Test if `position` is in `range`. If the position is at the edges, will return true.\n */\n static containsPosition(range, position) {\n if (position.lineNumber < range.startLineNumber || position.lineNumber > range.endLineNumber) return false;\n if (position.lineNumber === range.startLineNumber && position.column < range.startColumn) return false;\n if (position.lineNumber === range.endLineNumber && position.column > range.endColumn) return false;\n return true;\n }\n /**\n * Test if `position` is in `range`. If the position is at the edges, will return false.\n * @internal\n */\n static strictContainsPosition(range, position) {\n if (position.lineNumber < range.startLineNumber || position.lineNumber > range.endLineNumber) return false;\n if (position.lineNumber === range.startLineNumber && position.column <= range.startColumn) return false;\n if (position.lineNumber === range.endLineNumber && position.column >= range.endColumn) return false;\n return true;\n }\n /**\n * Test if range is in this range. If the range is equal to this range, will return true.\n */\n containsRange(range) {\n return Range.containsRange(this, range);\n }\n /**\n * Test if `otherRange` is in `range`. If the ranges are equal, will return true.\n */\n static containsRange(range, otherRange) {\n if (otherRange.startLineNumber < range.startLineNumber || otherRange.endLineNumber < range.startLineNumber) return false;\n if (otherRange.startLineNumber > range.endLineNumber || otherRange.endLineNumber > range.endLineNumber) return false;\n if (otherRange.startLineNumber === range.startLineNumber && otherRange.startColumn < range.startColumn) return false;\n if (otherRange.endLineNumber === range.endLineNumber && otherRange.endColumn > range.endColumn) return false;\n return true;\n }\n /**\n * Test if `range` is strictly in this range. `range` must start after and end before this range for the result to be true.\n */\n strictContainsRange(range) {\n return Range.strictContainsRange(this, range);\n }\n /**\n * Test if `otherRange` is strictly in `range` (must start after, and end before). If the ranges are equal, will return false.\n */\n static strictContainsRange(range, otherRange) {\n if (otherRange.startLineNumber < range.startLineNumber || otherRange.endLineNumber < range.startLineNumber) return false;\n if (otherRange.startLineNumber > range.endLineNumber || otherRange.endLineNumber > range.endLineNumber) return false;\n if (otherRange.startLineNumber === range.startLineNumber && otherRange.startColumn <= range.startColumn) return false;\n if (otherRange.endLineNumber === range.endLineNumber && otherRange.endColumn >= range.endColumn) return false;\n return true;\n }\n /**\n * A reunion of the two ranges.\n * The smallest position will be used as the start point, and the largest one as the end point.\n */\n plusRange(range) {\n return Range.plusRange(this, range);\n }\n /**\n * A reunion of the two ranges.\n * The smallest position will be used as the start point, and the largest one as the end point.\n */\n static plusRange(a, b) {\n let startLineNumber;\n let startColumn;\n let endLineNumber;\n let endColumn;\n if (b.startLineNumber < a.startLineNumber) {\n startLineNumber = b.startLineNumber;\n startColumn = b.startColumn;\n } else if (b.startLineNumber === a.startLineNumber) {\n startLineNumber = b.startLineNumber;\n startColumn = Math.min(b.startColumn, a.startColumn);\n } else {\n startLineNumber = a.startLineNumber;\n startColumn = a.startColumn;\n }\n if (b.endLineNumber > a.endLineNumber) {\n endLineNumber = b.endLineNumber;\n endColumn = b.endColumn;\n } else if (b.endLineNumber === a.endLineNumber) {\n endLineNumber = b.endLineNumber;\n endColumn = Math.max(b.endColumn, a.endColumn);\n } else {\n endLineNumber = a.endLineNumber;\n endColumn = a.endColumn;\n }\n return new Range(startLineNumber, startColumn, endLineNumber, endColumn);\n }\n /**\n * A intersection of the two ranges.\n */\n intersectRanges(range) {\n return Range.intersectRanges(this, range);\n }\n /**\n * A intersection of the two ranges.\n */\n static intersectRanges(a, b) {\n let resultStartLineNumber = a.startLineNumber;\n let resultStartColumn = a.startColumn;\n let resultEndLineNumber = a.endLineNumber;\n let resultEndColumn = a.endColumn;\n const otherStartLineNumber = b.startLineNumber;\n const otherStartColumn = b.startColumn;\n const otherEndLineNumber = b.endLineNumber;\n const otherEndColumn = b.endColumn;\n if (resultStartLineNumber < otherStartLineNumber) {\n resultStartLineNumber = otherStartLineNumber;\n resultStartColumn = otherStartColumn;\n } else if (resultStartLineNumber === otherStartLineNumber) resultStartColumn = Math.max(resultStartColumn, otherStartColumn);\n if (resultEndLineNumber > otherEndLineNumber) {\n resultEndLineNumber = otherEndLineNumber;\n resultEndColumn = otherEndColumn;\n } else if (resultEndLineNumber === otherEndLineNumber) resultEndColumn = Math.min(resultEndColumn, otherEndColumn);\n if (resultStartLineNumber > resultEndLineNumber) return null;\n if (resultStartLineNumber === resultEndLineNumber && resultStartColumn > resultEndColumn) return null;\n return new Range(resultStartLineNumber, resultStartColumn, resultEndLineNumber, resultEndColumn);\n }\n /**\n * Test if this range equals other.\n */\n equalsRange(other) {\n return Range.equalsRange(this, other);\n }\n /**\n * Test if range `a` equals `b`.\n */\n static equalsRange(a, b) {\n if (!a && !b) return true;\n return !!a && !!b && a.startLineNumber === b.startLineNumber && a.startColumn === b.startColumn && a.endLineNumber === b.endLineNumber && a.endColumn === b.endColumn;\n }\n /**\n * Return the end position (which will be after or equal to the start position)\n */\n getEndPosition() {\n return Range.getEndPosition(this);\n }\n /**\n * Return the end position (which will be after or equal to the start position)\n */\n static getEndPosition(range) {\n return new Position(range.endLineNumber, range.endColumn);\n }\n /**\n * Return the start position (which will be before or equal to the end position)\n */\n getStartPosition() {\n return Range.getStartPosition(this);\n }\n /**\n * Return the start position (which will be before or equal to the end position)\n */\n static getStartPosition(range) {\n return new Position(range.startLineNumber, range.startColumn);\n }\n /**\n * Transform to a user presentable string representation.\n */\n toString() {\n return \"[\" + this.startLineNumber + \",\" + this.startColumn + \" -> \" + this.endLineNumber + \",\" + this.endColumn + \"]\";\n }\n /**\n * Create a new range using this range's start position, and using endLineNumber and endColumn as the end position.\n */\n setEndPosition(endLineNumber, endColumn) {\n return new Range(this.startLineNumber, this.startColumn, endLineNumber, endColumn);\n }\n /**\n * Create a new range using this range's end position, and using startLineNumber and startColumn as the start position.\n */\n setStartPosition(startLineNumber, startColumn) {\n return new Range(startLineNumber, startColumn, this.endLineNumber, this.endColumn);\n }\n /**\n * Create a new empty range using this range's start position.\n */\n collapseToStart() {\n return Range.collapseToStart(this);\n }\n /**\n * Create a new empty range using this range's start position.\n */\n static collapseToStart(range) {\n return new Range(range.startLineNumber, range.startColumn, range.startLineNumber, range.startColumn);\n }\n /**\n * Create a new empty range using this range's end position.\n */\n collapseToEnd() {\n return Range.collapseToEnd(this);\n }\n /**\n * Create a new empty range using this range's end position.\n */\n static collapseToEnd(range) {\n return new Range(range.endLineNumber, range.endColumn, range.endLineNumber, range.endColumn);\n }\n /**\n * Moves the range by the given amount of lines.\n */\n delta(lineCount) {\n return new Range(this.startLineNumber + lineCount, this.startColumn, this.endLineNumber + lineCount, this.endColumn);\n }\n isSingleLine() {\n return this.startLineNumber === this.endLineNumber;\n }\n static fromPositions(start, end = start) {\n return new Range(start.lineNumber, start.column, end.lineNumber, end.column);\n }\n static lift(range) {\n if (!range) return null;\n return new Range(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);\n }\n /**\n * Test if `obj` is an `IRange`.\n */\n static isIRange(obj) {\n return !!obj && typeof obj.startLineNumber === \"number\" && typeof obj.startColumn === \"number\" && typeof obj.endLineNumber === \"number\" && typeof obj.endColumn === \"number\";\n }\n /**\n * Test if the two ranges are touching in any way.\n */\n static areIntersectingOrTouching(a, b) {\n if (a.endLineNumber < b.startLineNumber || a.endLineNumber === b.startLineNumber && a.endColumn < b.startColumn) return false;\n if (b.endLineNumber < a.startLineNumber || b.endLineNumber === a.startLineNumber && b.endColumn < a.startColumn) return false;\n return true;\n }\n /**\n * Test if the two ranges are intersecting. If the ranges are touching it returns true.\n */\n static areIntersecting(a, b) {\n if (a.endLineNumber < b.startLineNumber || a.endLineNumber === b.startLineNumber && a.endColumn <= b.startColumn) return false;\n if (b.endLineNumber < a.startLineNumber || b.endLineNumber === a.startLineNumber && b.endColumn <= a.startColumn) return false;\n return true;\n }\n /**\n * Test if the two ranges are intersecting, but not touching at all.\n */\n static areOnlyIntersecting(a, b) {\n if (a.endLineNumber < b.startLineNumber - 1 || a.endLineNumber === b.startLineNumber && a.endColumn < b.startColumn - 1) return false;\n if (b.endLineNumber < a.startLineNumber - 1 || b.endLineNumber === a.startLineNumber && b.endColumn < a.startColumn - 1) return false;\n return true;\n }\n /**\n * A function that compares ranges, useful for sorting ranges\n * It will first compare ranges on the startPosition and then on the endPosition\n */\n static compareRangesUsingStarts(a, b) {\n if (a && b) {\n const aStartLineNumber = a.startLineNumber | 0;\n const bStartLineNumber = b.startLineNumber | 0;\n if (aStartLineNumber === bStartLineNumber) {\n const aStartColumn = a.startColumn | 0;\n const bStartColumn = b.startColumn | 0;\n if (aStartColumn === bStartColumn) {\n const aEndLineNumber = a.endLineNumber | 0;\n const bEndLineNumber = b.endLineNumber | 0;\n if (aEndLineNumber === bEndLineNumber) return (a.endColumn | 0) - (b.endColumn | 0);\n return aEndLineNumber - bEndLineNumber;\n }\n return aStartColumn - bStartColumn;\n }\n return aStartLineNumber - bStartLineNumber;\n }\n return (a ? 1 : 0) - (b ? 1 : 0);\n }\n /**\n * A function that compares ranges, useful for sorting ranges\n * It will first compare ranges on the endPosition and then on the startPosition\n */\n static compareRangesUsingEnds(a, b) {\n if (a.endLineNumber === b.endLineNumber) {\n if (a.endColumn === b.endColumn) {\n if (a.startLineNumber === b.startLineNumber) return a.startColumn - b.startColumn;\n return a.startLineNumber - b.startLineNumber;\n }\n return a.endColumn - b.endColumn;\n }\n return a.endLineNumber - b.endLineNumber;\n }\n /**\n * Test if the range spans multiple lines.\n */\n static spansMultipleLines(range) {\n return range.endLineNumber > range.startLineNumber;\n }\n toJSON() {\n return this;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/uint.js\n function toUint8(v) {\n if (v < 0) return 0;\n if (v > 255) return 255;\n return v | 0;\n }\n function toUint32(v) {\n if (v < 0) return 0;\n if (v > 4294967295) return 4294967295;\n return v | 0;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/core/characterClassifier.js\n /**\n * A fast character classifier that uses a compact array for ASCII values.\n */\n var CharacterClassifier = class CharacterClassifier {\n constructor(_defaultValue) {\n const defaultValue = toUint8(_defaultValue);\n this._defaultValue = defaultValue;\n this._asciiMap = CharacterClassifier._createAsciiMap(defaultValue);\n this._map = /* @__PURE__ */ new Map();\n }\n static _createAsciiMap(defaultValue) {\n const asciiMap = /* @__PURE__ */ new Uint8Array(256);\n asciiMap.fill(defaultValue);\n return asciiMap;\n }\n set(charCode, _value) {\n const value = toUint8(_value);\n if (charCode >= 0 && charCode < 256) this._asciiMap[charCode] = value;\n else this._map.set(charCode, value);\n }\n get(charCode) {\n if (charCode >= 0 && charCode < 256) return this._asciiMap[charCode];\n else return this._map.get(charCode) || this._defaultValue;\n }\n clear() {\n this._asciiMap.fill(this._defaultValue);\n this._map.clear();\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/languages/linkComputer.js\n var Uint8Matrix = class {\n constructor(rows, cols, defaultValue) {\n const data = new Uint8Array(rows * cols);\n for (let i = 0, len = rows * cols; i < len; i++) data[i] = defaultValue;\n this._data = data;\n this.rows = rows;\n this.cols = cols;\n }\n get(row, col) {\n return this._data[row * this.cols + col];\n }\n set(row, col, value) {\n this._data[row * this.cols + col] = value;\n }\n };\n var StateMachine = class {\n constructor(edges) {\n let maxCharCode = 0;\n let maxState = 0;\n for (let i = 0, len = edges.length; i < len; i++) {\n const [from, chCode, to] = edges[i];\n if (chCode > maxCharCode) maxCharCode = chCode;\n if (from > maxState) maxState = from;\n if (to > maxState) maxState = to;\n }\n maxCharCode++;\n maxState++;\n const states = new Uint8Matrix(maxState, maxCharCode, 0);\n for (let i = 0, len = edges.length; i < len; i++) {\n const [from, chCode, to] = edges[i];\n states.set(from, chCode, to);\n }\n this._states = states;\n this._maxCharCode = maxCharCode;\n }\n nextState(currentState, chCode) {\n if (chCode < 0 || chCode >= this._maxCharCode) return 0;\n return this._states.get(currentState, chCode);\n }\n };\n let _stateMachine = null;\n function getStateMachine() {\n if (_stateMachine === null) _stateMachine = new StateMachine([\n [\n 1,\n 104,\n 2\n ],\n [\n 1,\n 72,\n 2\n ],\n [\n 1,\n 102,\n 6\n ],\n [\n 1,\n 70,\n 6\n ],\n [\n 2,\n 116,\n 3\n ],\n [\n 2,\n 84,\n 3\n ],\n [\n 3,\n 116,\n 4\n ],\n [\n 3,\n 84,\n 4\n ],\n [\n 4,\n 112,\n 5\n ],\n [\n 4,\n 80,\n 5\n ],\n [\n 5,\n 115,\n 9\n ],\n [\n 5,\n 83,\n 9\n ],\n [\n 5,\n 58,\n 10\n ],\n [\n 6,\n 105,\n 7\n ],\n [\n 6,\n 73,\n 7\n ],\n [\n 7,\n 108,\n 8\n ],\n [\n 7,\n 76,\n 8\n ],\n [\n 8,\n 101,\n 9\n ],\n [\n 8,\n 69,\n 9\n ],\n [\n 9,\n 58,\n 10\n ],\n [\n 10,\n 47,\n 11\n ],\n [\n 11,\n 47,\n 12\n ]\n ]);\n return _stateMachine;\n }\n let _classifier = null;\n function getClassifier() {\n if (_classifier === null) {\n _classifier = new CharacterClassifier(0);\n const FORCE_TERMINATION_CHARACTERS = \" <>'\\\"、。。、,.:;‘〈「『〔([{「」}])〕』」〉’`~…|\";\n for (let i = 0; i < 36; i++) _classifier.set(FORCE_TERMINATION_CHARACTERS.charCodeAt(i), 1);\n const CANNOT_END_WITH_CHARACTERS = \".,;:\";\n for (let i = 0; i < 4; i++) _classifier.set(CANNOT_END_WITH_CHARACTERS.charCodeAt(i), 2);\n }\n return _classifier;\n }\n var LinkComputer = class LinkComputer {\n static _createLink(classifier, line, lineNumber, linkBeginIndex, linkEndIndex) {\n let lastIncludedCharIndex = linkEndIndex - 1;\n do {\n const chCode = line.charCodeAt(lastIncludedCharIndex);\n if (classifier.get(chCode) !== 2) break;\n lastIncludedCharIndex--;\n } while (lastIncludedCharIndex > linkBeginIndex);\n if (linkBeginIndex > 0) {\n const charCodeBeforeLink = line.charCodeAt(linkBeginIndex - 1);\n const lastCharCodeInLink = line.charCodeAt(lastIncludedCharIndex);\n if (charCodeBeforeLink === 40 && lastCharCodeInLink === 41 || charCodeBeforeLink === 91 && lastCharCodeInLink === 93 || charCodeBeforeLink === 123 && lastCharCodeInLink === 125) lastIncludedCharIndex--;\n }\n return {\n range: {\n startLineNumber: lineNumber,\n startColumn: linkBeginIndex + 1,\n endLineNumber: lineNumber,\n endColumn: lastIncludedCharIndex + 2\n },\n url: line.substring(linkBeginIndex, lastIncludedCharIndex + 1)\n };\n }\n static computeLinks(model, stateMachine = getStateMachine()) {\n const classifier = getClassifier();\n const result = [];\n for (let i = 1, lineCount = model.getLineCount(); i <= lineCount; i++) {\n const line = model.getLineContent(i);\n const len = line.length;\n let j = 0;\n let linkBeginIndex = 0;\n let linkBeginChCode = 0;\n let state = 1;\n let hasOpenParens = false;\n let hasOpenSquareBracket = false;\n let inSquareBrackets = false;\n let hasOpenCurlyBracket = false;\n while (j < len) {\n let resetStateMachine = false;\n const chCode = line.charCodeAt(j);\n if (state === 13) {\n let chClass;\n switch (chCode) {\n case 40:\n hasOpenParens = true;\n chClass = 0;\n break;\n case 41:\n chClass = hasOpenParens ? 0 : 1;\n break;\n case 91:\n inSquareBrackets = true;\n hasOpenSquareBracket = true;\n chClass = 0;\n break;\n case 93:\n inSquareBrackets = false;\n chClass = hasOpenSquareBracket ? 0 : 1;\n break;\n case 123:\n hasOpenCurlyBracket = true;\n chClass = 0;\n break;\n case 125:\n chClass = hasOpenCurlyBracket ? 0 : 1;\n break;\n case 39:\n case 34:\n case 96:\n if (linkBeginChCode === chCode) chClass = 1;\n else if (linkBeginChCode === 39 || linkBeginChCode === 34 || linkBeginChCode === 96) chClass = 0;\n else chClass = 1;\n break;\n case 42:\n chClass = linkBeginChCode === 42 ? 1 : 0;\n break;\n case 32:\n chClass = inSquareBrackets ? 0 : 1;\n break;\n default: chClass = classifier.get(chCode);\n }\n if (chClass === 1) {\n result.push(LinkComputer._createLink(classifier, line, i, linkBeginIndex, j));\n resetStateMachine = true;\n }\n } else if (state === 12) {\n let chClass;\n if (chCode === 91) {\n hasOpenSquareBracket = true;\n chClass = 0;\n } else chClass = classifier.get(chCode);\n if (chClass === 1) resetStateMachine = true;\n else state = 13;\n } else {\n state = stateMachine.nextState(state, chCode);\n if (state === 0) resetStateMachine = true;\n }\n if (resetStateMachine) {\n state = 1;\n hasOpenParens = false;\n hasOpenSquareBracket = false;\n hasOpenCurlyBracket = false;\n linkBeginIndex = j + 1;\n linkBeginChCode = chCode;\n }\n j++;\n }\n if (state === 13) result.push(LinkComputer._createLink(classifier, line, i, linkBeginIndex, len));\n }\n return result;\n }\n };\n /**\n * Returns an array of all links contains in the provided\n * document. *Note* that this operation is computational\n * expensive and should not run in the UI thread.\n */\n function computeLinks(model) {\n if (!model || typeof model.getLineCount !== \"function\" || typeof model.getLineContent !== \"function\") return [];\n return LinkComputer.computeLinks(model);\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/languages/supports/inplaceReplaceSupport.js\n var BasicInplaceReplace = class BasicInplaceReplace {\n constructor() {\n this._defaultValueSet = [\n [\"true\", \"false\"],\n [\"True\", \"False\"],\n [\n \"Private\",\n \"Public\",\n \"Friend\",\n \"ReadOnly\",\n \"Partial\",\n \"Protected\",\n \"WriteOnly\"\n ],\n [\n \"public\",\n \"protected\",\n \"private\"\n ]\n ];\n }\n static {\n this.INSTANCE = new BasicInplaceReplace();\n }\n navigateValueSet(range1, text1, range2, text2, up) {\n if (range1 && text1) {\n const result = this.doNavigateValueSet(text1, up);\n if (result) return {\n range: range1,\n value: result\n };\n }\n if (range2 && text2) {\n const result = this.doNavigateValueSet(text2, up);\n if (result) return {\n range: range2,\n value: result\n };\n }\n return null;\n }\n doNavigateValueSet(text, up) {\n const numberResult = this.numberReplace(text, up);\n if (numberResult !== null) return numberResult;\n return this.textReplace(text, up);\n }\n numberReplace(value, up) {\n const precision = Math.pow(10, value.length - (value.lastIndexOf(\".\") + 1));\n let n1 = Number(value);\n const n2 = parseFloat(value);\n if (!isNaN(n1) && !isNaN(n2) && n1 === n2) if (n1 === 0 && !up) return null;\n else {\n n1 = Math.floor(n1 * precision);\n n1 += up ? precision : -precision;\n return String(n1 / precision);\n }\n return null;\n }\n textReplace(value, up) {\n return this.valueSetsReplace(this._defaultValueSet, value, up);\n }\n valueSetsReplace(valueSets, value, up) {\n let result = null;\n for (let i = 0, len = valueSets.length; result === null && i < len; i++) result = this.valueSetReplace(valueSets[i], value, up);\n return result;\n }\n valueSetReplace(valueSet, value, up) {\n let idx = valueSet.indexOf(value);\n if (idx >= 0) {\n idx += up ? 1 : -1;\n if (idx < 0) idx = valueSet.length - 1;\n else idx %= valueSet.length;\n return valueSet[idx];\n }\n return null;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/cancellation.js\n const shortcutEvent = Object.freeze(function(callback, context) {\n const handle = setTimeout(callback.bind(context), 0);\n return { dispose() {\n clearTimeout(handle);\n } };\n });\n var CancellationToken;\n (function(CancellationToken) {\n function isCancellationToken(thing) {\n if (thing === CancellationToken.None || thing === CancellationToken.Cancelled) return true;\n if (thing instanceof MutableToken) return true;\n if (!thing || typeof thing !== \"object\") return false;\n return typeof thing.isCancellationRequested === \"boolean\" && typeof thing.onCancellationRequested === \"function\";\n }\n CancellationToken.isCancellationToken = isCancellationToken;\n CancellationToken.None = Object.freeze({\n isCancellationRequested: false,\n onCancellationRequested: Event.None\n });\n CancellationToken.Cancelled = Object.freeze({\n isCancellationRequested: true,\n onCancellationRequested: shortcutEvent\n });\n })(CancellationToken || (CancellationToken = {}));\n var MutableToken = class {\n constructor() {\n this._isCancelled = false;\n this._emitter = null;\n }\n cancel() {\n if (!this._isCancelled) {\n this._isCancelled = true;\n if (this._emitter) {\n this._emitter.fire(void 0);\n this.dispose();\n }\n }\n }\n get isCancellationRequested() {\n return this._isCancelled;\n }\n get onCancellationRequested() {\n if (this._isCancelled) return shortcutEvent;\n if (!this._emitter) this._emitter = new Emitter();\n return this._emitter.event;\n }\n dispose() {\n if (this._emitter) {\n this._emitter.dispose();\n this._emitter = null;\n }\n }\n };\n var CancellationTokenSource = class {\n constructor(parent) {\n this._token = void 0;\n this._parentListener = void 0;\n this._parentListener = parent && parent.onCancellationRequested(this.cancel, this);\n }\n get token() {\n if (!this._token) this._token = new MutableToken();\n return this._token;\n }\n cancel() {\n if (!this._token) this._token = CancellationToken.Cancelled;\n else if (this._token instanceof MutableToken) this._token.cancel();\n }\n dispose(cancel = false) {\n if (cancel) this.cancel();\n this._parentListener?.dispose();\n if (!this._token) this._token = CancellationToken.None;\n else if (this._token instanceof MutableToken) this._token.dispose();\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/keyCodes.js\n var KeyCodeStrMap = class {\n constructor() {\n this._keyCodeToStr = [];\n this._strToKeyCode = Object.create(null);\n }\n define(keyCode, str) {\n this._keyCodeToStr[keyCode] = str;\n this._strToKeyCode[str.toLowerCase()] = keyCode;\n }\n keyCodeToStr(keyCode) {\n return this._keyCodeToStr[keyCode];\n }\n strToKeyCode(str) {\n return this._strToKeyCode[str.toLowerCase()] || 0;\n }\n };\n const uiMap = new KeyCodeStrMap();\n const userSettingsUSMap = new KeyCodeStrMap();\n const userSettingsGeneralMap = new KeyCodeStrMap();\n const EVENT_KEY_CODE_MAP = new Array(230);\n const scanCodeStrToInt = Object.create(null);\n const scanCodeLowerCaseStrToInt = Object.create(null);\n /**\n * -1 if a ScanCode => KeyCode mapping depends on kb layout.\n */\n const IMMUTABLE_CODE_TO_KEY_CODE = [];\n for (let i = 0; i <= 193; i++) IMMUTABLE_CODE_TO_KEY_CODE[i] = -1;\n (function() {\n const empty = \"\";\n const mappings = [\n [\n 1,\n 0,\n \"None\",\n 0,\n \"unknown\",\n 0,\n \"VK_UNKNOWN\",\n empty,\n empty\n ],\n [\n 1,\n 1,\n \"Hyper\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 2,\n \"Super\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 3,\n \"Fn\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 4,\n \"FnLock\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 5,\n \"Suspend\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 6,\n \"Resume\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 7,\n \"Turbo\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 8,\n \"Sleep\",\n 0,\n empty,\n 0,\n \"VK_SLEEP\",\n empty,\n empty\n ],\n [\n 1,\n 9,\n \"WakeUp\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 0,\n 10,\n \"KeyA\",\n 31,\n \"A\",\n 65,\n \"VK_A\",\n empty,\n empty\n ],\n [\n 0,\n 11,\n \"KeyB\",\n 32,\n \"B\",\n 66,\n \"VK_B\",\n empty,\n empty\n ],\n [\n 0,\n 12,\n \"KeyC\",\n 33,\n \"C\",\n 67,\n \"VK_C\",\n empty,\n empty\n ],\n [\n 0,\n 13,\n \"KeyD\",\n 34,\n \"D\",\n 68,\n \"VK_D\",\n empty,\n empty\n ],\n [\n 0,\n 14,\n \"KeyE\",\n 35,\n \"E\",\n 69,\n \"VK_E\",\n empty,\n empty\n ],\n [\n 0,\n 15,\n \"KeyF\",\n 36,\n \"F\",\n 70,\n \"VK_F\",\n empty,\n empty\n ],\n [\n 0,\n 16,\n \"KeyG\",\n 37,\n \"G\",\n 71,\n \"VK_G\",\n empty,\n empty\n ],\n [\n 0,\n 17,\n \"KeyH\",\n 38,\n \"H\",\n 72,\n \"VK_H\",\n empty,\n empty\n ],\n [\n 0,\n 18,\n \"KeyI\",\n 39,\n \"I\",\n 73,\n \"VK_I\",\n empty,\n empty\n ],\n [\n 0,\n 19,\n \"KeyJ\",\n 40,\n \"J\",\n 74,\n \"VK_J\",\n empty,\n empty\n ],\n [\n 0,\n 20,\n \"KeyK\",\n 41,\n \"K\",\n 75,\n \"VK_K\",\n empty,\n empty\n ],\n [\n 0,\n 21,\n \"KeyL\",\n 42,\n \"L\",\n 76,\n \"VK_L\",\n empty,\n empty\n ],\n [\n 0,\n 22,\n \"KeyM\",\n 43,\n \"M\",\n 77,\n \"VK_M\",\n empty,\n empty\n ],\n [\n 0,\n 23,\n \"KeyN\",\n 44,\n \"N\",\n 78,\n \"VK_N\",\n empty,\n empty\n ],\n [\n 0,\n 24,\n \"KeyO\",\n 45,\n \"O\",\n 79,\n \"VK_O\",\n empty,\n empty\n ],\n [\n 0,\n 25,\n \"KeyP\",\n 46,\n \"P\",\n 80,\n \"VK_P\",\n empty,\n empty\n ],\n [\n 0,\n 26,\n \"KeyQ\",\n 47,\n \"Q\",\n 81,\n \"VK_Q\",\n empty,\n empty\n ],\n [\n 0,\n 27,\n \"KeyR\",\n 48,\n \"R\",\n 82,\n \"VK_R\",\n empty,\n empty\n ],\n [\n 0,\n 28,\n \"KeyS\",\n 49,\n \"S\",\n 83,\n \"VK_S\",\n empty,\n empty\n ],\n [\n 0,\n 29,\n \"KeyT\",\n 50,\n \"T\",\n 84,\n \"VK_T\",\n empty,\n empty\n ],\n [\n 0,\n 30,\n \"KeyU\",\n 51,\n \"U\",\n 85,\n \"VK_U\",\n empty,\n empty\n ],\n [\n 0,\n 31,\n \"KeyV\",\n 52,\n \"V\",\n 86,\n \"VK_V\",\n empty,\n empty\n ],\n [\n 0,\n 32,\n \"KeyW\",\n 53,\n \"W\",\n 87,\n \"VK_W\",\n empty,\n empty\n ],\n [\n 0,\n 33,\n \"KeyX\",\n 54,\n \"X\",\n 88,\n \"VK_X\",\n empty,\n empty\n ],\n [\n 0,\n 34,\n \"KeyY\",\n 55,\n \"Y\",\n 89,\n \"VK_Y\",\n empty,\n empty\n ],\n [\n 0,\n 35,\n \"KeyZ\",\n 56,\n \"Z\",\n 90,\n \"VK_Z\",\n empty,\n empty\n ],\n [\n 0,\n 36,\n \"Digit1\",\n 22,\n \"1\",\n 49,\n \"VK_1\",\n empty,\n empty\n ],\n [\n 0,\n 37,\n \"Digit2\",\n 23,\n \"2\",\n 50,\n \"VK_2\",\n empty,\n empty\n ],\n [\n 0,\n 38,\n \"Digit3\",\n 24,\n \"3\",\n 51,\n \"VK_3\",\n empty,\n empty\n ],\n [\n 0,\n 39,\n \"Digit4\",\n 25,\n \"4\",\n 52,\n \"VK_4\",\n empty,\n empty\n ],\n [\n 0,\n 40,\n \"Digit5\",\n 26,\n \"5\",\n 53,\n \"VK_5\",\n empty,\n empty\n ],\n [\n 0,\n 41,\n \"Digit6\",\n 27,\n \"6\",\n 54,\n \"VK_6\",\n empty,\n empty\n ],\n [\n 0,\n 42,\n \"Digit7\",\n 28,\n \"7\",\n 55,\n \"VK_7\",\n empty,\n empty\n ],\n [\n 0,\n 43,\n \"Digit8\",\n 29,\n \"8\",\n 56,\n \"VK_8\",\n empty,\n empty\n ],\n [\n 0,\n 44,\n \"Digit9\",\n 30,\n \"9\",\n 57,\n \"VK_9\",\n empty,\n empty\n ],\n [\n 0,\n 45,\n \"Digit0\",\n 21,\n \"0\",\n 48,\n \"VK_0\",\n empty,\n empty\n ],\n [\n 1,\n 46,\n \"Enter\",\n 3,\n \"Enter\",\n 13,\n \"VK_RETURN\",\n empty,\n empty\n ],\n [\n 1,\n 47,\n \"Escape\",\n 9,\n \"Escape\",\n 27,\n \"VK_ESCAPE\",\n empty,\n empty\n ],\n [\n 1,\n 48,\n \"Backspace\",\n 1,\n \"Backspace\",\n 8,\n \"VK_BACK\",\n empty,\n empty\n ],\n [\n 1,\n 49,\n \"Tab\",\n 2,\n \"Tab\",\n 9,\n \"VK_TAB\",\n empty,\n empty\n ],\n [\n 1,\n 50,\n \"Space\",\n 10,\n \"Space\",\n 32,\n \"VK_SPACE\",\n empty,\n empty\n ],\n [\n 0,\n 51,\n \"Minus\",\n 88,\n \"-\",\n 189,\n \"VK_OEM_MINUS\",\n \"-\",\n \"OEM_MINUS\"\n ],\n [\n 0,\n 52,\n \"Equal\",\n 86,\n \"=\",\n 187,\n \"VK_OEM_PLUS\",\n \"=\",\n \"OEM_PLUS\"\n ],\n [\n 0,\n 53,\n \"BracketLeft\",\n 92,\n \"[\",\n 219,\n \"VK_OEM_4\",\n \"[\",\n \"OEM_4\"\n ],\n [\n 0,\n 54,\n \"BracketRight\",\n 94,\n \"]\",\n 221,\n \"VK_OEM_6\",\n \"]\",\n \"OEM_6\"\n ],\n [\n 0,\n 55,\n \"Backslash\",\n 93,\n \"\\\\\",\n 220,\n \"VK_OEM_5\",\n \"\\\\\",\n \"OEM_5\"\n ],\n [\n 0,\n 56,\n \"IntlHash\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 0,\n 57,\n \"Semicolon\",\n 85,\n \";\",\n 186,\n \"VK_OEM_1\",\n \";\",\n \"OEM_1\"\n ],\n [\n 0,\n 58,\n \"Quote\",\n 95,\n \"'\",\n 222,\n \"VK_OEM_7\",\n \"'\",\n \"OEM_7\"\n ],\n [\n 0,\n 59,\n \"Backquote\",\n 91,\n \"`\",\n 192,\n \"VK_OEM_3\",\n \"`\",\n \"OEM_3\"\n ],\n [\n 0,\n 60,\n \"Comma\",\n 87,\n \",\",\n 188,\n \"VK_OEM_COMMA\",\n \",\",\n \"OEM_COMMA\"\n ],\n [\n 0,\n 61,\n \"Period\",\n 89,\n \".\",\n 190,\n \"VK_OEM_PERIOD\",\n \".\",\n \"OEM_PERIOD\"\n ],\n [\n 0,\n 62,\n \"Slash\",\n 90,\n \"/\",\n 191,\n \"VK_OEM_2\",\n \"/\",\n \"OEM_2\"\n ],\n [\n 1,\n 63,\n \"CapsLock\",\n 8,\n \"CapsLock\",\n 20,\n \"VK_CAPITAL\",\n empty,\n empty\n ],\n [\n 1,\n 64,\n \"F1\",\n 59,\n \"F1\",\n 112,\n \"VK_F1\",\n empty,\n empty\n ],\n [\n 1,\n 65,\n \"F2\",\n 60,\n \"F2\",\n 113,\n \"VK_F2\",\n empty,\n empty\n ],\n [\n 1,\n 66,\n \"F3\",\n 61,\n \"F3\",\n 114,\n \"VK_F3\",\n empty,\n empty\n ],\n [\n 1,\n 67,\n \"F4\",\n 62,\n \"F4\",\n 115,\n \"VK_F4\",\n empty,\n empty\n ],\n [\n 1,\n 68,\n \"F5\",\n 63,\n \"F5\",\n 116,\n \"VK_F5\",\n empty,\n empty\n ],\n [\n 1,\n 69,\n \"F6\",\n 64,\n \"F6\",\n 117,\n \"VK_F6\",\n empty,\n empty\n ],\n [\n 1,\n 70,\n \"F7\",\n 65,\n \"F7\",\n 118,\n \"VK_F7\",\n empty,\n empty\n ],\n [\n 1,\n 71,\n \"F8\",\n 66,\n \"F8\",\n 119,\n \"VK_F8\",\n empty,\n empty\n ],\n [\n 1,\n 72,\n \"F9\",\n 67,\n \"F9\",\n 120,\n \"VK_F9\",\n empty,\n empty\n ],\n [\n 1,\n 73,\n \"F10\",\n 68,\n \"F10\",\n 121,\n \"VK_F10\",\n empty,\n empty\n ],\n [\n 1,\n 74,\n \"F11\",\n 69,\n \"F11\",\n 122,\n \"VK_F11\",\n empty,\n empty\n ],\n [\n 1,\n 75,\n \"F12\",\n 70,\n \"F12\",\n 123,\n \"VK_F12\",\n empty,\n empty\n ],\n [\n 1,\n 76,\n \"PrintScreen\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 77,\n \"ScrollLock\",\n 84,\n \"ScrollLock\",\n 145,\n \"VK_SCROLL\",\n empty,\n empty\n ],\n [\n 1,\n 78,\n \"Pause\",\n 7,\n \"PauseBreak\",\n 19,\n \"VK_PAUSE\",\n empty,\n empty\n ],\n [\n 1,\n 79,\n \"Insert\",\n 19,\n \"Insert\",\n 45,\n \"VK_INSERT\",\n empty,\n empty\n ],\n [\n 1,\n 80,\n \"Home\",\n 14,\n \"Home\",\n 36,\n \"VK_HOME\",\n empty,\n empty\n ],\n [\n 1,\n 81,\n \"PageUp\",\n 11,\n \"PageUp\",\n 33,\n \"VK_PRIOR\",\n empty,\n empty\n ],\n [\n 1,\n 82,\n \"Delete\",\n 20,\n \"Delete\",\n 46,\n \"VK_DELETE\",\n empty,\n empty\n ],\n [\n 1,\n 83,\n \"End\",\n 13,\n \"End\",\n 35,\n \"VK_END\",\n empty,\n empty\n ],\n [\n 1,\n 84,\n \"PageDown\",\n 12,\n \"PageDown\",\n 34,\n \"VK_NEXT\",\n empty,\n empty\n ],\n [\n 1,\n 85,\n \"ArrowRight\",\n 17,\n \"RightArrow\",\n 39,\n \"VK_RIGHT\",\n \"Right\",\n empty\n ],\n [\n 1,\n 86,\n \"ArrowLeft\",\n 15,\n \"LeftArrow\",\n 37,\n \"VK_LEFT\",\n \"Left\",\n empty\n ],\n [\n 1,\n 87,\n \"ArrowDown\",\n 18,\n \"DownArrow\",\n 40,\n \"VK_DOWN\",\n \"Down\",\n empty\n ],\n [\n 1,\n 88,\n \"ArrowUp\",\n 16,\n \"UpArrow\",\n 38,\n \"VK_UP\",\n \"Up\",\n empty\n ],\n [\n 1,\n 89,\n \"NumLock\",\n 83,\n \"NumLock\",\n 144,\n \"VK_NUMLOCK\",\n empty,\n empty\n ],\n [\n 1,\n 90,\n \"NumpadDivide\",\n 113,\n \"NumPad_Divide\",\n 111,\n \"VK_DIVIDE\",\n empty,\n empty\n ],\n [\n 1,\n 91,\n \"NumpadMultiply\",\n 108,\n \"NumPad_Multiply\",\n 106,\n \"VK_MULTIPLY\",\n empty,\n empty\n ],\n [\n 1,\n 92,\n \"NumpadSubtract\",\n 111,\n \"NumPad_Subtract\",\n 109,\n \"VK_SUBTRACT\",\n empty,\n empty\n ],\n [\n 1,\n 93,\n \"NumpadAdd\",\n 109,\n \"NumPad_Add\",\n 107,\n \"VK_ADD\",\n empty,\n empty\n ],\n [\n 1,\n 94,\n \"NumpadEnter\",\n 3,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 95,\n \"Numpad1\",\n 99,\n \"NumPad1\",\n 97,\n \"VK_NUMPAD1\",\n empty,\n empty\n ],\n [\n 1,\n 96,\n \"Numpad2\",\n 100,\n \"NumPad2\",\n 98,\n \"VK_NUMPAD2\",\n empty,\n empty\n ],\n [\n 1,\n 97,\n \"Numpad3\",\n 101,\n \"NumPad3\",\n 99,\n \"VK_NUMPAD3\",\n empty,\n empty\n ],\n [\n 1,\n 98,\n \"Numpad4\",\n 102,\n \"NumPad4\",\n 100,\n \"VK_NUMPAD4\",\n empty,\n empty\n ],\n [\n 1,\n 99,\n \"Numpad5\",\n 103,\n \"NumPad5\",\n 101,\n \"VK_NUMPAD5\",\n empty,\n empty\n ],\n [\n 1,\n 100,\n \"Numpad6\",\n 104,\n \"NumPad6\",\n 102,\n \"VK_NUMPAD6\",\n empty,\n empty\n ],\n [\n 1,\n 101,\n \"Numpad7\",\n 105,\n \"NumPad7\",\n 103,\n \"VK_NUMPAD7\",\n empty,\n empty\n ],\n [\n 1,\n 102,\n \"Numpad8\",\n 106,\n \"NumPad8\",\n 104,\n \"VK_NUMPAD8\",\n empty,\n empty\n ],\n [\n 1,\n 103,\n \"Numpad9\",\n 107,\n \"NumPad9\",\n 105,\n \"VK_NUMPAD9\",\n empty,\n empty\n ],\n [\n 1,\n 104,\n \"Numpad0\",\n 98,\n \"NumPad0\",\n 96,\n \"VK_NUMPAD0\",\n empty,\n empty\n ],\n [\n 1,\n 105,\n \"NumpadDecimal\",\n 112,\n \"NumPad_Decimal\",\n 110,\n \"VK_DECIMAL\",\n empty,\n empty\n ],\n [\n 0,\n 106,\n \"IntlBackslash\",\n 97,\n \"OEM_102\",\n 226,\n \"VK_OEM_102\",\n empty,\n empty\n ],\n [\n 1,\n 107,\n \"ContextMenu\",\n 58,\n \"ContextMenu\",\n 93,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 108,\n \"Power\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 109,\n \"NumpadEqual\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 110,\n \"F13\",\n 71,\n \"F13\",\n 124,\n \"VK_F13\",\n empty,\n empty\n ],\n [\n 1,\n 111,\n \"F14\",\n 72,\n \"F14\",\n 125,\n \"VK_F14\",\n empty,\n empty\n ],\n [\n 1,\n 112,\n \"F15\",\n 73,\n \"F15\",\n 126,\n \"VK_F15\",\n empty,\n empty\n ],\n [\n 1,\n 113,\n \"F16\",\n 74,\n \"F16\",\n 127,\n \"VK_F16\",\n empty,\n empty\n ],\n [\n 1,\n 114,\n \"F17\",\n 75,\n \"F17\",\n 128,\n \"VK_F17\",\n empty,\n empty\n ],\n [\n 1,\n 115,\n \"F18\",\n 76,\n \"F18\",\n 129,\n \"VK_F18\",\n empty,\n empty\n ],\n [\n 1,\n 116,\n \"F19\",\n 77,\n \"F19\",\n 130,\n \"VK_F19\",\n empty,\n empty\n ],\n [\n 1,\n 117,\n \"F20\",\n 78,\n \"F20\",\n 131,\n \"VK_F20\",\n empty,\n empty\n ],\n [\n 1,\n 118,\n \"F21\",\n 79,\n \"F21\",\n 132,\n \"VK_F21\",\n empty,\n empty\n ],\n [\n 1,\n 119,\n \"F22\",\n 80,\n \"F22\",\n 133,\n \"VK_F22\",\n empty,\n empty\n ],\n [\n 1,\n 120,\n \"F23\",\n 81,\n \"F23\",\n 134,\n \"VK_F23\",\n empty,\n empty\n ],\n [\n 1,\n 121,\n \"F24\",\n 82,\n \"F24\",\n 135,\n \"VK_F24\",\n empty,\n empty\n ],\n [\n 1,\n 122,\n \"Open\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 123,\n \"Help\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 124,\n \"Select\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 125,\n \"Again\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 126,\n \"Undo\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 127,\n \"Cut\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 128,\n \"Copy\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 129,\n \"Paste\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 130,\n \"Find\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 131,\n \"AudioVolumeMute\",\n 117,\n \"AudioVolumeMute\",\n 173,\n \"VK_VOLUME_MUTE\",\n empty,\n empty\n ],\n [\n 1,\n 132,\n \"AudioVolumeUp\",\n 118,\n \"AudioVolumeUp\",\n 175,\n \"VK_VOLUME_UP\",\n empty,\n empty\n ],\n [\n 1,\n 133,\n \"AudioVolumeDown\",\n 119,\n \"AudioVolumeDown\",\n 174,\n \"VK_VOLUME_DOWN\",\n empty,\n empty\n ],\n [\n 1,\n 134,\n \"NumpadComma\",\n 110,\n \"NumPad_Separator\",\n 108,\n \"VK_SEPARATOR\",\n empty,\n empty\n ],\n [\n 0,\n 135,\n \"IntlRo\",\n 115,\n \"ABNT_C1\",\n 193,\n \"VK_ABNT_C1\",\n empty,\n empty\n ],\n [\n 1,\n 136,\n \"KanaMode\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 0,\n 137,\n \"IntlYen\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 138,\n \"Convert\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 139,\n \"NonConvert\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 140,\n \"Lang1\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 141,\n \"Lang2\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 142,\n \"Lang3\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 143,\n \"Lang4\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 144,\n \"Lang5\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 145,\n \"Abort\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 146,\n \"Props\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 147,\n \"NumpadParenLeft\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 148,\n \"NumpadParenRight\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 149,\n \"NumpadBackspace\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 150,\n \"NumpadMemoryStore\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 151,\n \"NumpadMemoryRecall\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 152,\n \"NumpadMemoryClear\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 153,\n \"NumpadMemoryAdd\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 154,\n \"NumpadMemorySubtract\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 155,\n \"NumpadClear\",\n 131,\n \"Clear\",\n 12,\n \"VK_CLEAR\",\n empty,\n empty\n ],\n [\n 1,\n 156,\n \"NumpadClearEntry\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 5,\n \"Ctrl\",\n 17,\n \"VK_CONTROL\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 4,\n \"Shift\",\n 16,\n \"VK_SHIFT\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 6,\n \"Alt\",\n 18,\n \"VK_MENU\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 57,\n \"Meta\",\n 91,\n \"VK_COMMAND\",\n empty,\n empty\n ],\n [\n 1,\n 157,\n \"ControlLeft\",\n 5,\n empty,\n 0,\n \"VK_LCONTROL\",\n empty,\n empty\n ],\n [\n 1,\n 158,\n \"ShiftLeft\",\n 4,\n empty,\n 0,\n \"VK_LSHIFT\",\n empty,\n empty\n ],\n [\n 1,\n 159,\n \"AltLeft\",\n 6,\n empty,\n 0,\n \"VK_LMENU\",\n empty,\n empty\n ],\n [\n 1,\n 160,\n \"MetaLeft\",\n 57,\n empty,\n 0,\n \"VK_LWIN\",\n empty,\n empty\n ],\n [\n 1,\n 161,\n \"ControlRight\",\n 5,\n empty,\n 0,\n \"VK_RCONTROL\",\n empty,\n empty\n ],\n [\n 1,\n 162,\n \"ShiftRight\",\n 4,\n empty,\n 0,\n \"VK_RSHIFT\",\n empty,\n empty\n ],\n [\n 1,\n 163,\n \"AltRight\",\n 6,\n empty,\n 0,\n \"VK_RMENU\",\n empty,\n empty\n ],\n [\n 1,\n 164,\n \"MetaRight\",\n 57,\n empty,\n 0,\n \"VK_RWIN\",\n empty,\n empty\n ],\n [\n 1,\n 165,\n \"BrightnessUp\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 166,\n \"BrightnessDown\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 167,\n \"MediaPlay\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 168,\n \"MediaRecord\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 169,\n \"MediaFastForward\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 170,\n \"MediaRewind\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 171,\n \"MediaTrackNext\",\n 124,\n \"MediaTrackNext\",\n 176,\n \"VK_MEDIA_NEXT_TRACK\",\n empty,\n empty\n ],\n [\n 1,\n 172,\n \"MediaTrackPrevious\",\n 125,\n \"MediaTrackPrevious\",\n 177,\n \"VK_MEDIA_PREV_TRACK\",\n empty,\n empty\n ],\n [\n 1,\n 173,\n \"MediaStop\",\n 126,\n \"MediaStop\",\n 178,\n \"VK_MEDIA_STOP\",\n empty,\n empty\n ],\n [\n 1,\n 174,\n \"Eject\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 175,\n \"MediaPlayPause\",\n 127,\n \"MediaPlayPause\",\n 179,\n \"VK_MEDIA_PLAY_PAUSE\",\n empty,\n empty\n ],\n [\n 1,\n 176,\n \"MediaSelect\",\n 128,\n \"LaunchMediaPlayer\",\n 181,\n \"VK_MEDIA_LAUNCH_MEDIA_SELECT\",\n empty,\n empty\n ],\n [\n 1,\n 177,\n \"LaunchMail\",\n 129,\n \"LaunchMail\",\n 180,\n \"VK_MEDIA_LAUNCH_MAIL\",\n empty,\n empty\n ],\n [\n 1,\n 178,\n \"LaunchApp2\",\n 130,\n \"LaunchApp2\",\n 183,\n \"VK_MEDIA_LAUNCH_APP2\",\n empty,\n empty\n ],\n [\n 1,\n 179,\n \"LaunchApp1\",\n 0,\n empty,\n 0,\n \"VK_MEDIA_LAUNCH_APP1\",\n empty,\n empty\n ],\n [\n 1,\n 180,\n \"SelectTask\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 181,\n \"LaunchScreenSaver\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 182,\n \"BrowserSearch\",\n 120,\n \"BrowserSearch\",\n 170,\n \"VK_BROWSER_SEARCH\",\n empty,\n empty\n ],\n [\n 1,\n 183,\n \"BrowserHome\",\n 121,\n \"BrowserHome\",\n 172,\n \"VK_BROWSER_HOME\",\n empty,\n empty\n ],\n [\n 1,\n 184,\n \"BrowserBack\",\n 122,\n \"BrowserBack\",\n 166,\n \"VK_BROWSER_BACK\",\n empty,\n empty\n ],\n [\n 1,\n 185,\n \"BrowserForward\",\n 123,\n \"BrowserForward\",\n 167,\n \"VK_BROWSER_FORWARD\",\n empty,\n empty\n ],\n [\n 1,\n 186,\n \"BrowserStop\",\n 0,\n empty,\n 0,\n \"VK_BROWSER_STOP\",\n empty,\n empty\n ],\n [\n 1,\n 187,\n \"BrowserRefresh\",\n 0,\n empty,\n 0,\n \"VK_BROWSER_REFRESH\",\n empty,\n empty\n ],\n [\n 1,\n 188,\n \"BrowserFavorites\",\n 0,\n empty,\n 0,\n \"VK_BROWSER_FAVORITES\",\n empty,\n empty\n ],\n [\n 1,\n 189,\n \"ZoomToggle\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 190,\n \"MailReply\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 191,\n \"MailForward\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 192,\n \"MailSend\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 114,\n \"KeyInComposition\",\n 229,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 116,\n \"ABNT_C2\",\n 194,\n \"VK_ABNT_C2\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 96,\n \"OEM_8\",\n 223,\n \"VK_OEM_8\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_KANA\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_HANGUL\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_JUNJA\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_FINAL\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_HANJA\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_KANJI\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_CONVERT\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_NONCONVERT\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_ACCEPT\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_MODECHANGE\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_SELECT\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_PRINT\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_EXECUTE\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_SNAPSHOT\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_HELP\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_APPS\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_PROCESSKEY\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_PACKET\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_DBE_SBCSCHAR\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_DBE_DBCSCHAR\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_ATTN\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_CRSEL\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_EXSEL\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_EREOF\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_PLAY\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_ZOOM\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_NONAME\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_PA1\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_OEM_CLEAR\",\n empty,\n empty\n ]\n ];\n const seenKeyCode = [];\n const seenScanCode = [];\n for (const mapping of mappings) {\n const [immutable, scanCode, scanCodeStr, keyCode, keyCodeStr, eventKeyCode, vkey, usUserSettingsLabel, generalUserSettingsLabel] = mapping;\n if (!seenScanCode[scanCode]) {\n seenScanCode[scanCode] = true;\n scanCodeStrToInt[scanCodeStr] = scanCode;\n scanCodeLowerCaseStrToInt[scanCodeStr.toLowerCase()] = scanCode;\n if (immutable) IMMUTABLE_CODE_TO_KEY_CODE[scanCode] = keyCode;\n }\n if (!seenKeyCode[keyCode]) {\n seenKeyCode[keyCode] = true;\n if (!keyCodeStr) throw new Error(`String representation missing for key code ${keyCode} around scan code ${scanCodeStr}`);\n uiMap.define(keyCode, keyCodeStr);\n userSettingsUSMap.define(keyCode, usUserSettingsLabel || keyCodeStr);\n userSettingsGeneralMap.define(keyCode, generalUserSettingsLabel || usUserSettingsLabel || keyCodeStr);\n }\n if (eventKeyCode) EVENT_KEY_CODE_MAP[eventKeyCode] = keyCode;\n }\n })();\n var KeyCodeUtils;\n (function(KeyCodeUtils) {\n function toString(keyCode) {\n return uiMap.keyCodeToStr(keyCode);\n }\n KeyCodeUtils.toString = toString;\n function fromString(key) {\n return uiMap.strToKeyCode(key);\n }\n KeyCodeUtils.fromString = fromString;\n function toUserSettingsUS(keyCode) {\n return userSettingsUSMap.keyCodeToStr(keyCode);\n }\n KeyCodeUtils.toUserSettingsUS = toUserSettingsUS;\n function toUserSettingsGeneral(keyCode) {\n return userSettingsGeneralMap.keyCodeToStr(keyCode);\n }\n KeyCodeUtils.toUserSettingsGeneral = toUserSettingsGeneral;\n function fromUserSettings(key) {\n return userSettingsUSMap.strToKeyCode(key) || userSettingsGeneralMap.strToKeyCode(key);\n }\n KeyCodeUtils.fromUserSettings = fromUserSettings;\n function toElectronAccelerator(keyCode) {\n if (keyCode >= 98 && keyCode <= 113) return null;\n switch (keyCode) {\n case 16: return \"Up\";\n case 18: return \"Down\";\n case 15: return \"Left\";\n case 17: return \"Right\";\n }\n return uiMap.keyCodeToStr(keyCode);\n }\n KeyCodeUtils.toElectronAccelerator = toElectronAccelerator;\n })(KeyCodeUtils || (KeyCodeUtils = {}));\n function KeyChord(firstPart, secondPart) {\n return (firstPart | (secondPart & 65535) << 16 >>> 0) >>> 0;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/process.js\n let safeProcess;\n const vscodeGlobal = globalThis.vscode;\n if (typeof vscodeGlobal !== \"undefined\" && typeof vscodeGlobal.process !== \"undefined\") {\n const sandboxProcess = vscodeGlobal.process;\n safeProcess = {\n get platform() {\n return sandboxProcess.platform;\n },\n get arch() {\n return sandboxProcess.arch;\n },\n get env() {\n return sandboxProcess.env;\n },\n cwd() {\n return sandboxProcess.cwd();\n }\n };\n } else if (typeof process !== \"undefined\" && typeof process?.versions?.node === \"string\") safeProcess = {\n get platform() {\n return process.platform;\n },\n get arch() {\n return process.arch;\n },\n get env() {\n return process.env;\n },\n cwd() {\n return process.env[\"VSCODE_CWD\"] || process.cwd();\n }\n };\n else safeProcess = {\n get platform() {\n return isWindows ? \"win32\" : isMacintosh ? \"darwin\" : \"linux\";\n },\n get arch() {},\n get env() {\n return {};\n },\n cwd() {\n return \"/\";\n }\n };\n /**\n * Provides safe access to the `cwd` property in node.js, sandboxed or web\n * environments.\n *\n * Note: in web, this property is hardcoded to be `/`.\n *\n * @skipMangle\n */\n const cwd = safeProcess.cwd;\n /**\n * Provides safe access to the `env` property in node.js, sandboxed or web\n * environments.\n *\n * Note: in web, this property is hardcoded to be `{}`.\n */\n const env = safeProcess.env;\n /**\n * Provides safe access to the `platform` property in node.js, sandboxed or web\n * environments.\n */\n const platform = safeProcess.platform;\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/path.js\n /**\n * Copyright Joyent, Inc. and other Node contributors.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to permit\n * persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n const CHAR_UPPERCASE_A = 65;\n const CHAR_LOWERCASE_A = 97;\n const CHAR_UPPERCASE_Z = 90;\n const CHAR_LOWERCASE_Z = 122;\n const CHAR_DOT = 46;\n const CHAR_FORWARD_SLASH = 47;\n const CHAR_BACKWARD_SLASH = 92;\n const CHAR_COLON = 58;\n const CHAR_QUESTION_MARK = 63;\n var ErrorInvalidArgType = class extends Error {\n constructor(name, expected, actual) {\n let determiner;\n if (typeof expected === \"string\" && expected.indexOf(\"not \") === 0) {\n determiner = \"must not be\";\n expected = expected.replace(/^not /, \"\");\n } else determiner = \"must be\";\n let msg = `The \"${name}\" ${name.indexOf(\".\") !== -1 ? \"property\" : \"argument\"} ${determiner} of type ${expected}`;\n msg += `. Received type ${typeof actual}`;\n super(msg);\n this.code = \"ERR_INVALID_ARG_TYPE\";\n }\n };\n function validateObject(pathObject, name) {\n if (pathObject === null || typeof pathObject !== \"object\") throw new ErrorInvalidArgType(name, \"Object\", pathObject);\n }\n function validateString(value, name) {\n if (typeof value !== \"string\") throw new ErrorInvalidArgType(name, \"string\", value);\n }\n const platformIsWin32 = platform === \"win32\";\n function isPathSeparator(code) {\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n }\n function isPosixPathSeparator(code) {\n return code === CHAR_FORWARD_SLASH;\n }\n function isWindowsDeviceRoot(code) {\n return code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z || code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z;\n }\n function normalizeString(path, allowAboveRoot, separator, isPathSeparator) {\n let res = \"\";\n let lastSegmentLength = 0;\n let lastSlash = -1;\n let dots = 0;\n let code = 0;\n for (let i = 0; i <= path.length; ++i) {\n if (i < path.length) code = path.charCodeAt(i);\n else if (isPathSeparator(code)) break;\n else code = CHAR_FORWARD_SLASH;\n if (isPathSeparator(code)) {\n if (lastSlash === i - 1 || dots === 1);\n else if (dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== CHAR_DOT || res.charCodeAt(res.length - 2) !== CHAR_DOT) {\n if (res.length > 2) {\n const lastSlashIndex = res.lastIndexOf(separator);\n if (lastSlashIndex === -1) {\n res = \"\";\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf(separator);\n }\n lastSlash = i;\n dots = 0;\n continue;\n } else if (res.length !== 0) {\n res = \"\";\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n res += res.length > 0 ? `${separator}..` : \"..\";\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0) res += `${separator}${path.slice(lastSlash + 1, i)}`;\n else res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === CHAR_DOT && dots !== -1) ++dots;\n else dots = -1;\n }\n return res;\n }\n function formatExt(ext) {\n return ext ? `${ext[0] === \".\" ? \"\" : \".\"}${ext}` : \"\";\n }\n function _format(sep, pathObject) {\n validateObject(pathObject, \"pathObject\");\n const dir = pathObject.dir || pathObject.root;\n const base = pathObject.base || `${pathObject.name || \"\"}${formatExt(pathObject.ext)}`;\n if (!dir) return base;\n return dir === pathObject.root ? `${dir}${base}` : `${dir}${sep}${base}`;\n }\n const win32 = {\n resolve(...pathSegments) {\n let resolvedDevice = \"\";\n let resolvedTail = \"\";\n let resolvedAbsolute = false;\n for (let i = pathSegments.length - 1; i >= -1; i--) {\n let path;\n if (i >= 0) {\n path = pathSegments[i];\n validateString(path, `paths[${i}]`);\n if (path.length === 0) continue;\n } else if (resolvedDevice.length === 0) path = cwd();\n else {\n path = env[`=${resolvedDevice}`] || cwd();\n if (path === void 0 || path.slice(0, 2).toLowerCase() !== resolvedDevice.toLowerCase() && path.charCodeAt(2) === CHAR_BACKWARD_SLASH) path = `${resolvedDevice}\\\\`;\n }\n const len = path.length;\n let rootEnd = 0;\n let device = \"\";\n let isAbsolute = false;\n const code = path.charCodeAt(0);\n if (len === 1) {\n if (isPathSeparator(code)) {\n rootEnd = 1;\n isAbsolute = true;\n }\n } else if (isPathSeparator(code)) {\n isAbsolute = true;\n if (isPathSeparator(path.charCodeAt(1))) {\n let j = 2;\n let last = j;\n while (j < len && !isPathSeparator(path.charCodeAt(j))) j++;\n if (j < len && j !== last) {\n const firstPart = path.slice(last, j);\n last = j;\n while (j < len && isPathSeparator(path.charCodeAt(j))) j++;\n if (j < len && j !== last) {\n last = j;\n while (j < len && !isPathSeparator(path.charCodeAt(j))) j++;\n if (j === len || j !== last) {\n device = `\\\\\\\\${firstPart}\\\\${path.slice(last, j)}`;\n rootEnd = j;\n }\n }\n }\n } else rootEnd = 1;\n } else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\n device = path.slice(0, 2);\n rootEnd = 2;\n if (len > 2 && isPathSeparator(path.charCodeAt(2))) {\n isAbsolute = true;\n rootEnd = 3;\n }\n }\n if (device.length > 0) if (resolvedDevice.length > 0) {\n if (device.toLowerCase() !== resolvedDevice.toLowerCase()) continue;\n } else resolvedDevice = device;\n if (resolvedAbsolute) {\n if (resolvedDevice.length > 0) break;\n } else {\n resolvedTail = `${path.slice(rootEnd)}\\\\${resolvedTail}`;\n resolvedAbsolute = isAbsolute;\n if (isAbsolute && resolvedDevice.length > 0) break;\n }\n }\n resolvedTail = normalizeString(resolvedTail, !resolvedAbsolute, \"\\\\\", isPathSeparator);\n return resolvedAbsolute ? `${resolvedDevice}\\\\${resolvedTail}` : `${resolvedDevice}${resolvedTail}` || \".\";\n },\n normalize(path) {\n validateString(path, \"path\");\n const len = path.length;\n if (len === 0) return \".\";\n let rootEnd = 0;\n let device;\n let isAbsolute = false;\n const code = path.charCodeAt(0);\n if (len === 1) return isPosixPathSeparator(code) ? \"\\\\\" : path;\n if (isPathSeparator(code)) {\n isAbsolute = true;\n if (isPathSeparator(path.charCodeAt(1))) {\n let j = 2;\n let last = j;\n while (j < len && !isPathSeparator(path.charCodeAt(j))) j++;\n if (j < len && j !== last) {\n const firstPart = path.slice(last, j);\n last = j;\n while (j < len && isPathSeparator(path.charCodeAt(j))) j++;\n if (j < len && j !== last) {\n last = j;\n while (j < len && !isPathSeparator(path.charCodeAt(j))) j++;\n if (j === len) return `\\\\\\\\${firstPart}\\\\${path.slice(last)}\\\\`;\n if (j !== last) {\n device = `\\\\\\\\${firstPart}\\\\${path.slice(last, j)}`;\n rootEnd = j;\n }\n }\n }\n } else rootEnd = 1;\n } else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\n device = path.slice(0, 2);\n rootEnd = 2;\n if (len > 2 && isPathSeparator(path.charCodeAt(2))) {\n isAbsolute = true;\n rootEnd = 3;\n }\n }\n let tail = rootEnd < len ? normalizeString(path.slice(rootEnd), !isAbsolute, \"\\\\\", isPathSeparator) : \"\";\n if (tail.length === 0 && !isAbsolute) tail = \".\";\n if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) tail += \"\\\\\";\n if (!isAbsolute && device === void 0 && path.includes(\":\")) {\n if (tail.length >= 2 && isWindowsDeviceRoot(tail.charCodeAt(0)) && tail.charCodeAt(1) === CHAR_COLON) return `.\\\\${tail}`;\n let index = path.indexOf(\":\");\n do\n if (index === len - 1 || isPathSeparator(path.charCodeAt(index + 1))) return `.\\\\${tail}`;\n while ((index = path.indexOf(\":\", index + 1)) !== -1);\n }\n if (device === void 0) return isAbsolute ? `\\\\${tail}` : tail;\n return isAbsolute ? `${device}\\\\${tail}` : `${device}${tail}`;\n },\n isAbsolute(path) {\n validateString(path, \"path\");\n const len = path.length;\n if (len === 0) return false;\n const code = path.charCodeAt(0);\n return isPathSeparator(code) || len > 2 && isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON && isPathSeparator(path.charCodeAt(2));\n },\n join(...paths) {\n if (paths.length === 0) return \".\";\n let joined;\n let firstPart;\n for (let i = 0; i < paths.length; ++i) {\n const arg = paths[i];\n validateString(arg, \"path\");\n if (arg.length > 0) if (joined === void 0) joined = firstPart = arg;\n else joined += `\\\\${arg}`;\n }\n if (joined === void 0) return \".\";\n let needsReplace = true;\n let slashCount = 0;\n if (typeof firstPart === \"string\" && isPathSeparator(firstPart.charCodeAt(0))) {\n ++slashCount;\n const firstLen = firstPart.length;\n if (firstLen > 1 && isPathSeparator(firstPart.charCodeAt(1))) {\n ++slashCount;\n if (firstLen > 2) if (isPathSeparator(firstPart.charCodeAt(2))) ++slashCount;\n else needsReplace = false;\n }\n }\n if (needsReplace) {\n while (slashCount < joined.length && isPathSeparator(joined.charCodeAt(slashCount))) slashCount++;\n if (slashCount >= 2) joined = `\\\\${joined.slice(slashCount)}`;\n }\n return win32.normalize(joined);\n },\n relative(from, to) {\n validateString(from, \"from\");\n validateString(to, \"to\");\n if (from === to) return \"\";\n const fromOrig = win32.resolve(from);\n const toOrig = win32.resolve(to);\n if (fromOrig === toOrig) return \"\";\n from = fromOrig.toLowerCase();\n to = toOrig.toLowerCase();\n if (from === to) return \"\";\n if (fromOrig.length !== from.length || toOrig.length !== to.length) {\n const fromSplit = fromOrig.split(\"\\\\\");\n const toSplit = toOrig.split(\"\\\\\");\n if (fromSplit[fromSplit.length - 1] === \"\") fromSplit.pop();\n if (toSplit[toSplit.length - 1] === \"\") toSplit.pop();\n const fromLen = fromSplit.length;\n const toLen = toSplit.length;\n const length = fromLen < toLen ? fromLen : toLen;\n let i;\n for (i = 0; i < length; i++) if (fromSplit[i].toLowerCase() !== toSplit[i].toLowerCase()) break;\n if (i === 0) return toOrig;\n else if (i === length) {\n if (toLen > length) return toSplit.slice(i).join(\"\\\\\");\n if (fromLen > length) return \"..\\\\\".repeat(fromLen - 1 - i) + \"..\";\n return \"\";\n }\n return \"..\\\\\".repeat(fromLen - i) + toSplit.slice(i).join(\"\\\\\");\n }\n let fromStart = 0;\n while (fromStart < from.length && from.charCodeAt(fromStart) === CHAR_BACKWARD_SLASH) fromStart++;\n let fromEnd = from.length;\n while (fromEnd - 1 > fromStart && from.charCodeAt(fromEnd - 1) === CHAR_BACKWARD_SLASH) fromEnd--;\n const fromLen = fromEnd - fromStart;\n let toStart = 0;\n while (toStart < to.length && to.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) toStart++;\n let toEnd = to.length;\n while (toEnd - 1 > toStart && to.charCodeAt(toEnd - 1) === CHAR_BACKWARD_SLASH) toEnd--;\n const toLen = toEnd - toStart;\n const length = fromLen < toLen ? fromLen : toLen;\n let lastCommonSep = -1;\n let i = 0;\n for (; i < length; i++) {\n const fromCode = from.charCodeAt(fromStart + i);\n if (fromCode !== to.charCodeAt(toStart + i)) break;\n else if (fromCode === CHAR_BACKWARD_SLASH) lastCommonSep = i;\n }\n if (i !== length) {\n if (lastCommonSep === -1) return toOrig;\n } else {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) return toOrig.slice(toStart + i + 1);\n if (i === 2) return toOrig.slice(toStart + i);\n }\n if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) lastCommonSep = i;\n else if (i === 2) lastCommonSep = 3;\n }\n if (lastCommonSep === -1) lastCommonSep = 0;\n }\n let out = \"\";\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) out += out.length === 0 ? \"..\" : \"\\\\..\";\n toStart += lastCommonSep;\n if (out.length > 0) return `${out}${toOrig.slice(toStart, toEnd)}`;\n if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) ++toStart;\n return toOrig.slice(toStart, toEnd);\n },\n toNamespacedPath(path) {\n if (typeof path !== \"string\" || path.length === 0) return path;\n const resolvedPath = win32.resolve(path);\n if (resolvedPath.length <= 2) return path;\n if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) {\n if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) {\n const code = resolvedPath.charCodeAt(2);\n if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) return `\\\\\\\\?\\\\UNC\\\\${resolvedPath.slice(2)}`;\n }\n } else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0)) && resolvedPath.charCodeAt(1) === CHAR_COLON && resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH) return `\\\\\\\\?\\\\${resolvedPath}`;\n return resolvedPath;\n },\n dirname(path) {\n validateString(path, \"path\");\n const len = path.length;\n if (len === 0) return \".\";\n let rootEnd = -1;\n let offset = 0;\n const code = path.charCodeAt(0);\n if (len === 1) return isPathSeparator(code) ? path : \".\";\n if (isPathSeparator(code)) {\n rootEnd = offset = 1;\n if (isPathSeparator(path.charCodeAt(1))) {\n let j = 2;\n let last = j;\n while (j < len && !isPathSeparator(path.charCodeAt(j))) j++;\n if (j < len && j !== last) {\n last = j;\n while (j < len && isPathSeparator(path.charCodeAt(j))) j++;\n if (j < len && j !== last) {\n last = j;\n while (j < len && !isPathSeparator(path.charCodeAt(j))) j++;\n if (j === len) return path;\n if (j !== last) rootEnd = offset = j + 1;\n }\n }\n }\n } else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\n rootEnd = len > 2 && isPathSeparator(path.charCodeAt(2)) ? 3 : 2;\n offset = rootEnd;\n }\n let end = -1;\n let matchedSlash = true;\n for (let i = len - 1; i >= offset; --i) if (isPathSeparator(path.charCodeAt(i))) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else matchedSlash = false;\n if (end === -1) {\n if (rootEnd === -1) return \".\";\n end = rootEnd;\n }\n return path.slice(0, end);\n },\n basename(path, suffix) {\n if (suffix !== void 0) validateString(suffix, \"suffix\");\n validateString(path, \"path\");\n let start = 0;\n let end = -1;\n let matchedSlash = true;\n let i;\n if (path.length >= 2 && isWindowsDeviceRoot(path.charCodeAt(0)) && path.charCodeAt(1) === CHAR_COLON) start = 2;\n if (suffix !== void 0 && suffix.length > 0 && suffix.length <= path.length) {\n if (suffix === path) return \"\";\n let extIdx = suffix.length - 1;\n let firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= start; --i) {\n const code = path.charCodeAt(i);\n if (isPathSeparator(code)) {\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) if (code === suffix.charCodeAt(extIdx)) {\n if (--extIdx === -1) end = i;\n } else {\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n if (start === end) end = firstNonSlashEnd;\n else if (end === -1) end = path.length;\n return path.slice(start, end);\n }\n for (i = path.length - 1; i >= start; --i) if (isPathSeparator(path.charCodeAt(i))) {\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (end === -1) return \"\";\n return path.slice(start, end);\n },\n extname(path) {\n validateString(path, \"path\");\n let start = 0;\n let startDot = -1;\n let startPart = 0;\n let end = -1;\n let matchedSlash = true;\n let preDotState = 0;\n if (path.length >= 2 && path.charCodeAt(1) === CHAR_COLON && isWindowsDeviceRoot(path.charCodeAt(0))) start = startPart = 2;\n for (let i = path.length - 1; i >= start; --i) {\n const code = path.charCodeAt(i);\n if (isPathSeparator(code)) {\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (code === CHAR_DOT) {\n if (startDot === -1) startDot = i;\n else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) preDotState = -1;\n }\n if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) return \"\";\n return path.slice(startDot, end);\n },\n format: _format.bind(null, \"\\\\\"),\n parse(path) {\n validateString(path, \"path\");\n const ret = {\n root: \"\",\n dir: \"\",\n base: \"\",\n ext: \"\",\n name: \"\"\n };\n if (path.length === 0) return ret;\n const len = path.length;\n let rootEnd = 0;\n let code = path.charCodeAt(0);\n if (len === 1) {\n if (isPathSeparator(code)) {\n ret.root = ret.dir = path;\n return ret;\n }\n ret.base = ret.name = path;\n return ret;\n }\n if (isPathSeparator(code)) {\n rootEnd = 1;\n if (isPathSeparator(path.charCodeAt(1))) {\n let j = 2;\n let last = j;\n while (j < len && !isPathSeparator(path.charCodeAt(j))) j++;\n if (j < len && j !== last) {\n last = j;\n while (j < len && isPathSeparator(path.charCodeAt(j))) j++;\n if (j < len && j !== last) {\n last = j;\n while (j < len && !isPathSeparator(path.charCodeAt(j))) j++;\n if (j === len) rootEnd = j;\n else if (j !== last) rootEnd = j + 1;\n }\n }\n }\n } else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\n if (len <= 2) {\n ret.root = ret.dir = path;\n return ret;\n }\n rootEnd = 2;\n if (isPathSeparator(path.charCodeAt(2))) {\n if (len === 3) {\n ret.root = ret.dir = path;\n return ret;\n }\n rootEnd = 3;\n }\n }\n if (rootEnd > 0) ret.root = path.slice(0, rootEnd);\n let startDot = -1;\n let startPart = rootEnd;\n let end = -1;\n let matchedSlash = true;\n let i = path.length - 1;\n let preDotState = 0;\n for (; i >= rootEnd; --i) {\n code = path.charCodeAt(i);\n if (isPathSeparator(code)) {\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (code === CHAR_DOT) {\n if (startDot === -1) startDot = i;\n else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) preDotState = -1;\n }\n if (end !== -1) if (startDot === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) ret.base = ret.name = path.slice(startPart, end);\n else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n ret.ext = path.slice(startDot, end);\n }\n if (startPart > 0 && startPart !== rootEnd) ret.dir = path.slice(0, startPart - 1);\n else ret.dir = ret.root;\n return ret;\n },\n sep: \"\\\\\",\n delimiter: \";\",\n win32: null,\n posix: null\n };\n const posixCwd = (() => {\n if (platformIsWin32) {\n const regexp = /\\\\/g;\n return () => {\n const cwd$1 = cwd().replace(regexp, \"/\");\n return cwd$1.slice(cwd$1.indexOf(\"/\"));\n };\n }\n return () => cwd();\n })();\n const posix = {\n resolve(...pathSegments) {\n let resolvedPath = \"\";\n let resolvedAbsolute = false;\n for (let i = pathSegments.length - 1; i >= 0 && !resolvedAbsolute; i--) {\n const path = pathSegments[i];\n validateString(path, `paths[${i}]`);\n if (path.length === 0) continue;\n resolvedPath = `${path}/${resolvedPath}`;\n resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\n }\n if (!resolvedAbsolute) {\n const cwd = posixCwd();\n resolvedPath = `${cwd}/${resolvedPath}`;\n resolvedAbsolute = cwd.charCodeAt(0) === CHAR_FORWARD_SLASH;\n }\n resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, \"/\", isPosixPathSeparator);\n if (resolvedAbsolute) return `/${resolvedPath}`;\n return resolvedPath.length > 0 ? resolvedPath : \".\";\n },\n normalize(path) {\n validateString(path, \"path\");\n if (path.length === 0) return \".\";\n const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\n const trailingSeparator = path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH;\n path = normalizeString(path, !isAbsolute, \"/\", isPosixPathSeparator);\n if (path.length === 0) {\n if (isAbsolute) return \"/\";\n return trailingSeparator ? \"./\" : \".\";\n }\n if (trailingSeparator) path += \"/\";\n return isAbsolute ? `/${path}` : path;\n },\n isAbsolute(path) {\n validateString(path, \"path\");\n return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH;\n },\n join(...paths) {\n if (paths.length === 0) return \".\";\n const path = [];\n for (let i = 0; i < paths.length; ++i) {\n const arg = paths[i];\n validateString(arg, \"path\");\n if (arg.length > 0) path.push(arg);\n }\n if (path.length === 0) return \".\";\n return posix.normalize(path.join(\"/\"));\n },\n relative(from, to) {\n validateString(from, \"from\");\n validateString(to, \"to\");\n if (from === to) return \"\";\n from = posix.resolve(from);\n to = posix.resolve(to);\n if (from === to) return \"\";\n const fromStart = 1;\n const fromEnd = from.length;\n const fromLen = fromEnd - fromStart;\n const toStart = 1;\n const toLen = to.length - toStart;\n const length = fromLen < toLen ? fromLen : toLen;\n let lastCommonSep = -1;\n let i = 0;\n for (; i < length; i++) {\n const fromCode = from.charCodeAt(fromStart + i);\n if (fromCode !== to.charCodeAt(toStart + i)) break;\n else if (fromCode === CHAR_FORWARD_SLASH) lastCommonSep = i;\n }\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) return to.slice(toStart + i + 1);\n if (i === 0) return to.slice(toStart + i);\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) lastCommonSep = i;\n else if (i === 0) lastCommonSep = 0;\n }\n }\n let out = \"\";\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) out += out.length === 0 ? \"..\" : \"/..\";\n return `${out}${to.slice(toStart + lastCommonSep)}`;\n },\n toNamespacedPath(path) {\n return path;\n },\n dirname(path) {\n validateString(path, \"path\");\n if (path.length === 0) return \".\";\n const hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\n let end = -1;\n let matchedSlash = true;\n for (let i = path.length - 1; i >= 1; --i) if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else matchedSlash = false;\n if (end === -1) return hasRoot ? \"/\" : \".\";\n if (hasRoot && end === 1) return \"//\";\n return path.slice(0, end);\n },\n basename(path, suffix) {\n if (suffix !== void 0) validateString(suffix, \"suffix\");\n validateString(path, \"path\");\n let start = 0;\n let end = -1;\n let matchedSlash = true;\n let i;\n if (suffix !== void 0 && suffix.length > 0 && suffix.length <= path.length) {\n if (suffix === path) return \"\";\n let extIdx = suffix.length - 1;\n let firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n const code = path.charCodeAt(i);\n if (code === CHAR_FORWARD_SLASH) {\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) if (code === suffix.charCodeAt(extIdx)) {\n if (--extIdx === -1) end = i;\n } else {\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n if (start === end) end = firstNonSlashEnd;\n else if (end === -1) end = path.length;\n return path.slice(start, end);\n }\n for (i = path.length - 1; i >= 0; --i) if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) {\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (end === -1) return \"\";\n return path.slice(start, end);\n },\n extname(path) {\n validateString(path, \"path\");\n let startDot = -1;\n let startPart = 0;\n let end = -1;\n let matchedSlash = true;\n let preDotState = 0;\n for (let i = path.length - 1; i >= 0; --i) {\n const char = path[i];\n if (char === \"/\") {\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (char === \".\") {\n if (startDot === -1) startDot = i;\n else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) preDotState = -1;\n }\n if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) return \"\";\n return path.slice(startDot, end);\n },\n format: _format.bind(null, \"/\"),\n parse(path) {\n validateString(path, \"path\");\n const ret = {\n root: \"\",\n dir: \"\",\n base: \"\",\n ext: \"\",\n name: \"\"\n };\n if (path.length === 0) return ret;\n const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\n let start;\n if (isAbsolute) {\n ret.root = \"/\";\n start = 1;\n } else start = 0;\n let startDot = -1;\n let startPart = 0;\n let end = -1;\n let matchedSlash = true;\n let i = path.length - 1;\n let preDotState = 0;\n for (; i >= start; --i) {\n const code = path.charCodeAt(i);\n if (code === CHAR_FORWARD_SLASH) {\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (code === CHAR_DOT) {\n if (startDot === -1) startDot = i;\n else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) preDotState = -1;\n }\n if (end !== -1) {\n const start = startPart === 0 && isAbsolute ? 1 : startPart;\n if (startDot === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) ret.base = ret.name = path.slice(start, end);\n else {\n ret.name = path.slice(start, startDot);\n ret.base = path.slice(start, end);\n ret.ext = path.slice(startDot, end);\n }\n }\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);\n else if (isAbsolute) ret.dir = \"/\";\n return ret;\n },\n sep: \"/\",\n delimiter: \":\",\n win32: null,\n posix: null\n };\n posix.win32 = win32.win32 = win32;\n posix.posix = win32.posix = posix;\n platformIsWin32 ? win32.normalize : posix.normalize;\n platformIsWin32 ? win32.resolve : posix.resolve;\n platformIsWin32 ? win32.relative : posix.relative;\n platformIsWin32 ? win32.dirname : posix.dirname;\n platformIsWin32 ? win32.basename : posix.basename;\n platformIsWin32 ? win32.extname : posix.extname;\n platformIsWin32 ? win32.sep : posix.sep;\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/uri.js\n const _schemePattern = /^\\w[\\w\\d+.-]*$/;\n const _singleSlashStart = /^\\//;\n const _doubleSlashStart = /^\\/\\//;\n function _validateUri(ret, _strict) {\n if (!ret.scheme && _strict) throw new Error(`[UriError]: Scheme is missing: {scheme: \"\", authority: \"${ret.authority}\", path: \"${ret.path}\", query: \"${ret.query}\", fragment: \"${ret.fragment}\"}`);\n if (ret.scheme && !_schemePattern.test(ret.scheme)) throw new Error(\"[UriError]: Scheme contains illegal characters.\");\n if (ret.path) {\n if (ret.authority) {\n if (!_singleSlashStart.test(ret.path)) throw new Error(\"[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash (\\\"/\\\") character\");\n } else if (_doubleSlashStart.test(ret.path)) throw new Error(\"[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters (\\\"//\\\")\");\n }\n }\n function _schemeFix(scheme, _strict) {\n if (!scheme && !_strict) return \"file\";\n return scheme;\n }\n function _referenceResolution(scheme, path) {\n switch (scheme) {\n case \"https\":\n case \"http\":\n case \"file\":\n if (!path) path = _slash;\n else if (path[0] !== _slash) path = _slash + path;\n break;\n }\n return path;\n }\n const _empty = \"\";\n const _slash = \"/\";\n const _regexp = /^(([^:/?#]+?):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\n /**\n * Uniform Resource Identifier (URI) http://tools.ietf.org/html/rfc3986.\n * This class is a simple parser which creates the basic component parts\n * (http://tools.ietf.org/html/rfc3986#section-3) with minimal validation\n * and encoding.\n *\n * ```txt\n * foo://example.com:8042/over/there?name=ferret#nose\n * \\_/ \\______________/\\_________/ \\_________/ \\__/\n * | | | | |\n * scheme authority path query fragment\n * | _____________________|__\n * / \\ / \\\n * urn:example:animal:ferret:nose\n * ```\n */\n var URI = class URI {\n static isUri(thing) {\n if (thing instanceof URI) return true;\n if (!thing || typeof thing !== \"object\") return false;\n return typeof thing.authority === \"string\" && typeof thing.fragment === \"string\" && typeof thing.path === \"string\" && typeof thing.query === \"string\" && typeof thing.scheme === \"string\" && typeof thing.fsPath === \"string\" && typeof thing.with === \"function\" && typeof thing.toString === \"function\";\n }\n /**\n * @internal\n */\n constructor(schemeOrData, authority, path, query, fragment, _strict = false) {\n if (typeof schemeOrData === \"object\") {\n this.scheme = schemeOrData.scheme || _empty;\n this.authority = schemeOrData.authority || _empty;\n this.path = schemeOrData.path || _empty;\n this.query = schemeOrData.query || _empty;\n this.fragment = schemeOrData.fragment || _empty;\n } else {\n this.scheme = _schemeFix(schemeOrData, _strict);\n this.authority = authority || _empty;\n this.path = _referenceResolution(this.scheme, path || _empty);\n this.query = query || _empty;\n this.fragment = fragment || _empty;\n _validateUri(this, _strict);\n }\n }\n /**\n * Returns a string representing the corresponding file system path of this URI.\n * Will handle UNC paths, normalizes windows drive letters to lower-case, and uses the\n * platform specific path separator.\n *\n * * Will *not* validate the path for invalid characters and semantics.\n * * Will *not* look at the scheme of this URI.\n * * The result shall *not* be used for display purposes but for accessing a file on disk.\n *\n *\n * The *difference* to `URI#path` is the use of the platform specific separator and the handling\n * of UNC paths. See the below sample of a file-uri with an authority (UNC path).\n *\n * ```ts\n const u = URI.parse('file://server/c$/folder/file.txt')\n u.authority === 'server'\n u.path === '/shares/c$/file.txt'\n u.fsPath === '\\\\server\\c$\\folder\\file.txt'\n ```\n *\n * Using `URI#path` to read a file (using fs-apis) would not be enough because parts of the path,\n * namely the server name, would be missing. Therefore `URI#fsPath` exists - it's sugar to ease working\n * with URIs that represent files on disk (`file` scheme).\n */\n get fsPath() {\n return uriToFsPath(this, false);\n }\n with(change) {\n if (!change) return this;\n let { scheme, authority, path, query, fragment } = change;\n if (scheme === void 0) scheme = this.scheme;\n else if (scheme === null) scheme = _empty;\n if (authority === void 0) authority = this.authority;\n else if (authority === null) authority = _empty;\n if (path === void 0) path = this.path;\n else if (path === null) path = _empty;\n if (query === void 0) query = this.query;\n else if (query === null) query = _empty;\n if (fragment === void 0) fragment = this.fragment;\n else if (fragment === null) fragment = _empty;\n if (scheme === this.scheme && authority === this.authority && path === this.path && query === this.query && fragment === this.fragment) return this;\n return new Uri(scheme, authority, path, query, fragment);\n }\n /**\n * Creates a new URI from a string, e.g. `http://www.example.com/some/path`,\n * `file:///usr/home`, or `scheme:with/path`.\n *\n * @param value A string which represents an URI (see `URI#toString`).\n */\n static parse(value, _strict = false) {\n const match = _regexp.exec(value);\n if (!match) return new Uri(_empty, _empty, _empty, _empty, _empty);\n return new Uri(match[2] || _empty, percentDecode(match[4] || _empty), percentDecode(match[5] || _empty), percentDecode(match[7] || _empty), percentDecode(match[9] || _empty), _strict);\n }\n /**\n * Creates a new URI from a file system path, e.g. `c:\\my\\files`,\n * `/usr/home`, or `\\\\server\\share\\some\\path`.\n *\n * The *difference* between `URI#parse` and `URI#file` is that the latter treats the argument\n * as path, not as stringified-uri. E.g. `URI.file(path)` is **not the same as**\n * `URI.parse('file://' + path)` because the path might contain characters that are\n * interpreted (# and ?). See the following sample:\n * ```ts\n const good = URI.file('/coding/c#/project1');\n good.scheme === 'file';\n good.path === '/coding/c#/project1';\n good.fragment === '';\n const bad = URI.parse('file://' + '/coding/c#/project1');\n bad.scheme === 'file';\n bad.path === '/coding/c'; // path is now broken\n bad.fragment === '/project1';\n ```\n *\n * @param path A file system path (see `URI#fsPath`)\n */\n static file(path) {\n let authority = _empty;\n if (isWindows) path = path.replace(/\\\\/g, _slash);\n if (path[0] === _slash && path[1] === _slash) {\n const idx = path.indexOf(_slash, 2);\n if (idx === -1) {\n authority = path.substring(2);\n path = _slash;\n } else {\n authority = path.substring(2, idx);\n path = path.substring(idx) || _slash;\n }\n }\n return new Uri(\"file\", authority, path, _empty, _empty);\n }\n /**\n * Creates new URI from uri components.\n *\n * Unless `strict` is `true` the scheme is defaults to be `file`. This function performs\n * validation and should be used for untrusted uri components retrieved from storage,\n * user input, command arguments etc\n */\n static from(components, strict) {\n return new Uri(components.scheme, components.authority, components.path, components.query, components.fragment, strict);\n }\n /**\n * Join a URI path with path fragments and normalizes the resulting path.\n *\n * @param uri The input URI.\n * @param pathFragment The path fragment to add to the URI path.\n * @returns The resulting URI.\n */\n static joinPath(uri, ...pathFragment) {\n if (!uri.path) throw new Error(`[UriError]: cannot call joinPath on URI without path`);\n let newPath;\n if (isWindows && uri.scheme === \"file\") newPath = URI.file(win32.join(uriToFsPath(uri, true), ...pathFragment)).path;\n else newPath = posix.join(uri.path, ...pathFragment);\n return uri.with({ path: newPath });\n }\n /**\n * Creates a string representation for this URI. It's guaranteed that calling\n * `URI.parse` with the result of this function creates an URI which is equal\n * to this URI.\n *\n * * The result shall *not* be used for display purposes but for externalization or transport.\n * * The result will be encoded using the percentage encoding and encoding happens mostly\n * ignore the scheme-specific encoding rules.\n *\n * @param skipEncoding Do not encode the result, default is `false`\n */\n toString(skipEncoding = false) {\n return _asFormatted(this, skipEncoding);\n }\n toJSON() {\n return this;\n }\n static revive(data) {\n if (!data) return data;\n else if (data instanceof URI) return data;\n else {\n const result = new Uri(data);\n result._formatted = data.external ?? null;\n result._fsPath = data._sep === _pathSepMarker ? data.fsPath ?? null : null;\n return result;\n }\n }\n };\n const _pathSepMarker = isWindows ? 1 : void 0;\n var Uri = class extends URI {\n constructor() {\n super(...arguments);\n this._formatted = null;\n this._fsPath = null;\n }\n get fsPath() {\n if (!this._fsPath) this._fsPath = uriToFsPath(this, false);\n return this._fsPath;\n }\n toString(skipEncoding = false) {\n if (!skipEncoding) {\n if (!this._formatted) this._formatted = _asFormatted(this, false);\n return this._formatted;\n } else return _asFormatted(this, true);\n }\n toJSON() {\n const res = { $mid: 1 };\n if (this._fsPath) {\n res.fsPath = this._fsPath;\n res._sep = _pathSepMarker;\n }\n if (this._formatted) res.external = this._formatted;\n if (this.path) res.path = this.path;\n if (this.scheme) res.scheme = this.scheme;\n if (this.authority) res.authority = this.authority;\n if (this.query) res.query = this.query;\n if (this.fragment) res.fragment = this.fragment;\n return res;\n }\n };\n const encodeTable = {\n [58]: \"%3A\",\n [47]: \"%2F\",\n [63]: \"%3F\",\n [35]: \"%23\",\n [91]: \"%5B\",\n [93]: \"%5D\",\n [64]: \"%40\",\n [33]: \"%21\",\n [36]: \"%24\",\n [38]: \"%26\",\n [39]: \"%27\",\n [40]: \"%28\",\n [41]: \"%29\",\n [42]: \"%2A\",\n [43]: \"%2B\",\n [44]: \"%2C\",\n [59]: \"%3B\",\n [61]: \"%3D\",\n [32]: \"%20\"\n };\n function encodeURIComponentFast(uriComponent, isPath, isAuthority) {\n let res = void 0;\n let nativeEncodePos = -1;\n for (let pos = 0; pos < uriComponent.length; pos++) {\n const code = uriComponent.charCodeAt(pos);\n if (code >= 97 && code <= 122 || code >= 65 && code <= 90 || code >= 48 && code <= 57 || code === 45 || code === 46 || code === 95 || code === 126 || isPath && code === 47 || isAuthority && code === 91 || isAuthority && code === 93 || isAuthority && code === 58) {\n if (nativeEncodePos !== -1) {\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\n nativeEncodePos = -1;\n }\n if (res !== void 0) res += uriComponent.charAt(pos);\n } else {\n if (res === void 0) res = uriComponent.substr(0, pos);\n const escaped = encodeTable[code];\n if (escaped !== void 0) {\n if (nativeEncodePos !== -1) {\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\n nativeEncodePos = -1;\n }\n res += escaped;\n } else if (nativeEncodePos === -1) nativeEncodePos = pos;\n }\n }\n if (nativeEncodePos !== -1) res += encodeURIComponent(uriComponent.substring(nativeEncodePos));\n return res !== void 0 ? res : uriComponent;\n }\n function encodeURIComponentMinimal(path) {\n let res = void 0;\n for (let pos = 0; pos < path.length; pos++) {\n const code = path.charCodeAt(pos);\n if (code === 35 || code === 63) {\n if (res === void 0) res = path.substr(0, pos);\n res += encodeTable[code];\n } else if (res !== void 0) res += path[pos];\n }\n return res !== void 0 ? res : path;\n }\n /**\n * Compute `fsPath` for the given uri\n */\n function uriToFsPath(uri, keepDriveLetterCasing) {\n let value;\n if (uri.authority && uri.path.length > 1 && uri.scheme === \"file\") value = `//${uri.authority}${uri.path}`;\n else if (uri.path.charCodeAt(0) === 47 && (uri.path.charCodeAt(1) >= 65 && uri.path.charCodeAt(1) <= 90 || uri.path.charCodeAt(1) >= 97 && uri.path.charCodeAt(1) <= 122) && uri.path.charCodeAt(2) === 58) if (!keepDriveLetterCasing) value = uri.path[1].toLowerCase() + uri.path.substr(2);\n else value = uri.path.substr(1);\n else value = uri.path;\n if (isWindows) value = value.replace(/\\//g, \"\\\\\");\n return value;\n }\n /**\n * Create the external version of a uri\n */\n function _asFormatted(uri, skipEncoding) {\n const encoder = !skipEncoding ? encodeURIComponentFast : encodeURIComponentMinimal;\n let res = \"\";\n let { scheme, authority, path, query, fragment } = uri;\n if (scheme) {\n res += scheme;\n res += \":\";\n }\n if (authority || scheme === \"file\") {\n res += _slash;\n res += _slash;\n }\n if (authority) {\n let idx = authority.indexOf(\"@\");\n if (idx !== -1) {\n const userinfo = authority.substr(0, idx);\n authority = authority.substr(idx + 1);\n idx = userinfo.lastIndexOf(\":\");\n if (idx === -1) res += encoder(userinfo, false, false);\n else {\n res += encoder(userinfo.substr(0, idx), false, false);\n res += \":\";\n res += encoder(userinfo.substr(idx + 1), false, true);\n }\n res += \"@\";\n }\n authority = authority.toLowerCase();\n idx = authority.lastIndexOf(\":\");\n if (idx === -1) res += encoder(authority, false, true);\n else {\n res += encoder(authority.substr(0, idx), false, true);\n res += authority.substr(idx);\n }\n }\n if (path) {\n if (path.length >= 3 && path.charCodeAt(0) === 47 && path.charCodeAt(2) === 58) {\n const code = path.charCodeAt(1);\n if (code >= 65 && code <= 90) path = `/${String.fromCharCode(code + 32)}:${path.substr(3)}`;\n } else if (path.length >= 2 && path.charCodeAt(1) === 58) {\n const code = path.charCodeAt(0);\n if (code >= 65 && code <= 90) path = `${String.fromCharCode(code + 32)}:${path.substr(2)}`;\n }\n res += encoder(path, true, false);\n }\n if (query) {\n res += \"?\";\n res += encoder(query, false, false);\n }\n if (fragment) {\n res += \"#\";\n res += !skipEncoding ? encodeURIComponentFast(fragment, false, false) : fragment;\n }\n return res;\n }\n function decodeURIComponentGraceful(str) {\n try {\n return decodeURIComponent(str);\n } catch {\n if (str.length > 3) return str.substr(0, 3) + decodeURIComponentGraceful(str.substr(3));\n else return str;\n }\n }\n const _rEncodedAsHex = /(%[0-9A-Za-z][0-9A-Za-z])+/g;\n function percentDecode(str) {\n if (!str.match(_rEncodedAsHex)) return str;\n return str.replace(_rEncodedAsHex, (match) => decodeURIComponentGraceful(match));\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/core/selection.js\n /**\n * A selection in the editor.\n * The selection is a range that has an orientation.\n */\n var Selection = class Selection extends Range {\n constructor(selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn) {\n super(selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn);\n this.selectionStartLineNumber = selectionStartLineNumber;\n this.selectionStartColumn = selectionStartColumn;\n this.positionLineNumber = positionLineNumber;\n this.positionColumn = positionColumn;\n }\n /**\n * Transform to a human-readable representation.\n */\n toString() {\n return \"[\" + this.selectionStartLineNumber + \",\" + this.selectionStartColumn + \" -> \" + this.positionLineNumber + \",\" + this.positionColumn + \"]\";\n }\n /**\n * Test if equals other selection.\n */\n equalsSelection(other) {\n return Selection.selectionsEqual(this, other);\n }\n /**\n * Test if the two selections are equal.\n */\n static selectionsEqual(a, b) {\n return a.selectionStartLineNumber === b.selectionStartLineNumber && a.selectionStartColumn === b.selectionStartColumn && a.positionLineNumber === b.positionLineNumber && a.positionColumn === b.positionColumn;\n }\n /**\n * Get directions (LTR or RTL).\n */\n getDirection() {\n if (this.selectionStartLineNumber === this.startLineNumber && this.selectionStartColumn === this.startColumn) return 0;\n return 1;\n }\n /**\n * Create a new selection with a different `positionLineNumber` and `positionColumn`.\n */\n setEndPosition(endLineNumber, endColumn) {\n if (this.getDirection() === 0) return new Selection(this.startLineNumber, this.startColumn, endLineNumber, endColumn);\n return new Selection(endLineNumber, endColumn, this.startLineNumber, this.startColumn);\n }\n /**\n * Get the position at `positionLineNumber` and `positionColumn`.\n */\n getPosition() {\n return new Position(this.positionLineNumber, this.positionColumn);\n }\n /**\n * Get the position at the start of the selection.\n */\n getSelectionStart() {\n return new Position(this.selectionStartLineNumber, this.selectionStartColumn);\n }\n /**\n * Create a new selection with a different `selectionStartLineNumber` and `selectionStartColumn`.\n */\n setStartPosition(startLineNumber, startColumn) {\n if (this.getDirection() === 0) return new Selection(startLineNumber, startColumn, this.endLineNumber, this.endColumn);\n return new Selection(this.endLineNumber, this.endColumn, startLineNumber, startColumn);\n }\n /**\n * Create a `Selection` from one or two positions\n */\n static fromPositions(start, end = start) {\n return new Selection(start.lineNumber, start.column, end.lineNumber, end.column);\n }\n /**\n * Creates a `Selection` from a range, given a direction.\n */\n static fromRange(range, direction) {\n if (direction === 0) return new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);\n else return new Selection(range.endLineNumber, range.endColumn, range.startLineNumber, range.startColumn);\n }\n /**\n * Create a `Selection` from an `ISelection`.\n */\n static liftSelection(sel) {\n return new Selection(sel.selectionStartLineNumber, sel.selectionStartColumn, sel.positionLineNumber, sel.positionColumn);\n }\n /**\n * `a` equals `b`.\n */\n static selectionsArrEqual(a, b) {\n if (a && !b || !a && b) return false;\n if (!a && !b) return true;\n if (a.length !== b.length) return false;\n for (let i = 0, len = a.length; i < len; i++) if (!this.selectionsEqual(a[i], b[i])) return false;\n return true;\n }\n /**\n * Test if `obj` is an `ISelection`.\n */\n static isISelection(obj) {\n return !!obj && typeof obj.selectionStartLineNumber === \"number\" && typeof obj.selectionStartColumn === \"number\" && typeof obj.positionLineNumber === \"number\" && typeof obj.positionColumn === \"number\";\n }\n /**\n * Create with a direction.\n */\n static createWithDirection(startLineNumber, startColumn, endLineNumber, endColumn, direction) {\n if (direction === 0) return new Selection(startLineNumber, startColumn, endLineNumber, endColumn);\n return new Selection(endLineNumber, endColumn, startLineNumber, startColumn);\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/codiconsUtil.js\n const _codiconFontCharacters = Object.create(null);\n function register(id, fontCharacter) {\n if (isString(fontCharacter)) {\n const val = _codiconFontCharacters[fontCharacter];\n if (val === void 0) throw new Error(`${id} references an unknown codicon: ${fontCharacter}`);\n fontCharacter = val;\n }\n _codiconFontCharacters[id] = fontCharacter;\n return { id };\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/codiconsLibrary.js\n const codiconsLibrary = {\n add: register(\"add\", 6e4),\n plus: register(\"plus\", 6e4),\n gistNew: register(\"gist-new\", 6e4),\n repoCreate: register(\"repo-create\", 6e4),\n lightbulb: register(\"lightbulb\", 60001),\n lightBulb: register(\"light-bulb\", 60001),\n repo: register(\"repo\", 60002),\n repoDelete: register(\"repo-delete\", 60002),\n gistFork: register(\"gist-fork\", 60003),\n repoForked: register(\"repo-forked\", 60003),\n gitPullRequest: register(\"git-pull-request\", 60004),\n gitPullRequestAbandoned: register(\"git-pull-request-abandoned\", 60004),\n recordKeys: register(\"record-keys\", 60005),\n keyboard: register(\"keyboard\", 60005),\n tag: register(\"tag\", 60006),\n gitPullRequestLabel: register(\"git-pull-request-label\", 60006),\n tagAdd: register(\"tag-add\", 60006),\n tagRemove: register(\"tag-remove\", 60006),\n person: register(\"person\", 60007),\n personFollow: register(\"person-follow\", 60007),\n personOutline: register(\"person-outline\", 60007),\n personFilled: register(\"person-filled\", 60007),\n sourceControl: register(\"source-control\", 60008),\n mirror: register(\"mirror\", 60009),\n mirrorPublic: register(\"mirror-public\", 60009),\n star: register(\"star\", 60010),\n starAdd: register(\"star-add\", 60010),\n starDelete: register(\"star-delete\", 60010),\n starEmpty: register(\"star-empty\", 60010),\n comment: register(\"comment\", 60011),\n commentAdd: register(\"comment-add\", 60011),\n alert: register(\"alert\", 60012),\n warning: register(\"warning\", 60012),\n search: register(\"search\", 60013),\n searchSave: register(\"search-save\", 60013),\n logOut: register(\"log-out\", 60014),\n signOut: register(\"sign-out\", 60014),\n logIn: register(\"log-in\", 60015),\n signIn: register(\"sign-in\", 60015),\n eye: register(\"eye\", 60016),\n eyeUnwatch: register(\"eye-unwatch\", 60016),\n eyeWatch: register(\"eye-watch\", 60016),\n circleFilled: register(\"circle-filled\", 60017),\n primitiveDot: register(\"primitive-dot\", 60017),\n closeDirty: register(\"close-dirty\", 60017),\n debugBreakpoint: register(\"debug-breakpoint\", 60017),\n debugBreakpointDisabled: register(\"debug-breakpoint-disabled\", 60017),\n debugHint: register(\"debug-hint\", 60017),\n terminalDecorationSuccess: register(\"terminal-decoration-success\", 60017),\n primitiveSquare: register(\"primitive-square\", 60018),\n edit: register(\"edit\", 60019),\n pencil: register(\"pencil\", 60019),\n info: register(\"info\", 60020),\n issueOpened: register(\"issue-opened\", 60020),\n gistPrivate: register(\"gist-private\", 60021),\n gitForkPrivate: register(\"git-fork-private\", 60021),\n lock: register(\"lock\", 60021),\n mirrorPrivate: register(\"mirror-private\", 60021),\n close: register(\"close\", 60022),\n removeClose: register(\"remove-close\", 60022),\n x: register(\"x\", 60022),\n repoSync: register(\"repo-sync\", 60023),\n sync: register(\"sync\", 60023),\n clone: register(\"clone\", 60024),\n desktopDownload: register(\"desktop-download\", 60024),\n beaker: register(\"beaker\", 60025),\n microscope: register(\"microscope\", 60025),\n vm: register(\"vm\", 60026),\n deviceDesktop: register(\"device-desktop\", 60026),\n file: register(\"file\", 60027),\n more: register(\"more\", 60028),\n ellipsis: register(\"ellipsis\", 60028),\n kebabHorizontal: register(\"kebab-horizontal\", 60028),\n mailReply: register(\"mail-reply\", 60029),\n reply: register(\"reply\", 60029),\n organization: register(\"organization\", 60030),\n organizationFilled: register(\"organization-filled\", 60030),\n organizationOutline: register(\"organization-outline\", 60030),\n newFile: register(\"new-file\", 60031),\n fileAdd: register(\"file-add\", 60031),\n newFolder: register(\"new-folder\", 60032),\n fileDirectoryCreate: register(\"file-directory-create\", 60032),\n trash: register(\"trash\", 60033),\n trashcan: register(\"trashcan\", 60033),\n history: register(\"history\", 60034),\n clock: register(\"clock\", 60034),\n folder: register(\"folder\", 60035),\n fileDirectory: register(\"file-directory\", 60035),\n symbolFolder: register(\"symbol-folder\", 60035),\n logoGithub: register(\"logo-github\", 60036),\n markGithub: register(\"mark-github\", 60036),\n github: register(\"github\", 60036),\n terminal: register(\"terminal\", 60037),\n console: register(\"console\", 60037),\n repl: register(\"repl\", 60037),\n zap: register(\"zap\", 60038),\n symbolEvent: register(\"symbol-event\", 60038),\n error: register(\"error\", 60039),\n stop: register(\"stop\", 60039),\n variable: register(\"variable\", 60040),\n symbolVariable: register(\"symbol-variable\", 60040),\n array: register(\"array\", 60042),\n symbolArray: register(\"symbol-array\", 60042),\n symbolModule: register(\"symbol-module\", 60043),\n symbolPackage: register(\"symbol-package\", 60043),\n symbolNamespace: register(\"symbol-namespace\", 60043),\n symbolObject: register(\"symbol-object\", 60043),\n symbolMethod: register(\"symbol-method\", 60044),\n symbolFunction: register(\"symbol-function\", 60044),\n symbolConstructor: register(\"symbol-constructor\", 60044),\n symbolBoolean: register(\"symbol-boolean\", 60047),\n symbolNull: register(\"symbol-null\", 60047),\n symbolNumeric: register(\"symbol-numeric\", 60048),\n symbolNumber: register(\"symbol-number\", 60048),\n symbolStructure: register(\"symbol-structure\", 60049),\n symbolStruct: register(\"symbol-struct\", 60049),\n symbolParameter: register(\"symbol-parameter\", 60050),\n symbolTypeParameter: register(\"symbol-type-parameter\", 60050),\n symbolKey: register(\"symbol-key\", 60051),\n symbolText: register(\"symbol-text\", 60051),\n symbolReference: register(\"symbol-reference\", 60052),\n goToFile: register(\"go-to-file\", 60052),\n symbolEnum: register(\"symbol-enum\", 60053),\n symbolValue: register(\"symbol-value\", 60053),\n symbolRuler: register(\"symbol-ruler\", 60054),\n symbolUnit: register(\"symbol-unit\", 60054),\n activateBreakpoints: register(\"activate-breakpoints\", 60055),\n archive: register(\"archive\", 60056),\n arrowBoth: register(\"arrow-both\", 60057),\n arrowDown: register(\"arrow-down\", 60058),\n arrowLeft: register(\"arrow-left\", 60059),\n arrowRight: register(\"arrow-right\", 60060),\n arrowSmallDown: register(\"arrow-small-down\", 60061),\n arrowSmallLeft: register(\"arrow-small-left\", 60062),\n arrowSmallRight: register(\"arrow-small-right\", 60063),\n arrowSmallUp: register(\"arrow-small-up\", 60064),\n arrowUp: register(\"arrow-up\", 60065),\n bell: register(\"bell\", 60066),\n bold: register(\"bold\", 60067),\n book: register(\"book\", 60068),\n bookmark: register(\"bookmark\", 60069),\n debugBreakpointConditionalUnverified: register(\"debug-breakpoint-conditional-unverified\", 60070),\n debugBreakpointConditional: register(\"debug-breakpoint-conditional\", 60071),\n debugBreakpointConditionalDisabled: register(\"debug-breakpoint-conditional-disabled\", 60071),\n debugBreakpointDataUnverified: register(\"debug-breakpoint-data-unverified\", 60072),\n debugBreakpointData: register(\"debug-breakpoint-data\", 60073),\n debugBreakpointDataDisabled: register(\"debug-breakpoint-data-disabled\", 60073),\n debugBreakpointLogUnverified: register(\"debug-breakpoint-log-unverified\", 60074),\n debugBreakpointLog: register(\"debug-breakpoint-log\", 60075),\n debugBreakpointLogDisabled: register(\"debug-breakpoint-log-disabled\", 60075),\n briefcase: register(\"briefcase\", 60076),\n broadcast: register(\"broadcast\", 60077),\n browser: register(\"browser\", 60078),\n bug: register(\"bug\", 60079),\n calendar: register(\"calendar\", 60080),\n caseSensitive: register(\"case-sensitive\", 60081),\n check: register(\"check\", 60082),\n checklist: register(\"checklist\", 60083),\n chevronDown: register(\"chevron-down\", 60084),\n chevronLeft: register(\"chevron-left\", 60085),\n chevronRight: register(\"chevron-right\", 60086),\n chevronUp: register(\"chevron-up\", 60087),\n chromeClose: register(\"chrome-close\", 60088),\n chromeMaximize: register(\"chrome-maximize\", 60089),\n chromeMinimize: register(\"chrome-minimize\", 60090),\n chromeRestore: register(\"chrome-restore\", 60091),\n circleOutline: register(\"circle-outline\", 60092),\n circle: register(\"circle\", 60092),\n debugBreakpointUnverified: register(\"debug-breakpoint-unverified\", 60092),\n terminalDecorationIncomplete: register(\"terminal-decoration-incomplete\", 60092),\n circleSlash: register(\"circle-slash\", 60093),\n circuitBoard: register(\"circuit-board\", 60094),\n clearAll: register(\"clear-all\", 60095),\n clippy: register(\"clippy\", 60096),\n closeAll: register(\"close-all\", 60097),\n cloudDownload: register(\"cloud-download\", 60098),\n cloudUpload: register(\"cloud-upload\", 60099),\n code: register(\"code\", 60100),\n collapseAll: register(\"collapse-all\", 60101),\n colorMode: register(\"color-mode\", 60102),\n commentDiscussion: register(\"comment-discussion\", 60103),\n creditCard: register(\"credit-card\", 60105),\n dash: register(\"dash\", 60108),\n dashboard: register(\"dashboard\", 60109),\n database: register(\"database\", 60110),\n debugContinue: register(\"debug-continue\", 60111),\n debugDisconnect: register(\"debug-disconnect\", 60112),\n debugPause: register(\"debug-pause\", 60113),\n debugRestart: register(\"debug-restart\", 60114),\n debugStart: register(\"debug-start\", 60115),\n debugStepInto: register(\"debug-step-into\", 60116),\n debugStepOut: register(\"debug-step-out\", 60117),\n debugStepOver: register(\"debug-step-over\", 60118),\n debugStop: register(\"debug-stop\", 60119),\n debug: register(\"debug\", 60120),\n deviceCameraVideo: register(\"device-camera-video\", 60121),\n deviceCamera: register(\"device-camera\", 60122),\n deviceMobile: register(\"device-mobile\", 60123),\n diffAdded: register(\"diff-added\", 60124),\n diffIgnored: register(\"diff-ignored\", 60125),\n diffModified: register(\"diff-modified\", 60126),\n diffRemoved: register(\"diff-removed\", 60127),\n diffRenamed: register(\"diff-renamed\", 60128),\n diff: register(\"diff\", 60129),\n diffSidebyside: register(\"diff-sidebyside\", 60129),\n discard: register(\"discard\", 60130),\n editorLayout: register(\"editor-layout\", 60131),\n emptyWindow: register(\"empty-window\", 60132),\n exclude: register(\"exclude\", 60133),\n extensions: register(\"extensions\", 60134),\n eyeClosed: register(\"eye-closed\", 60135),\n fileBinary: register(\"file-binary\", 60136),\n fileCode: register(\"file-code\", 60137),\n fileMedia: register(\"file-media\", 60138),\n filePdf: register(\"file-pdf\", 60139),\n fileSubmodule: register(\"file-submodule\", 60140),\n fileSymlinkDirectory: register(\"file-symlink-directory\", 60141),\n fileSymlinkFile: register(\"file-symlink-file\", 60142),\n fileZip: register(\"file-zip\", 60143),\n files: register(\"files\", 60144),\n filter: register(\"filter\", 60145),\n flame: register(\"flame\", 60146),\n foldDown: register(\"fold-down\", 60147),\n foldUp: register(\"fold-up\", 60148),\n fold: register(\"fold\", 60149),\n folderActive: register(\"folder-active\", 60150),\n folderOpened: register(\"folder-opened\", 60151),\n gear: register(\"gear\", 60152),\n gift: register(\"gift\", 60153),\n gistSecret: register(\"gist-secret\", 60154),\n gist: register(\"gist\", 60155),\n gitCommit: register(\"git-commit\", 60156),\n gitCompare: register(\"git-compare\", 60157),\n compareChanges: register(\"compare-changes\", 60157),\n gitMerge: register(\"git-merge\", 60158),\n githubAction: register(\"github-action\", 60159),\n githubAlt: register(\"github-alt\", 60160),\n globe: register(\"globe\", 60161),\n grabber: register(\"grabber\", 60162),\n graph: register(\"graph\", 60163),\n gripper: register(\"gripper\", 60164),\n heart: register(\"heart\", 60165),\n home: register(\"home\", 60166),\n horizontalRule: register(\"horizontal-rule\", 60167),\n hubot: register(\"hubot\", 60168),\n inbox: register(\"inbox\", 60169),\n issueReopened: register(\"issue-reopened\", 60171),\n issues: register(\"issues\", 60172),\n italic: register(\"italic\", 60173),\n jersey: register(\"jersey\", 60174),\n json: register(\"json\", 60175),\n kebabVertical: register(\"kebab-vertical\", 60176),\n key: register(\"key\", 60177),\n law: register(\"law\", 60178),\n lightbulbAutofix: register(\"lightbulb-autofix\", 60179),\n linkExternal: register(\"link-external\", 60180),\n link: register(\"link\", 60181),\n listOrdered: register(\"list-ordered\", 60182),\n listUnordered: register(\"list-unordered\", 60183),\n liveShare: register(\"live-share\", 60184),\n loading: register(\"loading\", 60185),\n location: register(\"location\", 60186),\n mailRead: register(\"mail-read\", 60187),\n mail: register(\"mail\", 60188),\n markdown: register(\"markdown\", 60189),\n megaphone: register(\"megaphone\", 60190),\n mention: register(\"mention\", 60191),\n milestone: register(\"milestone\", 60192),\n gitPullRequestMilestone: register(\"git-pull-request-milestone\", 60192),\n mortarBoard: register(\"mortar-board\", 60193),\n move: register(\"move\", 60194),\n multipleWindows: register(\"multiple-windows\", 60195),\n mute: register(\"mute\", 60196),\n noNewline: register(\"no-newline\", 60197),\n note: register(\"note\", 60198),\n octoface: register(\"octoface\", 60199),\n openPreview: register(\"open-preview\", 60200),\n package: register(\"package\", 60201),\n paintcan: register(\"paintcan\", 60202),\n pin: register(\"pin\", 60203),\n play: register(\"play\", 60204),\n run: register(\"run\", 60204),\n plug: register(\"plug\", 60205),\n preserveCase: register(\"preserve-case\", 60206),\n preview: register(\"preview\", 60207),\n project: register(\"project\", 60208),\n pulse: register(\"pulse\", 60209),\n question: register(\"question\", 60210),\n quote: register(\"quote\", 60211),\n radioTower: register(\"radio-tower\", 60212),\n reactions: register(\"reactions\", 60213),\n references: register(\"references\", 60214),\n refresh: register(\"refresh\", 60215),\n regex: register(\"regex\", 60216),\n remoteExplorer: register(\"remote-explorer\", 60217),\n remote: register(\"remote\", 60218),\n remove: register(\"remove\", 60219),\n replaceAll: register(\"replace-all\", 60220),\n replace: register(\"replace\", 60221),\n repoClone: register(\"repo-clone\", 60222),\n repoForcePush: register(\"repo-force-push\", 60223),\n repoPull: register(\"repo-pull\", 60224),\n repoPush: register(\"repo-push\", 60225),\n report: register(\"report\", 60226),\n requestChanges: register(\"request-changes\", 60227),\n rocket: register(\"rocket\", 60228),\n rootFolderOpened: register(\"root-folder-opened\", 60229),\n rootFolder: register(\"root-folder\", 60230),\n rss: register(\"rss\", 60231),\n ruby: register(\"ruby\", 60232),\n saveAll: register(\"save-all\", 60233),\n saveAs: register(\"save-as\", 60234),\n save: register(\"save\", 60235),\n screenFull: register(\"screen-full\", 60236),\n screenNormal: register(\"screen-normal\", 60237),\n searchStop: register(\"search-stop\", 60238),\n server: register(\"server\", 60240),\n settingsGear: register(\"settings-gear\", 60241),\n settings: register(\"settings\", 60242),\n shield: register(\"shield\", 60243),\n smiley: register(\"smiley\", 60244),\n sortPrecedence: register(\"sort-precedence\", 60245),\n splitHorizontal: register(\"split-horizontal\", 60246),\n splitVertical: register(\"split-vertical\", 60247),\n squirrel: register(\"squirrel\", 60248),\n starFull: register(\"star-full\", 60249),\n starHalf: register(\"star-half\", 60250),\n symbolClass: register(\"symbol-class\", 60251),\n symbolColor: register(\"symbol-color\", 60252),\n symbolConstant: register(\"symbol-constant\", 60253),\n symbolEnumMember: register(\"symbol-enum-member\", 60254),\n symbolField: register(\"symbol-field\", 60255),\n symbolFile: register(\"symbol-file\", 60256),\n symbolInterface: register(\"symbol-interface\", 60257),\n symbolKeyword: register(\"symbol-keyword\", 60258),\n symbolMisc: register(\"symbol-misc\", 60259),\n symbolOperator: register(\"symbol-operator\", 60260),\n symbolProperty: register(\"symbol-property\", 60261),\n wrench: register(\"wrench\", 60261),\n wrenchSubaction: register(\"wrench-subaction\", 60261),\n symbolSnippet: register(\"symbol-snippet\", 60262),\n tasklist: register(\"tasklist\", 60263),\n telescope: register(\"telescope\", 60264),\n textSize: register(\"text-size\", 60265),\n threeBars: register(\"three-bars\", 60266),\n thumbsdown: register(\"thumbsdown\", 60267),\n thumbsup: register(\"thumbsup\", 60268),\n tools: register(\"tools\", 60269),\n triangleDown: register(\"triangle-down\", 60270),\n triangleLeft: register(\"triangle-left\", 60271),\n triangleRight: register(\"triangle-right\", 60272),\n triangleUp: register(\"triangle-up\", 60273),\n twitter: register(\"twitter\", 60274),\n unfold: register(\"unfold\", 60275),\n unlock: register(\"unlock\", 60276),\n unmute: register(\"unmute\", 60277),\n unverified: register(\"unverified\", 60278),\n verified: register(\"verified\", 60279),\n versions: register(\"versions\", 60280),\n vmActive: register(\"vm-active\", 60281),\n vmOutline: register(\"vm-outline\", 60282),\n vmRunning: register(\"vm-running\", 60283),\n watch: register(\"watch\", 60284),\n whitespace: register(\"whitespace\", 60285),\n wholeWord: register(\"whole-word\", 60286),\n window: register(\"window\", 60287),\n wordWrap: register(\"word-wrap\", 60288),\n zoomIn: register(\"zoom-in\", 60289),\n zoomOut: register(\"zoom-out\", 60290),\n listFilter: register(\"list-filter\", 60291),\n listFlat: register(\"list-flat\", 60292),\n listSelection: register(\"list-selection\", 60293),\n selection: register(\"selection\", 60293),\n listTree: register(\"list-tree\", 60294),\n debugBreakpointFunctionUnverified: register(\"debug-breakpoint-function-unverified\", 60295),\n debugBreakpointFunction: register(\"debug-breakpoint-function\", 60296),\n debugBreakpointFunctionDisabled: register(\"debug-breakpoint-function-disabled\", 60296),\n debugStackframeActive: register(\"debug-stackframe-active\", 60297),\n circleSmallFilled: register(\"circle-small-filled\", 60298),\n debugStackframeDot: register(\"debug-stackframe-dot\", 60298),\n terminalDecorationMark: register(\"terminal-decoration-mark\", 60298),\n debugStackframe: register(\"debug-stackframe\", 60299),\n debugStackframeFocused: register(\"debug-stackframe-focused\", 60299),\n debugBreakpointUnsupported: register(\"debug-breakpoint-unsupported\", 60300),\n symbolString: register(\"symbol-string\", 60301),\n debugReverseContinue: register(\"debug-reverse-continue\", 60302),\n debugStepBack: register(\"debug-step-back\", 60303),\n debugRestartFrame: register(\"debug-restart-frame\", 60304),\n debugAlt: register(\"debug-alt\", 60305),\n callIncoming: register(\"call-incoming\", 60306),\n callOutgoing: register(\"call-outgoing\", 60307),\n menu: register(\"menu\", 60308),\n expandAll: register(\"expand-all\", 60309),\n feedback: register(\"feedback\", 60310),\n gitPullRequestReviewer: register(\"git-pull-request-reviewer\", 60310),\n groupByRefType: register(\"group-by-ref-type\", 60311),\n ungroupByRefType: register(\"ungroup-by-ref-type\", 60312),\n account: register(\"account\", 60313),\n gitPullRequestAssignee: register(\"git-pull-request-assignee\", 60313),\n bellDot: register(\"bell-dot\", 60314),\n debugConsole: register(\"debug-console\", 60315),\n library: register(\"library\", 60316),\n output: register(\"output\", 60317),\n runAll: register(\"run-all\", 60318),\n syncIgnored: register(\"sync-ignored\", 60319),\n pinned: register(\"pinned\", 60320),\n githubInverted: register(\"github-inverted\", 60321),\n serverProcess: register(\"server-process\", 60322),\n serverEnvironment: register(\"server-environment\", 60323),\n pass: register(\"pass\", 60324),\n issueClosed: register(\"issue-closed\", 60324),\n stopCircle: register(\"stop-circle\", 60325),\n playCircle: register(\"play-circle\", 60326),\n record: register(\"record\", 60327),\n debugAltSmall: register(\"debug-alt-small\", 60328),\n vmConnect: register(\"vm-connect\", 60329),\n cloud: register(\"cloud\", 60330),\n merge: register(\"merge\", 60331),\n export: register(\"export\", 60332),\n graphLeft: register(\"graph-left\", 60333),\n magnet: register(\"magnet\", 60334),\n notebook: register(\"notebook\", 60335),\n redo: register(\"redo\", 60336),\n checkAll: register(\"check-all\", 60337),\n pinnedDirty: register(\"pinned-dirty\", 60338),\n passFilled: register(\"pass-filled\", 60339),\n circleLargeFilled: register(\"circle-large-filled\", 60340),\n circleLarge: register(\"circle-large\", 60341),\n circleLargeOutline: register(\"circle-large-outline\", 60341),\n combine: register(\"combine\", 60342),\n gather: register(\"gather\", 60342),\n table: register(\"table\", 60343),\n variableGroup: register(\"variable-group\", 60344),\n typeHierarchy: register(\"type-hierarchy\", 60345),\n typeHierarchySub: register(\"type-hierarchy-sub\", 60346),\n typeHierarchySuper: register(\"type-hierarchy-super\", 60347),\n gitPullRequestCreate: register(\"git-pull-request-create\", 60348),\n runAbove: register(\"run-above\", 60349),\n runBelow: register(\"run-below\", 60350),\n notebookTemplate: register(\"notebook-template\", 60351),\n debugRerun: register(\"debug-rerun\", 60352),\n workspaceTrusted: register(\"workspace-trusted\", 60353),\n workspaceUntrusted: register(\"workspace-untrusted\", 60354),\n workspaceUnknown: register(\"workspace-unknown\", 60355),\n terminalCmd: register(\"terminal-cmd\", 60356),\n terminalDebian: register(\"terminal-debian\", 60357),\n terminalLinux: register(\"terminal-linux\", 60358),\n terminalPowershell: register(\"terminal-powershell\", 60359),\n terminalTmux: register(\"terminal-tmux\", 60360),\n terminalUbuntu: register(\"terminal-ubuntu\", 60361),\n terminalBash: register(\"terminal-bash\", 60362),\n arrowSwap: register(\"arrow-swap\", 60363),\n copy: register(\"copy\", 60364),\n personAdd: register(\"person-add\", 60365),\n filterFilled: register(\"filter-filled\", 60366),\n wand: register(\"wand\", 60367),\n debugLineByLine: register(\"debug-line-by-line\", 60368),\n inspect: register(\"inspect\", 60369),\n layers: register(\"layers\", 60370),\n layersDot: register(\"layers-dot\", 60371),\n layersActive: register(\"layers-active\", 60372),\n compass: register(\"compass\", 60373),\n compassDot: register(\"compass-dot\", 60374),\n compassActive: register(\"compass-active\", 60375),\n azure: register(\"azure\", 60376),\n issueDraft: register(\"issue-draft\", 60377),\n gitPullRequestClosed: register(\"git-pull-request-closed\", 60378),\n gitPullRequestDraft: register(\"git-pull-request-draft\", 60379),\n debugAll: register(\"debug-all\", 60380),\n debugCoverage: register(\"debug-coverage\", 60381),\n runErrors: register(\"run-errors\", 60382),\n folderLibrary: register(\"folder-library\", 60383),\n debugContinueSmall: register(\"debug-continue-small\", 60384),\n beakerStop: register(\"beaker-stop\", 60385),\n graphLine: register(\"graph-line\", 60386),\n graphScatter: register(\"graph-scatter\", 60387),\n pieChart: register(\"pie-chart\", 60388),\n bracket: register(\"bracket\", 60175),\n bracketDot: register(\"bracket-dot\", 60389),\n bracketError: register(\"bracket-error\", 60390),\n lockSmall: register(\"lock-small\", 60391),\n azureDevops: register(\"azure-devops\", 60392),\n verifiedFilled: register(\"verified-filled\", 60393),\n newline: register(\"newline\", 60394),\n layout: register(\"layout\", 60395),\n layoutActivitybarLeft: register(\"layout-activitybar-left\", 60396),\n layoutActivitybarRight: register(\"layout-activitybar-right\", 60397),\n layoutPanelLeft: register(\"layout-panel-left\", 60398),\n layoutPanelCenter: register(\"layout-panel-center\", 60399),\n layoutPanelJustify: register(\"layout-panel-justify\", 60400),\n layoutPanelRight: register(\"layout-panel-right\", 60401),\n layoutPanel: register(\"layout-panel\", 60402),\n layoutSidebarLeft: register(\"layout-sidebar-left\", 60403),\n layoutSidebarRight: register(\"layout-sidebar-right\", 60404),\n layoutStatusbar: register(\"layout-statusbar\", 60405),\n layoutMenubar: register(\"layout-menubar\", 60406),\n layoutCentered: register(\"layout-centered\", 60407),\n target: register(\"target\", 60408),\n indent: register(\"indent\", 60409),\n recordSmall: register(\"record-small\", 60410),\n errorSmall: register(\"error-small\", 60411),\n terminalDecorationError: register(\"terminal-decoration-error\", 60411),\n arrowCircleDown: register(\"arrow-circle-down\", 60412),\n arrowCircleLeft: register(\"arrow-circle-left\", 60413),\n arrowCircleRight: register(\"arrow-circle-right\", 60414),\n arrowCircleUp: register(\"arrow-circle-up\", 60415),\n layoutSidebarRightOff: register(\"layout-sidebar-right-off\", 60416),\n layoutPanelOff: register(\"layout-panel-off\", 60417),\n layoutSidebarLeftOff: register(\"layout-sidebar-left-off\", 60418),\n blank: register(\"blank\", 60419),\n heartFilled: register(\"heart-filled\", 60420),\n map: register(\"map\", 60421),\n mapHorizontal: register(\"map-horizontal\", 60421),\n foldHorizontal: register(\"fold-horizontal\", 60421),\n mapFilled: register(\"map-filled\", 60422),\n mapHorizontalFilled: register(\"map-horizontal-filled\", 60422),\n foldHorizontalFilled: register(\"fold-horizontal-filled\", 60422),\n circleSmall: register(\"circle-small\", 60423),\n bellSlash: register(\"bell-slash\", 60424),\n bellSlashDot: register(\"bell-slash-dot\", 60425),\n commentUnresolved: register(\"comment-unresolved\", 60426),\n gitPullRequestGoToChanges: register(\"git-pull-request-go-to-changes\", 60427),\n gitPullRequestNewChanges: register(\"git-pull-request-new-changes\", 60428),\n searchFuzzy: register(\"search-fuzzy\", 60429),\n commentDraft: register(\"comment-draft\", 60430),\n send: register(\"send\", 60431),\n sparkle: register(\"sparkle\", 60432),\n insert: register(\"insert\", 60433),\n mic: register(\"mic\", 60434),\n thumbsdownFilled: register(\"thumbsdown-filled\", 60435),\n thumbsupFilled: register(\"thumbsup-filled\", 60436),\n coffee: register(\"coffee\", 60437),\n snake: register(\"snake\", 60438),\n game: register(\"game\", 60439),\n vr: register(\"vr\", 60440),\n chip: register(\"chip\", 60441),\n piano: register(\"piano\", 60442),\n music: register(\"music\", 60443),\n micFilled: register(\"mic-filled\", 60444),\n repoFetch: register(\"repo-fetch\", 60445),\n copilot: register(\"copilot\", 60446),\n lightbulbSparkle: register(\"lightbulb-sparkle\", 60447),\n robot: register(\"robot\", 60448),\n sparkleFilled: register(\"sparkle-filled\", 60449),\n diffSingle: register(\"diff-single\", 60450),\n diffMultiple: register(\"diff-multiple\", 60451),\n surroundWith: register(\"surround-with\", 60452),\n share: register(\"share\", 60453),\n gitStash: register(\"git-stash\", 60454),\n gitStashApply: register(\"git-stash-apply\", 60455),\n gitStashPop: register(\"git-stash-pop\", 60456),\n vscode: register(\"vscode\", 60457),\n vscodeInsiders: register(\"vscode-insiders\", 60458),\n codeOss: register(\"code-oss\", 60459),\n runCoverage: register(\"run-coverage\", 60460),\n runAllCoverage: register(\"run-all-coverage\", 60461),\n coverage: register(\"coverage\", 60462),\n githubProject: register(\"github-project\", 60463),\n mapVertical: register(\"map-vertical\", 60464),\n foldVertical: register(\"fold-vertical\", 60464),\n mapVerticalFilled: register(\"map-vertical-filled\", 60465),\n foldVerticalFilled: register(\"fold-vertical-filled\", 60465),\n goToSearch: register(\"go-to-search\", 60466),\n percentage: register(\"percentage\", 60467),\n sortPercentage: register(\"sort-percentage\", 60467),\n attach: register(\"attach\", 60468),\n goToEditingSession: register(\"go-to-editing-session\", 60469),\n editSession: register(\"edit-session\", 60470),\n codeReview: register(\"code-review\", 60471),\n copilotWarning: register(\"copilot-warning\", 60472),\n python: register(\"python\", 60473),\n copilotLarge: register(\"copilot-large\", 60474),\n copilotWarningLarge: register(\"copilot-warning-large\", 60475),\n keyboardTab: register(\"keyboard-tab\", 60476),\n copilotBlocked: register(\"copilot-blocked\", 60477),\n copilotNotConnected: register(\"copilot-not-connected\", 60478),\n flag: register(\"flag\", 60479),\n lightbulbEmpty: register(\"lightbulb-empty\", 60480),\n symbolMethodArrow: register(\"symbol-method-arrow\", 60481),\n copilotUnavailable: register(\"copilot-unavailable\", 60482),\n repoPinned: register(\"repo-pinned\", 60483),\n keyboardTabAbove: register(\"keyboard-tab-above\", 60484),\n keyboardTabBelow: register(\"keyboard-tab-below\", 60485),\n gitPullRequestDone: register(\"git-pull-request-done\", 60486),\n mcp: register(\"mcp\", 60487),\n extensionsLarge: register(\"extensions-large\", 60488),\n layoutPanelDock: register(\"layout-panel-dock\", 60489),\n layoutSidebarLeftDock: register(\"layout-sidebar-left-dock\", 60490),\n layoutSidebarRightDock: register(\"layout-sidebar-right-dock\", 60491),\n copilotInProgress: register(\"copilot-in-progress\", 60492),\n copilotError: register(\"copilot-error\", 60493),\n copilotSuccess: register(\"copilot-success\", 60494),\n chatSparkle: register(\"chat-sparkle\", 60495),\n searchSparkle: register(\"search-sparkle\", 60496),\n editSparkle: register(\"edit-sparkle\", 60497),\n copilotSnooze: register(\"copilot-snooze\", 60498),\n sendToRemoteAgent: register(\"send-to-remote-agent\", 60499),\n commentDiscussionSparkle: register(\"comment-discussion-sparkle\", 60500),\n chatSparkleWarning: register(\"chat-sparkle-warning\", 60501),\n chatSparkleError: register(\"chat-sparkle-error\", 60502),\n collection: register(\"collection\", 60503),\n newCollection: register(\"new-collection\", 60504),\n thinking: register(\"thinking\", 60505),\n build: register(\"build\", 60506),\n commentDiscussionQuote: register(\"comment-discussion-quote\", 60507),\n cursor: register(\"cursor\", 60508),\n eraser: register(\"eraser\", 60509),\n fileText: register(\"file-text\", 60510),\n gitLens: register(\"git-lens\", 60511),\n quotes: register(\"quotes\", 60512),\n rename: register(\"rename\", 60513),\n runWithDeps: register(\"run-with-deps\", 60514),\n debugConnected: register(\"debug-connected\", 60515),\n strikethrough: register(\"strikethrough\", 60516),\n openInProduct: register(\"open-in-product\", 60517),\n indexZero: register(\"index-zero\", 60518),\n agent: register(\"agent\", 60519),\n editCode: register(\"edit-code\", 60520),\n repoSelected: register(\"repo-selected\", 60521),\n skip: register(\"skip\", 60522),\n mergeInto: register(\"merge-into\", 60523),\n gitBranchChanges: register(\"git-branch-changes\", 60524),\n gitBranchStagedChanges: register(\"git-branch-staged-changes\", 60525),\n gitBranchConflicts: register(\"git-branch-conflicts\", 60526),\n gitBranch: register(\"git-branch\", 60527),\n gitBranchCreate: register(\"git-branch-create\", 60527),\n gitBranchDelete: register(\"git-branch-delete\", 60527),\n searchLarge: register(\"search-large\", 60528),\n terminalGitBash: register(\"terminal-git-bash\", 60529)\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/codicons.js\n /**\n * Derived icons, that could become separate icons.\n * These mappings should be moved into the mapping file in the vscode-codicons repo at some point.\n */\n const codiconsDerived = {\n dialogError: register(\"dialog-error\", \"error\"),\n dialogWarning: register(\"dialog-warning\", \"warning\"),\n dialogInfo: register(\"dialog-info\", \"info\"),\n dialogClose: register(\"dialog-close\", \"close\"),\n treeItemExpanded: register(\"tree-item-expanded\", \"chevron-down\"),\n treeFilterOnTypeOn: register(\"tree-filter-on-type-on\", \"list-filter\"),\n treeFilterOnTypeOff: register(\"tree-filter-on-type-off\", \"list-selection\"),\n treeFilterClear: register(\"tree-filter-clear\", \"close\"),\n treeItemLoading: register(\"tree-item-loading\", \"loading\"),\n menuSelection: register(\"menu-selection\", \"check\"),\n menuSubmenu: register(\"menu-submenu\", \"chevron-right\"),\n menuBarMore: register(\"menubar-more\", \"more\"),\n scrollbarButtonLeft: register(\"scrollbar-button-left\", \"triangle-left\"),\n scrollbarButtonRight: register(\"scrollbar-button-right\", \"triangle-right\"),\n scrollbarButtonUp: register(\"scrollbar-button-up\", \"triangle-up\"),\n scrollbarButtonDown: register(\"scrollbar-button-down\", \"triangle-down\"),\n toolBarMore: register(\"toolbar-more\", \"more\"),\n quickInputBack: register(\"quick-input-back\", \"arrow-left\"),\n dropDownButton: register(\"drop-down-button\", 60084),\n symbolCustomColor: register(\"symbol-customcolor\", 60252),\n exportIcon: register(\"export\", 60332),\n workspaceUnspecified: register(\"workspace-unspecified\", 60355),\n newLine: register(\"newline\", 60394),\n thumbsDownFilled: register(\"thumbsdown-filled\", 60435),\n thumbsUpFilled: register(\"thumbsup-filled\", 60436),\n gitFetch: register(\"git-fetch\", 60445),\n lightbulbSparkleAutofix: register(\"lightbulb-sparkle-autofix\", 60447),\n debugBreakpointPending: register(\"debug-breakpoint-pending\", 60377)\n };\n /**\n * The Codicon library is a set of default icons that are built-in in VS Code.\n *\n * In the product (outside of base) Codicons should only be used as defaults. In order to have all icons in VS Code\n * themeable, component should define new, UI component specific icons using `iconRegistry.registerIcon`.\n * In that call a Codicon can be named as default.\n */\n const Codicon = {\n ...codiconsLibrary,\n ...codiconsDerived\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/tokenizationRegistry.js\n var TokenizationRegistry$1 = class {\n constructor() {\n this._tokenizationSupports = /* @__PURE__ */ new Map();\n this._factories = /* @__PURE__ */ new Map();\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._colorMap = null;\n }\n handleChange(languageIds) {\n this._onDidChange.fire({\n changedLanguages: languageIds,\n changedColorMap: false\n });\n }\n register(languageId, support) {\n this._tokenizationSupports.set(languageId, support);\n this.handleChange([languageId]);\n return toDisposable(() => {\n if (this._tokenizationSupports.get(languageId) !== support) return;\n this._tokenizationSupports.delete(languageId);\n this.handleChange([languageId]);\n });\n }\n get(languageId) {\n return this._tokenizationSupports.get(languageId) || null;\n }\n registerFactory(languageId, factory) {\n this._factories.get(languageId)?.dispose();\n const myData = new TokenizationSupportFactoryData(this, languageId, factory);\n this._factories.set(languageId, myData);\n return toDisposable(() => {\n const v = this._factories.get(languageId);\n if (!v || v !== myData) return;\n this._factories.delete(languageId);\n v.dispose();\n });\n }\n async getOrCreate(languageId) {\n const tokenizationSupport = this.get(languageId);\n if (tokenizationSupport) return tokenizationSupport;\n const factory = this._factories.get(languageId);\n if (!factory || factory.isResolved) return null;\n await factory.resolve();\n return this.get(languageId);\n }\n isResolved(languageId) {\n if (this.get(languageId)) return true;\n const factory = this._factories.get(languageId);\n if (!factory || factory.isResolved) return true;\n return false;\n }\n setColorMap(colorMap) {\n this._colorMap = colorMap;\n this._onDidChange.fire({\n changedLanguages: Array.from(this._tokenizationSupports.keys()),\n changedColorMap: true\n });\n }\n getColorMap() {\n return this._colorMap;\n }\n getDefaultBackground() {\n if (this._colorMap && this._colorMap.length > 2) return this._colorMap[2];\n return null;\n }\n };\n var TokenizationSupportFactoryData = class extends Disposable {\n get isResolved() {\n return this._isResolved;\n }\n constructor(_registry, _languageId, _factory) {\n super();\n this._registry = _registry;\n this._languageId = _languageId;\n this._factory = _factory;\n this._isDisposed = false;\n this._resolvePromise = null;\n this._isResolved = false;\n }\n dispose() {\n this._isDisposed = true;\n super.dispose();\n }\n async resolve() {\n if (!this._resolvePromise) this._resolvePromise = this._create();\n return this._resolvePromise;\n }\n async _create() {\n const value = await this._factory.tokenizationSupport;\n this._isResolved = true;\n if (value && !this._isDisposed) this._register(this._registry.register(this._languageId, value));\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/languages.js\n var Token = class {\n constructor(offset, type, language) {\n this.offset = offset;\n this.type = type;\n this.language = language;\n this._tokenBrand = void 0;\n }\n toString() {\n return \"(\" + this.offset + \", \" + this.type + \")\";\n }\n };\n var HoverVerbosityAction$1;\n (function(HoverVerbosityAction) {\n /**\n * Increase the verbosity of the hover\n */\n HoverVerbosityAction[HoverVerbosityAction[\"Increase\"] = 0] = \"Increase\";\n /**\n * Decrease the verbosity of the hover\n */\n HoverVerbosityAction[HoverVerbosityAction[\"Decrease\"] = 1] = \"Decrease\";\n })(HoverVerbosityAction$1 || (HoverVerbosityAction$1 = {}));\n /**\n * @internal\n */\n var CompletionItemKinds;\n (function(CompletionItemKinds) {\n const byKind = /* @__PURE__ */ new Map();\n byKind.set(0, Codicon.symbolMethod);\n byKind.set(1, Codicon.symbolFunction);\n byKind.set(2, Codicon.symbolConstructor);\n byKind.set(3, Codicon.symbolField);\n byKind.set(4, Codicon.symbolVariable);\n byKind.set(5, Codicon.symbolClass);\n byKind.set(6, Codicon.symbolStruct);\n byKind.set(7, Codicon.symbolInterface);\n byKind.set(8, Codicon.symbolModule);\n byKind.set(9, Codicon.symbolProperty);\n byKind.set(10, Codicon.symbolEvent);\n byKind.set(11, Codicon.symbolOperator);\n byKind.set(12, Codicon.symbolUnit);\n byKind.set(13, Codicon.symbolValue);\n byKind.set(15, Codicon.symbolEnum);\n byKind.set(14, Codicon.symbolConstant);\n byKind.set(15, Codicon.symbolEnum);\n byKind.set(16, Codicon.symbolEnumMember);\n byKind.set(17, Codicon.symbolKeyword);\n byKind.set(28, Codicon.symbolSnippet);\n byKind.set(18, Codicon.symbolText);\n byKind.set(19, Codicon.symbolColor);\n byKind.set(20, Codicon.symbolFile);\n byKind.set(21, Codicon.symbolReference);\n byKind.set(22, Codicon.symbolCustomColor);\n byKind.set(23, Codicon.symbolFolder);\n byKind.set(24, Codicon.symbolTypeParameter);\n byKind.set(25, Codicon.account);\n byKind.set(26, Codicon.issues);\n byKind.set(27, Codicon.tools);\n /**\n * @internal\n */\n function toIcon(kind) {\n let codicon = byKind.get(kind);\n if (!codicon) {\n console.info(\"No codicon found for CompletionItemKind \" + kind);\n codicon = Codicon.symbolProperty;\n }\n return codicon;\n }\n CompletionItemKinds.toIcon = toIcon;\n /**\n * @internal\n */\n function toLabel(kind) {\n switch (kind) {\n case 0: return localize(728, \"Method\");\n case 1: return localize(729, \"Function\");\n case 2: return localize(730, \"Constructor\");\n case 3: return localize(731, \"Field\");\n case 4: return localize(732, \"Variable\");\n case 5: return localize(733, \"Class\");\n case 6: return localize(734, \"Struct\");\n case 7: return localize(735, \"Interface\");\n case 8: return localize(736, \"Module\");\n case 9: return localize(737, \"Property\");\n case 10: return localize(738, \"Event\");\n case 11: return localize(739, \"Operator\");\n case 12: return localize(740, \"Unit\");\n case 13: return localize(741, \"Value\");\n case 14: return localize(742, \"Constant\");\n case 15: return localize(743, \"Enum\");\n case 16: return localize(744, \"Enum Member\");\n case 17: return localize(745, \"Keyword\");\n case 18: return localize(746, \"Text\");\n case 19: return localize(747, \"Color\");\n case 20: return localize(748, \"File\");\n case 21: return localize(749, \"Reference\");\n case 22: return localize(750, \"Custom Color\");\n case 23: return localize(751, \"Folder\");\n case 24: return localize(752, \"Type Parameter\");\n case 25: return localize(753, \"User\");\n case 26: return localize(754, \"Issue\");\n case 27: return localize(755, \"Tool\");\n case 28: return localize(756, \"Snippet\");\n default: return \"\";\n }\n }\n CompletionItemKinds.toLabel = toLabel;\n const data = /* @__PURE__ */ new Map();\n data.set(\"method\", 0);\n data.set(\"function\", 1);\n data.set(\"constructor\", 2);\n data.set(\"field\", 3);\n data.set(\"variable\", 4);\n data.set(\"class\", 5);\n data.set(\"struct\", 6);\n data.set(\"interface\", 7);\n data.set(\"module\", 8);\n data.set(\"property\", 9);\n data.set(\"event\", 10);\n data.set(\"operator\", 11);\n data.set(\"unit\", 12);\n data.set(\"value\", 13);\n data.set(\"constant\", 14);\n data.set(\"enum\", 15);\n data.set(\"enum-member\", 16);\n data.set(\"enumMember\", 16);\n data.set(\"keyword\", 17);\n data.set(\"snippet\", 28);\n data.set(\"text\", 18);\n data.set(\"color\", 19);\n data.set(\"file\", 20);\n data.set(\"reference\", 21);\n data.set(\"customcolor\", 22);\n data.set(\"folder\", 23);\n data.set(\"type-parameter\", 24);\n data.set(\"typeParameter\", 24);\n data.set(\"account\", 25);\n data.set(\"issue\", 26);\n data.set(\"tool\", 27);\n /**\n * @internal\n */\n function fromString(value, strict) {\n let res = data.get(value);\n if (typeof res === \"undefined\" && !strict) res = 9;\n return res;\n }\n CompletionItemKinds.fromString = fromString;\n })(CompletionItemKinds || (CompletionItemKinds = {}));\n /**\n * How an {@link InlineCompletionsProvider inline completion provider} was triggered.\n */\n var InlineCompletionTriggerKind$1;\n (function(InlineCompletionTriggerKind) {\n /**\n * Completion was triggered automatically while editing.\n * It is sufficient to return a single completion item in this case.\n */\n InlineCompletionTriggerKind[InlineCompletionTriggerKind[\"Automatic\"] = 0] = \"Automatic\";\n /**\n * Completion was triggered explicitly by a user gesture.\n * Return multiple completion items to enable cycling through them.\n */\n InlineCompletionTriggerKind[InlineCompletionTriggerKind[\"Explicit\"] = 1] = \"Explicit\";\n })(InlineCompletionTriggerKind$1 || (InlineCompletionTriggerKind$1 = {}));\n var InlineCompletionHintStyle$1;\n (function(InlineCompletionHintStyle) {\n InlineCompletionHintStyle[InlineCompletionHintStyle[\"Code\"] = 1] = \"Code\";\n InlineCompletionHintStyle[InlineCompletionHintStyle[\"Label\"] = 2] = \"Label\";\n })(InlineCompletionHintStyle$1 || (InlineCompletionHintStyle$1 = {}));\n var InlineCompletionEndOfLifeReasonKind$1;\n (function(InlineCompletionEndOfLifeReasonKind) {\n InlineCompletionEndOfLifeReasonKind[InlineCompletionEndOfLifeReasonKind[\"Accepted\"] = 0] = \"Accepted\";\n InlineCompletionEndOfLifeReasonKind[InlineCompletionEndOfLifeReasonKind[\"Rejected\"] = 1] = \"Rejected\";\n InlineCompletionEndOfLifeReasonKind[InlineCompletionEndOfLifeReasonKind[\"Ignored\"] = 2] = \"Ignored\";\n })(InlineCompletionEndOfLifeReasonKind$1 || (InlineCompletionEndOfLifeReasonKind$1 = {}));\n /**\n * @internal\n */\n var DocumentPasteTriggerKind;\n (function(DocumentPasteTriggerKind) {\n DocumentPasteTriggerKind[DocumentPasteTriggerKind[\"Automatic\"] = 0] = \"Automatic\";\n DocumentPasteTriggerKind[DocumentPasteTriggerKind[\"PasteAs\"] = 1] = \"PasteAs\";\n })(DocumentPasteTriggerKind || (DocumentPasteTriggerKind = {}));\n var SignatureHelpTriggerKind$1;\n (function(SignatureHelpTriggerKind) {\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"Invoke\"] = 1] = \"Invoke\";\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"TriggerCharacter\"] = 2] = \"TriggerCharacter\";\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"ContentChange\"] = 3] = \"ContentChange\";\n })(SignatureHelpTriggerKind$1 || (SignatureHelpTriggerKind$1 = {}));\n /**\n * A document highlight kind.\n */\n var DocumentHighlightKind$1;\n (function(DocumentHighlightKind) {\n /**\n * A textual occurrence.\n */\n DocumentHighlightKind[DocumentHighlightKind[\"Text\"] = 0] = \"Text\";\n /**\n * Read-access of a symbol, like reading a variable.\n */\n DocumentHighlightKind[DocumentHighlightKind[\"Read\"] = 1] = \"Read\";\n /**\n * Write-access of a symbol, like writing to a variable.\n */\n DocumentHighlightKind[DocumentHighlightKind[\"Write\"] = 2] = \"Write\";\n })(DocumentHighlightKind$1 || (DocumentHighlightKind$1 = {}));\n localize(757, \"array\"), localize(758, \"boolean\"), localize(759, \"class\"), localize(760, \"constant\"), localize(761, \"constructor\"), localize(762, \"enumeration\"), localize(763, \"enumeration member\"), localize(764, \"event\"), localize(765, \"field\"), localize(766, \"file\"), localize(767, \"function\"), localize(768, \"interface\"), localize(769, \"key\"), localize(770, \"method\"), localize(771, \"module\"), localize(772, \"namespace\"), localize(773, \"null\"), localize(774, \"number\"), localize(775, \"object\"), localize(776, \"operator\"), localize(777, \"package\"), localize(778, \"property\"), localize(779, \"string\"), localize(780, \"struct\"), localize(781, \"type parameter\"), localize(782, \"variable\");\n /**\n * @internal\n */\n var SymbolKinds;\n (function(SymbolKinds) {\n const byKind = /* @__PURE__ */ new Map();\n byKind.set(0, Codicon.symbolFile);\n byKind.set(1, Codicon.symbolModule);\n byKind.set(2, Codicon.symbolNamespace);\n byKind.set(3, Codicon.symbolPackage);\n byKind.set(4, Codicon.symbolClass);\n byKind.set(5, Codicon.symbolMethod);\n byKind.set(6, Codicon.symbolProperty);\n byKind.set(7, Codicon.symbolField);\n byKind.set(8, Codicon.symbolConstructor);\n byKind.set(9, Codicon.symbolEnum);\n byKind.set(10, Codicon.symbolInterface);\n byKind.set(11, Codicon.symbolFunction);\n byKind.set(12, Codicon.symbolVariable);\n byKind.set(13, Codicon.symbolConstant);\n byKind.set(14, Codicon.symbolString);\n byKind.set(15, Codicon.symbolNumber);\n byKind.set(16, Codicon.symbolBoolean);\n byKind.set(17, Codicon.symbolArray);\n byKind.set(18, Codicon.symbolObject);\n byKind.set(19, Codicon.symbolKey);\n byKind.set(20, Codicon.symbolNull);\n byKind.set(21, Codicon.symbolEnumMember);\n byKind.set(22, Codicon.symbolStruct);\n byKind.set(23, Codicon.symbolEvent);\n byKind.set(24, Codicon.symbolOperator);\n byKind.set(25, Codicon.symbolTypeParameter);\n /**\n * @internal\n */\n function toIcon(kind) {\n let icon = byKind.get(kind);\n if (!icon) {\n console.info(\"No codicon found for SymbolKind \" + kind);\n icon = Codicon.symbolProperty;\n }\n return icon;\n }\n SymbolKinds.toIcon = toIcon;\n const byCompletionKind = /* @__PURE__ */ new Map();\n byCompletionKind.set(0, 20);\n byCompletionKind.set(1, 8);\n byCompletionKind.set(2, 8);\n byCompletionKind.set(3, 8);\n byCompletionKind.set(4, 5);\n byCompletionKind.set(5, 0);\n byCompletionKind.set(6, 9);\n byCompletionKind.set(7, 3);\n byCompletionKind.set(8, 2);\n byCompletionKind.set(9, 15);\n byCompletionKind.set(10, 7);\n byCompletionKind.set(11, 1);\n byCompletionKind.set(12, 4);\n byCompletionKind.set(13, 14);\n byCompletionKind.set(14, 18);\n byCompletionKind.set(15, 13);\n byCompletionKind.set(16, 13);\n byCompletionKind.set(17, 13);\n byCompletionKind.set(18, 13);\n byCompletionKind.set(19, 17);\n byCompletionKind.set(20, 13);\n byCompletionKind.set(21, 16);\n byCompletionKind.set(22, 6);\n byCompletionKind.set(23, 10);\n byCompletionKind.set(24, 11);\n byCompletionKind.set(25, 24);\n /**\n * @internal\n */\n function toCompletionKind(kind) {\n let completionKind = byCompletionKind.get(kind);\n if (completionKind === void 0) {\n console.info(\"No completion kind found for SymbolKind \" + kind);\n completionKind = 20;\n }\n return completionKind;\n }\n SymbolKinds.toCompletionKind = toCompletionKind;\n })(SymbolKinds || (SymbolKinds = {}));\n (class FoldingRangeKind {\n /**\n * Kind for folding range representing a comment. The value of the kind is 'comment'.\n */\n static {\n this.Comment = new FoldingRangeKind(\"comment\");\n }\n /**\n * Kind for folding range representing a import. The value of the kind is 'imports'.\n */\n static {\n this.Imports = new FoldingRangeKind(\"imports\");\n }\n /**\n * Kind for folding range representing regions (for example marked by `#region`, `#endregion`).\n * The value of the kind is 'region'.\n */\n static {\n this.Region = new FoldingRangeKind(\"region\");\n }\n /**\n * Returns a {@link FoldingRangeKind} for the given value.\n *\n * @param value of the kind.\n */\n static fromValue(value) {\n switch (value) {\n case \"comment\": return FoldingRangeKind.Comment;\n case \"imports\": return FoldingRangeKind.Imports;\n case \"region\": return FoldingRangeKind.Region;\n }\n return new FoldingRangeKind(value);\n }\n /**\n * Creates a new {@link FoldingRangeKind}.\n *\n * @param value of the kind.\n */\n constructor(value) {\n this.value = value;\n }\n });\n var NewSymbolNameTag$1;\n (function(NewSymbolNameTag) {\n NewSymbolNameTag[NewSymbolNameTag[\"AIGenerated\"] = 1] = \"AIGenerated\";\n })(NewSymbolNameTag$1 || (NewSymbolNameTag$1 = {}));\n var NewSymbolNameTriggerKind$1;\n (function(NewSymbolNameTriggerKind) {\n NewSymbolNameTriggerKind[NewSymbolNameTriggerKind[\"Invoke\"] = 0] = \"Invoke\";\n NewSymbolNameTriggerKind[NewSymbolNameTriggerKind[\"Automatic\"] = 1] = \"Automatic\";\n })(NewSymbolNameTriggerKind$1 || (NewSymbolNameTriggerKind$1 = {}));\n /**\n * @internal\n */\n var Command;\n (function(Command) {\n /**\n * @internal\n */\n function is(obj) {\n if (!obj || typeof obj !== \"object\") return false;\n return typeof obj.id === \"string\" && typeof obj.title === \"string\";\n }\n Command.is = is;\n })(Command || (Command = {}));\n var InlayHintKind$1;\n (function(InlayHintKind) {\n InlayHintKind[InlayHintKind[\"Type\"] = 1] = \"Type\";\n InlayHintKind[InlayHintKind[\"Parameter\"] = 2] = \"Parameter\";\n })(InlayHintKind$1 || (InlayHintKind$1 = {}));\n new TokenizationRegistry$1();\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/standalone/standaloneEnums.js\n var AccessibilitySupport;\n (function(AccessibilitySupport) {\n /**\n * This should be the browser case where it is not known if a screen reader is attached or no.\n */\n AccessibilitySupport[AccessibilitySupport[\"Unknown\"] = 0] = \"Unknown\";\n AccessibilitySupport[AccessibilitySupport[\"Disabled\"] = 1] = \"Disabled\";\n AccessibilitySupport[AccessibilitySupport[\"Enabled\"] = 2] = \"Enabled\";\n })(AccessibilitySupport || (AccessibilitySupport = {}));\n var CodeActionTriggerType;\n (function(CodeActionTriggerType) {\n CodeActionTriggerType[CodeActionTriggerType[\"Invoke\"] = 1] = \"Invoke\";\n CodeActionTriggerType[CodeActionTriggerType[\"Auto\"] = 2] = \"Auto\";\n })(CodeActionTriggerType || (CodeActionTriggerType = {}));\n var CompletionItemInsertTextRule;\n (function(CompletionItemInsertTextRule) {\n CompletionItemInsertTextRule[CompletionItemInsertTextRule[\"None\"] = 0] = \"None\";\n /**\n * Adjust whitespace/indentation of multiline insert texts to\n * match the current line indentation.\n */\n CompletionItemInsertTextRule[CompletionItemInsertTextRule[\"KeepWhitespace\"] = 1] = \"KeepWhitespace\";\n /**\n * `insertText` is a snippet.\n */\n CompletionItemInsertTextRule[CompletionItemInsertTextRule[\"InsertAsSnippet\"] = 4] = \"InsertAsSnippet\";\n })(CompletionItemInsertTextRule || (CompletionItemInsertTextRule = {}));\n var CompletionItemKind;\n (function(CompletionItemKind) {\n CompletionItemKind[CompletionItemKind[\"Method\"] = 0] = \"Method\";\n CompletionItemKind[CompletionItemKind[\"Function\"] = 1] = \"Function\";\n CompletionItemKind[CompletionItemKind[\"Constructor\"] = 2] = \"Constructor\";\n CompletionItemKind[CompletionItemKind[\"Field\"] = 3] = \"Field\";\n CompletionItemKind[CompletionItemKind[\"Variable\"] = 4] = \"Variable\";\n CompletionItemKind[CompletionItemKind[\"Class\"] = 5] = \"Class\";\n CompletionItemKind[CompletionItemKind[\"Struct\"] = 6] = \"Struct\";\n CompletionItemKind[CompletionItemKind[\"Interface\"] = 7] = \"Interface\";\n CompletionItemKind[CompletionItemKind[\"Module\"] = 8] = \"Module\";\n CompletionItemKind[CompletionItemKind[\"Property\"] = 9] = \"Property\";\n CompletionItemKind[CompletionItemKind[\"Event\"] = 10] = \"Event\";\n CompletionItemKind[CompletionItemKind[\"Operator\"] = 11] = \"Operator\";\n CompletionItemKind[CompletionItemKind[\"Unit\"] = 12] = \"Unit\";\n CompletionItemKind[CompletionItemKind[\"Value\"] = 13] = \"Value\";\n CompletionItemKind[CompletionItemKind[\"Constant\"] = 14] = \"Constant\";\n CompletionItemKind[CompletionItemKind[\"Enum\"] = 15] = \"Enum\";\n CompletionItemKind[CompletionItemKind[\"EnumMember\"] = 16] = \"EnumMember\";\n CompletionItemKind[CompletionItemKind[\"Keyword\"] = 17] = \"Keyword\";\n CompletionItemKind[CompletionItemKind[\"Text\"] = 18] = \"Text\";\n CompletionItemKind[CompletionItemKind[\"Color\"] = 19] = \"Color\";\n CompletionItemKind[CompletionItemKind[\"File\"] = 20] = \"File\";\n CompletionItemKind[CompletionItemKind[\"Reference\"] = 21] = \"Reference\";\n CompletionItemKind[CompletionItemKind[\"Customcolor\"] = 22] = \"Customcolor\";\n CompletionItemKind[CompletionItemKind[\"Folder\"] = 23] = \"Folder\";\n CompletionItemKind[CompletionItemKind[\"TypeParameter\"] = 24] = \"TypeParameter\";\n CompletionItemKind[CompletionItemKind[\"User\"] = 25] = \"User\";\n CompletionItemKind[CompletionItemKind[\"Issue\"] = 26] = \"Issue\";\n CompletionItemKind[CompletionItemKind[\"Tool\"] = 27] = \"Tool\";\n CompletionItemKind[CompletionItemKind[\"Snippet\"] = 28] = \"Snippet\";\n })(CompletionItemKind || (CompletionItemKind = {}));\n var CompletionItemTag;\n (function(CompletionItemTag) {\n CompletionItemTag[CompletionItemTag[\"Deprecated\"] = 1] = \"Deprecated\";\n })(CompletionItemTag || (CompletionItemTag = {}));\n /**\n * How a suggest provider was triggered.\n */\n var CompletionTriggerKind;\n (function(CompletionTriggerKind) {\n CompletionTriggerKind[CompletionTriggerKind[\"Invoke\"] = 0] = \"Invoke\";\n CompletionTriggerKind[CompletionTriggerKind[\"TriggerCharacter\"] = 1] = \"TriggerCharacter\";\n CompletionTriggerKind[CompletionTriggerKind[\"TriggerForIncompleteCompletions\"] = 2] = \"TriggerForIncompleteCompletions\";\n })(CompletionTriggerKind || (CompletionTriggerKind = {}));\n /**\n * A positioning preference for rendering content widgets.\n */\n var ContentWidgetPositionPreference;\n (function(ContentWidgetPositionPreference) {\n /**\n * Place the content widget exactly at a position\n */\n ContentWidgetPositionPreference[ContentWidgetPositionPreference[\"EXACT\"] = 0] = \"EXACT\";\n /**\n * Place the content widget above a position\n */\n ContentWidgetPositionPreference[ContentWidgetPositionPreference[\"ABOVE\"] = 1] = \"ABOVE\";\n /**\n * Place the content widget below a position\n */\n ContentWidgetPositionPreference[ContentWidgetPositionPreference[\"BELOW\"] = 2] = \"BELOW\";\n })(ContentWidgetPositionPreference || (ContentWidgetPositionPreference = {}));\n /**\n * Describes the reason the cursor has changed its position.\n */\n var CursorChangeReason;\n (function(CursorChangeReason) {\n /**\n * Unknown or not set.\n */\n CursorChangeReason[CursorChangeReason[\"NotSet\"] = 0] = \"NotSet\";\n /**\n * A `model.setValue()` was called.\n */\n CursorChangeReason[CursorChangeReason[\"ContentFlush\"] = 1] = \"ContentFlush\";\n /**\n * The `model` has been changed outside of this cursor and the cursor recovers its position from associated markers.\n */\n CursorChangeReason[CursorChangeReason[\"RecoverFromMarkers\"] = 2] = \"RecoverFromMarkers\";\n /**\n * There was an explicit user gesture.\n */\n CursorChangeReason[CursorChangeReason[\"Explicit\"] = 3] = \"Explicit\";\n /**\n * There was a Paste.\n */\n CursorChangeReason[CursorChangeReason[\"Paste\"] = 4] = \"Paste\";\n /**\n * There was an Undo.\n */\n CursorChangeReason[CursorChangeReason[\"Undo\"] = 5] = \"Undo\";\n /**\n * There was a Redo.\n */\n CursorChangeReason[CursorChangeReason[\"Redo\"] = 6] = \"Redo\";\n })(CursorChangeReason || (CursorChangeReason = {}));\n /**\n * The default end of line to use when instantiating models.\n */\n var DefaultEndOfLine;\n (function(DefaultEndOfLine) {\n /**\n * Use line feed (\\n) as the end of line character.\n */\n DefaultEndOfLine[DefaultEndOfLine[\"LF\"] = 1] = \"LF\";\n /**\n * Use carriage return and line feed (\\r\\n) as the end of line character.\n */\n DefaultEndOfLine[DefaultEndOfLine[\"CRLF\"] = 2] = \"CRLF\";\n })(DefaultEndOfLine || (DefaultEndOfLine = {}));\n /**\n * A document highlight kind.\n */\n var DocumentHighlightKind;\n (function(DocumentHighlightKind) {\n /**\n * A textual occurrence.\n */\n DocumentHighlightKind[DocumentHighlightKind[\"Text\"] = 0] = \"Text\";\n /**\n * Read-access of a symbol, like reading a variable.\n */\n DocumentHighlightKind[DocumentHighlightKind[\"Read\"] = 1] = \"Read\";\n /**\n * Write-access of a symbol, like writing to a variable.\n */\n DocumentHighlightKind[DocumentHighlightKind[\"Write\"] = 2] = \"Write\";\n })(DocumentHighlightKind || (DocumentHighlightKind = {}));\n /**\n * Configuration options for auto indentation in the editor\n */\n var EditorAutoIndentStrategy;\n (function(EditorAutoIndentStrategy) {\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"None\"] = 0] = \"None\";\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Keep\"] = 1] = \"Keep\";\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Brackets\"] = 2] = \"Brackets\";\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Advanced\"] = 3] = \"Advanced\";\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Full\"] = 4] = \"Full\";\n })(EditorAutoIndentStrategy || (EditorAutoIndentStrategy = {}));\n var EditorOption;\n (function(EditorOption) {\n EditorOption[EditorOption[\"acceptSuggestionOnCommitCharacter\"] = 0] = \"acceptSuggestionOnCommitCharacter\";\n EditorOption[EditorOption[\"acceptSuggestionOnEnter\"] = 1] = \"acceptSuggestionOnEnter\";\n EditorOption[EditorOption[\"accessibilitySupport\"] = 2] = \"accessibilitySupport\";\n EditorOption[EditorOption[\"accessibilityPageSize\"] = 3] = \"accessibilityPageSize\";\n EditorOption[EditorOption[\"allowOverflow\"] = 4] = \"allowOverflow\";\n EditorOption[EditorOption[\"allowVariableLineHeights\"] = 5] = \"allowVariableLineHeights\";\n EditorOption[EditorOption[\"allowVariableFonts\"] = 6] = \"allowVariableFonts\";\n EditorOption[EditorOption[\"allowVariableFontsInAccessibilityMode\"] = 7] = \"allowVariableFontsInAccessibilityMode\";\n EditorOption[EditorOption[\"ariaLabel\"] = 8] = \"ariaLabel\";\n EditorOption[EditorOption[\"ariaRequired\"] = 9] = \"ariaRequired\";\n EditorOption[EditorOption[\"autoClosingBrackets\"] = 10] = \"autoClosingBrackets\";\n EditorOption[EditorOption[\"autoClosingComments\"] = 11] = \"autoClosingComments\";\n EditorOption[EditorOption[\"screenReaderAnnounceInlineSuggestion\"] = 12] = \"screenReaderAnnounceInlineSuggestion\";\n EditorOption[EditorOption[\"autoClosingDelete\"] = 13] = \"autoClosingDelete\";\n EditorOption[EditorOption[\"autoClosingOvertype\"] = 14] = \"autoClosingOvertype\";\n EditorOption[EditorOption[\"autoClosingQuotes\"] = 15] = \"autoClosingQuotes\";\n EditorOption[EditorOption[\"autoIndent\"] = 16] = \"autoIndent\";\n EditorOption[EditorOption[\"autoIndentOnPaste\"] = 17] = \"autoIndentOnPaste\";\n EditorOption[EditorOption[\"autoIndentOnPasteWithinString\"] = 18] = \"autoIndentOnPasteWithinString\";\n EditorOption[EditorOption[\"automaticLayout\"] = 19] = \"automaticLayout\";\n EditorOption[EditorOption[\"autoSurround\"] = 20] = \"autoSurround\";\n EditorOption[EditorOption[\"bracketPairColorization\"] = 21] = \"bracketPairColorization\";\n EditorOption[EditorOption[\"guides\"] = 22] = \"guides\";\n EditorOption[EditorOption[\"codeLens\"] = 23] = \"codeLens\";\n EditorOption[EditorOption[\"codeLensFontFamily\"] = 24] = \"codeLensFontFamily\";\n EditorOption[EditorOption[\"codeLensFontSize\"] = 25] = \"codeLensFontSize\";\n EditorOption[EditorOption[\"colorDecorators\"] = 26] = \"colorDecorators\";\n EditorOption[EditorOption[\"colorDecoratorsLimit\"] = 27] = \"colorDecoratorsLimit\";\n EditorOption[EditorOption[\"columnSelection\"] = 28] = \"columnSelection\";\n EditorOption[EditorOption[\"comments\"] = 29] = \"comments\";\n EditorOption[EditorOption[\"contextmenu\"] = 30] = \"contextmenu\";\n EditorOption[EditorOption[\"copyWithSyntaxHighlighting\"] = 31] = \"copyWithSyntaxHighlighting\";\n EditorOption[EditorOption[\"cursorBlinking\"] = 32] = \"cursorBlinking\";\n EditorOption[EditorOption[\"cursorSmoothCaretAnimation\"] = 33] = \"cursorSmoothCaretAnimation\";\n EditorOption[EditorOption[\"cursorStyle\"] = 34] = \"cursorStyle\";\n EditorOption[EditorOption[\"cursorSurroundingLines\"] = 35] = \"cursorSurroundingLines\";\n EditorOption[EditorOption[\"cursorSurroundingLinesStyle\"] = 36] = \"cursorSurroundingLinesStyle\";\n EditorOption[EditorOption[\"cursorWidth\"] = 37] = \"cursorWidth\";\n EditorOption[EditorOption[\"cursorHeight\"] = 38] = \"cursorHeight\";\n EditorOption[EditorOption[\"disableLayerHinting\"] = 39] = \"disableLayerHinting\";\n EditorOption[EditorOption[\"disableMonospaceOptimizations\"] = 40] = \"disableMonospaceOptimizations\";\n EditorOption[EditorOption[\"domReadOnly\"] = 41] = \"domReadOnly\";\n EditorOption[EditorOption[\"dragAndDrop\"] = 42] = \"dragAndDrop\";\n EditorOption[EditorOption[\"dropIntoEditor\"] = 43] = \"dropIntoEditor\";\n EditorOption[EditorOption[\"editContext\"] = 44] = \"editContext\";\n EditorOption[EditorOption[\"emptySelectionClipboard\"] = 45] = \"emptySelectionClipboard\";\n EditorOption[EditorOption[\"experimentalGpuAcceleration\"] = 46] = \"experimentalGpuAcceleration\";\n EditorOption[EditorOption[\"experimentalWhitespaceRendering\"] = 47] = \"experimentalWhitespaceRendering\";\n EditorOption[EditorOption[\"extraEditorClassName\"] = 48] = \"extraEditorClassName\";\n EditorOption[EditorOption[\"fastScrollSensitivity\"] = 49] = \"fastScrollSensitivity\";\n EditorOption[EditorOption[\"find\"] = 50] = \"find\";\n EditorOption[EditorOption[\"fixedOverflowWidgets\"] = 51] = \"fixedOverflowWidgets\";\n EditorOption[EditorOption[\"folding\"] = 52] = \"folding\";\n EditorOption[EditorOption[\"foldingStrategy\"] = 53] = \"foldingStrategy\";\n EditorOption[EditorOption[\"foldingHighlight\"] = 54] = \"foldingHighlight\";\n EditorOption[EditorOption[\"foldingImportsByDefault\"] = 55] = \"foldingImportsByDefault\";\n EditorOption[EditorOption[\"foldingMaximumRegions\"] = 56] = \"foldingMaximumRegions\";\n EditorOption[EditorOption[\"unfoldOnClickAfterEndOfLine\"] = 57] = \"unfoldOnClickAfterEndOfLine\";\n EditorOption[EditorOption[\"fontFamily\"] = 58] = \"fontFamily\";\n EditorOption[EditorOption[\"fontInfo\"] = 59] = \"fontInfo\";\n EditorOption[EditorOption[\"fontLigatures\"] = 60] = \"fontLigatures\";\n EditorOption[EditorOption[\"fontSize\"] = 61] = \"fontSize\";\n EditorOption[EditorOption[\"fontWeight\"] = 62] = \"fontWeight\";\n EditorOption[EditorOption[\"fontVariations\"] = 63] = \"fontVariations\";\n EditorOption[EditorOption[\"formatOnPaste\"] = 64] = \"formatOnPaste\";\n EditorOption[EditorOption[\"formatOnType\"] = 65] = \"formatOnType\";\n EditorOption[EditorOption[\"glyphMargin\"] = 66] = \"glyphMargin\";\n EditorOption[EditorOption[\"gotoLocation\"] = 67] = \"gotoLocation\";\n EditorOption[EditorOption[\"hideCursorInOverviewRuler\"] = 68] = \"hideCursorInOverviewRuler\";\n EditorOption[EditorOption[\"hover\"] = 69] = \"hover\";\n EditorOption[EditorOption[\"inDiffEditor\"] = 70] = \"inDiffEditor\";\n EditorOption[EditorOption[\"inlineSuggest\"] = 71] = \"inlineSuggest\";\n EditorOption[EditorOption[\"letterSpacing\"] = 72] = \"letterSpacing\";\n EditorOption[EditorOption[\"lightbulb\"] = 73] = \"lightbulb\";\n EditorOption[EditorOption[\"lineDecorationsWidth\"] = 74] = \"lineDecorationsWidth\";\n EditorOption[EditorOption[\"lineHeight\"] = 75] = \"lineHeight\";\n EditorOption[EditorOption[\"lineNumbers\"] = 76] = \"lineNumbers\";\n EditorOption[EditorOption[\"lineNumbersMinChars\"] = 77] = \"lineNumbersMinChars\";\n EditorOption[EditorOption[\"linkedEditing\"] = 78] = \"linkedEditing\";\n EditorOption[EditorOption[\"links\"] = 79] = \"links\";\n EditorOption[EditorOption[\"matchBrackets\"] = 80] = \"matchBrackets\";\n EditorOption[EditorOption[\"minimap\"] = 81] = \"minimap\";\n EditorOption[EditorOption[\"mouseStyle\"] = 82] = \"mouseStyle\";\n EditorOption[EditorOption[\"mouseWheelScrollSensitivity\"] = 83] = \"mouseWheelScrollSensitivity\";\n EditorOption[EditorOption[\"mouseWheelZoom\"] = 84] = \"mouseWheelZoom\";\n EditorOption[EditorOption[\"multiCursorMergeOverlapping\"] = 85] = \"multiCursorMergeOverlapping\";\n EditorOption[EditorOption[\"multiCursorModifier\"] = 86] = \"multiCursorModifier\";\n EditorOption[EditorOption[\"mouseMiddleClickAction\"] = 87] = \"mouseMiddleClickAction\";\n EditorOption[EditorOption[\"multiCursorPaste\"] = 88] = \"multiCursorPaste\";\n EditorOption[EditorOption[\"multiCursorLimit\"] = 89] = \"multiCursorLimit\";\n EditorOption[EditorOption[\"occurrencesHighlight\"] = 90] = \"occurrencesHighlight\";\n EditorOption[EditorOption[\"occurrencesHighlightDelay\"] = 91] = \"occurrencesHighlightDelay\";\n EditorOption[EditorOption[\"overtypeCursorStyle\"] = 92] = \"overtypeCursorStyle\";\n EditorOption[EditorOption[\"overtypeOnPaste\"] = 93] = \"overtypeOnPaste\";\n EditorOption[EditorOption[\"overviewRulerBorder\"] = 94] = \"overviewRulerBorder\";\n EditorOption[EditorOption[\"overviewRulerLanes\"] = 95] = \"overviewRulerLanes\";\n EditorOption[EditorOption[\"padding\"] = 96] = \"padding\";\n EditorOption[EditorOption[\"pasteAs\"] = 97] = \"pasteAs\";\n EditorOption[EditorOption[\"parameterHints\"] = 98] = \"parameterHints\";\n EditorOption[EditorOption[\"peekWidgetDefaultFocus\"] = 99] = \"peekWidgetDefaultFocus\";\n EditorOption[EditorOption[\"placeholder\"] = 100] = \"placeholder\";\n EditorOption[EditorOption[\"definitionLinkOpensInPeek\"] = 101] = \"definitionLinkOpensInPeek\";\n EditorOption[EditorOption[\"quickSuggestions\"] = 102] = \"quickSuggestions\";\n EditorOption[EditorOption[\"quickSuggestionsDelay\"] = 103] = \"quickSuggestionsDelay\";\n EditorOption[EditorOption[\"readOnly\"] = 104] = \"readOnly\";\n EditorOption[EditorOption[\"readOnlyMessage\"] = 105] = \"readOnlyMessage\";\n EditorOption[EditorOption[\"renameOnType\"] = 106] = \"renameOnType\";\n EditorOption[EditorOption[\"renderRichScreenReaderContent\"] = 107] = \"renderRichScreenReaderContent\";\n EditorOption[EditorOption[\"renderControlCharacters\"] = 108] = \"renderControlCharacters\";\n EditorOption[EditorOption[\"renderFinalNewline\"] = 109] = \"renderFinalNewline\";\n EditorOption[EditorOption[\"renderLineHighlight\"] = 110] = \"renderLineHighlight\";\n EditorOption[EditorOption[\"renderLineHighlightOnlyWhenFocus\"] = 111] = \"renderLineHighlightOnlyWhenFocus\";\n EditorOption[EditorOption[\"renderValidationDecorations\"] = 112] = \"renderValidationDecorations\";\n EditorOption[EditorOption[\"renderWhitespace\"] = 113] = \"renderWhitespace\";\n EditorOption[EditorOption[\"revealHorizontalRightPadding\"] = 114] = \"revealHorizontalRightPadding\";\n EditorOption[EditorOption[\"roundedSelection\"] = 115] = \"roundedSelection\";\n EditorOption[EditorOption[\"rulers\"] = 116] = \"rulers\";\n EditorOption[EditorOption[\"scrollbar\"] = 117] = \"scrollbar\";\n EditorOption[EditorOption[\"scrollBeyondLastColumn\"] = 118] = \"scrollBeyondLastColumn\";\n EditorOption[EditorOption[\"scrollBeyondLastLine\"] = 119] = \"scrollBeyondLastLine\";\n EditorOption[EditorOption[\"scrollPredominantAxis\"] = 120] = \"scrollPredominantAxis\";\n EditorOption[EditorOption[\"selectionClipboard\"] = 121] = \"selectionClipboard\";\n EditorOption[EditorOption[\"selectionHighlight\"] = 122] = \"selectionHighlight\";\n EditorOption[EditorOption[\"selectionHighlightMaxLength\"] = 123] = \"selectionHighlightMaxLength\";\n EditorOption[EditorOption[\"selectionHighlightMultiline\"] = 124] = \"selectionHighlightMultiline\";\n EditorOption[EditorOption[\"selectOnLineNumbers\"] = 125] = \"selectOnLineNumbers\";\n EditorOption[EditorOption[\"showFoldingControls\"] = 126] = \"showFoldingControls\";\n EditorOption[EditorOption[\"showUnused\"] = 127] = \"showUnused\";\n EditorOption[EditorOption[\"snippetSuggestions\"] = 128] = \"snippetSuggestions\";\n EditorOption[EditorOption[\"smartSelect\"] = 129] = \"smartSelect\";\n EditorOption[EditorOption[\"smoothScrolling\"] = 130] = \"smoothScrolling\";\n EditorOption[EditorOption[\"stickyScroll\"] = 131] = \"stickyScroll\";\n EditorOption[EditorOption[\"stickyTabStops\"] = 132] = \"stickyTabStops\";\n EditorOption[EditorOption[\"stopRenderingLineAfter\"] = 133] = \"stopRenderingLineAfter\";\n EditorOption[EditorOption[\"suggest\"] = 134] = \"suggest\";\n EditorOption[EditorOption[\"suggestFontSize\"] = 135] = \"suggestFontSize\";\n EditorOption[EditorOption[\"suggestLineHeight\"] = 136] = \"suggestLineHeight\";\n EditorOption[EditorOption[\"suggestOnTriggerCharacters\"] = 137] = \"suggestOnTriggerCharacters\";\n EditorOption[EditorOption[\"suggestSelection\"] = 138] = \"suggestSelection\";\n EditorOption[EditorOption[\"tabCompletion\"] = 139] = \"tabCompletion\";\n EditorOption[EditorOption[\"tabIndex\"] = 140] = \"tabIndex\";\n EditorOption[EditorOption[\"trimWhitespaceOnDelete\"] = 141] = \"trimWhitespaceOnDelete\";\n EditorOption[EditorOption[\"unicodeHighlighting\"] = 142] = \"unicodeHighlighting\";\n EditorOption[EditorOption[\"unusualLineTerminators\"] = 143] = \"unusualLineTerminators\";\n EditorOption[EditorOption[\"useShadowDOM\"] = 144] = \"useShadowDOM\";\n EditorOption[EditorOption[\"useTabStops\"] = 145] = \"useTabStops\";\n EditorOption[EditorOption[\"wordBreak\"] = 146] = \"wordBreak\";\n EditorOption[EditorOption[\"wordSegmenterLocales\"] = 147] = \"wordSegmenterLocales\";\n EditorOption[EditorOption[\"wordSeparators\"] = 148] = \"wordSeparators\";\n EditorOption[EditorOption[\"wordWrap\"] = 149] = \"wordWrap\";\n EditorOption[EditorOption[\"wordWrapBreakAfterCharacters\"] = 150] = \"wordWrapBreakAfterCharacters\";\n EditorOption[EditorOption[\"wordWrapBreakBeforeCharacters\"] = 151] = \"wordWrapBreakBeforeCharacters\";\n EditorOption[EditorOption[\"wordWrapColumn\"] = 152] = \"wordWrapColumn\";\n EditorOption[EditorOption[\"wordWrapOverride1\"] = 153] = \"wordWrapOverride1\";\n EditorOption[EditorOption[\"wordWrapOverride2\"] = 154] = \"wordWrapOverride2\";\n EditorOption[EditorOption[\"wrappingIndent\"] = 155] = \"wrappingIndent\";\n EditorOption[EditorOption[\"wrappingStrategy\"] = 156] = \"wrappingStrategy\";\n EditorOption[EditorOption[\"showDeprecated\"] = 157] = \"showDeprecated\";\n EditorOption[EditorOption[\"inertialScroll\"] = 158] = \"inertialScroll\";\n EditorOption[EditorOption[\"inlayHints\"] = 159] = \"inlayHints\";\n EditorOption[EditorOption[\"wrapOnEscapedLineFeeds\"] = 160] = \"wrapOnEscapedLineFeeds\";\n EditorOption[EditorOption[\"effectiveCursorStyle\"] = 161] = \"effectiveCursorStyle\";\n EditorOption[EditorOption[\"editorClassName\"] = 162] = \"editorClassName\";\n EditorOption[EditorOption[\"pixelRatio\"] = 163] = \"pixelRatio\";\n EditorOption[EditorOption[\"tabFocusMode\"] = 164] = \"tabFocusMode\";\n EditorOption[EditorOption[\"layoutInfo\"] = 165] = \"layoutInfo\";\n EditorOption[EditorOption[\"wrappingInfo\"] = 166] = \"wrappingInfo\";\n EditorOption[EditorOption[\"defaultColorDecorators\"] = 167] = \"defaultColorDecorators\";\n EditorOption[EditorOption[\"colorDecoratorsActivatedOn\"] = 168] = \"colorDecoratorsActivatedOn\";\n EditorOption[EditorOption[\"inlineCompletionsAccessibilityVerbose\"] = 169] = \"inlineCompletionsAccessibilityVerbose\";\n EditorOption[EditorOption[\"effectiveEditContext\"] = 170] = \"effectiveEditContext\";\n EditorOption[EditorOption[\"scrollOnMiddleClick\"] = 171] = \"scrollOnMiddleClick\";\n EditorOption[EditorOption[\"effectiveAllowVariableFonts\"] = 172] = \"effectiveAllowVariableFonts\";\n })(EditorOption || (EditorOption = {}));\n /**\n * End of line character preference.\n */\n var EndOfLinePreference;\n (function(EndOfLinePreference) {\n /**\n * Use the end of line character identified in the text buffer.\n */\n EndOfLinePreference[EndOfLinePreference[\"TextDefined\"] = 0] = \"TextDefined\";\n /**\n * Use line feed (\\n) as the end of line character.\n */\n EndOfLinePreference[EndOfLinePreference[\"LF\"] = 1] = \"LF\";\n /**\n * Use carriage return and line feed (\\r\\n) as the end of line character.\n */\n EndOfLinePreference[EndOfLinePreference[\"CRLF\"] = 2] = \"CRLF\";\n })(EndOfLinePreference || (EndOfLinePreference = {}));\n /**\n * End of line character preference.\n */\n var EndOfLineSequence;\n (function(EndOfLineSequence) {\n /**\n * Use line feed (\\n) as the end of line character.\n */\n EndOfLineSequence[EndOfLineSequence[\"LF\"] = 0] = \"LF\";\n /**\n * Use carriage return and line feed (\\r\\n) as the end of line character.\n */\n EndOfLineSequence[EndOfLineSequence[\"CRLF\"] = 1] = \"CRLF\";\n })(EndOfLineSequence || (EndOfLineSequence = {}));\n /**\n * Vertical Lane in the glyph margin of the editor.\n */\n var GlyphMarginLane$1;\n (function(GlyphMarginLane) {\n GlyphMarginLane[GlyphMarginLane[\"Left\"] = 1] = \"Left\";\n GlyphMarginLane[GlyphMarginLane[\"Center\"] = 2] = \"Center\";\n GlyphMarginLane[GlyphMarginLane[\"Right\"] = 3] = \"Right\";\n })(GlyphMarginLane$1 || (GlyphMarginLane$1 = {}));\n var HoverVerbosityAction;\n (function(HoverVerbosityAction) {\n /**\n * Increase the verbosity of the hover\n */\n HoverVerbosityAction[HoverVerbosityAction[\"Increase\"] = 0] = \"Increase\";\n /**\n * Decrease the verbosity of the hover\n */\n HoverVerbosityAction[HoverVerbosityAction[\"Decrease\"] = 1] = \"Decrease\";\n })(HoverVerbosityAction || (HoverVerbosityAction = {}));\n /**\n * Describes what to do with the indentation when pressing Enter.\n */\n var IndentAction;\n (function(IndentAction) {\n /**\n * Insert new line and copy the previous line's indentation.\n */\n IndentAction[IndentAction[\"None\"] = 0] = \"None\";\n /**\n * Insert new line and indent once (relative to the previous line's indentation).\n */\n IndentAction[IndentAction[\"Indent\"] = 1] = \"Indent\";\n /**\n * Insert two new lines:\n * - the first one indented which will hold the cursor\n * - the second one at the same indentation level\n */\n IndentAction[IndentAction[\"IndentOutdent\"] = 2] = \"IndentOutdent\";\n /**\n * Insert new line and outdent once (relative to the previous line's indentation).\n */\n IndentAction[IndentAction[\"Outdent\"] = 3] = \"Outdent\";\n })(IndentAction || (IndentAction = {}));\n var InjectedTextCursorStops$1;\n (function(InjectedTextCursorStops) {\n InjectedTextCursorStops[InjectedTextCursorStops[\"Both\"] = 0] = \"Both\";\n InjectedTextCursorStops[InjectedTextCursorStops[\"Right\"] = 1] = \"Right\";\n InjectedTextCursorStops[InjectedTextCursorStops[\"Left\"] = 2] = \"Left\";\n InjectedTextCursorStops[InjectedTextCursorStops[\"None\"] = 3] = \"None\";\n })(InjectedTextCursorStops$1 || (InjectedTextCursorStops$1 = {}));\n var InlayHintKind;\n (function(InlayHintKind) {\n InlayHintKind[InlayHintKind[\"Type\"] = 1] = \"Type\";\n InlayHintKind[InlayHintKind[\"Parameter\"] = 2] = \"Parameter\";\n })(InlayHintKind || (InlayHintKind = {}));\n var InlineCompletionEndOfLifeReasonKind;\n (function(InlineCompletionEndOfLifeReasonKind) {\n InlineCompletionEndOfLifeReasonKind[InlineCompletionEndOfLifeReasonKind[\"Accepted\"] = 0] = \"Accepted\";\n InlineCompletionEndOfLifeReasonKind[InlineCompletionEndOfLifeReasonKind[\"Rejected\"] = 1] = \"Rejected\";\n InlineCompletionEndOfLifeReasonKind[InlineCompletionEndOfLifeReasonKind[\"Ignored\"] = 2] = \"Ignored\";\n })(InlineCompletionEndOfLifeReasonKind || (InlineCompletionEndOfLifeReasonKind = {}));\n var InlineCompletionHintStyle;\n (function(InlineCompletionHintStyle) {\n InlineCompletionHintStyle[InlineCompletionHintStyle[\"Code\"] = 1] = \"Code\";\n InlineCompletionHintStyle[InlineCompletionHintStyle[\"Label\"] = 2] = \"Label\";\n })(InlineCompletionHintStyle || (InlineCompletionHintStyle = {}));\n /**\n * How an {@link InlineCompletionsProvider inline completion provider} was triggered.\n */\n var InlineCompletionTriggerKind;\n (function(InlineCompletionTriggerKind) {\n /**\n * Completion was triggered automatically while editing.\n * It is sufficient to return a single completion item in this case.\n */\n InlineCompletionTriggerKind[InlineCompletionTriggerKind[\"Automatic\"] = 0] = \"Automatic\";\n /**\n * Completion was triggered explicitly by a user gesture.\n * Return multiple completion items to enable cycling through them.\n */\n InlineCompletionTriggerKind[InlineCompletionTriggerKind[\"Explicit\"] = 1] = \"Explicit\";\n })(InlineCompletionTriggerKind || (InlineCompletionTriggerKind = {}));\n /**\n * Virtual Key Codes, the value does not hold any inherent meaning.\n * Inspired somewhat from https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx\n * But these are \"more general\", as they should work across browsers & OS`s.\n */\n var KeyCode;\n (function(KeyCode) {\n KeyCode[KeyCode[\"DependsOnKbLayout\"] = -1] = \"DependsOnKbLayout\";\n /**\n * Placed first to cover the 0 value of the enum.\n */\n KeyCode[KeyCode[\"Unknown\"] = 0] = \"Unknown\";\n KeyCode[KeyCode[\"Backspace\"] = 1] = \"Backspace\";\n KeyCode[KeyCode[\"Tab\"] = 2] = \"Tab\";\n KeyCode[KeyCode[\"Enter\"] = 3] = \"Enter\";\n KeyCode[KeyCode[\"Shift\"] = 4] = \"Shift\";\n KeyCode[KeyCode[\"Ctrl\"] = 5] = \"Ctrl\";\n KeyCode[KeyCode[\"Alt\"] = 6] = \"Alt\";\n KeyCode[KeyCode[\"PauseBreak\"] = 7] = \"PauseBreak\";\n KeyCode[KeyCode[\"CapsLock\"] = 8] = \"CapsLock\";\n KeyCode[KeyCode[\"Escape\"] = 9] = \"Escape\";\n KeyCode[KeyCode[\"Space\"] = 10] = \"Space\";\n KeyCode[KeyCode[\"PageUp\"] = 11] = \"PageUp\";\n KeyCode[KeyCode[\"PageDown\"] = 12] = \"PageDown\";\n KeyCode[KeyCode[\"End\"] = 13] = \"End\";\n KeyCode[KeyCode[\"Home\"] = 14] = \"Home\";\n KeyCode[KeyCode[\"LeftArrow\"] = 15] = \"LeftArrow\";\n KeyCode[KeyCode[\"UpArrow\"] = 16] = \"UpArrow\";\n KeyCode[KeyCode[\"RightArrow\"] = 17] = \"RightArrow\";\n KeyCode[KeyCode[\"DownArrow\"] = 18] = \"DownArrow\";\n KeyCode[KeyCode[\"Insert\"] = 19] = \"Insert\";\n KeyCode[KeyCode[\"Delete\"] = 20] = \"Delete\";\n KeyCode[KeyCode[\"Digit0\"] = 21] = \"Digit0\";\n KeyCode[KeyCode[\"Digit1\"] = 22] = \"Digit1\";\n KeyCode[KeyCode[\"Digit2\"] = 23] = \"Digit2\";\n KeyCode[KeyCode[\"Digit3\"] = 24] = \"Digit3\";\n KeyCode[KeyCode[\"Digit4\"] = 25] = \"Digit4\";\n KeyCode[KeyCode[\"Digit5\"] = 26] = \"Digit5\";\n KeyCode[KeyCode[\"Digit6\"] = 27] = \"Digit6\";\n KeyCode[KeyCode[\"Digit7\"] = 28] = \"Digit7\";\n KeyCode[KeyCode[\"Digit8\"] = 29] = \"Digit8\";\n KeyCode[KeyCode[\"Digit9\"] = 30] = \"Digit9\";\n KeyCode[KeyCode[\"KeyA\"] = 31] = \"KeyA\";\n KeyCode[KeyCode[\"KeyB\"] = 32] = \"KeyB\";\n KeyCode[KeyCode[\"KeyC\"] = 33] = \"KeyC\";\n KeyCode[KeyCode[\"KeyD\"] = 34] = \"KeyD\";\n KeyCode[KeyCode[\"KeyE\"] = 35] = \"KeyE\";\n KeyCode[KeyCode[\"KeyF\"] = 36] = \"KeyF\";\n KeyCode[KeyCode[\"KeyG\"] = 37] = \"KeyG\";\n KeyCode[KeyCode[\"KeyH\"] = 38] = \"KeyH\";\n KeyCode[KeyCode[\"KeyI\"] = 39] = \"KeyI\";\n KeyCode[KeyCode[\"KeyJ\"] = 40] = \"KeyJ\";\n KeyCode[KeyCode[\"KeyK\"] = 41] = \"KeyK\";\n KeyCode[KeyCode[\"KeyL\"] = 42] = \"KeyL\";\n KeyCode[KeyCode[\"KeyM\"] = 43] = \"KeyM\";\n KeyCode[KeyCode[\"KeyN\"] = 44] = \"KeyN\";\n KeyCode[KeyCode[\"KeyO\"] = 45] = \"KeyO\";\n KeyCode[KeyCode[\"KeyP\"] = 46] = \"KeyP\";\n KeyCode[KeyCode[\"KeyQ\"] = 47] = \"KeyQ\";\n KeyCode[KeyCode[\"KeyR\"] = 48] = \"KeyR\";\n KeyCode[KeyCode[\"KeyS\"] = 49] = \"KeyS\";\n KeyCode[KeyCode[\"KeyT\"] = 50] = \"KeyT\";\n KeyCode[KeyCode[\"KeyU\"] = 51] = \"KeyU\";\n KeyCode[KeyCode[\"KeyV\"] = 52] = \"KeyV\";\n KeyCode[KeyCode[\"KeyW\"] = 53] = \"KeyW\";\n KeyCode[KeyCode[\"KeyX\"] = 54] = \"KeyX\";\n KeyCode[KeyCode[\"KeyY\"] = 55] = \"KeyY\";\n KeyCode[KeyCode[\"KeyZ\"] = 56] = \"KeyZ\";\n KeyCode[KeyCode[\"Meta\"] = 57] = \"Meta\";\n KeyCode[KeyCode[\"ContextMenu\"] = 58] = \"ContextMenu\";\n KeyCode[KeyCode[\"F1\"] = 59] = \"F1\";\n KeyCode[KeyCode[\"F2\"] = 60] = \"F2\";\n KeyCode[KeyCode[\"F3\"] = 61] = \"F3\";\n KeyCode[KeyCode[\"F4\"] = 62] = \"F4\";\n KeyCode[KeyCode[\"F5\"] = 63] = \"F5\";\n KeyCode[KeyCode[\"F6\"] = 64] = \"F6\";\n KeyCode[KeyCode[\"F7\"] = 65] = \"F7\";\n KeyCode[KeyCode[\"F8\"] = 66] = \"F8\";\n KeyCode[KeyCode[\"F9\"] = 67] = \"F9\";\n KeyCode[KeyCode[\"F10\"] = 68] = \"F10\";\n KeyCode[KeyCode[\"F11\"] = 69] = \"F11\";\n KeyCode[KeyCode[\"F12\"] = 70] = \"F12\";\n KeyCode[KeyCode[\"F13\"] = 71] = \"F13\";\n KeyCode[KeyCode[\"F14\"] = 72] = \"F14\";\n KeyCode[KeyCode[\"F15\"] = 73] = \"F15\";\n KeyCode[KeyCode[\"F16\"] = 74] = \"F16\";\n KeyCode[KeyCode[\"F17\"] = 75] = \"F17\";\n KeyCode[KeyCode[\"F18\"] = 76] = \"F18\";\n KeyCode[KeyCode[\"F19\"] = 77] = \"F19\";\n KeyCode[KeyCode[\"F20\"] = 78] = \"F20\";\n KeyCode[KeyCode[\"F21\"] = 79] = \"F21\";\n KeyCode[KeyCode[\"F22\"] = 80] = \"F22\";\n KeyCode[KeyCode[\"F23\"] = 81] = \"F23\";\n KeyCode[KeyCode[\"F24\"] = 82] = \"F24\";\n KeyCode[KeyCode[\"NumLock\"] = 83] = \"NumLock\";\n KeyCode[KeyCode[\"ScrollLock\"] = 84] = \"ScrollLock\";\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the ';:' key\n */\n KeyCode[KeyCode[\"Semicolon\"] = 85] = \"Semicolon\";\n /**\n * For any country/region, the '+' key\n * For the US standard keyboard, the '=+' key\n */\n KeyCode[KeyCode[\"Equal\"] = 86] = \"Equal\";\n /**\n * For any country/region, the ',' key\n * For the US standard keyboard, the ',<' key\n */\n KeyCode[KeyCode[\"Comma\"] = 87] = \"Comma\";\n /**\n * For any country/region, the '-' key\n * For the US standard keyboard, the '-_' key\n */\n KeyCode[KeyCode[\"Minus\"] = 88] = \"Minus\";\n /**\n * For any country/region, the '.' key\n * For the US standard keyboard, the '.>' key\n */\n KeyCode[KeyCode[\"Period\"] = 89] = \"Period\";\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the '/?' key\n */\n KeyCode[KeyCode[\"Slash\"] = 90] = \"Slash\";\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the '`~' key\n */\n KeyCode[KeyCode[\"Backquote\"] = 91] = \"Backquote\";\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the '[{' key\n */\n KeyCode[KeyCode[\"BracketLeft\"] = 92] = \"BracketLeft\";\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the '\\|' key\n */\n KeyCode[KeyCode[\"Backslash\"] = 93] = \"Backslash\";\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the ']}' key\n */\n KeyCode[KeyCode[\"BracketRight\"] = 94] = \"BracketRight\";\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the ''\"' key\n */\n KeyCode[KeyCode[\"Quote\"] = 95] = \"Quote\";\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n */\n KeyCode[KeyCode[\"OEM_8\"] = 96] = \"OEM_8\";\n /**\n * Either the angle bracket key or the backslash key on the RT 102-key keyboard.\n */\n KeyCode[KeyCode[\"IntlBackslash\"] = 97] = \"IntlBackslash\";\n KeyCode[KeyCode[\"Numpad0\"] = 98] = \"Numpad0\";\n KeyCode[KeyCode[\"Numpad1\"] = 99] = \"Numpad1\";\n KeyCode[KeyCode[\"Numpad2\"] = 100] = \"Numpad2\";\n KeyCode[KeyCode[\"Numpad3\"] = 101] = \"Numpad3\";\n KeyCode[KeyCode[\"Numpad4\"] = 102] = \"Numpad4\";\n KeyCode[KeyCode[\"Numpad5\"] = 103] = \"Numpad5\";\n KeyCode[KeyCode[\"Numpad6\"] = 104] = \"Numpad6\";\n KeyCode[KeyCode[\"Numpad7\"] = 105] = \"Numpad7\";\n KeyCode[KeyCode[\"Numpad8\"] = 106] = \"Numpad8\";\n KeyCode[KeyCode[\"Numpad9\"] = 107] = \"Numpad9\";\n KeyCode[KeyCode[\"NumpadMultiply\"] = 108] = \"NumpadMultiply\";\n KeyCode[KeyCode[\"NumpadAdd\"] = 109] = \"NumpadAdd\";\n KeyCode[KeyCode[\"NUMPAD_SEPARATOR\"] = 110] = \"NUMPAD_SEPARATOR\";\n KeyCode[KeyCode[\"NumpadSubtract\"] = 111] = \"NumpadSubtract\";\n KeyCode[KeyCode[\"NumpadDecimal\"] = 112] = \"NumpadDecimal\";\n KeyCode[KeyCode[\"NumpadDivide\"] = 113] = \"NumpadDivide\";\n /**\n * Cover all key codes when IME is processing input.\n */\n KeyCode[KeyCode[\"KEY_IN_COMPOSITION\"] = 114] = \"KEY_IN_COMPOSITION\";\n KeyCode[KeyCode[\"ABNT_C1\"] = 115] = \"ABNT_C1\";\n KeyCode[KeyCode[\"ABNT_C2\"] = 116] = \"ABNT_C2\";\n KeyCode[KeyCode[\"AudioVolumeMute\"] = 117] = \"AudioVolumeMute\";\n KeyCode[KeyCode[\"AudioVolumeUp\"] = 118] = \"AudioVolumeUp\";\n KeyCode[KeyCode[\"AudioVolumeDown\"] = 119] = \"AudioVolumeDown\";\n KeyCode[KeyCode[\"BrowserSearch\"] = 120] = \"BrowserSearch\";\n KeyCode[KeyCode[\"BrowserHome\"] = 121] = \"BrowserHome\";\n KeyCode[KeyCode[\"BrowserBack\"] = 122] = \"BrowserBack\";\n KeyCode[KeyCode[\"BrowserForward\"] = 123] = \"BrowserForward\";\n KeyCode[KeyCode[\"MediaTrackNext\"] = 124] = \"MediaTrackNext\";\n KeyCode[KeyCode[\"MediaTrackPrevious\"] = 125] = \"MediaTrackPrevious\";\n KeyCode[KeyCode[\"MediaStop\"] = 126] = \"MediaStop\";\n KeyCode[KeyCode[\"MediaPlayPause\"] = 127] = \"MediaPlayPause\";\n KeyCode[KeyCode[\"LaunchMediaPlayer\"] = 128] = \"LaunchMediaPlayer\";\n KeyCode[KeyCode[\"LaunchMail\"] = 129] = \"LaunchMail\";\n KeyCode[KeyCode[\"LaunchApp2\"] = 130] = \"LaunchApp2\";\n /**\n * VK_CLEAR, 0x0C, CLEAR key\n */\n KeyCode[KeyCode[\"Clear\"] = 131] = \"Clear\";\n /**\n * Placed last to cover the length of the enum.\n * Please do not depend on this value!\n */\n KeyCode[KeyCode[\"MAX_VALUE\"] = 132] = \"MAX_VALUE\";\n })(KeyCode || (KeyCode = {}));\n var MarkerSeverity;\n (function(MarkerSeverity) {\n MarkerSeverity[MarkerSeverity[\"Hint\"] = 1] = \"Hint\";\n MarkerSeverity[MarkerSeverity[\"Info\"] = 2] = \"Info\";\n MarkerSeverity[MarkerSeverity[\"Warning\"] = 4] = \"Warning\";\n MarkerSeverity[MarkerSeverity[\"Error\"] = 8] = \"Error\";\n })(MarkerSeverity || (MarkerSeverity = {}));\n var MarkerTag;\n (function(MarkerTag) {\n MarkerTag[MarkerTag[\"Unnecessary\"] = 1] = \"Unnecessary\";\n MarkerTag[MarkerTag[\"Deprecated\"] = 2] = \"Deprecated\";\n })(MarkerTag || (MarkerTag = {}));\n /**\n * Position in the minimap to render the decoration.\n */\n var MinimapPosition;\n (function(MinimapPosition) {\n MinimapPosition[MinimapPosition[\"Inline\"] = 1] = \"Inline\";\n MinimapPosition[MinimapPosition[\"Gutter\"] = 2] = \"Gutter\";\n })(MinimapPosition || (MinimapPosition = {}));\n /**\n * Section header style.\n */\n var MinimapSectionHeaderStyle;\n (function(MinimapSectionHeaderStyle) {\n MinimapSectionHeaderStyle[MinimapSectionHeaderStyle[\"Normal\"] = 1] = \"Normal\";\n MinimapSectionHeaderStyle[MinimapSectionHeaderStyle[\"Underlined\"] = 2] = \"Underlined\";\n })(MinimapSectionHeaderStyle || (MinimapSectionHeaderStyle = {}));\n /**\n * Type of hit element with the mouse in the editor.\n */\n var MouseTargetType;\n (function(MouseTargetType) {\n /**\n * Mouse is on top of an unknown element.\n */\n MouseTargetType[MouseTargetType[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n /**\n * Mouse is on top of the textarea used for input.\n */\n MouseTargetType[MouseTargetType[\"TEXTAREA\"] = 1] = \"TEXTAREA\";\n /**\n * Mouse is on top of the glyph margin\n */\n MouseTargetType[MouseTargetType[\"GUTTER_GLYPH_MARGIN\"] = 2] = \"GUTTER_GLYPH_MARGIN\";\n /**\n * Mouse is on top of the line numbers\n */\n MouseTargetType[MouseTargetType[\"GUTTER_LINE_NUMBERS\"] = 3] = \"GUTTER_LINE_NUMBERS\";\n /**\n * Mouse is on top of the line decorations\n */\n MouseTargetType[MouseTargetType[\"GUTTER_LINE_DECORATIONS\"] = 4] = \"GUTTER_LINE_DECORATIONS\";\n /**\n * Mouse is on top of the whitespace left in the gutter by a view zone.\n */\n MouseTargetType[MouseTargetType[\"GUTTER_VIEW_ZONE\"] = 5] = \"GUTTER_VIEW_ZONE\";\n /**\n * Mouse is on top of text in the content.\n */\n MouseTargetType[MouseTargetType[\"CONTENT_TEXT\"] = 6] = \"CONTENT_TEXT\";\n /**\n * Mouse is on top of empty space in the content (e.g. after line text or below last line)\n */\n MouseTargetType[MouseTargetType[\"CONTENT_EMPTY\"] = 7] = \"CONTENT_EMPTY\";\n /**\n * Mouse is on top of a view zone in the content.\n */\n MouseTargetType[MouseTargetType[\"CONTENT_VIEW_ZONE\"] = 8] = \"CONTENT_VIEW_ZONE\";\n /**\n * Mouse is on top of a content widget.\n */\n MouseTargetType[MouseTargetType[\"CONTENT_WIDGET\"] = 9] = \"CONTENT_WIDGET\";\n /**\n * Mouse is on top of the decorations overview ruler.\n */\n MouseTargetType[MouseTargetType[\"OVERVIEW_RULER\"] = 10] = \"OVERVIEW_RULER\";\n /**\n * Mouse is on top of a scrollbar.\n */\n MouseTargetType[MouseTargetType[\"SCROLLBAR\"] = 11] = \"SCROLLBAR\";\n /**\n * Mouse is on top of an overlay widget.\n */\n MouseTargetType[MouseTargetType[\"OVERLAY_WIDGET\"] = 12] = \"OVERLAY_WIDGET\";\n /**\n * Mouse is outside of the editor.\n */\n MouseTargetType[MouseTargetType[\"OUTSIDE_EDITOR\"] = 13] = \"OUTSIDE_EDITOR\";\n })(MouseTargetType || (MouseTargetType = {}));\n var NewSymbolNameTag;\n (function(NewSymbolNameTag) {\n NewSymbolNameTag[NewSymbolNameTag[\"AIGenerated\"] = 1] = \"AIGenerated\";\n })(NewSymbolNameTag || (NewSymbolNameTag = {}));\n var NewSymbolNameTriggerKind;\n (function(NewSymbolNameTriggerKind) {\n NewSymbolNameTriggerKind[NewSymbolNameTriggerKind[\"Invoke\"] = 0] = \"Invoke\";\n NewSymbolNameTriggerKind[NewSymbolNameTriggerKind[\"Automatic\"] = 1] = \"Automatic\";\n })(NewSymbolNameTriggerKind || (NewSymbolNameTriggerKind = {}));\n /**\n * A positioning preference for rendering overlay widgets.\n */\n var OverlayWidgetPositionPreference;\n (function(OverlayWidgetPositionPreference) {\n /**\n * Position the overlay widget in the top right corner\n */\n OverlayWidgetPositionPreference[OverlayWidgetPositionPreference[\"TOP_RIGHT_CORNER\"] = 0] = \"TOP_RIGHT_CORNER\";\n /**\n * Position the overlay widget in the bottom right corner\n */\n OverlayWidgetPositionPreference[OverlayWidgetPositionPreference[\"BOTTOM_RIGHT_CORNER\"] = 1] = \"BOTTOM_RIGHT_CORNER\";\n /**\n * Position the overlay widget in the top center\n */\n OverlayWidgetPositionPreference[OverlayWidgetPositionPreference[\"TOP_CENTER\"] = 2] = \"TOP_CENTER\";\n })(OverlayWidgetPositionPreference || (OverlayWidgetPositionPreference = {}));\n /**\n * Vertical Lane in the overview ruler of the editor.\n */\n var OverviewRulerLane$1;\n (function(OverviewRulerLane) {\n OverviewRulerLane[OverviewRulerLane[\"Left\"] = 1] = \"Left\";\n OverviewRulerLane[OverviewRulerLane[\"Center\"] = 2] = \"Center\";\n OverviewRulerLane[OverviewRulerLane[\"Right\"] = 4] = \"Right\";\n OverviewRulerLane[OverviewRulerLane[\"Full\"] = 7] = \"Full\";\n })(OverviewRulerLane$1 || (OverviewRulerLane$1 = {}));\n /**\n * How a partial acceptance was triggered.\n */\n var PartialAcceptTriggerKind;\n (function(PartialAcceptTriggerKind) {\n PartialAcceptTriggerKind[PartialAcceptTriggerKind[\"Word\"] = 0] = \"Word\";\n PartialAcceptTriggerKind[PartialAcceptTriggerKind[\"Line\"] = 1] = \"Line\";\n PartialAcceptTriggerKind[PartialAcceptTriggerKind[\"Suggest\"] = 2] = \"Suggest\";\n })(PartialAcceptTriggerKind || (PartialAcceptTriggerKind = {}));\n var PositionAffinity;\n (function(PositionAffinity) {\n /**\n * Prefers the left most position.\n */\n PositionAffinity[PositionAffinity[\"Left\"] = 0] = \"Left\";\n /**\n * Prefers the right most position.\n */\n PositionAffinity[PositionAffinity[\"Right\"] = 1] = \"Right\";\n /**\n * No preference.\n */\n PositionAffinity[PositionAffinity[\"None\"] = 2] = \"None\";\n /**\n * If the given position is on injected text, prefers the position left of it.\n */\n PositionAffinity[PositionAffinity[\"LeftOfInjectedText\"] = 3] = \"LeftOfInjectedText\";\n /**\n * If the given position is on injected text, prefers the position right of it.\n */\n PositionAffinity[PositionAffinity[\"RightOfInjectedText\"] = 4] = \"RightOfInjectedText\";\n })(PositionAffinity || (PositionAffinity = {}));\n var RenderLineNumbersType;\n (function(RenderLineNumbersType) {\n RenderLineNumbersType[RenderLineNumbersType[\"Off\"] = 0] = \"Off\";\n RenderLineNumbersType[RenderLineNumbersType[\"On\"] = 1] = \"On\";\n RenderLineNumbersType[RenderLineNumbersType[\"Relative\"] = 2] = \"Relative\";\n RenderLineNumbersType[RenderLineNumbersType[\"Interval\"] = 3] = \"Interval\";\n RenderLineNumbersType[RenderLineNumbersType[\"Custom\"] = 4] = \"Custom\";\n })(RenderLineNumbersType || (RenderLineNumbersType = {}));\n var RenderMinimap;\n (function(RenderMinimap) {\n RenderMinimap[RenderMinimap[\"None\"] = 0] = \"None\";\n RenderMinimap[RenderMinimap[\"Text\"] = 1] = \"Text\";\n RenderMinimap[RenderMinimap[\"Blocks\"] = 2] = \"Blocks\";\n })(RenderMinimap || (RenderMinimap = {}));\n var ScrollType;\n (function(ScrollType) {\n ScrollType[ScrollType[\"Smooth\"] = 0] = \"Smooth\";\n ScrollType[ScrollType[\"Immediate\"] = 1] = \"Immediate\";\n })(ScrollType || (ScrollType = {}));\n var ScrollbarVisibility;\n (function(ScrollbarVisibility) {\n ScrollbarVisibility[ScrollbarVisibility[\"Auto\"] = 1] = \"Auto\";\n ScrollbarVisibility[ScrollbarVisibility[\"Hidden\"] = 2] = \"Hidden\";\n ScrollbarVisibility[ScrollbarVisibility[\"Visible\"] = 3] = \"Visible\";\n })(ScrollbarVisibility || (ScrollbarVisibility = {}));\n /**\n * The direction of a selection.\n */\n var SelectionDirection;\n (function(SelectionDirection) {\n /**\n * The selection starts above where it ends.\n */\n SelectionDirection[SelectionDirection[\"LTR\"] = 0] = \"LTR\";\n /**\n * The selection starts below where it ends.\n */\n SelectionDirection[SelectionDirection[\"RTL\"] = 1] = \"RTL\";\n })(SelectionDirection || (SelectionDirection = {}));\n var ShowLightbulbIconMode;\n (function(ShowLightbulbIconMode) {\n ShowLightbulbIconMode[\"Off\"] = \"off\";\n ShowLightbulbIconMode[\"OnCode\"] = \"onCode\";\n ShowLightbulbIconMode[\"On\"] = \"on\";\n })(ShowLightbulbIconMode || (ShowLightbulbIconMode = {}));\n var SignatureHelpTriggerKind;\n (function(SignatureHelpTriggerKind) {\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"Invoke\"] = 1] = \"Invoke\";\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"TriggerCharacter\"] = 2] = \"TriggerCharacter\";\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"ContentChange\"] = 3] = \"ContentChange\";\n })(SignatureHelpTriggerKind || (SignatureHelpTriggerKind = {}));\n /**\n * A symbol kind.\n */\n var SymbolKind;\n (function(SymbolKind) {\n SymbolKind[SymbolKind[\"File\"] = 0] = \"File\";\n SymbolKind[SymbolKind[\"Module\"] = 1] = \"Module\";\n SymbolKind[SymbolKind[\"Namespace\"] = 2] = \"Namespace\";\n SymbolKind[SymbolKind[\"Package\"] = 3] = \"Package\";\n SymbolKind[SymbolKind[\"Class\"] = 4] = \"Class\";\n SymbolKind[SymbolKind[\"Method\"] = 5] = \"Method\";\n SymbolKind[SymbolKind[\"Property\"] = 6] = \"Property\";\n SymbolKind[SymbolKind[\"Field\"] = 7] = \"Field\";\n SymbolKind[SymbolKind[\"Constructor\"] = 8] = \"Constructor\";\n SymbolKind[SymbolKind[\"Enum\"] = 9] = \"Enum\";\n SymbolKind[SymbolKind[\"Interface\"] = 10] = \"Interface\";\n SymbolKind[SymbolKind[\"Function\"] = 11] = \"Function\";\n SymbolKind[SymbolKind[\"Variable\"] = 12] = \"Variable\";\n SymbolKind[SymbolKind[\"Constant\"] = 13] = \"Constant\";\n SymbolKind[SymbolKind[\"String\"] = 14] = \"String\";\n SymbolKind[SymbolKind[\"Number\"] = 15] = \"Number\";\n SymbolKind[SymbolKind[\"Boolean\"] = 16] = \"Boolean\";\n SymbolKind[SymbolKind[\"Array\"] = 17] = \"Array\";\n SymbolKind[SymbolKind[\"Object\"] = 18] = \"Object\";\n SymbolKind[SymbolKind[\"Key\"] = 19] = \"Key\";\n SymbolKind[SymbolKind[\"Null\"] = 20] = \"Null\";\n SymbolKind[SymbolKind[\"EnumMember\"] = 21] = \"EnumMember\";\n SymbolKind[SymbolKind[\"Struct\"] = 22] = \"Struct\";\n SymbolKind[SymbolKind[\"Event\"] = 23] = \"Event\";\n SymbolKind[SymbolKind[\"Operator\"] = 24] = \"Operator\";\n SymbolKind[SymbolKind[\"TypeParameter\"] = 25] = \"TypeParameter\";\n })(SymbolKind || (SymbolKind = {}));\n var SymbolTag;\n (function(SymbolTag) {\n SymbolTag[SymbolTag[\"Deprecated\"] = 1] = \"Deprecated\";\n })(SymbolTag || (SymbolTag = {}));\n /**\n * Text Direction for a decoration.\n */\n var TextDirection$1;\n (function(TextDirection) {\n TextDirection[TextDirection[\"LTR\"] = 0] = \"LTR\";\n TextDirection[TextDirection[\"RTL\"] = 1] = \"RTL\";\n })(TextDirection$1 || (TextDirection$1 = {}));\n /**\n * The kind of animation in which the editor's cursor should be rendered.\n */\n var TextEditorCursorBlinkingStyle;\n (function(TextEditorCursorBlinkingStyle) {\n /**\n * Hidden\n */\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Hidden\"] = 0] = \"Hidden\";\n /**\n * Blinking\n */\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Blink\"] = 1] = \"Blink\";\n /**\n * Blinking with smooth fading\n */\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Smooth\"] = 2] = \"Smooth\";\n /**\n * Blinking with prolonged filled state and smooth fading\n */\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Phase\"] = 3] = \"Phase\";\n /**\n * Expand collapse animation on the y axis\n */\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Expand\"] = 4] = \"Expand\";\n /**\n * No-Blinking\n */\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Solid\"] = 5] = \"Solid\";\n })(TextEditorCursorBlinkingStyle || (TextEditorCursorBlinkingStyle = {}));\n /**\n * The style in which the editor's cursor should be rendered.\n */\n var TextEditorCursorStyle;\n (function(TextEditorCursorStyle) {\n /**\n * As a vertical line (sitting between two characters).\n */\n TextEditorCursorStyle[TextEditorCursorStyle[\"Line\"] = 1] = \"Line\";\n /**\n * As a block (sitting on top of a character).\n */\n TextEditorCursorStyle[TextEditorCursorStyle[\"Block\"] = 2] = \"Block\";\n /**\n * As a horizontal line (sitting under a character).\n */\n TextEditorCursorStyle[TextEditorCursorStyle[\"Underline\"] = 3] = \"Underline\";\n /**\n * As a thin vertical line (sitting between two characters).\n */\n TextEditorCursorStyle[TextEditorCursorStyle[\"LineThin\"] = 4] = \"LineThin\";\n /**\n * As an outlined block (sitting on top of a character).\n */\n TextEditorCursorStyle[TextEditorCursorStyle[\"BlockOutline\"] = 5] = \"BlockOutline\";\n /**\n * As a thin horizontal line (sitting under a character).\n */\n TextEditorCursorStyle[TextEditorCursorStyle[\"UnderlineThin\"] = 6] = \"UnderlineThin\";\n })(TextEditorCursorStyle || (TextEditorCursorStyle = {}));\n /**\n * Describes the behavior of decorations when typing/editing near their edges.\n * Note: Please do not edit the values, as they very carefully match `DecorationRangeBehavior`\n */\n var TrackedRangeStickiness;\n (function(TrackedRangeStickiness) {\n TrackedRangeStickiness[TrackedRangeStickiness[\"AlwaysGrowsWhenTypingAtEdges\"] = 0] = \"AlwaysGrowsWhenTypingAtEdges\";\n TrackedRangeStickiness[TrackedRangeStickiness[\"NeverGrowsWhenTypingAtEdges\"] = 1] = \"NeverGrowsWhenTypingAtEdges\";\n TrackedRangeStickiness[TrackedRangeStickiness[\"GrowsOnlyWhenTypingBefore\"] = 2] = \"GrowsOnlyWhenTypingBefore\";\n TrackedRangeStickiness[TrackedRangeStickiness[\"GrowsOnlyWhenTypingAfter\"] = 3] = \"GrowsOnlyWhenTypingAfter\";\n })(TrackedRangeStickiness || (TrackedRangeStickiness = {}));\n /**\n * Describes how to indent wrapped lines.\n */\n var WrappingIndent;\n (function(WrappingIndent) {\n /**\n * No indentation => wrapped lines begin at column 1.\n */\n WrappingIndent[WrappingIndent[\"None\"] = 0] = \"None\";\n /**\n * Same => wrapped lines get the same indentation as the parent.\n */\n WrappingIndent[WrappingIndent[\"Same\"] = 1] = \"Same\";\n /**\n * Indent => wrapped lines get +1 indentation toward the parent.\n */\n WrappingIndent[WrappingIndent[\"Indent\"] = 2] = \"Indent\";\n /**\n * DeepIndent => wrapped lines get +2 indentation toward the parent.\n */\n WrappingIndent[WrappingIndent[\"DeepIndent\"] = 3] = \"DeepIndent\";\n })(WrappingIndent || (WrappingIndent = {}));\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/services/editorBaseApi.js\n var KeyMod = class {\n static {\n this.CtrlCmd = 2048;\n }\n static {\n this.Shift = 1024;\n }\n static {\n this.Alt = 512;\n }\n static {\n this.WinCtrl = 256;\n }\n static chord(firstPart, secondPart) {\n return KeyChord(firstPart, secondPart);\n }\n };\n function createMonacoBaseAPI() {\n return {\n editor: void 0,\n languages: void 0,\n CancellationTokenSource,\n Emitter,\n KeyCode,\n KeyMod,\n Position,\n Range,\n Selection,\n SelectionDirection,\n MarkerSeverity,\n MarkerTag,\n Uri: URI,\n Token\n };\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/map.js\n var _a, _c;\n var ResourceMapEntry = class {\n constructor(uri, value) {\n this.uri = uri;\n this.value = value;\n }\n };\n function isEntries(arg) {\n return Array.isArray(arg);\n }\n (class ResourceMap {\n static {\n this.defaultToKey = (resource) => resource.toString();\n }\n constructor(arg, toKey) {\n this[_a] = \"ResourceMap\";\n if (arg instanceof ResourceMap) {\n this.map = new Map(arg.map);\n this.toKey = toKey ?? ResourceMap.defaultToKey;\n } else if (isEntries(arg)) {\n this.map = /* @__PURE__ */ new Map();\n this.toKey = toKey ?? ResourceMap.defaultToKey;\n for (const [resource, value] of arg) this.set(resource, value);\n } else {\n this.map = /* @__PURE__ */ new Map();\n this.toKey = arg ?? ResourceMap.defaultToKey;\n }\n }\n set(resource, value) {\n this.map.set(this.toKey(resource), new ResourceMapEntry(resource, value));\n return this;\n }\n get(resource) {\n return this.map.get(this.toKey(resource))?.value;\n }\n has(resource) {\n return this.map.has(this.toKey(resource));\n }\n get size() {\n return this.map.size;\n }\n clear() {\n this.map.clear();\n }\n delete(resource) {\n return this.map.delete(this.toKey(resource));\n }\n forEach(clb, thisArg) {\n if (typeof thisArg !== \"undefined\") clb = clb.bind(thisArg);\n for (const [_, entry] of this.map) clb(entry.value, entry.uri, this);\n }\n *values() {\n for (const entry of this.map.values()) yield entry.value;\n }\n *keys() {\n for (const entry of this.map.values()) yield entry.uri;\n }\n *entries() {\n for (const entry of this.map.values()) yield [entry.uri, entry.value];\n }\n *[(_a = Symbol.toStringTag, Symbol.iterator)]() {\n for (const [, entry] of this.map) yield [entry.uri, entry.value];\n }\n });\n var LinkedMap = class {\n constructor() {\n this[_c] = \"LinkedMap\";\n this._map = /* @__PURE__ */ new Map();\n this._head = void 0;\n this._tail = void 0;\n this._size = 0;\n this._state = 0;\n }\n clear() {\n this._map.clear();\n this._head = void 0;\n this._tail = void 0;\n this._size = 0;\n this._state++;\n }\n isEmpty() {\n return !this._head && !this._tail;\n }\n get size() {\n return this._size;\n }\n get first() {\n return this._head?.value;\n }\n get last() {\n return this._tail?.value;\n }\n has(key) {\n return this._map.has(key);\n }\n get(key, touch = 0) {\n const item = this._map.get(key);\n if (!item) return;\n if (touch !== 0) this.touch(item, touch);\n return item.value;\n }\n set(key, value, touch = 0) {\n let item = this._map.get(key);\n if (item) {\n item.value = value;\n if (touch !== 0) this.touch(item, touch);\n } else {\n item = {\n key,\n value,\n next: void 0,\n previous: void 0\n };\n switch (touch) {\n case 0:\n this.addItemLast(item);\n break;\n case 1:\n this.addItemFirst(item);\n break;\n case 2:\n this.addItemLast(item);\n break;\n default:\n this.addItemLast(item);\n break;\n }\n this._map.set(key, item);\n this._size++;\n }\n return this;\n }\n delete(key) {\n return !!this.remove(key);\n }\n remove(key) {\n const item = this._map.get(key);\n if (!item) return;\n this._map.delete(key);\n this.removeItem(item);\n this._size--;\n return item.value;\n }\n shift() {\n if (!this._head && !this._tail) return;\n if (!this._head || !this._tail) throw new Error(\"Invalid list\");\n const item = this._head;\n this._map.delete(item.key);\n this.removeItem(item);\n this._size--;\n return item.value;\n }\n forEach(callbackfn, thisArg) {\n const state = this._state;\n let current = this._head;\n while (current) {\n if (thisArg) callbackfn.bind(thisArg)(current.value, current.key, this);\n else callbackfn(current.value, current.key, this);\n if (this._state !== state) throw new Error(`LinkedMap got modified during iteration.`);\n current = current.next;\n }\n }\n keys() {\n const map = this;\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]() {\n return iterator;\n },\n next() {\n if (map._state !== state) throw new Error(`LinkedMap got modified during iteration.`);\n if (current) {\n const result = {\n value: current.key,\n done: false\n };\n current = current.next;\n return result;\n } else return {\n value: void 0,\n done: true\n };\n }\n };\n return iterator;\n }\n values() {\n const map = this;\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]() {\n return iterator;\n },\n next() {\n if (map._state !== state) throw new Error(`LinkedMap got modified during iteration.`);\n if (current) {\n const result = {\n value: current.value,\n done: false\n };\n current = current.next;\n return result;\n } else return {\n value: void 0,\n done: true\n };\n }\n };\n return iterator;\n }\n entries() {\n const map = this;\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]() {\n return iterator;\n },\n next() {\n if (map._state !== state) throw new Error(`LinkedMap got modified during iteration.`);\n if (current) {\n const result = {\n value: [current.key, current.value],\n done: false\n };\n current = current.next;\n return result;\n } else return {\n value: void 0,\n done: true\n };\n }\n };\n return iterator;\n }\n [(_c = Symbol.toStringTag, Symbol.iterator)]() {\n return this.entries();\n }\n trimOld(newSize) {\n if (newSize >= this.size) return;\n if (newSize === 0) {\n this.clear();\n return;\n }\n let current = this._head;\n let currentSize = this.size;\n while (current && currentSize > newSize) {\n this._map.delete(current.key);\n current = current.next;\n currentSize--;\n }\n this._head = current;\n this._size = currentSize;\n if (current) current.previous = void 0;\n this._state++;\n }\n trimNew(newSize) {\n if (newSize >= this.size) return;\n if (newSize === 0) {\n this.clear();\n return;\n }\n let current = this._tail;\n let currentSize = this.size;\n while (current && currentSize > newSize) {\n this._map.delete(current.key);\n current = current.previous;\n currentSize--;\n }\n this._tail = current;\n this._size = currentSize;\n if (current) current.next = void 0;\n this._state++;\n }\n addItemFirst(item) {\n if (!this._head && !this._tail) this._tail = item;\n else if (!this._head) throw new Error(\"Invalid list\");\n else {\n item.next = this._head;\n this._head.previous = item;\n }\n this._head = item;\n this._state++;\n }\n addItemLast(item) {\n if (!this._head && !this._tail) this._head = item;\n else if (!this._tail) throw new Error(\"Invalid list\");\n else {\n item.previous = this._tail;\n this._tail.next = item;\n }\n this._tail = item;\n this._state++;\n }\n removeItem(item) {\n if (item === this._head && item === this._tail) {\n this._head = void 0;\n this._tail = void 0;\n } else if (item === this._head) {\n if (!item.next) throw new Error(\"Invalid list\");\n item.next.previous = void 0;\n this._head = item.next;\n } else if (item === this._tail) {\n if (!item.previous) throw new Error(\"Invalid list\");\n item.previous.next = void 0;\n this._tail = item.previous;\n } else {\n const next = item.next;\n const previous = item.previous;\n if (!next || !previous) throw new Error(\"Invalid list\");\n next.previous = previous;\n previous.next = next;\n }\n item.next = void 0;\n item.previous = void 0;\n this._state++;\n }\n touch(item, touch) {\n if (!this._head || !this._tail) throw new Error(\"Invalid list\");\n if (touch !== 1 && touch !== 2) return;\n if (touch === 1) {\n if (item === this._head) return;\n const next = item.next;\n const previous = item.previous;\n if (item === this._tail) {\n previous.next = void 0;\n this._tail = previous;\n } else {\n next.previous = previous;\n previous.next = next;\n }\n item.previous = void 0;\n item.next = this._head;\n this._head.previous = item;\n this._head = item;\n this._state++;\n } else if (touch === 2) {\n if (item === this._tail) return;\n const next = item.next;\n const previous = item.previous;\n if (item === this._head) {\n next.previous = void 0;\n this._head = next;\n } else {\n next.previous = previous;\n previous.next = next;\n }\n item.next = void 0;\n item.previous = this._tail;\n this._tail.next = item;\n this._tail = item;\n this._state++;\n }\n }\n toJSON() {\n const data = [];\n this.forEach((value, key) => {\n data.push([key, value]);\n });\n return data;\n }\n fromJSON(data) {\n this.clear();\n for (const [key, value] of data) this.set(key, value);\n }\n };\n var Cache = class extends LinkedMap {\n constructor(limit, ratio = 1) {\n super();\n this._limit = limit;\n this._ratio = Math.min(Math.max(0, ratio), 1);\n }\n get limit() {\n return this._limit;\n }\n set limit(limit) {\n this._limit = limit;\n this.checkTrim();\n }\n get(key, touch = 2) {\n return super.get(key, touch);\n }\n peek(key) {\n return super.get(key, 0);\n }\n set(key, value) {\n super.set(key, value, 2);\n return this;\n }\n checkTrim() {\n if (this.size > this._limit) this.trim(Math.round(this._limit * this._ratio));\n }\n };\n var LRUCache = class extends Cache {\n constructor(limit, ratio = 1) {\n super(limit, ratio);\n }\n trim(newSize) {\n this.trimOld(newSize);\n }\n set(key, value) {\n super.set(key, value);\n this.checkTrim();\n return this;\n }\n };\n var SetMap = class {\n constructor() {\n this.map = /* @__PURE__ */ new Map();\n }\n add(key, value) {\n let values = this.map.get(key);\n if (!values) {\n values = /* @__PURE__ */ new Set();\n this.map.set(key, values);\n }\n values.add(value);\n }\n delete(key, value) {\n const values = this.map.get(key);\n if (!values) return;\n values.delete(value);\n if (values.size === 0) this.map.delete(key);\n }\n forEach(key, fn) {\n const values = this.map.get(key);\n if (!values) return;\n values.forEach(fn);\n }\n };\n new LRUCache(10);\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/model.js\n /**\n * Vertical Lane in the overview ruler of the editor.\n */\n var OverviewRulerLane;\n (function(OverviewRulerLane) {\n OverviewRulerLane[OverviewRulerLane[\"Left\"] = 1] = \"Left\";\n OverviewRulerLane[OverviewRulerLane[\"Center\"] = 2] = \"Center\";\n OverviewRulerLane[OverviewRulerLane[\"Right\"] = 4] = \"Right\";\n OverviewRulerLane[OverviewRulerLane[\"Full\"] = 7] = \"Full\";\n })(OverviewRulerLane || (OverviewRulerLane = {}));\n /**\n * Vertical Lane in the glyph margin of the editor.\n */\n var GlyphMarginLane;\n (function(GlyphMarginLane) {\n GlyphMarginLane[GlyphMarginLane[\"Left\"] = 1] = \"Left\";\n GlyphMarginLane[GlyphMarginLane[\"Center\"] = 2] = \"Center\";\n GlyphMarginLane[GlyphMarginLane[\"Right\"] = 3] = \"Right\";\n })(GlyphMarginLane || (GlyphMarginLane = {}));\n /**\n * Text Direction for a decoration.\n */\n var TextDirection;\n (function(TextDirection) {\n TextDirection[TextDirection[\"LTR\"] = 0] = \"LTR\";\n TextDirection[TextDirection[\"RTL\"] = 1] = \"RTL\";\n })(TextDirection || (TextDirection = {}));\n var InjectedTextCursorStops;\n (function(InjectedTextCursorStops) {\n InjectedTextCursorStops[InjectedTextCursorStops[\"Both\"] = 0] = \"Both\";\n InjectedTextCursorStops[InjectedTextCursorStops[\"Right\"] = 1] = \"Right\";\n InjectedTextCursorStops[InjectedTextCursorStops[\"Left\"] = 2] = \"Left\";\n InjectedTextCursorStops[InjectedTextCursorStops[\"None\"] = 3] = \"None\";\n })(InjectedTextCursorStops || (InjectedTextCursorStops = {}));\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/model/textModelSearch.js\n function isMultilineRegexSource(searchString) {\n if (!searchString || searchString.length === 0) return false;\n for (let i = 0, len = searchString.length; i < len; i++) {\n const chCode = searchString.charCodeAt(i);\n if (chCode === 10) return true;\n if (chCode === 92) {\n i++;\n if (i >= len) break;\n const nextChCode = searchString.charCodeAt(i);\n if (nextChCode === 110 || nextChCode === 114 || nextChCode === 87) return true;\n }\n }\n return false;\n }\n function leftIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength) {\n if (matchStartIndex === 0) return true;\n const charBefore = text.charCodeAt(matchStartIndex - 1);\n if (wordSeparators.get(charBefore) !== 0) return true;\n if (charBefore === 13 || charBefore === 10) return true;\n if (matchLength > 0) {\n const firstCharInMatch = text.charCodeAt(matchStartIndex);\n if (wordSeparators.get(firstCharInMatch) !== 0) return true;\n }\n return false;\n }\n function rightIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength) {\n if (matchStartIndex + matchLength === textLength) return true;\n const charAfter = text.charCodeAt(matchStartIndex + matchLength);\n if (wordSeparators.get(charAfter) !== 0) return true;\n if (charAfter === 13 || charAfter === 10) return true;\n if (matchLength > 0) {\n const lastCharInMatch = text.charCodeAt(matchStartIndex + matchLength - 1);\n if (wordSeparators.get(lastCharInMatch) !== 0) return true;\n }\n return false;\n }\n function isValidMatch(wordSeparators, text, textLength, matchStartIndex, matchLength) {\n return leftIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength) && rightIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength);\n }\n var Searcher = class {\n constructor(wordSeparators, searchRegex) {\n this._wordSeparators = wordSeparators;\n this._searchRegex = searchRegex;\n this._prevMatchStartIndex = -1;\n this._prevMatchLength = 0;\n }\n reset(lastIndex) {\n this._searchRegex.lastIndex = lastIndex;\n this._prevMatchStartIndex = -1;\n this._prevMatchLength = 0;\n }\n next(text) {\n const textLength = text.length;\n let m;\n do {\n if (this._prevMatchStartIndex + this._prevMatchLength === textLength) return null;\n m = this._searchRegex.exec(text);\n if (!m) return null;\n const matchStartIndex = m.index;\n const matchLength = m[0].length;\n if (matchStartIndex === this._prevMatchStartIndex && matchLength === this._prevMatchLength) {\n if (matchLength === 0) {\n if (getNextCodePoint(text, textLength, this._searchRegex.lastIndex) > 65535) this._searchRegex.lastIndex += 2;\n else this._searchRegex.lastIndex += 1;\n continue;\n }\n return null;\n }\n this._prevMatchStartIndex = matchStartIndex;\n this._prevMatchLength = matchLength;\n if (!this._wordSeparators || isValidMatch(this._wordSeparators, text, textLength, matchStartIndex, matchLength)) return m;\n } while (m);\n return null;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/core/wordHelper.js\n const USUAL_WORD_SEPARATORS = \"`~!@#$%^&*()-=+[{]}\\\\|;:'\\\",.<>/?\";\n /**\n * Create a word definition regular expression based on default word separators.\n * Optionally provide allowed separators that should be included in words.\n *\n * The default would look like this:\n * /(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)/g\n */\n function createWordRegExp(allowInWords = \"\") {\n let source = \"(-?\\\\d*\\\\.\\\\d\\\\w*)|([^\";\n for (const sep of USUAL_WORD_SEPARATORS) {\n if (allowInWords.indexOf(sep) >= 0) continue;\n source += \"\\\\\" + sep;\n }\n source += \"\\\\s]+)\";\n return new RegExp(source, \"g\");\n }\n const DEFAULT_WORD_REGEXP = createWordRegExp();\n function ensureValidWordDefinition(wordDefinition) {\n let result = DEFAULT_WORD_REGEXP;\n if (wordDefinition && wordDefinition instanceof RegExp) if (!wordDefinition.global) {\n let flags = \"g\";\n if (wordDefinition.ignoreCase) flags += \"i\";\n if (wordDefinition.multiline) flags += \"m\";\n if (wordDefinition.unicode) flags += \"u\";\n result = new RegExp(wordDefinition.source, flags);\n } else result = wordDefinition;\n result.lastIndex = 0;\n return result;\n }\n const _defaultConfig = new LinkedList();\n _defaultConfig.unshift({\n maxLen: 1e3,\n windowSize: 15,\n timeBudget: 150\n });\n function getWordAtText(column, wordDefinition, text, textOffset, config) {\n wordDefinition = ensureValidWordDefinition(wordDefinition);\n if (!config) config = Iterable.first(_defaultConfig);\n if (text.length > config.maxLen) {\n let start = column - config.maxLen / 2;\n if (start < 0) start = 0;\n else textOffset += start;\n text = text.substring(start, column + config.maxLen / 2);\n return getWordAtText(column, wordDefinition, text, textOffset, config);\n }\n const t1 = Date.now();\n const pos = column - 1 - textOffset;\n let prevRegexIndex = -1;\n let match = null;\n for (let i = 1;; i++) {\n if (Date.now() - t1 >= config.timeBudget) break;\n const regexIndex = pos - config.windowSize * i;\n wordDefinition.lastIndex = Math.max(0, regexIndex);\n const thisMatch = _findRegexMatchEnclosingPosition(wordDefinition, text, pos, prevRegexIndex);\n if (!thisMatch && match) break;\n match = thisMatch;\n if (regexIndex <= 0) break;\n prevRegexIndex = regexIndex;\n }\n if (match) {\n const result = {\n word: match[0],\n startColumn: textOffset + 1 + match.index,\n endColumn: textOffset + 1 + match.index + match[0].length\n };\n wordDefinition.lastIndex = 0;\n return result;\n }\n return null;\n }\n function _findRegexMatchEnclosingPosition(wordDefinition, text, pos, stopPos) {\n let match;\n while (match = wordDefinition.exec(text)) {\n const matchIndex = match.index || 0;\n if (matchIndex <= pos && wordDefinition.lastIndex >= pos) return match;\n else if (stopPos > 0 && matchIndex > stopPos) return null;\n }\n return null;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/services/unicodeTextModelHighlighter.js\n var UnicodeTextModelHighlighter = class {\n static computeUnicodeHighlights(model, options, range) {\n const startLine = range ? range.startLineNumber : 1;\n const endLine = range ? range.endLineNumber : model.getLineCount();\n const codePointHighlighter = new CodePointHighlighter(options);\n const candidates = codePointHighlighter.getCandidateCodePoints();\n let regex;\n if (candidates === \"allNonBasicAscii\") regex = /* @__PURE__ */ new RegExp(\"[^\\\\t\\\\n\\\\r\\\\x20-\\\\x7E]\", \"g\");\n else regex = new RegExp(`${buildRegExpCharClassExpr(Array.from(candidates))}`, \"g\");\n const searcher = new Searcher(null, regex);\n const ranges = [];\n let hasMore = false;\n let m;\n let ambiguousCharacterCount = 0;\n let invisibleCharacterCount = 0;\n let nonBasicAsciiCharacterCount = 0;\n forLoop: for (let lineNumber = startLine, lineCount = endLine; lineNumber <= lineCount; lineNumber++) {\n const lineContent = model.getLineContent(lineNumber);\n const lineLength = lineContent.length;\n searcher.reset(0);\n do {\n m = searcher.next(lineContent);\n if (m) {\n let startIndex = m.index;\n let endIndex = m.index + m[0].length;\n if (startIndex > 0) {\n if (isHighSurrogate(lineContent.charCodeAt(startIndex - 1))) startIndex--;\n }\n if (endIndex + 1 < lineLength) {\n if (isHighSurrogate(lineContent.charCodeAt(endIndex - 1))) endIndex++;\n }\n const str = lineContent.substring(startIndex, endIndex);\n let word = getWordAtText(startIndex + 1, DEFAULT_WORD_REGEXP, lineContent, 0);\n if (word && word.endColumn <= startIndex + 1) word = null;\n const highlightReason = codePointHighlighter.shouldHighlightNonBasicASCII(str, word ? word.word : null);\n if (highlightReason !== 0) {\n if (highlightReason === 3) ambiguousCharacterCount++;\n else if (highlightReason === 2) invisibleCharacterCount++;\n else if (highlightReason === 1) nonBasicAsciiCharacterCount++;\n else assertNever();\n if (ranges.length >= 1e3) {\n hasMore = true;\n break forLoop;\n }\n ranges.push(new Range(lineNumber, startIndex + 1, lineNumber, endIndex + 1));\n }\n }\n } while (m);\n }\n return {\n ranges,\n hasMore,\n ambiguousCharacterCount,\n invisibleCharacterCount,\n nonBasicAsciiCharacterCount\n };\n }\n static computeUnicodeHighlightReason(char, options) {\n const codePointHighlighter = new CodePointHighlighter(options);\n switch (codePointHighlighter.shouldHighlightNonBasicASCII(char, null)) {\n case 0: return null;\n case 2: return { kind: 1 };\n case 3: {\n const codePoint = char.codePointAt(0);\n const primaryConfusable = codePointHighlighter.ambiguousCharacters.getPrimaryConfusable(codePoint);\n const notAmbiguousInLocales = AmbiguousCharacters.getLocales().filter((l) => !AmbiguousCharacters.getInstance(/* @__PURE__ */ new Set([...options.allowedLocales, l])).isAmbiguous(codePoint));\n return {\n kind: 0,\n confusableWith: String.fromCodePoint(primaryConfusable),\n notAmbiguousInLocales\n };\n }\n case 1: return { kind: 2 };\n }\n }\n };\n function buildRegExpCharClassExpr(codePoints, flags) {\n return `[${escapeRegExpCharacters(codePoints.map((i) => String.fromCodePoint(i)).join(\"\"))}]`;\n }\n var CodePointHighlighter = class {\n constructor(options) {\n this.options = options;\n this.allowedCodePoints = new Set(options.allowedCodePoints);\n this.ambiguousCharacters = AmbiguousCharacters.getInstance(new Set(options.allowedLocales));\n }\n getCandidateCodePoints() {\n if (this.options.nonBasicASCII) return \"allNonBasicAscii\";\n const set = /* @__PURE__ */ new Set();\n if (this.options.invisibleCharacters) {\n for (const cp of InvisibleCharacters.codePoints) if (!isAllowedInvisibleCharacter(String.fromCodePoint(cp))) set.add(cp);\n }\n if (this.options.ambiguousCharacters) for (const cp of this.ambiguousCharacters.getConfusableCodePoints()) set.add(cp);\n for (const cp of this.allowedCodePoints) set.delete(cp);\n return set;\n }\n shouldHighlightNonBasicASCII(character, wordContext) {\n const codePoint = character.codePointAt(0);\n if (this.allowedCodePoints.has(codePoint)) return 0;\n if (this.options.nonBasicASCII) return 1;\n let hasBasicASCIICharacters = false;\n let hasNonConfusableNonBasicAsciiCharacter = false;\n if (wordContext) for (const char of wordContext) {\n const codePoint = char.codePointAt(0);\n const isBasicASCII$1 = isBasicASCII(char);\n hasBasicASCIICharacters = hasBasicASCIICharacters || isBasicASCII$1;\n if (!isBasicASCII$1 && !this.ambiguousCharacters.isAmbiguous(codePoint) && !InvisibleCharacters.isInvisibleCharacter(codePoint)) hasNonConfusableNonBasicAsciiCharacter = true;\n }\n if (!hasBasicASCIICharacters && hasNonConfusableNonBasicAsciiCharacter) return 0;\n if (this.options.invisibleCharacters) {\n if (!isAllowedInvisibleCharacter(character) && InvisibleCharacters.isInvisibleCharacter(codePoint)) return 2;\n }\n if (this.options.ambiguousCharacters) {\n if (this.ambiguousCharacters.isAmbiguous(codePoint)) return 3;\n }\n return 0;\n }\n };\n function isAllowedInvisibleCharacter(character) {\n return character === \" \" || character === \"\\n\" || character === \" \";\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/linesDiffComputer.js\n var LinesDiff = class {\n constructor(changes, moves, hitTimeout) {\n this.changes = changes;\n this.moves = moves;\n this.hitTimeout = hitTimeout;\n }\n };\n var MovedText = class {\n constructor(lineRangeMapping, changes) {\n this.lineRangeMapping = lineRangeMapping;\n this.changes = changes;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/arrays.js\n function equals(one, other, itemEquals = (a, b) => a === b) {\n if (one === other) return true;\n if (!one || !other) return false;\n if (one.length !== other.length) return false;\n for (let i = 0, len = one.length; i < len; i++) if (!itemEquals(one[i], other[i])) return false;\n return true;\n }\n /**\n * Splits the given items into a list of (non-empty) groups.\n * `shouldBeGrouped` is used to decide if two consecutive items should be in the same group.\n * The order of the items is preserved.\n */\n function* groupAdjacentBy(items, shouldBeGrouped) {\n let currentGroup;\n let last;\n for (const item of items) {\n if (last !== void 0 && shouldBeGrouped(last, item)) currentGroup.push(item);\n else {\n if (currentGroup) yield currentGroup;\n currentGroup = [item];\n }\n last = item;\n }\n if (currentGroup) yield currentGroup;\n }\n function forEachAdjacent(arr, f) {\n for (let i = 0; i <= arr.length; i++) f(i === 0 ? void 0 : arr[i - 1], i === arr.length ? void 0 : arr[i]);\n }\n function forEachWithNeighbors(arr, f) {\n for (let i = 0; i < arr.length; i++) f(i === 0 ? void 0 : arr[i - 1], arr[i], i + 1 === arr.length ? void 0 : arr[i + 1]);\n }\n function pushMany(arr, items) {\n for (const item of items) arr.push(item);\n }\n var CompareResult;\n (function(CompareResult) {\n function isLessThan(result) {\n return result < 0;\n }\n CompareResult.isLessThan = isLessThan;\n function isLessThanOrEqual(result) {\n return result <= 0;\n }\n CompareResult.isLessThanOrEqual = isLessThanOrEqual;\n function isGreaterThan(result) {\n return result > 0;\n }\n CompareResult.isGreaterThan = isGreaterThan;\n function isNeitherLessOrGreaterThan(result) {\n return result === 0;\n }\n CompareResult.isNeitherLessOrGreaterThan = isNeitherLessOrGreaterThan;\n CompareResult.greaterThan = 1;\n CompareResult.lessThan = -1;\n CompareResult.neitherLessOrGreaterThan = 0;\n })(CompareResult || (CompareResult = {}));\n function compareBy(selector, comparator) {\n return (a, b) => comparator(selector(a), selector(b));\n }\n /**\n * The natural order on numbers.\n */\n const numberComparator = (a, b) => a - b;\n function reverseOrder(comparator) {\n return (a, b) => -comparator(a, b);\n }\n (class CallbackIterable {\n static {\n this.empty = new CallbackIterable((_callback) => {});\n }\n constructor(iterate) {\n this.iterate = iterate;\n }\n toArray() {\n const result = [];\n this.iterate((item) => {\n result.push(item);\n return true;\n });\n return result;\n }\n filter(predicate) {\n return new CallbackIterable((cb) => this.iterate((item) => predicate(item) ? cb(item) : true));\n }\n map(mapFn) {\n return new CallbackIterable((cb) => this.iterate((item) => cb(mapFn(item))));\n }\n findLast(predicate) {\n let result;\n this.iterate((item) => {\n if (predicate(item)) result = item;\n return true;\n });\n return result;\n }\n findLastMaxBy(comparator) {\n let result;\n let first = true;\n this.iterate((item) => {\n if (first || CompareResult.isGreaterThan(comparator(item, result))) {\n first = false;\n result = item;\n }\n return true;\n });\n return result;\n }\n });\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/core/ranges/offsetRange.js\n /**\n * A range of offsets (0-based).\n */\n var OffsetRange = class OffsetRange {\n static fromTo(start, endExclusive) {\n return new OffsetRange(start, endExclusive);\n }\n static addRange(range, sortedRanges) {\n let i = 0;\n while (i < sortedRanges.length && sortedRanges[i].endExclusive < range.start) i++;\n let j = i;\n while (j < sortedRanges.length && sortedRanges[j].start <= range.endExclusive) j++;\n if (i === j) sortedRanges.splice(i, 0, range);\n else {\n const start = Math.min(range.start, sortedRanges[i].start);\n const end = Math.max(range.endExclusive, sortedRanges[j - 1].endExclusive);\n sortedRanges.splice(i, j - i, new OffsetRange(start, end));\n }\n }\n static tryCreate(start, endExclusive) {\n if (start > endExclusive) return;\n return new OffsetRange(start, endExclusive);\n }\n static ofLength(length) {\n return new OffsetRange(0, length);\n }\n static ofStartAndLength(start, length) {\n return new OffsetRange(start, start + length);\n }\n static emptyAt(offset) {\n return new OffsetRange(offset, offset);\n }\n constructor(start, endExclusive) {\n this.start = start;\n this.endExclusive = endExclusive;\n if (start > endExclusive) throw new BugIndicatingError(`Invalid range: ${this.toString()}`);\n }\n get isEmpty() {\n return this.start === this.endExclusive;\n }\n delta(offset) {\n return new OffsetRange(this.start + offset, this.endExclusive + offset);\n }\n deltaStart(offset) {\n return new OffsetRange(this.start + offset, this.endExclusive);\n }\n deltaEnd(offset) {\n return new OffsetRange(this.start, this.endExclusive + offset);\n }\n get length() {\n return this.endExclusive - this.start;\n }\n toString() {\n return `[${this.start}, ${this.endExclusive})`;\n }\n equals(other) {\n return this.start === other.start && this.endExclusive === other.endExclusive;\n }\n contains(offset) {\n return this.start <= offset && offset < this.endExclusive;\n }\n /**\n * for all numbers n: range1.contains(n) or range2.contains(n) => range1.join(range2).contains(n)\n * The joined range is the smallest range that contains both ranges.\n */\n join(other) {\n return new OffsetRange(Math.min(this.start, other.start), Math.max(this.endExclusive, other.endExclusive));\n }\n /**\n * for all numbers n: range1.contains(n) and range2.contains(n) <=> range1.intersect(range2).contains(n)\n *\n * The resulting range is empty if the ranges do not intersect, but touch.\n * If the ranges don't even touch, the result is undefined.\n */\n intersect(other) {\n const start = Math.max(this.start, other.start);\n const end = Math.min(this.endExclusive, other.endExclusive);\n if (start <= end) return new OffsetRange(start, end);\n }\n intersectionLength(range) {\n const start = Math.max(this.start, range.start);\n const end = Math.min(this.endExclusive, range.endExclusive);\n return Math.max(0, end - start);\n }\n intersects(other) {\n return Math.max(this.start, other.start) < Math.min(this.endExclusive, other.endExclusive);\n }\n intersectsOrTouches(other) {\n return Math.max(this.start, other.start) <= Math.min(this.endExclusive, other.endExclusive);\n }\n isBefore(other) {\n return this.endExclusive <= other.start;\n }\n isAfter(other) {\n return this.start >= other.endExclusive;\n }\n slice(arr) {\n return arr.slice(this.start, this.endExclusive);\n }\n substring(str) {\n return str.substring(this.start, this.endExclusive);\n }\n /**\n * Returns the given value if it is contained in this instance, otherwise the closest value that is contained.\n * The range must not be empty.\n */\n clip(value) {\n if (this.isEmpty) throw new BugIndicatingError(`Invalid clipping range: ${this.toString()}`);\n return Math.max(this.start, Math.min(this.endExclusive - 1, value));\n }\n /**\n * Returns `r := value + k * length` such that `r` is contained in this range.\n * The range must not be empty.\n *\n * E.g. `[5, 10).clipCyclic(10) === 5`, `[5, 10).clipCyclic(11) === 6` and `[5, 10).clipCyclic(4) === 9`.\n */\n clipCyclic(value) {\n if (this.isEmpty) throw new BugIndicatingError(`Invalid clipping range: ${this.toString()}`);\n if (value < this.start) return this.endExclusive - (this.start - value) % this.length;\n if (value >= this.endExclusive) return this.start + (value - this.start) % this.length;\n return value;\n }\n forEach(f) {\n for (let i = this.start; i < this.endExclusive; i++) f(i);\n }\n /**\n * this: [ 5, 10), range: [10, 15) => [5, 15)]\n * Throws if the ranges are not touching.\n */\n joinRightTouching(range) {\n if (this.endExclusive !== range.start) throw new BugIndicatingError(`Invalid join: ${this.toString()} and ${range.toString()}`);\n return new OffsetRange(this.start, range.endExclusive);\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/arraysFind.js\n /**\n * Finds the last item where predicate is true using binary search.\n * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`!\n *\n * @returns `undefined` if no item matches, otherwise the last item that matches the predicate.\n */\n function findLastMonotonous(array, predicate) {\n const idx = findLastIdxMonotonous(array, predicate);\n return idx === -1 ? void 0 : array[idx];\n }\n /**\n * Finds the last item where predicate is true using binary search.\n * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`!\n *\n * @returns `startIdx - 1` if predicate is false for all items, otherwise the index of the last item that matches the predicate.\n */\n function findLastIdxMonotonous(array, predicate, startIdx = 0, endIdxEx = array.length) {\n let i = startIdx;\n let j = endIdxEx;\n while (i < j) {\n const k = Math.floor((i + j) / 2);\n if (predicate(array[k])) i = k + 1;\n else j = k;\n }\n return i - 1;\n }\n /**\n * Finds the first item where predicate is true using binary search.\n * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[false, ..., false, true, ..., true]`!\n *\n * @returns `undefined` if no item matches, otherwise the first item that matches the predicate.\n */\n function findFirstMonotonous(array, predicate) {\n const idx = findFirstIdxMonotonousOrArrLen(array, predicate);\n return idx === array.length ? void 0 : array[idx];\n }\n /**\n * Finds the first item where predicate is true using binary search.\n * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[false, ..., false, true, ..., true]`!\n *\n * @returns `endIdxEx` if predicate is false for all items, otherwise the index of the first item that matches the predicate.\n */\n function findFirstIdxMonotonousOrArrLen(array, predicate, startIdx = 0, endIdxEx = array.length) {\n let i = startIdx;\n let j = endIdxEx;\n while (i < j) {\n const k = Math.floor((i + j) / 2);\n if (predicate(array[k])) j = k;\n else i = k + 1;\n }\n return i;\n }\n /**\n * Use this when\n * * You have a sorted array\n * * You query this array with a monotonous predicate to find the last item that has a certain property.\n * * You query this array multiple times with monotonous predicates that get weaker and weaker.\n */\n var MonotonousArray = class MonotonousArray {\n static {\n this.assertInvariants = false;\n }\n constructor(_array) {\n this._array = _array;\n this._findLastMonotonousLastIdx = 0;\n }\n /**\n * The predicate must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`!\n * For subsequent calls, current predicate must be weaker than (or equal to) the previous predicate, i.e. more entries must be `true`.\n */\n findLastMonotonous(predicate) {\n if (MonotonousArray.assertInvariants) {\n if (this._prevFindLastPredicate) {\n for (const item of this._array) if (this._prevFindLastPredicate(item) && !predicate(item)) throw new Error(\"MonotonousArray: current predicate must be weaker than (or equal to) the previous predicate.\");\n }\n this._prevFindLastPredicate = predicate;\n }\n const idx = findLastIdxMonotonous(this._array, predicate, this._findLastMonotonousLastIdx);\n this._findLastMonotonousLastIdx = idx + 1;\n return idx === -1 ? void 0 : this._array[idx];\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/core/ranges/lineRange.js\n /**\n * A range of lines (1-based).\n */\n var LineRange = class LineRange {\n static ofLength(startLineNumber, length) {\n return new LineRange(startLineNumber, startLineNumber + length);\n }\n static fromRange(range) {\n return new LineRange(range.startLineNumber, range.endLineNumber);\n }\n static fromRangeInclusive(range) {\n return new LineRange(range.startLineNumber, range.endLineNumber + 1);\n }\n static {\n this.compareByStart = compareBy((l) => l.startLineNumber, numberComparator);\n }\n /**\n * @param lineRanges An array of arrays of of sorted line ranges.\n */\n static joinMany(lineRanges) {\n if (lineRanges.length === 0) return [];\n let result = new LineRangeSet(lineRanges[0].slice());\n for (let i = 1; i < lineRanges.length; i++) result = result.getUnion(new LineRangeSet(lineRanges[i].slice()));\n return result.ranges;\n }\n static join(lineRanges) {\n if (lineRanges.length === 0) throw new BugIndicatingError(\"lineRanges cannot be empty\");\n let startLineNumber = lineRanges[0].startLineNumber;\n let endLineNumberExclusive = lineRanges[0].endLineNumberExclusive;\n for (let i = 1; i < lineRanges.length; i++) {\n startLineNumber = Math.min(startLineNumber, lineRanges[i].startLineNumber);\n endLineNumberExclusive = Math.max(endLineNumberExclusive, lineRanges[i].endLineNumberExclusive);\n }\n return new LineRange(startLineNumber, endLineNumberExclusive);\n }\n /**\n * @internal\n */\n static deserialize(lineRange) {\n return new LineRange(lineRange[0], lineRange[1]);\n }\n constructor(startLineNumber, endLineNumberExclusive) {\n if (startLineNumber > endLineNumberExclusive) throw new BugIndicatingError(`startLineNumber ${startLineNumber} cannot be after endLineNumberExclusive ${endLineNumberExclusive}`);\n this.startLineNumber = startLineNumber;\n this.endLineNumberExclusive = endLineNumberExclusive;\n }\n /**\n * Indicates if this line range contains the given line number.\n */\n contains(lineNumber) {\n return this.startLineNumber <= lineNumber && lineNumber < this.endLineNumberExclusive;\n }\n /**\n * Indicates if this line range is empty.\n */\n get isEmpty() {\n return this.startLineNumber === this.endLineNumberExclusive;\n }\n /**\n * Moves this line range by the given offset of line numbers.\n */\n delta(offset) {\n return new LineRange(this.startLineNumber + offset, this.endLineNumberExclusive + offset);\n }\n deltaLength(offset) {\n return new LineRange(this.startLineNumber, this.endLineNumberExclusive + offset);\n }\n /**\n * The number of lines this line range spans.\n */\n get length() {\n return this.endLineNumberExclusive - this.startLineNumber;\n }\n /**\n * Creates a line range that combines this and the given line range.\n */\n join(other) {\n return new LineRange(Math.min(this.startLineNumber, other.startLineNumber), Math.max(this.endLineNumberExclusive, other.endLineNumberExclusive));\n }\n toString() {\n return `[${this.startLineNumber},${this.endLineNumberExclusive})`;\n }\n /**\n * The resulting range is empty if the ranges do not intersect, but touch.\n * If the ranges don't even touch, the result is undefined.\n */\n intersect(other) {\n const startLineNumber = Math.max(this.startLineNumber, other.startLineNumber);\n const endLineNumberExclusive = Math.min(this.endLineNumberExclusive, other.endLineNumberExclusive);\n if (startLineNumber <= endLineNumberExclusive) return new LineRange(startLineNumber, endLineNumberExclusive);\n }\n intersectsStrict(other) {\n return this.startLineNumber < other.endLineNumberExclusive && other.startLineNumber < this.endLineNumberExclusive;\n }\n intersectsOrTouches(other) {\n return this.startLineNumber <= other.endLineNumberExclusive && other.startLineNumber <= this.endLineNumberExclusive;\n }\n equals(b) {\n return this.startLineNumber === b.startLineNumber && this.endLineNumberExclusive === b.endLineNumberExclusive;\n }\n toInclusiveRange() {\n if (this.isEmpty) return null;\n return new Range(this.startLineNumber, 1, this.endLineNumberExclusive - 1, Number.MAX_SAFE_INTEGER);\n }\n /**\n * @deprecated Using this function is discouraged because it might lead to bugs: The end position is not guaranteed to be a valid position!\n */\n toExclusiveRange() {\n return new Range(this.startLineNumber, 1, this.endLineNumberExclusive, 1);\n }\n mapToLineArray(f) {\n const result = [];\n for (let lineNumber = this.startLineNumber; lineNumber < this.endLineNumberExclusive; lineNumber++) result.push(f(lineNumber));\n return result;\n }\n forEach(f) {\n for (let lineNumber = this.startLineNumber; lineNumber < this.endLineNumberExclusive; lineNumber++) f(lineNumber);\n }\n /**\n * @internal\n */\n serialize() {\n return [this.startLineNumber, this.endLineNumberExclusive];\n }\n /**\n * Converts this 1-based line range to a 0-based offset range (subtracts 1!).\n * @internal\n */\n toOffsetRange() {\n return new OffsetRange(this.startLineNumber - 1, this.endLineNumberExclusive - 1);\n }\n addMargin(marginTop, marginBottom) {\n return new LineRange(this.startLineNumber - marginTop, this.endLineNumberExclusive + marginBottom);\n }\n };\n var LineRangeSet = class LineRangeSet {\n constructor(_normalizedRanges = []) {\n this._normalizedRanges = _normalizedRanges;\n }\n get ranges() {\n return this._normalizedRanges;\n }\n addRange(range) {\n if (range.length === 0) return;\n const joinRangeStartIdx = findFirstIdxMonotonousOrArrLen(this._normalizedRanges, (r) => r.endLineNumberExclusive >= range.startLineNumber);\n const joinRangeEndIdxExclusive = findLastIdxMonotonous(this._normalizedRanges, (r) => r.startLineNumber <= range.endLineNumberExclusive) + 1;\n if (joinRangeStartIdx === joinRangeEndIdxExclusive) this._normalizedRanges.splice(joinRangeStartIdx, 0, range);\n else if (joinRangeStartIdx === joinRangeEndIdxExclusive - 1) {\n const joinRange = this._normalizedRanges[joinRangeStartIdx];\n this._normalizedRanges[joinRangeStartIdx] = joinRange.join(range);\n } else {\n const joinRange = this._normalizedRanges[joinRangeStartIdx].join(this._normalizedRanges[joinRangeEndIdxExclusive - 1]).join(range);\n this._normalizedRanges.splice(joinRangeStartIdx, joinRangeEndIdxExclusive - joinRangeStartIdx, joinRange);\n }\n }\n contains(lineNumber) {\n const rangeThatStartsBeforeEnd = findLastMonotonous(this._normalizedRanges, (r) => r.startLineNumber <= lineNumber);\n return !!rangeThatStartsBeforeEnd && rangeThatStartsBeforeEnd.endLineNumberExclusive > lineNumber;\n }\n intersects(range) {\n const rangeThatStartsBeforeEnd = findLastMonotonous(this._normalizedRanges, (r) => r.startLineNumber < range.endLineNumberExclusive);\n return !!rangeThatStartsBeforeEnd && rangeThatStartsBeforeEnd.endLineNumberExclusive > range.startLineNumber;\n }\n getUnion(other) {\n if (this._normalizedRanges.length === 0) return other;\n if (other._normalizedRanges.length === 0) return this;\n const result = [];\n let i1 = 0;\n let i2 = 0;\n let current = null;\n while (i1 < this._normalizedRanges.length || i2 < other._normalizedRanges.length) {\n let next = null;\n if (i1 < this._normalizedRanges.length && i2 < other._normalizedRanges.length) {\n const lineRange1 = this._normalizedRanges[i1];\n const lineRange2 = other._normalizedRanges[i2];\n if (lineRange1.startLineNumber < lineRange2.startLineNumber) {\n next = lineRange1;\n i1++;\n } else {\n next = lineRange2;\n i2++;\n }\n } else if (i1 < this._normalizedRanges.length) {\n next = this._normalizedRanges[i1];\n i1++;\n } else {\n next = other._normalizedRanges[i2];\n i2++;\n }\n if (current === null) current = next;\n else if (current.endLineNumberExclusive >= next.startLineNumber) current = new LineRange(current.startLineNumber, Math.max(current.endLineNumberExclusive, next.endLineNumberExclusive));\n else {\n result.push(current);\n current = next;\n }\n }\n if (current !== null) result.push(current);\n return new LineRangeSet(result);\n }\n /**\n * Subtracts all ranges in this set from `range` and returns the result.\n */\n subtractFrom(range) {\n const joinRangeStartIdx = findFirstIdxMonotonousOrArrLen(this._normalizedRanges, (r) => r.endLineNumberExclusive >= range.startLineNumber);\n const joinRangeEndIdxExclusive = findLastIdxMonotonous(this._normalizedRanges, (r) => r.startLineNumber <= range.endLineNumberExclusive) + 1;\n if (joinRangeStartIdx === joinRangeEndIdxExclusive) return new LineRangeSet([range]);\n const result = [];\n let startLineNumber = range.startLineNumber;\n for (let i = joinRangeStartIdx; i < joinRangeEndIdxExclusive; i++) {\n const r = this._normalizedRanges[i];\n if (r.startLineNumber > startLineNumber) result.push(new LineRange(startLineNumber, r.startLineNumber));\n startLineNumber = r.endLineNumberExclusive;\n }\n if (startLineNumber < range.endLineNumberExclusive) result.push(new LineRange(startLineNumber, range.endLineNumberExclusive));\n return new LineRangeSet(result);\n }\n toString() {\n return this._normalizedRanges.map((r) => r.toString()).join(\", \");\n }\n getIntersection(other) {\n const result = [];\n let i1 = 0;\n let i2 = 0;\n while (i1 < this._normalizedRanges.length && i2 < other._normalizedRanges.length) {\n const r1 = this._normalizedRanges[i1];\n const r2 = other._normalizedRanges[i2];\n const i = r1.intersect(r2);\n if (i && !i.isEmpty) result.push(i);\n if (r1.endLineNumberExclusive < r2.endLineNumberExclusive) i1++;\n else i2++;\n }\n return new LineRangeSet(result);\n }\n getWithDelta(value) {\n return new LineRangeSet(this._normalizedRanges.map((r) => r.delta(value)));\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/core/text/textLength.js\n /**\n * Represents a non-negative length of text in terms of line and column count.\n */\n var TextLength = class TextLength {\n static {\n this.zero = new TextLength(0, 0);\n }\n static betweenPositions(position1, position2) {\n if (position1.lineNumber === position2.lineNumber) return new TextLength(0, position2.column - position1.column);\n else return new TextLength(position2.lineNumber - position1.lineNumber, position2.column - 1);\n }\n static fromPosition(pos) {\n return new TextLength(pos.lineNumber - 1, pos.column - 1);\n }\n static ofRange(range) {\n return TextLength.betweenPositions(range.getStartPosition(), range.getEndPosition());\n }\n static ofText(text) {\n let line = 0;\n let column = 0;\n for (const c of text) if (c === \"\\n\") {\n line++;\n column = 0;\n } else column++;\n return new TextLength(line, column);\n }\n constructor(lineCount, columnCount) {\n this.lineCount = lineCount;\n this.columnCount = columnCount;\n }\n isGreaterThanOrEqualTo(other) {\n if (this.lineCount !== other.lineCount) return this.lineCount > other.lineCount;\n return this.columnCount >= other.columnCount;\n }\n add(other) {\n if (other.lineCount === 0) return new TextLength(this.lineCount, this.columnCount + other.columnCount);\n else return new TextLength(this.lineCount + other.lineCount, other.columnCount);\n }\n createRange(startPosition) {\n if (this.lineCount === 0) return new Range(startPosition.lineNumber, startPosition.column, startPosition.lineNumber, startPosition.column + this.columnCount);\n else return new Range(startPosition.lineNumber, startPosition.column, startPosition.lineNumber + this.lineCount, this.columnCount + 1);\n }\n toRange() {\n return new Range(1, 1, this.lineCount + 1, this.columnCount + 1);\n }\n toLineRange() {\n return LineRange.ofLength(1, this.lineCount + 1);\n }\n addToPosition(position) {\n if (this.lineCount === 0) return new Position(position.lineNumber, position.column + this.columnCount);\n else return new Position(position.lineNumber + this.lineCount, this.columnCount + 1);\n }\n toString() {\n return `${this.lineCount},${this.columnCount}`;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/core/text/positionToOffsetImpl.js\n var PositionOffsetTransformerBase = class {\n getOffsetRange(range) {\n return new OffsetRange(this.getOffset(range.getStartPosition()), this.getOffset(range.getEndPosition()));\n }\n getRange(offsetRange) {\n return Range.fromPositions(this.getPosition(offsetRange.start), this.getPosition(offsetRange.endExclusive));\n }\n getStringReplacement(edit) {\n return new Deps.deps.StringReplacement(this.getOffsetRange(edit.range), edit.text);\n }\n getTextReplacement(edit) {\n return new Deps.deps.TextReplacement(this.getRange(edit.replaceRange), edit.newText);\n }\n getTextEdit(edit) {\n const edits = edit.replacements.map((e) => this.getTextReplacement(e));\n return new Deps.deps.TextEdit(edits);\n }\n };\n var Deps = class {\n static {\n this._deps = void 0;\n }\n static get deps() {\n if (!this._deps) throw new Error(\"Dependencies not set. Call _setDependencies first.\");\n return this._deps;\n }\n };\n var PositionOffsetTransformer = class extends PositionOffsetTransformerBase {\n constructor(text) {\n super();\n this.text = text;\n this.lineStartOffsetByLineIdx = [];\n this.lineEndOffsetByLineIdx = [];\n this.lineStartOffsetByLineIdx.push(0);\n for (let i = 0; i < text.length; i++) if (text.charAt(i) === \"\\n\") {\n this.lineStartOffsetByLineIdx.push(i + 1);\n if (i > 0 && text.charAt(i - 1) === \"\\r\") this.lineEndOffsetByLineIdx.push(i - 1);\n else this.lineEndOffsetByLineIdx.push(i);\n }\n this.lineEndOffsetByLineIdx.push(text.length);\n }\n getOffset(position) {\n const valPos = this._validatePosition(position);\n return this.lineStartOffsetByLineIdx[valPos.lineNumber - 1] + valPos.column - 1;\n }\n _validatePosition(position) {\n if (position.lineNumber < 1) return new Position(1, 1);\n const lineCount = this.textLength.lineCount + 1;\n if (position.lineNumber > lineCount) return new Position(lineCount, this.getLineLength(lineCount) + 1);\n if (position.column < 1) return new Position(position.lineNumber, 1);\n const lineLength = this.getLineLength(position.lineNumber);\n if (position.column - 1 > lineLength) return new Position(position.lineNumber, lineLength + 1);\n return position;\n }\n getPosition(offset) {\n const idx = findLastIdxMonotonous(this.lineStartOffsetByLineIdx, (i) => i <= offset);\n return new Position(idx + 1, offset - this.lineStartOffsetByLineIdx[idx] + 1);\n }\n get textLength() {\n const lineIdx = this.lineStartOffsetByLineIdx.length - 1;\n return new Deps.deps.TextLength(lineIdx, this.text.length - this.lineStartOffsetByLineIdx[lineIdx]);\n }\n getLineLength(lineNumber) {\n return this.lineEndOffsetByLineIdx[lineNumber - 1] - this.lineStartOffsetByLineIdx[lineNumber - 1];\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/core/text/abstractText.js\n var AbstractText = class {\n constructor() {\n this._transformer = void 0;\n }\n get endPositionExclusive() {\n return this.length.addToPosition(new Position(1, 1));\n }\n get lineRange() {\n return this.length.toLineRange();\n }\n getValue() {\n return this.getValueOfRange(this.length.toRange());\n }\n getValueOfOffsetRange(range) {\n return this.getValueOfRange(this.getTransformer().getRange(range));\n }\n getLineLength(lineNumber) {\n return this.getValueOfRange(new Range(lineNumber, 1, lineNumber, Number.MAX_SAFE_INTEGER)).length;\n }\n getTransformer() {\n if (!this._transformer) this._transformer = new PositionOffsetTransformer(this.getValue());\n return this._transformer;\n }\n getLineAt(lineNumber) {\n return this.getValueOfRange(new Range(lineNumber, 1, lineNumber, Number.MAX_SAFE_INTEGER));\n }\n };\n var LineBasedText = class extends AbstractText {\n constructor(_getLineContent, _lineCount) {\n assert(_lineCount >= 1);\n super();\n this._getLineContent = _getLineContent;\n this._lineCount = _lineCount;\n }\n getValueOfRange(range) {\n if (range.startLineNumber === range.endLineNumber) return this._getLineContent(range.startLineNumber).substring(range.startColumn - 1, range.endColumn - 1);\n let result = this._getLineContent(range.startLineNumber).substring(range.startColumn - 1);\n for (let i = range.startLineNumber + 1; i < range.endLineNumber; i++) result += \"\\n\" + this._getLineContent(i);\n result += \"\\n\" + this._getLineContent(range.endLineNumber).substring(0, range.endColumn - 1);\n return result;\n }\n getLineLength(lineNumber) {\n return this._getLineContent(lineNumber).length;\n }\n get length() {\n const lastLine = this._getLineContent(this._lineCount);\n return new TextLength(this._lineCount - 1, lastLine.length);\n }\n };\n var ArrayText = class extends LineBasedText {\n constructor(lines) {\n super((lineNumber) => lines[lineNumber - 1], lines.length);\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/core/edits/textEdit.js\n var TextReplacement = class TextReplacement {\n static joinReplacements(replacements, initialValue) {\n if (replacements.length === 0) throw new BugIndicatingError();\n if (replacements.length === 1) return replacements[0];\n const startPos = replacements[0].range.getStartPosition();\n const endPos = replacements[replacements.length - 1].range.getEndPosition();\n let newText = \"\";\n for (let i = 0; i < replacements.length; i++) {\n const curEdit = replacements[i];\n newText += curEdit.text;\n if (i < replacements.length - 1) {\n const nextEdit = replacements[i + 1];\n const gapRange = Range.fromPositions(curEdit.range.getEndPosition(), nextEdit.range.getStartPosition());\n const gapText = initialValue.getValueOfRange(gapRange);\n newText += gapText;\n }\n }\n return new TextReplacement(Range.fromPositions(startPos, endPos), newText);\n }\n static fromStringReplacement(replacement, initialState) {\n return new TextReplacement(initialState.getTransformer().getRange(replacement.replaceRange), replacement.newText);\n }\n static delete(range) {\n return new TextReplacement(range, \"\");\n }\n constructor(range, text) {\n this.range = range;\n this.text = text;\n }\n get isEmpty() {\n return this.range.isEmpty() && this.text.length === 0;\n }\n static equals(first, second) {\n return first.range.equalsRange(second.range) && first.text === second.text;\n }\n equals(other) {\n return TextReplacement.equals(this, other);\n }\n removeCommonPrefixAndSuffix(text) {\n return this.removeCommonPrefix(text).removeCommonSuffix(text);\n }\n removeCommonPrefix(text) {\n const normalizedOriginalText = text.getValueOfRange(this.range).replaceAll(\"\\r\\n\", \"\\n\");\n const normalizedModifiedText = this.text.replaceAll(\"\\r\\n\", \"\\n\");\n const commonPrefixLen = commonPrefixLength(normalizedOriginalText, normalizedModifiedText);\n const start = TextLength.ofText(normalizedOriginalText.substring(0, commonPrefixLen)).addToPosition(this.range.getStartPosition());\n const newText = normalizedModifiedText.substring(commonPrefixLen);\n const range = Range.fromPositions(start, this.range.getEndPosition());\n return new TextReplacement(range, newText);\n }\n removeCommonSuffix(text) {\n const normalizedOriginalText = text.getValueOfRange(this.range).replaceAll(\"\\r\\n\", \"\\n\");\n const normalizedModifiedText = this.text.replaceAll(\"\\r\\n\", \"\\n\");\n const commonSuffixLen = commonSuffixLength(normalizedOriginalText, normalizedModifiedText);\n const end = TextLength.ofText(normalizedOriginalText.substring(0, normalizedOriginalText.length - commonSuffixLen)).addToPosition(this.range.getStartPosition());\n const newText = normalizedModifiedText.substring(0, normalizedModifiedText.length - commonSuffixLen);\n const range = Range.fromPositions(this.range.getStartPosition(), end);\n return new TextReplacement(range, newText);\n }\n toString() {\n const start = this.range.getStartPosition();\n const end = this.range.getEndPosition();\n return `(${start.lineNumber},${start.column} -> ${end.lineNumber},${end.column}): \"${this.text}\"`;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/rangeMapping.js\n /**\n * Maps a line range in the original text model to a line range in the modified text model.\n */\n var LineRangeMapping = class LineRangeMapping {\n static inverse(mapping, originalLineCount, modifiedLineCount) {\n const result = [];\n let lastOriginalEndLineNumber = 1;\n let lastModifiedEndLineNumber = 1;\n for (const m of mapping) {\n const r = new LineRangeMapping(new LineRange(lastOriginalEndLineNumber, m.original.startLineNumber), new LineRange(lastModifiedEndLineNumber, m.modified.startLineNumber));\n if (!r.modified.isEmpty) result.push(r);\n lastOriginalEndLineNumber = m.original.endLineNumberExclusive;\n lastModifiedEndLineNumber = m.modified.endLineNumberExclusive;\n }\n const r = new LineRangeMapping(new LineRange(lastOriginalEndLineNumber, originalLineCount + 1), new LineRange(lastModifiedEndLineNumber, modifiedLineCount + 1));\n if (!r.modified.isEmpty) result.push(r);\n return result;\n }\n static clip(mapping, originalRange, modifiedRange) {\n const result = [];\n for (const m of mapping) {\n const original = m.original.intersect(originalRange);\n const modified = m.modified.intersect(modifiedRange);\n if (original && !original.isEmpty && modified && !modified.isEmpty) result.push(new LineRangeMapping(original, modified));\n }\n return result;\n }\n constructor(originalRange, modifiedRange) {\n this.original = originalRange;\n this.modified = modifiedRange;\n }\n toString() {\n return `{${this.original.toString()}->${this.modified.toString()}}`;\n }\n flip() {\n return new LineRangeMapping(this.modified, this.original);\n }\n join(other) {\n return new LineRangeMapping(this.original.join(other.original), this.modified.join(other.modified));\n }\n /**\n * This method assumes that the LineRangeMapping describes a valid diff!\n * I.e. if one range is empty, the other range cannot be the entire document.\n * It avoids various problems when the line range points to non-existing line-numbers.\n */\n toRangeMapping() {\n const origInclusiveRange = this.original.toInclusiveRange();\n const modInclusiveRange = this.modified.toInclusiveRange();\n if (origInclusiveRange && modInclusiveRange) return new RangeMapping(origInclusiveRange, modInclusiveRange);\n else if (this.original.startLineNumber === 1 || this.modified.startLineNumber === 1) {\n if (!(this.modified.startLineNumber === 1 && this.original.startLineNumber === 1)) throw new BugIndicatingError(\"not a valid diff\");\n return new RangeMapping(new Range(this.original.startLineNumber, 1, this.original.endLineNumberExclusive, 1), new Range(this.modified.startLineNumber, 1, this.modified.endLineNumberExclusive, 1));\n } else return new RangeMapping(new Range(this.original.startLineNumber - 1, Number.MAX_SAFE_INTEGER, this.original.endLineNumberExclusive - 1, Number.MAX_SAFE_INTEGER), new Range(this.modified.startLineNumber - 1, Number.MAX_SAFE_INTEGER, this.modified.endLineNumberExclusive - 1, Number.MAX_SAFE_INTEGER));\n }\n /**\n * This method assumes that the LineRangeMapping describes a valid diff!\n * I.e. if one range is empty, the other range cannot be the entire document.\n * It avoids various problems when the line range points to non-existing line-numbers.\n */\n toRangeMapping2(original, modified) {\n if (isValidLineNumber(this.original.endLineNumberExclusive, original) && isValidLineNumber(this.modified.endLineNumberExclusive, modified)) return new RangeMapping(new Range(this.original.startLineNumber, 1, this.original.endLineNumberExclusive, 1), new Range(this.modified.startLineNumber, 1, this.modified.endLineNumberExclusive, 1));\n if (!this.original.isEmpty && !this.modified.isEmpty) return new RangeMapping(Range.fromPositions(new Position(this.original.startLineNumber, 1), normalizePosition(new Position(this.original.endLineNumberExclusive - 1, Number.MAX_SAFE_INTEGER), original)), Range.fromPositions(new Position(this.modified.startLineNumber, 1), normalizePosition(new Position(this.modified.endLineNumberExclusive - 1, Number.MAX_SAFE_INTEGER), modified)));\n if (this.original.startLineNumber > 1 && this.modified.startLineNumber > 1) return new RangeMapping(Range.fromPositions(normalizePosition(new Position(this.original.startLineNumber - 1, Number.MAX_SAFE_INTEGER), original), normalizePosition(new Position(this.original.endLineNumberExclusive - 1, Number.MAX_SAFE_INTEGER), original)), Range.fromPositions(normalizePosition(new Position(this.modified.startLineNumber - 1, Number.MAX_SAFE_INTEGER), modified), normalizePosition(new Position(this.modified.endLineNumberExclusive - 1, Number.MAX_SAFE_INTEGER), modified)));\n throw new BugIndicatingError();\n }\n };\n function normalizePosition(position, content) {\n if (position.lineNumber < 1) return new Position(1, 1);\n if (position.lineNumber > content.length) return new Position(content.length, content[content.length - 1].length + 1);\n const line = content[position.lineNumber - 1];\n if (position.column > line.length + 1) return new Position(position.lineNumber, line.length + 1);\n return position;\n }\n function isValidLineNumber(lineNumber, lines) {\n return lineNumber >= 1 && lineNumber <= lines.length;\n }\n /**\n * Maps a line range in the original text model to a line range in the modified text model.\n * Also contains inner range mappings.\n */\n var DetailedLineRangeMapping = class DetailedLineRangeMapping extends LineRangeMapping {\n static fromRangeMappings(rangeMappings) {\n const originalRange = LineRange.join(rangeMappings.map((r) => LineRange.fromRangeInclusive(r.originalRange)));\n const modifiedRange = LineRange.join(rangeMappings.map((r) => LineRange.fromRangeInclusive(r.modifiedRange)));\n return new DetailedLineRangeMapping(originalRange, modifiedRange, rangeMappings);\n }\n constructor(originalRange, modifiedRange, innerChanges) {\n super(originalRange, modifiedRange);\n this.innerChanges = innerChanges;\n }\n flip() {\n return new DetailedLineRangeMapping(this.modified, this.original, this.innerChanges?.map((c) => c.flip()));\n }\n withInnerChangesFromLineRanges() {\n return new DetailedLineRangeMapping(this.original, this.modified, [this.toRangeMapping()]);\n }\n };\n /**\n * Maps a range in the original text model to a range in the modified text model.\n */\n var RangeMapping = class RangeMapping {\n static fromEdit(edit) {\n const newRanges = edit.getNewRanges();\n return edit.replacements.map((e, idx) => new RangeMapping(e.range, newRanges[idx]));\n }\n static assertSorted(rangeMappings) {\n for (let i = 1; i < rangeMappings.length; i++) {\n const previous = rangeMappings[i - 1];\n const current = rangeMappings[i];\n if (!(previous.originalRange.getEndPosition().isBeforeOrEqual(current.originalRange.getStartPosition()) && previous.modifiedRange.getEndPosition().isBeforeOrEqual(current.modifiedRange.getStartPosition()))) throw new BugIndicatingError(\"Range mappings must be sorted\");\n }\n }\n constructor(originalRange, modifiedRange) {\n this.originalRange = originalRange;\n this.modifiedRange = modifiedRange;\n }\n toString() {\n return `{${this.originalRange.toString()}->${this.modifiedRange.toString()}}`;\n }\n flip() {\n return new RangeMapping(this.modifiedRange, this.originalRange);\n }\n /**\n * Creates a single text edit that describes the change from the original to the modified text.\n */\n toTextEdit(modified) {\n const newText = modified.getValueOfRange(this.modifiedRange);\n return new TextReplacement(this.originalRange, newText);\n }\n };\n function lineRangeMappingFromRangeMappings(alignments, originalLines, modifiedLines, dontAssertStartLine = false) {\n const changes = [];\n for (const g of groupAdjacentBy(alignments.map((a) => getLineRangeMapping(a, originalLines, modifiedLines)), (a1, a2) => a1.original.intersectsOrTouches(a2.original) || a1.modified.intersectsOrTouches(a2.modified))) {\n const first = g[0];\n const last = g[g.length - 1];\n changes.push(new DetailedLineRangeMapping(first.original.join(last.original), first.modified.join(last.modified), g.map((a) => a.innerChanges[0])));\n }\n assertFn(() => {\n if (!dontAssertStartLine && changes.length > 0) {\n if (changes[0].modified.startLineNumber !== changes[0].original.startLineNumber) return false;\n if (modifiedLines.length.lineCount - changes[changes.length - 1].modified.endLineNumberExclusive !== originalLines.length.lineCount - changes[changes.length - 1].original.endLineNumberExclusive) return false;\n }\n return checkAdjacentItems(changes, (m1, m2) => m2.original.startLineNumber - m1.original.endLineNumberExclusive === m2.modified.startLineNumber - m1.modified.endLineNumberExclusive && m1.original.endLineNumberExclusive < m2.original.startLineNumber && m1.modified.endLineNumberExclusive < m2.modified.startLineNumber);\n });\n return changes;\n }\n function getLineRangeMapping(rangeMapping, originalLines, modifiedLines) {\n let lineStartDelta = 0;\n let lineEndDelta = 0;\n if (rangeMapping.modifiedRange.endColumn === 1 && rangeMapping.originalRange.endColumn === 1 && rangeMapping.originalRange.startLineNumber + lineStartDelta <= rangeMapping.originalRange.endLineNumber && rangeMapping.modifiedRange.startLineNumber + lineStartDelta <= rangeMapping.modifiedRange.endLineNumber) lineEndDelta = -1;\n if (rangeMapping.modifiedRange.startColumn - 1 >= modifiedLines.getLineLength(rangeMapping.modifiedRange.startLineNumber) && rangeMapping.originalRange.startColumn - 1 >= originalLines.getLineLength(rangeMapping.originalRange.startLineNumber) && rangeMapping.originalRange.startLineNumber <= rangeMapping.originalRange.endLineNumber + lineEndDelta && rangeMapping.modifiedRange.startLineNumber <= rangeMapping.modifiedRange.endLineNumber + lineEndDelta) lineStartDelta = 1;\n return new DetailedLineRangeMapping(new LineRange(rangeMapping.originalRange.startLineNumber + lineStartDelta, rangeMapping.originalRange.endLineNumber + 1 + lineEndDelta), new LineRange(rangeMapping.modifiedRange.startLineNumber + lineStartDelta, rangeMapping.modifiedRange.endLineNumber + 1 + lineEndDelta), [rangeMapping]);\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/legacyLinesDiffComputer.js\n const MINIMUM_MATCHING_CHARACTER_LENGTH = 3;\n var LegacyLinesDiffComputer = class {\n computeDiff(originalLines, modifiedLines, options) {\n const result = new DiffComputer(originalLines, modifiedLines, {\n maxComputationTime: options.maxComputationTimeMs,\n shouldIgnoreTrimWhitespace: options.ignoreTrimWhitespace,\n shouldComputeCharChanges: true,\n shouldMakePrettyDiff: true,\n shouldPostProcessCharChanges: true\n }).computeDiff();\n const changes = [];\n let lastChange = null;\n for (const c of result.changes) {\n let originalRange;\n if (c.originalEndLineNumber === 0) originalRange = new LineRange(c.originalStartLineNumber + 1, c.originalStartLineNumber + 1);\n else originalRange = new LineRange(c.originalStartLineNumber, c.originalEndLineNumber + 1);\n let modifiedRange;\n if (c.modifiedEndLineNumber === 0) modifiedRange = new LineRange(c.modifiedStartLineNumber + 1, c.modifiedStartLineNumber + 1);\n else modifiedRange = new LineRange(c.modifiedStartLineNumber, c.modifiedEndLineNumber + 1);\n let change = new DetailedLineRangeMapping(originalRange, modifiedRange, c.charChanges?.map((c) => new RangeMapping(new Range(c.originalStartLineNumber, c.originalStartColumn, c.originalEndLineNumber, c.originalEndColumn), new Range(c.modifiedStartLineNumber, c.modifiedStartColumn, c.modifiedEndLineNumber, c.modifiedEndColumn))));\n if (lastChange) {\n if (lastChange.modified.endLineNumberExclusive === change.modified.startLineNumber || lastChange.original.endLineNumberExclusive === change.original.startLineNumber) {\n change = new DetailedLineRangeMapping(lastChange.original.join(change.original), lastChange.modified.join(change.modified), lastChange.innerChanges && change.innerChanges ? lastChange.innerChanges.concat(change.innerChanges) : void 0);\n changes.pop();\n }\n }\n changes.push(change);\n lastChange = change;\n }\n assertFn(() => {\n return checkAdjacentItems(changes, (m1, m2) => m2.original.startLineNumber - m1.original.endLineNumberExclusive === m2.modified.startLineNumber - m1.modified.endLineNumberExclusive && m1.original.endLineNumberExclusive < m2.original.startLineNumber && m1.modified.endLineNumberExclusive < m2.modified.startLineNumber);\n });\n return new LinesDiff(changes, [], result.quitEarly);\n }\n };\n function computeDiff(originalSequence, modifiedSequence, continueProcessingPredicate, pretty) {\n return new LcsDiff(originalSequence, modifiedSequence, continueProcessingPredicate).ComputeDiff(pretty);\n }\n var LineSequence$1 = class {\n constructor(lines) {\n const startColumns = [];\n const endColumns = [];\n for (let i = 0, length = lines.length; i < length; i++) {\n startColumns[i] = getFirstNonBlankColumn(lines[i], 1);\n endColumns[i] = getLastNonBlankColumn(lines[i], 1);\n }\n this.lines = lines;\n this._startColumns = startColumns;\n this._endColumns = endColumns;\n }\n getElements() {\n const elements = [];\n for (let i = 0, len = this.lines.length; i < len; i++) elements[i] = this.lines[i].substring(this._startColumns[i] - 1, this._endColumns[i] - 1);\n return elements;\n }\n getStrictElement(index) {\n return this.lines[index];\n }\n getStartLineNumber(i) {\n return i + 1;\n }\n getEndLineNumber(i) {\n return i + 1;\n }\n createCharSequence(shouldIgnoreTrimWhitespace, startIndex, endIndex) {\n const charCodes = [];\n const lineNumbers = [];\n const columns = [];\n let len = 0;\n for (let index = startIndex; index <= endIndex; index++) {\n const lineContent = this.lines[index];\n const startColumn = shouldIgnoreTrimWhitespace ? this._startColumns[index] : 1;\n const endColumn = shouldIgnoreTrimWhitespace ? this._endColumns[index] : lineContent.length + 1;\n for (let col = startColumn; col < endColumn; col++) {\n charCodes[len] = lineContent.charCodeAt(col - 1);\n lineNumbers[len] = index + 1;\n columns[len] = col;\n len++;\n }\n if (!shouldIgnoreTrimWhitespace && index < endIndex) {\n charCodes[len] = 10;\n lineNumbers[len] = index + 1;\n columns[len] = lineContent.length + 1;\n len++;\n }\n }\n return new CharSequence(charCodes, lineNumbers, columns);\n }\n };\n var CharSequence = class {\n constructor(charCodes, lineNumbers, columns) {\n this._charCodes = charCodes;\n this._lineNumbers = lineNumbers;\n this._columns = columns;\n }\n toString() {\n return \"[\" + this._charCodes.map((s, idx) => (s === 10 ? \"\\\\n\" : String.fromCharCode(s)) + `-(${this._lineNumbers[idx]},${this._columns[idx]})`).join(\", \") + \"]\";\n }\n _assertIndex(index, arr) {\n if (index < 0 || index >= arr.length) throw new Error(`Illegal index`);\n }\n getElements() {\n return this._charCodes;\n }\n getStartLineNumber(i) {\n if (i > 0 && i === this._lineNumbers.length) return this.getEndLineNumber(i - 1);\n this._assertIndex(i, this._lineNumbers);\n return this._lineNumbers[i];\n }\n getEndLineNumber(i) {\n if (i === -1) return this.getStartLineNumber(i + 1);\n this._assertIndex(i, this._lineNumbers);\n if (this._charCodes[i] === 10) return this._lineNumbers[i] + 1;\n return this._lineNumbers[i];\n }\n getStartColumn(i) {\n if (i > 0 && i === this._columns.length) return this.getEndColumn(i - 1);\n this._assertIndex(i, this._columns);\n return this._columns[i];\n }\n getEndColumn(i) {\n if (i === -1) return this.getStartColumn(i + 1);\n this._assertIndex(i, this._columns);\n if (this._charCodes[i] === 10) return 1;\n return this._columns[i] + 1;\n }\n };\n var CharChange = class CharChange {\n constructor(originalStartLineNumber, originalStartColumn, originalEndLineNumber, originalEndColumn, modifiedStartLineNumber, modifiedStartColumn, modifiedEndLineNumber, modifiedEndColumn) {\n this.originalStartLineNumber = originalStartLineNumber;\n this.originalStartColumn = originalStartColumn;\n this.originalEndLineNumber = originalEndLineNumber;\n this.originalEndColumn = originalEndColumn;\n this.modifiedStartLineNumber = modifiedStartLineNumber;\n this.modifiedStartColumn = modifiedStartColumn;\n this.modifiedEndLineNumber = modifiedEndLineNumber;\n this.modifiedEndColumn = modifiedEndColumn;\n }\n static createFromDiffChange(diffChange, originalCharSequence, modifiedCharSequence) {\n const originalStartLineNumber = originalCharSequence.getStartLineNumber(diffChange.originalStart);\n const originalStartColumn = originalCharSequence.getStartColumn(diffChange.originalStart);\n const originalEndLineNumber = originalCharSequence.getEndLineNumber(diffChange.originalStart + diffChange.originalLength - 1);\n const originalEndColumn = originalCharSequence.getEndColumn(diffChange.originalStart + diffChange.originalLength - 1);\n const modifiedStartLineNumber = modifiedCharSequence.getStartLineNumber(diffChange.modifiedStart);\n const modifiedStartColumn = modifiedCharSequence.getStartColumn(diffChange.modifiedStart);\n const modifiedEndLineNumber = modifiedCharSequence.getEndLineNumber(diffChange.modifiedStart + diffChange.modifiedLength - 1);\n const modifiedEndColumn = modifiedCharSequence.getEndColumn(diffChange.modifiedStart + diffChange.modifiedLength - 1);\n return new CharChange(originalStartLineNumber, originalStartColumn, originalEndLineNumber, originalEndColumn, modifiedStartLineNumber, modifiedStartColumn, modifiedEndLineNumber, modifiedEndColumn);\n }\n };\n function postProcessCharChanges(rawChanges) {\n if (rawChanges.length <= 1) return rawChanges;\n const result = [rawChanges[0]];\n let prevChange = result[0];\n for (let i = 1, len = rawChanges.length; i < len; i++) {\n const currChange = rawChanges[i];\n const originalMatchingLength = currChange.originalStart - (prevChange.originalStart + prevChange.originalLength);\n const modifiedMatchingLength = currChange.modifiedStart - (prevChange.modifiedStart + prevChange.modifiedLength);\n if (Math.min(originalMatchingLength, modifiedMatchingLength) < MINIMUM_MATCHING_CHARACTER_LENGTH) {\n prevChange.originalLength = currChange.originalStart + currChange.originalLength - prevChange.originalStart;\n prevChange.modifiedLength = currChange.modifiedStart + currChange.modifiedLength - prevChange.modifiedStart;\n } else {\n result.push(currChange);\n prevChange = currChange;\n }\n }\n return result;\n }\n var LineChange = class LineChange {\n constructor(originalStartLineNumber, originalEndLineNumber, modifiedStartLineNumber, modifiedEndLineNumber, charChanges) {\n this.originalStartLineNumber = originalStartLineNumber;\n this.originalEndLineNumber = originalEndLineNumber;\n this.modifiedStartLineNumber = modifiedStartLineNumber;\n this.modifiedEndLineNumber = modifiedEndLineNumber;\n this.charChanges = charChanges;\n }\n static createFromDiffResult(shouldIgnoreTrimWhitespace, diffChange, originalLineSequence, modifiedLineSequence, continueCharDiff, shouldComputeCharChanges, shouldPostProcessCharChanges) {\n let originalStartLineNumber;\n let originalEndLineNumber;\n let modifiedStartLineNumber;\n let modifiedEndLineNumber;\n let charChanges = void 0;\n if (diffChange.originalLength === 0) {\n originalStartLineNumber = originalLineSequence.getStartLineNumber(diffChange.originalStart) - 1;\n originalEndLineNumber = 0;\n } else {\n originalStartLineNumber = originalLineSequence.getStartLineNumber(diffChange.originalStart);\n originalEndLineNumber = originalLineSequence.getEndLineNumber(diffChange.originalStart + diffChange.originalLength - 1);\n }\n if (diffChange.modifiedLength === 0) {\n modifiedStartLineNumber = modifiedLineSequence.getStartLineNumber(diffChange.modifiedStart) - 1;\n modifiedEndLineNumber = 0;\n } else {\n modifiedStartLineNumber = modifiedLineSequence.getStartLineNumber(diffChange.modifiedStart);\n modifiedEndLineNumber = modifiedLineSequence.getEndLineNumber(diffChange.modifiedStart + diffChange.modifiedLength - 1);\n }\n if (shouldComputeCharChanges && diffChange.originalLength > 0 && diffChange.originalLength < 20 && diffChange.modifiedLength > 0 && diffChange.modifiedLength < 20 && continueCharDiff()) {\n const originalCharSequence = originalLineSequence.createCharSequence(shouldIgnoreTrimWhitespace, diffChange.originalStart, diffChange.originalStart + diffChange.originalLength - 1);\n const modifiedCharSequence = modifiedLineSequence.createCharSequence(shouldIgnoreTrimWhitespace, diffChange.modifiedStart, diffChange.modifiedStart + diffChange.modifiedLength - 1);\n if (originalCharSequence.getElements().length > 0 && modifiedCharSequence.getElements().length > 0) {\n let rawChanges = computeDiff(originalCharSequence, modifiedCharSequence, continueCharDiff, true).changes;\n if (shouldPostProcessCharChanges) rawChanges = postProcessCharChanges(rawChanges);\n charChanges = [];\n for (let i = 0, length = rawChanges.length; i < length; i++) charChanges.push(CharChange.createFromDiffChange(rawChanges[i], originalCharSequence, modifiedCharSequence));\n }\n }\n return new LineChange(originalStartLineNumber, originalEndLineNumber, modifiedStartLineNumber, modifiedEndLineNumber, charChanges);\n }\n };\n var DiffComputer = class {\n constructor(originalLines, modifiedLines, opts) {\n this.shouldComputeCharChanges = opts.shouldComputeCharChanges;\n this.shouldPostProcessCharChanges = opts.shouldPostProcessCharChanges;\n this.shouldIgnoreTrimWhitespace = opts.shouldIgnoreTrimWhitespace;\n this.shouldMakePrettyDiff = opts.shouldMakePrettyDiff;\n this.originalLines = originalLines;\n this.modifiedLines = modifiedLines;\n this.original = new LineSequence$1(originalLines);\n this.modified = new LineSequence$1(modifiedLines);\n this.continueLineDiff = createContinueProcessingPredicate(opts.maxComputationTime);\n this.continueCharDiff = createContinueProcessingPredicate(opts.maxComputationTime === 0 ? 0 : Math.min(opts.maxComputationTime, 5e3));\n }\n computeDiff() {\n if (this.original.lines.length === 1 && this.original.lines[0].length === 0) {\n if (this.modified.lines.length === 1 && this.modified.lines[0].length === 0) return {\n quitEarly: false,\n changes: []\n };\n return {\n quitEarly: false,\n changes: [{\n originalStartLineNumber: 1,\n originalEndLineNumber: 1,\n modifiedStartLineNumber: 1,\n modifiedEndLineNumber: this.modified.lines.length,\n charChanges: void 0\n }]\n };\n }\n if (this.modified.lines.length === 1 && this.modified.lines[0].length === 0) return {\n quitEarly: false,\n changes: [{\n originalStartLineNumber: 1,\n originalEndLineNumber: this.original.lines.length,\n modifiedStartLineNumber: 1,\n modifiedEndLineNumber: 1,\n charChanges: void 0\n }]\n };\n const diffResult = computeDiff(this.original, this.modified, this.continueLineDiff, this.shouldMakePrettyDiff);\n const rawChanges = diffResult.changes;\n const quitEarly = diffResult.quitEarly;\n if (this.shouldIgnoreTrimWhitespace) {\n const lineChanges = [];\n for (let i = 0, length = rawChanges.length; i < length; i++) lineChanges.push(LineChange.createFromDiffResult(this.shouldIgnoreTrimWhitespace, rawChanges[i], this.original, this.modified, this.continueCharDiff, this.shouldComputeCharChanges, this.shouldPostProcessCharChanges));\n return {\n quitEarly,\n changes: lineChanges\n };\n }\n const result = [];\n let originalLineIndex = 0;\n let modifiedLineIndex = 0;\n for (let i = -1, len = rawChanges.length; i < len; i++) {\n const nextChange = i + 1 < len ? rawChanges[i + 1] : null;\n const originalStop = nextChange ? nextChange.originalStart : this.originalLines.length;\n const modifiedStop = nextChange ? nextChange.modifiedStart : this.modifiedLines.length;\n while (originalLineIndex < originalStop && modifiedLineIndex < modifiedStop) {\n const originalLine = this.originalLines[originalLineIndex];\n const modifiedLine = this.modifiedLines[modifiedLineIndex];\n if (originalLine !== modifiedLine) {\n {\n let originalStartColumn = getFirstNonBlankColumn(originalLine, 1);\n let modifiedStartColumn = getFirstNonBlankColumn(modifiedLine, 1);\n while (originalStartColumn > 1 && modifiedStartColumn > 1) {\n if (originalLine.charCodeAt(originalStartColumn - 2) !== modifiedLine.charCodeAt(modifiedStartColumn - 2)) break;\n originalStartColumn--;\n modifiedStartColumn--;\n }\n if (originalStartColumn > 1 || modifiedStartColumn > 1) this._pushTrimWhitespaceCharChange(result, originalLineIndex + 1, 1, originalStartColumn, modifiedLineIndex + 1, 1, modifiedStartColumn);\n }\n {\n let originalEndColumn = getLastNonBlankColumn(originalLine, 1);\n let modifiedEndColumn = getLastNonBlankColumn(modifiedLine, 1);\n const originalMaxColumn = originalLine.length + 1;\n const modifiedMaxColumn = modifiedLine.length + 1;\n while (originalEndColumn < originalMaxColumn && modifiedEndColumn < modifiedMaxColumn) {\n if (originalLine.charCodeAt(originalEndColumn - 1) !== originalLine.charCodeAt(modifiedEndColumn - 1)) break;\n originalEndColumn++;\n modifiedEndColumn++;\n }\n if (originalEndColumn < originalMaxColumn || modifiedEndColumn < modifiedMaxColumn) this._pushTrimWhitespaceCharChange(result, originalLineIndex + 1, originalEndColumn, originalMaxColumn, modifiedLineIndex + 1, modifiedEndColumn, modifiedMaxColumn);\n }\n }\n originalLineIndex++;\n modifiedLineIndex++;\n }\n if (nextChange) {\n result.push(LineChange.createFromDiffResult(this.shouldIgnoreTrimWhitespace, nextChange, this.original, this.modified, this.continueCharDiff, this.shouldComputeCharChanges, this.shouldPostProcessCharChanges));\n originalLineIndex += nextChange.originalLength;\n modifiedLineIndex += nextChange.modifiedLength;\n }\n }\n return {\n quitEarly,\n changes: result\n };\n }\n _pushTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn) {\n if (this._mergeTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn)) return;\n let charChanges = void 0;\n if (this.shouldComputeCharChanges) charChanges = [new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn)];\n result.push(new LineChange(originalLineNumber, originalLineNumber, modifiedLineNumber, modifiedLineNumber, charChanges));\n }\n _mergeTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn) {\n const len = result.length;\n if (len === 0) return false;\n const prevChange = result[len - 1];\n if (prevChange.originalEndLineNumber === 0 || prevChange.modifiedEndLineNumber === 0) return false;\n if (prevChange.originalEndLineNumber === originalLineNumber && prevChange.modifiedEndLineNumber === modifiedLineNumber) {\n if (this.shouldComputeCharChanges && prevChange.charChanges) prevChange.charChanges.push(new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn));\n return true;\n }\n if (prevChange.originalEndLineNumber + 1 === originalLineNumber && prevChange.modifiedEndLineNumber + 1 === modifiedLineNumber) {\n prevChange.originalEndLineNumber = originalLineNumber;\n prevChange.modifiedEndLineNumber = modifiedLineNumber;\n if (this.shouldComputeCharChanges && prevChange.charChanges) prevChange.charChanges.push(new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn));\n return true;\n }\n return false;\n }\n };\n function getFirstNonBlankColumn(txt, defaultValue) {\n const r = firstNonWhitespaceIndex(txt);\n if (r === -1) return defaultValue;\n return r + 1;\n }\n function getLastNonBlankColumn(txt, defaultValue) {\n const r = lastNonWhitespaceIndex(txt);\n if (r === -1) return defaultValue;\n return r + 2;\n }\n function createContinueProcessingPredicate(maximumRuntime) {\n if (maximumRuntime === 0) return () => true;\n const startTime = Date.now();\n return () => {\n return Date.now() - startTime < maximumRuntime;\n };\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/defaultLinesDiffComputer/algorithms/diffAlgorithm.js\n var DiffAlgorithmResult = class DiffAlgorithmResult {\n static trivial(seq1, seq2) {\n return new DiffAlgorithmResult([new SequenceDiff(OffsetRange.ofLength(seq1.length), OffsetRange.ofLength(seq2.length))], false);\n }\n static trivialTimedOut(seq1, seq2) {\n return new DiffAlgorithmResult([new SequenceDiff(OffsetRange.ofLength(seq1.length), OffsetRange.ofLength(seq2.length))], true);\n }\n constructor(diffs, hitTimeout) {\n this.diffs = diffs;\n this.hitTimeout = hitTimeout;\n }\n };\n var SequenceDiff = class SequenceDiff {\n static invert(sequenceDiffs, doc1Length) {\n const result = [];\n forEachAdjacent(sequenceDiffs, (a, b) => {\n result.push(SequenceDiff.fromOffsetPairs(a ? a.getEndExclusives() : OffsetPair.zero, b ? b.getStarts() : new OffsetPair(doc1Length, (a ? a.seq2Range.endExclusive - a.seq1Range.endExclusive : 0) + doc1Length)));\n });\n return result;\n }\n static fromOffsetPairs(start, endExclusive) {\n return new SequenceDiff(new OffsetRange(start.offset1, endExclusive.offset1), new OffsetRange(start.offset2, endExclusive.offset2));\n }\n static assertSorted(sequenceDiffs) {\n let last = void 0;\n for (const cur of sequenceDiffs) {\n if (last) {\n if (!(last.seq1Range.endExclusive <= cur.seq1Range.start && last.seq2Range.endExclusive <= cur.seq2Range.start)) throw new BugIndicatingError(\"Sequence diffs must be sorted\");\n }\n last = cur;\n }\n }\n constructor(seq1Range, seq2Range) {\n this.seq1Range = seq1Range;\n this.seq2Range = seq2Range;\n }\n swap() {\n return new SequenceDiff(this.seq2Range, this.seq1Range);\n }\n toString() {\n return `${this.seq1Range} <-> ${this.seq2Range}`;\n }\n join(other) {\n return new SequenceDiff(this.seq1Range.join(other.seq1Range), this.seq2Range.join(other.seq2Range));\n }\n delta(offset) {\n if (offset === 0) return this;\n return new SequenceDiff(this.seq1Range.delta(offset), this.seq2Range.delta(offset));\n }\n deltaStart(offset) {\n if (offset === 0) return this;\n return new SequenceDiff(this.seq1Range.deltaStart(offset), this.seq2Range.deltaStart(offset));\n }\n deltaEnd(offset) {\n if (offset === 0) return this;\n return new SequenceDiff(this.seq1Range.deltaEnd(offset), this.seq2Range.deltaEnd(offset));\n }\n intersect(other) {\n const i1 = this.seq1Range.intersect(other.seq1Range);\n const i2 = this.seq2Range.intersect(other.seq2Range);\n if (!i1 || !i2) return;\n return new SequenceDiff(i1, i2);\n }\n getStarts() {\n return new OffsetPair(this.seq1Range.start, this.seq2Range.start);\n }\n getEndExclusives() {\n return new OffsetPair(this.seq1Range.endExclusive, this.seq2Range.endExclusive);\n }\n };\n var OffsetPair = class OffsetPair {\n static {\n this.zero = new OffsetPair(0, 0);\n }\n static {\n this.max = new OffsetPair(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);\n }\n constructor(offset1, offset2) {\n this.offset1 = offset1;\n this.offset2 = offset2;\n }\n toString() {\n return `${this.offset1} <-> ${this.offset2}`;\n }\n delta(offset) {\n if (offset === 0) return this;\n return new OffsetPair(this.offset1 + offset, this.offset2 + offset);\n }\n equals(other) {\n return this.offset1 === other.offset1 && this.offset2 === other.offset2;\n }\n };\n var InfiniteTimeout = class InfiniteTimeout {\n static {\n this.instance = new InfiniteTimeout();\n }\n isValid() {\n return true;\n }\n };\n var DateTimeout = class {\n constructor(timeout) {\n this.timeout = timeout;\n this.startTime = Date.now();\n this.valid = true;\n if (timeout <= 0) throw new BugIndicatingError(\"timeout must be positive\");\n }\n isValid() {\n if (!(Date.now() - this.startTime < this.timeout) && this.valid) this.valid = false;\n return this.valid;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/defaultLinesDiffComputer/utils.js\n var Array2D = class {\n constructor(width, height) {\n this.width = width;\n this.height = height;\n this.array = [];\n this.array = new Array(width * height);\n }\n get(x, y) {\n return this.array[x + y * this.width];\n }\n set(x, y, value) {\n this.array[x + y * this.width] = value;\n }\n };\n function isSpace(charCode) {\n return charCode === 32 || charCode === 9;\n }\n var LineRangeFragment = class LineRangeFragment {\n static {\n this.chrKeys = /* @__PURE__ */ new Map();\n }\n static getKey(chr) {\n let key = this.chrKeys.get(chr);\n if (key === void 0) {\n key = this.chrKeys.size;\n this.chrKeys.set(chr, key);\n }\n return key;\n }\n constructor(range, lines, source) {\n this.range = range;\n this.lines = lines;\n this.source = source;\n this.histogram = [];\n let counter = 0;\n for (let i = range.startLineNumber - 1; i < range.endLineNumberExclusive - 1; i++) {\n const line = lines[i];\n for (let j = 0; j < line.length; j++) {\n counter++;\n const chr = line[j];\n const key = LineRangeFragment.getKey(chr);\n this.histogram[key] = (this.histogram[key] || 0) + 1;\n }\n counter++;\n const key = LineRangeFragment.getKey(\"\\n\");\n this.histogram[key] = (this.histogram[key] || 0) + 1;\n }\n this.totalCount = counter;\n }\n computeSimilarity(other) {\n let sumDifferences = 0;\n const maxLength = Math.max(this.histogram.length, other.histogram.length);\n for (let i = 0; i < maxLength; i++) sumDifferences += Math.abs((this.histogram[i] ?? 0) - (other.histogram[i] ?? 0));\n return 1 - sumDifferences / (this.totalCount + other.totalCount);\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/defaultLinesDiffComputer/algorithms/dynamicProgrammingDiffing.js\n /**\n * A O(MN) diffing algorithm that supports a score function.\n * The algorithm can be improved by processing the 2d array diagonally.\n */\n var DynamicProgrammingDiffing = class {\n compute(sequence1, sequence2, timeout = InfiniteTimeout.instance, equalityScore) {\n if (sequence1.length === 0 || sequence2.length === 0) return DiffAlgorithmResult.trivial(sequence1, sequence2);\n /**\n * lcsLengths.get(i, j): Length of the longest common subsequence of sequence1.substring(0, i + 1) and sequence2.substring(0, j + 1).\n */\n const lcsLengths = new Array2D(sequence1.length, sequence2.length);\n const directions = new Array2D(sequence1.length, sequence2.length);\n const lengths = new Array2D(sequence1.length, sequence2.length);\n for (let s1 = 0; s1 < sequence1.length; s1++) for (let s2 = 0; s2 < sequence2.length; s2++) {\n if (!timeout.isValid()) return DiffAlgorithmResult.trivialTimedOut(sequence1, sequence2);\n const horizontalLen = s1 === 0 ? 0 : lcsLengths.get(s1 - 1, s2);\n const verticalLen = s2 === 0 ? 0 : lcsLengths.get(s1, s2 - 1);\n let extendedSeqScore;\n if (sequence1.getElement(s1) === sequence2.getElement(s2)) {\n if (s1 === 0 || s2 === 0) extendedSeqScore = 0;\n else extendedSeqScore = lcsLengths.get(s1 - 1, s2 - 1);\n if (s1 > 0 && s2 > 0 && directions.get(s1 - 1, s2 - 1) === 3) extendedSeqScore += lengths.get(s1 - 1, s2 - 1);\n extendedSeqScore += equalityScore ? equalityScore(s1, s2) : 1;\n } else extendedSeqScore = -1;\n const newValue = Math.max(horizontalLen, verticalLen, extendedSeqScore);\n if (newValue === extendedSeqScore) {\n const prevLen = s1 > 0 && s2 > 0 ? lengths.get(s1 - 1, s2 - 1) : 0;\n lengths.set(s1, s2, prevLen + 1);\n directions.set(s1, s2, 3);\n } else if (newValue === horizontalLen) {\n lengths.set(s1, s2, 0);\n directions.set(s1, s2, 1);\n } else if (newValue === verticalLen) {\n lengths.set(s1, s2, 0);\n directions.set(s1, s2, 2);\n }\n lcsLengths.set(s1, s2, newValue);\n }\n const result = [];\n let lastAligningPosS1 = sequence1.length;\n let lastAligningPosS2 = sequence2.length;\n function reportDecreasingAligningPositions(s1, s2) {\n if (s1 + 1 !== lastAligningPosS1 || s2 + 1 !== lastAligningPosS2) result.push(new SequenceDiff(new OffsetRange(s1 + 1, lastAligningPosS1), new OffsetRange(s2 + 1, lastAligningPosS2)));\n lastAligningPosS1 = s1;\n lastAligningPosS2 = s2;\n }\n let s1 = sequence1.length - 1;\n let s2 = sequence2.length - 1;\n while (s1 >= 0 && s2 >= 0) if (directions.get(s1, s2) === 3) {\n reportDecreasingAligningPositions(s1, s2);\n s1--;\n s2--;\n } else if (directions.get(s1, s2) === 1) s1--;\n else s2--;\n reportDecreasingAligningPositions(-1, -1);\n result.reverse();\n return new DiffAlgorithmResult(result, false);\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/defaultLinesDiffComputer/algorithms/myersDiffAlgorithm.js\n /**\n * An O(ND) diff algorithm that has a quadratic space worst-case complexity.\n */\n var MyersDiffAlgorithm = class {\n compute(seq1, seq2, timeout = InfiniteTimeout.instance) {\n if (seq1.length === 0 || seq2.length === 0) return DiffAlgorithmResult.trivial(seq1, seq2);\n const seqX = seq1;\n const seqY = seq2;\n function getXAfterSnake(x, y) {\n while (x < seqX.length && y < seqY.length && seqX.getElement(x) === seqY.getElement(y)) {\n x++;\n y++;\n }\n return x;\n }\n let d = 0;\n const V = new FastInt32Array();\n V.set(0, getXAfterSnake(0, 0));\n const paths = new FastArrayNegativeIndices();\n paths.set(0, V.get(0) === 0 ? null : new SnakePath(null, 0, 0, V.get(0)));\n let k = 0;\n loop: while (true) {\n d++;\n if (!timeout.isValid()) return DiffAlgorithmResult.trivialTimedOut(seqX, seqY);\n const lowerBound = -Math.min(d, seqY.length + d % 2);\n const upperBound = Math.min(d, seqX.length + d % 2);\n for (k = lowerBound; k <= upperBound; k += 2) {\n const maxXofDLineTop = k === upperBound ? -1 : V.get(k + 1);\n const maxXofDLineLeft = k === lowerBound ? -1 : V.get(k - 1) + 1;\n const x = Math.min(Math.max(maxXofDLineTop, maxXofDLineLeft), seqX.length);\n const y = x - k;\n if (x > seqX.length || y > seqY.length) continue;\n const newMaxX = getXAfterSnake(x, y);\n V.set(k, newMaxX);\n const lastPath = x === maxXofDLineTop ? paths.get(k + 1) : paths.get(k - 1);\n paths.set(k, newMaxX !== x ? new SnakePath(lastPath, x, y, newMaxX - x) : lastPath);\n if (V.get(k) === seqX.length && V.get(k) - k === seqY.length) break loop;\n }\n }\n let path = paths.get(k);\n const result = [];\n let lastAligningPosS1 = seqX.length;\n let lastAligningPosS2 = seqY.length;\n while (true) {\n const endX = path ? path.x + path.length : 0;\n const endY = path ? path.y + path.length : 0;\n if (endX !== lastAligningPosS1 || endY !== lastAligningPosS2) result.push(new SequenceDiff(new OffsetRange(endX, lastAligningPosS1), new OffsetRange(endY, lastAligningPosS2)));\n if (!path) break;\n lastAligningPosS1 = path.x;\n lastAligningPosS2 = path.y;\n path = path.prev;\n }\n result.reverse();\n return new DiffAlgorithmResult(result, false);\n }\n };\n var SnakePath = class {\n constructor(prev, x, y, length) {\n this.prev = prev;\n this.x = x;\n this.y = y;\n this.length = length;\n }\n };\n /**\n * An array that supports fast negative indices.\n */\n var FastInt32Array = class {\n constructor() {\n this.positiveArr = /* @__PURE__ */ new Int32Array(10);\n this.negativeArr = /* @__PURE__ */ new Int32Array(10);\n }\n get(idx) {\n if (idx < 0) {\n idx = -idx - 1;\n return this.negativeArr[idx];\n } else return this.positiveArr[idx];\n }\n set(idx, value) {\n if (idx < 0) {\n idx = -idx - 1;\n if (idx >= this.negativeArr.length) {\n const arr = this.negativeArr;\n this.negativeArr = new Int32Array(arr.length * 2);\n this.negativeArr.set(arr);\n }\n this.negativeArr[idx] = value;\n } else {\n if (idx >= this.positiveArr.length) {\n const arr = this.positiveArr;\n this.positiveArr = new Int32Array(arr.length * 2);\n this.positiveArr.set(arr);\n }\n this.positiveArr[idx] = value;\n }\n }\n };\n /**\n * An array that supports fast negative indices.\n */\n var FastArrayNegativeIndices = class {\n constructor() {\n this.positiveArr = [];\n this.negativeArr = [];\n }\n get(idx) {\n if (idx < 0) {\n idx = -idx - 1;\n return this.negativeArr[idx];\n } else return this.positiveArr[idx];\n }\n set(idx, value) {\n if (idx < 0) {\n idx = -idx - 1;\n this.negativeArr[idx] = value;\n } else this.positiveArr[idx] = value;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/defaultLinesDiffComputer/linesSliceCharSequence.js\n var LinesSliceCharSequence = class {\n constructor(lines, range, considerWhitespaceChanges) {\n this.lines = lines;\n this.range = range;\n this.considerWhitespaceChanges = considerWhitespaceChanges;\n this.elements = [];\n this.firstElementOffsetByLineIdx = [];\n this.lineStartOffsets = [];\n this.trimmedWsLengthsByLineIdx = [];\n this.firstElementOffsetByLineIdx.push(0);\n for (let lineNumber = this.range.startLineNumber; lineNumber <= this.range.endLineNumber; lineNumber++) {\n let line = lines[lineNumber - 1];\n let lineStartOffset = 0;\n if (lineNumber === this.range.startLineNumber && this.range.startColumn > 1) {\n lineStartOffset = this.range.startColumn - 1;\n line = line.substring(lineStartOffset);\n }\n this.lineStartOffsets.push(lineStartOffset);\n let trimmedWsLength = 0;\n if (!considerWhitespaceChanges) {\n const trimmedStartLine = line.trimStart();\n trimmedWsLength = line.length - trimmedStartLine.length;\n line = trimmedStartLine.trimEnd();\n }\n this.trimmedWsLengthsByLineIdx.push(trimmedWsLength);\n const lineLength = lineNumber === this.range.endLineNumber ? Math.min(this.range.endColumn - 1 - lineStartOffset - trimmedWsLength, line.length) : line.length;\n for (let i = 0; i < lineLength; i++) this.elements.push(line.charCodeAt(i));\n if (lineNumber < this.range.endLineNumber) {\n this.elements.push(\"\\n\".charCodeAt(0));\n this.firstElementOffsetByLineIdx.push(this.elements.length);\n }\n }\n }\n toString() {\n return `Slice: \"${this.text}\"`;\n }\n get text() {\n return this.getText(new OffsetRange(0, this.length));\n }\n getText(range) {\n return this.elements.slice(range.start, range.endExclusive).map((e) => String.fromCharCode(e)).join(\"\");\n }\n getElement(offset) {\n return this.elements[offset];\n }\n get length() {\n return this.elements.length;\n }\n getBoundaryScore(length) {\n const prevCategory = getCategory(length > 0 ? this.elements[length - 1] : -1);\n const nextCategory = getCategory(length < this.elements.length ? this.elements[length] : -1);\n if (prevCategory === 7 && nextCategory === 8) return 0;\n if (prevCategory === 8) return 150;\n let score = 0;\n if (prevCategory !== nextCategory) {\n score += 10;\n if (prevCategory === 0 && nextCategory === 1) score += 1;\n }\n score += getCategoryBoundaryScore(prevCategory);\n score += getCategoryBoundaryScore(nextCategory);\n return score;\n }\n translateOffset(offset, preference = \"right\") {\n const i = findLastIdxMonotonous(this.firstElementOffsetByLineIdx, (value) => value <= offset);\n const lineOffset = offset - this.firstElementOffsetByLineIdx[i];\n return new Position(this.range.startLineNumber + i, 1 + this.lineStartOffsets[i] + lineOffset + (lineOffset === 0 && preference === \"left\" ? 0 : this.trimmedWsLengthsByLineIdx[i]));\n }\n translateRange(range) {\n const pos1 = this.translateOffset(range.start, \"right\");\n const pos2 = this.translateOffset(range.endExclusive, \"left\");\n if (pos2.isBefore(pos1)) return Range.fromPositions(pos2, pos2);\n return Range.fromPositions(pos1, pos2);\n }\n /**\n * Finds the word that contains the character at the given offset\n */\n findWordContaining(offset) {\n if (offset < 0 || offset >= this.elements.length) return;\n if (!isWordChar(this.elements[offset])) return;\n let start = offset;\n while (start > 0 && isWordChar(this.elements[start - 1])) start--;\n let end = offset;\n while (end < this.elements.length && isWordChar(this.elements[end])) end++;\n return new OffsetRange(start, end);\n }\n /** fooBar has the two sub-words foo and bar */\n findSubWordContaining(offset) {\n if (offset < 0 || offset >= this.elements.length) return;\n if (!isWordChar(this.elements[offset])) return;\n let start = offset;\n while (start > 0 && isWordChar(this.elements[start - 1]) && !isUpperCase(this.elements[start])) start--;\n let end = offset;\n while (end < this.elements.length && isWordChar(this.elements[end]) && !isUpperCase(this.elements[end])) end++;\n return new OffsetRange(start, end);\n }\n countLinesIn(range) {\n return this.translateOffset(range.endExclusive).lineNumber - this.translateOffset(range.start).lineNumber;\n }\n isStronglyEqual(offset1, offset2) {\n return this.elements[offset1] === this.elements[offset2];\n }\n extendToFullLines(range) {\n return new OffsetRange(findLastMonotonous(this.firstElementOffsetByLineIdx, (x) => x <= range.start) ?? 0, findFirstMonotonous(this.firstElementOffsetByLineIdx, (x) => range.endExclusive <= x) ?? this.elements.length);\n }\n };\n function isWordChar(charCode) {\n return charCode >= 97 && charCode <= 122 || charCode >= 65 && charCode <= 90 || charCode >= 48 && charCode <= 57;\n }\n function isUpperCase(charCode) {\n return charCode >= 65 && charCode <= 90;\n }\n const score = {\n [0]: 0,\n [1]: 0,\n [2]: 0,\n [3]: 10,\n [4]: 2,\n [5]: 30,\n [6]: 3,\n [7]: 10,\n [8]: 10\n };\n function getCategoryBoundaryScore(category) {\n return score[category];\n }\n function getCategory(charCode) {\n if (charCode === 10) return 8;\n else if (charCode === 13) return 7;\n else if (isSpace(charCode)) return 6;\n else if (charCode >= 97 && charCode <= 122) return 0;\n else if (charCode >= 65 && charCode <= 90) return 1;\n else if (charCode >= 48 && charCode <= 57) return 2;\n else if (charCode === -1) return 3;\n else if (charCode === 44 || charCode === 59) return 5;\n else return 4;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/defaultLinesDiffComputer/computeMovedLines.js\n function computeMovedLines(changes, originalLines, modifiedLines, hashedOriginalLines, hashedModifiedLines, timeout) {\n let { moves, excludedChanges } = computeMovesFromSimpleDeletionsToSimpleInsertions(changes, originalLines, modifiedLines, timeout);\n if (!timeout.isValid()) return [];\n const unchangedMoves = computeUnchangedMoves(changes.filter((c) => !excludedChanges.has(c)), hashedOriginalLines, hashedModifiedLines, originalLines, modifiedLines, timeout);\n pushMany(moves, unchangedMoves);\n moves = joinCloseConsecutiveMoves(moves);\n moves = moves.filter((current) => {\n const lines = current.original.toOffsetRange().slice(originalLines).map((l) => l.trim());\n return lines.join(\"\\n\").length >= 15 && countWhere(lines, (l) => l.length >= 2) >= 2;\n });\n moves = removeMovesInSameDiff(changes, moves);\n return moves;\n }\n function countWhere(arr, predicate) {\n let count = 0;\n for (const t of arr) if (predicate(t)) count++;\n return count;\n }\n function computeMovesFromSimpleDeletionsToSimpleInsertions(changes, originalLines, modifiedLines, timeout) {\n const moves = [];\n const deletions = changes.filter((c) => c.modified.isEmpty && c.original.length >= 3).map((d) => new LineRangeFragment(d.original, originalLines, d));\n const insertions = new Set(changes.filter((c) => c.original.isEmpty && c.modified.length >= 3).map((d) => new LineRangeFragment(d.modified, modifiedLines, d)));\n const excludedChanges = /* @__PURE__ */ new Set();\n for (const deletion of deletions) {\n let highestSimilarity = -1;\n let best;\n for (const insertion of insertions) {\n const similarity = deletion.computeSimilarity(insertion);\n if (similarity > highestSimilarity) {\n highestSimilarity = similarity;\n best = insertion;\n }\n }\n if (highestSimilarity > .9 && best) {\n insertions.delete(best);\n moves.push(new LineRangeMapping(deletion.range, best.range));\n excludedChanges.add(deletion.source);\n excludedChanges.add(best.source);\n }\n if (!timeout.isValid()) return {\n moves,\n excludedChanges\n };\n }\n return {\n moves,\n excludedChanges\n };\n }\n function computeUnchangedMoves(changes, hashedOriginalLines, hashedModifiedLines, originalLines, modifiedLines, timeout) {\n const moves = [];\n const original3LineHashes = new SetMap();\n for (const change of changes) for (let i = change.original.startLineNumber; i < change.original.endLineNumberExclusive - 2; i++) {\n const key = `${hashedOriginalLines[i - 1]}:${hashedOriginalLines[i + 1 - 1]}:${hashedOriginalLines[i + 2 - 1]}`;\n original3LineHashes.add(key, { range: new LineRange(i, i + 3) });\n }\n const possibleMappings = [];\n changes.sort(compareBy((c) => c.modified.startLineNumber, numberComparator));\n for (const change of changes) {\n let lastMappings = [];\n for (let i = change.modified.startLineNumber; i < change.modified.endLineNumberExclusive - 2; i++) {\n const key = `${hashedModifiedLines[i - 1]}:${hashedModifiedLines[i + 1 - 1]}:${hashedModifiedLines[i + 2 - 1]}`;\n const currentModifiedRange = new LineRange(i, i + 3);\n const nextMappings = [];\n original3LineHashes.forEach(key, ({ range }) => {\n for (const lastMapping of lastMappings) if (lastMapping.originalLineRange.endLineNumberExclusive + 1 === range.endLineNumberExclusive && lastMapping.modifiedLineRange.endLineNumberExclusive + 1 === currentModifiedRange.endLineNumberExclusive) {\n lastMapping.originalLineRange = new LineRange(lastMapping.originalLineRange.startLineNumber, range.endLineNumberExclusive);\n lastMapping.modifiedLineRange = new LineRange(lastMapping.modifiedLineRange.startLineNumber, currentModifiedRange.endLineNumberExclusive);\n nextMappings.push(lastMapping);\n return;\n }\n const mapping = {\n modifiedLineRange: currentModifiedRange,\n originalLineRange: range\n };\n possibleMappings.push(mapping);\n nextMappings.push(mapping);\n });\n lastMappings = nextMappings;\n }\n if (!timeout.isValid()) return [];\n }\n possibleMappings.sort(reverseOrder(compareBy((m) => m.modifiedLineRange.length, numberComparator)));\n const modifiedSet = new LineRangeSet();\n const originalSet = new LineRangeSet();\n for (const mapping of possibleMappings) {\n const diffOrigToMod = mapping.modifiedLineRange.startLineNumber - mapping.originalLineRange.startLineNumber;\n const modifiedSections = modifiedSet.subtractFrom(mapping.modifiedLineRange);\n const originalTranslatedSections = originalSet.subtractFrom(mapping.originalLineRange).getWithDelta(diffOrigToMod);\n const modifiedIntersectedSections = modifiedSections.getIntersection(originalTranslatedSections);\n for (const s of modifiedIntersectedSections.ranges) {\n if (s.length < 3) continue;\n const modifiedLineRange = s;\n const originalLineRange = s.delta(-diffOrigToMod);\n moves.push(new LineRangeMapping(originalLineRange, modifiedLineRange));\n modifiedSet.addRange(modifiedLineRange);\n originalSet.addRange(originalLineRange);\n }\n }\n moves.sort(compareBy((m) => m.original.startLineNumber, numberComparator));\n const monotonousChanges = new MonotonousArray(changes);\n for (let i = 0; i < moves.length; i++) {\n const move = moves[i];\n const firstTouchingChangeOrig = monotonousChanges.findLastMonotonous((c) => c.original.startLineNumber <= move.original.startLineNumber);\n const firstTouchingChangeMod = findLastMonotonous(changes, (c) => c.modified.startLineNumber <= move.modified.startLineNumber);\n const linesAbove = Math.max(move.original.startLineNumber - firstTouchingChangeOrig.original.startLineNumber, move.modified.startLineNumber - firstTouchingChangeMod.modified.startLineNumber);\n const lastTouchingChangeOrig = monotonousChanges.findLastMonotonous((c) => c.original.startLineNumber < move.original.endLineNumberExclusive);\n const lastTouchingChangeMod = findLastMonotonous(changes, (c) => c.modified.startLineNumber < move.modified.endLineNumberExclusive);\n const linesBelow = Math.max(lastTouchingChangeOrig.original.endLineNumberExclusive - move.original.endLineNumberExclusive, lastTouchingChangeMod.modified.endLineNumberExclusive - move.modified.endLineNumberExclusive);\n let extendToTop;\n for (extendToTop = 0; extendToTop < linesAbove; extendToTop++) {\n const origLine = move.original.startLineNumber - extendToTop - 1;\n const modLine = move.modified.startLineNumber - extendToTop - 1;\n if (origLine > originalLines.length || modLine > modifiedLines.length) break;\n if (modifiedSet.contains(modLine) || originalSet.contains(origLine)) break;\n if (!areLinesSimilar(originalLines[origLine - 1], modifiedLines[modLine - 1], timeout)) break;\n }\n if (extendToTop > 0) {\n originalSet.addRange(new LineRange(move.original.startLineNumber - extendToTop, move.original.startLineNumber));\n modifiedSet.addRange(new LineRange(move.modified.startLineNumber - extendToTop, move.modified.startLineNumber));\n }\n let extendToBottom;\n for (extendToBottom = 0; extendToBottom < linesBelow; extendToBottom++) {\n const origLine = move.original.endLineNumberExclusive + extendToBottom;\n const modLine = move.modified.endLineNumberExclusive + extendToBottom;\n if (origLine > originalLines.length || modLine > modifiedLines.length) break;\n if (modifiedSet.contains(modLine) || originalSet.contains(origLine)) break;\n if (!areLinesSimilar(originalLines[origLine - 1], modifiedLines[modLine - 1], timeout)) break;\n }\n if (extendToBottom > 0) {\n originalSet.addRange(new LineRange(move.original.endLineNumberExclusive, move.original.endLineNumberExclusive + extendToBottom));\n modifiedSet.addRange(new LineRange(move.modified.endLineNumberExclusive, move.modified.endLineNumberExclusive + extendToBottom));\n }\n if (extendToTop > 0 || extendToBottom > 0) moves[i] = new LineRangeMapping(new LineRange(move.original.startLineNumber - extendToTop, move.original.endLineNumberExclusive + extendToBottom), new LineRange(move.modified.startLineNumber - extendToTop, move.modified.endLineNumberExclusive + extendToBottom));\n }\n return moves;\n }\n function areLinesSimilar(line1, line2, timeout) {\n if (line1.trim() === line2.trim()) return true;\n if (line1.length > 300 && line2.length > 300) return false;\n const result = new MyersDiffAlgorithm().compute(new LinesSliceCharSequence([line1], new Range(1, 1, 1, line1.length), false), new LinesSliceCharSequence([line2], new Range(1, 1, 1, line2.length), false), timeout);\n let commonNonSpaceCharCount = 0;\n const inverted = SequenceDiff.invert(result.diffs, line1.length);\n for (const seq of inverted) seq.seq1Range.forEach((idx) => {\n if (!isSpace(line1.charCodeAt(idx))) commonNonSpaceCharCount++;\n });\n function countNonWsChars(str) {\n let count = 0;\n for (let i = 0; i < line1.length; i++) if (!isSpace(str.charCodeAt(i))) count++;\n return count;\n }\n const longerLineLength = countNonWsChars(line1.length > line2.length ? line1 : line2);\n return commonNonSpaceCharCount / longerLineLength > .6 && longerLineLength > 10;\n }\n function joinCloseConsecutiveMoves(moves) {\n if (moves.length === 0) return moves;\n moves.sort(compareBy((m) => m.original.startLineNumber, numberComparator));\n const result = [moves[0]];\n for (let i = 1; i < moves.length; i++) {\n const last = result[result.length - 1];\n const current = moves[i];\n const originalDist = current.original.startLineNumber - last.original.endLineNumberExclusive;\n const modifiedDist = current.modified.startLineNumber - last.modified.endLineNumberExclusive;\n if (originalDist >= 0 && modifiedDist >= 0 && originalDist + modifiedDist <= 2) {\n result[result.length - 1] = last.join(current);\n continue;\n }\n result.push(current);\n }\n return result;\n }\n function removeMovesInSameDiff(changes, moves) {\n const changesMonotonous = new MonotonousArray(changes);\n moves = moves.filter((m) => {\n return (changesMonotonous.findLastMonotonous((c) => c.original.startLineNumber < m.original.endLineNumberExclusive) || new LineRangeMapping(new LineRange(1, 1), new LineRange(1, 1))) !== findLastMonotonous(changes, (c) => c.modified.startLineNumber < m.modified.endLineNumberExclusive);\n });\n return moves;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/defaultLinesDiffComputer/heuristicSequenceOptimizations.js\n function optimizeSequenceDiffs(sequence1, sequence2, sequenceDiffs) {\n let result = sequenceDiffs;\n result = joinSequenceDiffsByShifting(sequence1, sequence2, result);\n result = joinSequenceDiffsByShifting(sequence1, sequence2, result);\n result = shiftSequenceDiffs(sequence1, sequence2, result);\n return result;\n }\n /**\n * This function fixes issues like this:\n * ```\n * import { Baz, Bar } from \"foo\";\n * ```\n * <->\n * ```\n * import { Baz, Bar, Foo } from \"foo\";\n * ```\n * Computed diff: [ {Add \",\" after Bar}, {Add \"Foo \" after space} }\n * Improved diff: [{Add \", Foo\" after Bar}]\n */\n function joinSequenceDiffsByShifting(sequence1, sequence2, sequenceDiffs) {\n if (sequenceDiffs.length === 0) return sequenceDiffs;\n const result = [];\n result.push(sequenceDiffs[0]);\n for (let i = 1; i < sequenceDiffs.length; i++) {\n const prevResult = result[result.length - 1];\n let cur = sequenceDiffs[i];\n if (cur.seq1Range.isEmpty || cur.seq2Range.isEmpty) {\n const length = cur.seq1Range.start - prevResult.seq1Range.endExclusive;\n let d;\n for (d = 1; d <= length; d++) if (sequence1.getElement(cur.seq1Range.start - d) !== sequence1.getElement(cur.seq1Range.endExclusive - d) || sequence2.getElement(cur.seq2Range.start - d) !== sequence2.getElement(cur.seq2Range.endExclusive - d)) break;\n d--;\n if (d === length) {\n result[result.length - 1] = new SequenceDiff(new OffsetRange(prevResult.seq1Range.start, cur.seq1Range.endExclusive - length), new OffsetRange(prevResult.seq2Range.start, cur.seq2Range.endExclusive - length));\n continue;\n }\n cur = cur.delta(-d);\n }\n result.push(cur);\n }\n const result2 = [];\n for (let i = 0; i < result.length - 1; i++) {\n const nextResult = result[i + 1];\n let cur = result[i];\n if (cur.seq1Range.isEmpty || cur.seq2Range.isEmpty) {\n const length = nextResult.seq1Range.start - cur.seq1Range.endExclusive;\n let d;\n for (d = 0; d < length; d++) if (!sequence1.isStronglyEqual(cur.seq1Range.start + d, cur.seq1Range.endExclusive + d) || !sequence2.isStronglyEqual(cur.seq2Range.start + d, cur.seq2Range.endExclusive + d)) break;\n if (d === length) {\n result[i + 1] = new SequenceDiff(new OffsetRange(cur.seq1Range.start + length, nextResult.seq1Range.endExclusive), new OffsetRange(cur.seq2Range.start + length, nextResult.seq2Range.endExclusive));\n continue;\n }\n if (d > 0) cur = cur.delta(d);\n }\n result2.push(cur);\n }\n if (result.length > 0) result2.push(result[result.length - 1]);\n return result2;\n }\n function shiftSequenceDiffs(sequence1, sequence2, sequenceDiffs) {\n if (!sequence1.getBoundaryScore || !sequence2.getBoundaryScore) return sequenceDiffs;\n for (let i = 0; i < sequenceDiffs.length; i++) {\n const prevDiff = i > 0 ? sequenceDiffs[i - 1] : void 0;\n const diff = sequenceDiffs[i];\n const nextDiff = i + 1 < sequenceDiffs.length ? sequenceDiffs[i + 1] : void 0;\n const seq1ValidRange = new OffsetRange(prevDiff ? prevDiff.seq1Range.endExclusive + 1 : 0, nextDiff ? nextDiff.seq1Range.start - 1 : sequence1.length);\n const seq2ValidRange = new OffsetRange(prevDiff ? prevDiff.seq2Range.endExclusive + 1 : 0, nextDiff ? nextDiff.seq2Range.start - 1 : sequence2.length);\n if (diff.seq1Range.isEmpty) sequenceDiffs[i] = shiftDiffToBetterPosition(diff, sequence1, sequence2, seq1ValidRange, seq2ValidRange);\n else if (diff.seq2Range.isEmpty) sequenceDiffs[i] = shiftDiffToBetterPosition(diff.swap(), sequence2, sequence1, seq2ValidRange, seq1ValidRange).swap();\n }\n return sequenceDiffs;\n }\n function shiftDiffToBetterPosition(diff, sequence1, sequence2, seq1ValidRange, seq2ValidRange) {\n const maxShiftLimit = 100;\n let deltaBefore = 1;\n while (diff.seq1Range.start - deltaBefore >= seq1ValidRange.start && diff.seq2Range.start - deltaBefore >= seq2ValidRange.start && sequence2.isStronglyEqual(diff.seq2Range.start - deltaBefore, diff.seq2Range.endExclusive - deltaBefore) && deltaBefore < maxShiftLimit) deltaBefore++;\n deltaBefore--;\n let deltaAfter = 0;\n while (diff.seq1Range.start + deltaAfter < seq1ValidRange.endExclusive && diff.seq2Range.endExclusive + deltaAfter < seq2ValidRange.endExclusive && sequence2.isStronglyEqual(diff.seq2Range.start + deltaAfter, diff.seq2Range.endExclusive + deltaAfter) && deltaAfter < maxShiftLimit) deltaAfter++;\n if (deltaBefore === 0 && deltaAfter === 0) return diff;\n let bestDelta = 0;\n let bestScore = -1;\n for (let delta = -deltaBefore; delta <= deltaAfter; delta++) {\n const seq2OffsetStart = diff.seq2Range.start + delta;\n const seq2OffsetEndExclusive = diff.seq2Range.endExclusive + delta;\n const seq1Offset = diff.seq1Range.start + delta;\n const score = sequence1.getBoundaryScore(seq1Offset) + sequence2.getBoundaryScore(seq2OffsetStart) + sequence2.getBoundaryScore(seq2OffsetEndExclusive);\n if (score > bestScore) {\n bestScore = score;\n bestDelta = delta;\n }\n }\n return diff.delta(bestDelta);\n }\n function removeShortMatches(sequence1, sequence2, sequenceDiffs) {\n const result = [];\n for (const s of sequenceDiffs) {\n const last = result[result.length - 1];\n if (!last) {\n result.push(s);\n continue;\n }\n if (s.seq1Range.start - last.seq1Range.endExclusive <= 2 || s.seq2Range.start - last.seq2Range.endExclusive <= 2) result[result.length - 1] = new SequenceDiff(last.seq1Range.join(s.seq1Range), last.seq2Range.join(s.seq2Range));\n else result.push(s);\n }\n return result;\n }\n function extendDiffsToEntireWordIfAppropriate(sequence1, sequence2, sequenceDiffs, findParent, force = false) {\n const equalMappings = SequenceDiff.invert(sequenceDiffs, sequence1.length);\n const additional = [];\n let lastPoint = new OffsetPair(0, 0);\n function scanWord(pair, equalMapping) {\n if (pair.offset1 < lastPoint.offset1 || pair.offset2 < lastPoint.offset2) return;\n const w1 = findParent(sequence1, pair.offset1);\n const w2 = findParent(sequence2, pair.offset2);\n if (!w1 || !w2) return;\n let w = new SequenceDiff(w1, w2);\n const equalPart = w.intersect(equalMapping);\n let equalChars1 = equalPart.seq1Range.length;\n let equalChars2 = equalPart.seq2Range.length;\n while (equalMappings.length > 0) {\n const next = equalMappings[0];\n if (!(next.seq1Range.intersects(w.seq1Range) || next.seq2Range.intersects(w.seq2Range))) break;\n const v = new SequenceDiff(findParent(sequence1, next.seq1Range.start), findParent(sequence2, next.seq2Range.start));\n const equalPart = v.intersect(next);\n equalChars1 += equalPart.seq1Range.length;\n equalChars2 += equalPart.seq2Range.length;\n w = w.join(v);\n if (w.seq1Range.endExclusive >= next.seq1Range.endExclusive) equalMappings.shift();\n else break;\n }\n if (force && equalChars1 + equalChars2 < w.seq1Range.length + w.seq2Range.length || equalChars1 + equalChars2 < (w.seq1Range.length + w.seq2Range.length) * 2 / 3) additional.push(w);\n lastPoint = w.getEndExclusives();\n }\n while (equalMappings.length > 0) {\n const next = equalMappings.shift();\n if (next.seq1Range.isEmpty) continue;\n scanWord(next.getStarts(), next);\n scanWord(next.getEndExclusives().delta(-1), next);\n }\n return mergeSequenceDiffs(sequenceDiffs, additional);\n }\n function mergeSequenceDiffs(sequenceDiffs1, sequenceDiffs2) {\n const result = [];\n while (sequenceDiffs1.length > 0 || sequenceDiffs2.length > 0) {\n const sd1 = sequenceDiffs1[0];\n const sd2 = sequenceDiffs2[0];\n let next;\n if (sd1 && (!sd2 || sd1.seq1Range.start < sd2.seq1Range.start)) next = sequenceDiffs1.shift();\n else next = sequenceDiffs2.shift();\n if (result.length > 0 && result[result.length - 1].seq1Range.endExclusive >= next.seq1Range.start) result[result.length - 1] = result[result.length - 1].join(next);\n else result.push(next);\n }\n return result;\n }\n function removeVeryShortMatchingLinesBetweenDiffs(sequence1, _sequence2, sequenceDiffs) {\n let diffs = sequenceDiffs;\n if (diffs.length === 0) return diffs;\n let counter = 0;\n let shouldRepeat;\n do {\n shouldRepeat = false;\n const result = [diffs[0]];\n for (let i = 1; i < diffs.length; i++) {\n const cur = diffs[i];\n const lastResult = result[result.length - 1];\n function shouldJoinDiffs(before, after) {\n const unchangedRange = new OffsetRange(lastResult.seq1Range.endExclusive, cur.seq1Range.start);\n if (sequence1.getText(unchangedRange).replace(/\\s/g, \"\").length <= 4 && (before.seq1Range.length + before.seq2Range.length > 5 || after.seq1Range.length + after.seq2Range.length > 5)) return true;\n return false;\n }\n if (shouldJoinDiffs(lastResult, cur)) {\n shouldRepeat = true;\n result[result.length - 1] = result[result.length - 1].join(cur);\n } else result.push(cur);\n }\n diffs = result;\n } while (counter++ < 10 && shouldRepeat);\n return diffs;\n }\n function removeVeryShortMatchingTextBetweenLongDiffs(sequence1, sequence2, sequenceDiffs) {\n let diffs = sequenceDiffs;\n if (diffs.length === 0) return diffs;\n let counter = 0;\n let shouldRepeat;\n do {\n shouldRepeat = false;\n const result = [diffs[0]];\n for (let i = 1; i < diffs.length; i++) {\n const cur = diffs[i];\n const lastResult = result[result.length - 1];\n function shouldJoinDiffs(before, after) {\n const unchangedRange = new OffsetRange(lastResult.seq1Range.endExclusive, cur.seq1Range.start);\n if (sequence1.countLinesIn(unchangedRange) > 5 || unchangedRange.length > 500) return false;\n const unchangedText = sequence1.getText(unchangedRange).trim();\n if (unchangedText.length > 20 || unchangedText.split(/\\r\\n|\\r|\\n/).length > 1) return false;\n const beforeLineCount1 = sequence1.countLinesIn(before.seq1Range);\n const beforeSeq1Length = before.seq1Range.length;\n const beforeLineCount2 = sequence2.countLinesIn(before.seq2Range);\n const beforeSeq2Length = before.seq2Range.length;\n const afterLineCount1 = sequence1.countLinesIn(after.seq1Range);\n const afterSeq1Length = after.seq1Range.length;\n const afterLineCount2 = sequence2.countLinesIn(after.seq2Range);\n const afterSeq2Length = after.seq2Range.length;\n const max = 130;\n function cap(v) {\n return Math.min(v, max);\n }\n if (Math.pow(Math.pow(cap(beforeLineCount1 * 40 + beforeSeq1Length), 1.5) + Math.pow(cap(beforeLineCount2 * 40 + beforeSeq2Length), 1.5), 1.5) + Math.pow(Math.pow(cap(afterLineCount1 * 40 + afterSeq1Length), 1.5) + Math.pow(cap(afterLineCount2 * 40 + afterSeq2Length), 1.5), 1.5) > (max ** 1.5) ** 1.5 * 1.3) return true;\n return false;\n }\n if (shouldJoinDiffs(lastResult, cur)) {\n shouldRepeat = true;\n result[result.length - 1] = result[result.length - 1].join(cur);\n } else result.push(cur);\n }\n diffs = result;\n } while (counter++ < 10 && shouldRepeat);\n const newDiffs = [];\n forEachWithNeighbors(diffs, (prev, cur, next) => {\n let newDiff = cur;\n function shouldMarkAsChanged(text) {\n return text.length > 0 && text.trim().length <= 3 && cur.seq1Range.length + cur.seq2Range.length > 100;\n }\n const fullRange1 = sequence1.extendToFullLines(cur.seq1Range);\n const prefix = sequence1.getText(new OffsetRange(fullRange1.start, cur.seq1Range.start));\n if (shouldMarkAsChanged(prefix)) newDiff = newDiff.deltaStart(-prefix.length);\n const suffix = sequence1.getText(new OffsetRange(cur.seq1Range.endExclusive, fullRange1.endExclusive));\n if (shouldMarkAsChanged(suffix)) newDiff = newDiff.deltaEnd(suffix.length);\n const availableSpace = SequenceDiff.fromOffsetPairs(prev ? prev.getEndExclusives() : OffsetPair.zero, next ? next.getStarts() : OffsetPair.max);\n const result = newDiff.intersect(availableSpace);\n if (newDiffs.length > 0 && result.getStarts().equals(newDiffs[newDiffs.length - 1].getEndExclusives())) newDiffs[newDiffs.length - 1] = newDiffs[newDiffs.length - 1].join(result);\n else newDiffs.push(result);\n });\n return newDiffs;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/defaultLinesDiffComputer/lineSequence.js\n var LineSequence = class {\n constructor(trimmedHash, lines) {\n this.trimmedHash = trimmedHash;\n this.lines = lines;\n }\n getElement(offset) {\n return this.trimmedHash[offset];\n }\n get length() {\n return this.trimmedHash.length;\n }\n getBoundaryScore(length) {\n return 1e3 - ((length === 0 ? 0 : getIndentation(this.lines[length - 1])) + (length === this.lines.length ? 0 : getIndentation(this.lines[length])));\n }\n getText(range) {\n return this.lines.slice(range.start, range.endExclusive).join(\"\\n\");\n }\n isStronglyEqual(offset1, offset2) {\n return this.lines[offset1] === this.lines[offset2];\n }\n };\n function getIndentation(str) {\n let i = 0;\n while (i < str.length && (str.charCodeAt(i) === 32 || str.charCodeAt(i) === 9)) i++;\n return i;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/defaultLinesDiffComputer/defaultLinesDiffComputer.js\n var DefaultLinesDiffComputer = class {\n constructor() {\n this.dynamicProgrammingDiffing = new DynamicProgrammingDiffing();\n this.myersDiffingAlgorithm = new MyersDiffAlgorithm();\n }\n computeDiff(originalLines, modifiedLines, options) {\n if (originalLines.length <= 1 && equals(originalLines, modifiedLines, (a, b) => a === b)) return new LinesDiff([], [], false);\n if (originalLines.length === 1 && originalLines[0].length === 0 || modifiedLines.length === 1 && modifiedLines[0].length === 0) return new LinesDiff([new DetailedLineRangeMapping(new LineRange(1, originalLines.length + 1), new LineRange(1, modifiedLines.length + 1), [new RangeMapping(new Range(1, 1, originalLines.length, originalLines[originalLines.length - 1].length + 1), new Range(1, 1, modifiedLines.length, modifiedLines[modifiedLines.length - 1].length + 1))])], [], false);\n const timeout = options.maxComputationTimeMs === 0 ? InfiniteTimeout.instance : new DateTimeout(options.maxComputationTimeMs);\n const considerWhitespaceChanges = !options.ignoreTrimWhitespace;\n const perfectHashes = /* @__PURE__ */ new Map();\n function getOrCreateHash(text) {\n let hash = perfectHashes.get(text);\n if (hash === void 0) {\n hash = perfectHashes.size;\n perfectHashes.set(text, hash);\n }\n return hash;\n }\n const originalLinesHashes = originalLines.map((l) => getOrCreateHash(l.trim()));\n const modifiedLinesHashes = modifiedLines.map((l) => getOrCreateHash(l.trim()));\n const sequence1 = new LineSequence(originalLinesHashes, originalLines);\n const sequence2 = new LineSequence(modifiedLinesHashes, modifiedLines);\n const lineAlignmentResult = (() => {\n if (sequence1.length + sequence2.length < 1700) return this.dynamicProgrammingDiffing.compute(sequence1, sequence2, timeout, (offset1, offset2) => originalLines[offset1] === modifiedLines[offset2] ? modifiedLines[offset2].length === 0 ? .1 : 1 + Math.log(1 + modifiedLines[offset2].length) : .99);\n return this.myersDiffingAlgorithm.compute(sequence1, sequence2, timeout);\n })();\n let lineAlignments = lineAlignmentResult.diffs;\n let hitTimeout = lineAlignmentResult.hitTimeout;\n lineAlignments = optimizeSequenceDiffs(sequence1, sequence2, lineAlignments);\n lineAlignments = removeVeryShortMatchingLinesBetweenDiffs(sequence1, sequence2, lineAlignments);\n const alignments = [];\n const scanForWhitespaceChanges = (equalLinesCount) => {\n if (!considerWhitespaceChanges) return;\n for (let i = 0; i < equalLinesCount; i++) {\n const seq1Offset = seq1LastStart + i;\n const seq2Offset = seq2LastStart + i;\n if (originalLines[seq1Offset] !== modifiedLines[seq2Offset]) {\n const characterDiffs = this.refineDiff(originalLines, modifiedLines, new SequenceDiff(new OffsetRange(seq1Offset, seq1Offset + 1), new OffsetRange(seq2Offset, seq2Offset + 1)), timeout, considerWhitespaceChanges, options);\n for (const a of characterDiffs.mappings) alignments.push(a);\n if (characterDiffs.hitTimeout) hitTimeout = true;\n }\n }\n };\n let seq1LastStart = 0;\n let seq2LastStart = 0;\n for (const diff of lineAlignments) {\n assertFn(() => diff.seq1Range.start - seq1LastStart === diff.seq2Range.start - seq2LastStart);\n scanForWhitespaceChanges(diff.seq1Range.start - seq1LastStart);\n seq1LastStart = diff.seq1Range.endExclusive;\n seq2LastStart = diff.seq2Range.endExclusive;\n const characterDiffs = this.refineDiff(originalLines, modifiedLines, diff, timeout, considerWhitespaceChanges, options);\n if (characterDiffs.hitTimeout) hitTimeout = true;\n for (const a of characterDiffs.mappings) alignments.push(a);\n }\n scanForWhitespaceChanges(originalLines.length - seq1LastStart);\n const changes = lineRangeMappingFromRangeMappings(alignments, new ArrayText(originalLines), new ArrayText(modifiedLines));\n let moves = [];\n if (options.computeMoves) moves = this.computeMoves(changes, originalLines, modifiedLines, originalLinesHashes, modifiedLinesHashes, timeout, considerWhitespaceChanges, options);\n assertFn(() => {\n function validatePosition(pos, lines) {\n if (pos.lineNumber < 1 || pos.lineNumber > lines.length) return false;\n const line = lines[pos.lineNumber - 1];\n if (pos.column < 1 || pos.column > line.length + 1) return false;\n return true;\n }\n function validateRange(range, lines) {\n if (range.startLineNumber < 1 || range.startLineNumber > lines.length + 1) return false;\n if (range.endLineNumberExclusive < 1 || range.endLineNumberExclusive > lines.length + 1) return false;\n return true;\n }\n for (const c of changes) {\n if (!c.innerChanges) return false;\n for (const ic of c.innerChanges) if (!(validatePosition(ic.modifiedRange.getStartPosition(), modifiedLines) && validatePosition(ic.modifiedRange.getEndPosition(), modifiedLines) && validatePosition(ic.originalRange.getStartPosition(), originalLines) && validatePosition(ic.originalRange.getEndPosition(), originalLines))) return false;\n if (!validateRange(c.modified, modifiedLines) || !validateRange(c.original, originalLines)) return false;\n }\n return true;\n });\n return new LinesDiff(changes, moves, hitTimeout);\n }\n computeMoves(changes, originalLines, modifiedLines, hashedOriginalLines, hashedModifiedLines, timeout, considerWhitespaceChanges, options) {\n return computeMovedLines(changes, originalLines, modifiedLines, hashedOriginalLines, hashedModifiedLines, timeout).map((m) => {\n return new MovedText(m, lineRangeMappingFromRangeMappings(this.refineDiff(originalLines, modifiedLines, new SequenceDiff(m.original.toOffsetRange(), m.modified.toOffsetRange()), timeout, considerWhitespaceChanges, options).mappings, new ArrayText(originalLines), new ArrayText(modifiedLines), true));\n });\n }\n refineDiff(originalLines, modifiedLines, diff, timeout, considerWhitespaceChanges, options) {\n const rangeMapping = toLineRangeMapping(diff).toRangeMapping2(originalLines, modifiedLines);\n const slice1 = new LinesSliceCharSequence(originalLines, rangeMapping.originalRange, considerWhitespaceChanges);\n const slice2 = new LinesSliceCharSequence(modifiedLines, rangeMapping.modifiedRange, considerWhitespaceChanges);\n const diffResult = slice1.length + slice2.length < 500 ? this.dynamicProgrammingDiffing.compute(slice1, slice2, timeout) : this.myersDiffingAlgorithm.compute(slice1, slice2, timeout);\n let diffs = diffResult.diffs;\n diffs = optimizeSequenceDiffs(slice1, slice2, diffs);\n diffs = extendDiffsToEntireWordIfAppropriate(slice1, slice2, diffs, (seq, idx) => seq.findWordContaining(idx));\n if (options.extendToSubwords) diffs = extendDiffsToEntireWordIfAppropriate(slice1, slice2, diffs, (seq, idx) => seq.findSubWordContaining(idx), true);\n diffs = removeShortMatches(slice1, slice2, diffs);\n diffs = removeVeryShortMatchingTextBetweenLongDiffs(slice1, slice2, diffs);\n return {\n mappings: diffs.map((d) => new RangeMapping(slice1.translateRange(d.seq1Range), slice2.translateRange(d.seq2Range))),\n hitTimeout: diffResult.hitTimeout\n };\n }\n };\n function toLineRangeMapping(sequenceDiff) {\n return new LineRangeMapping(new LineRange(sequenceDiff.seq1Range.start + 1, sequenceDiff.seq1Range.endExclusive + 1), new LineRange(sequenceDiff.seq2Range.start + 1, sequenceDiff.seq2Range.endExclusive + 1));\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/linesDiffComputers.js\n const linesDiffComputers = {\n getLegacy: () => new LegacyLinesDiffComputer(),\n getDefault: () => new DefaultLinesDiffComputer()\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/color.js\n function roundFloat(number, decimalPoints) {\n const decimal = Math.pow(10, decimalPoints);\n return Math.round(number * decimal) / decimal;\n }\n var RGBA = class {\n constructor(r, g, b, a = 1) {\n this._rgbaBrand = void 0;\n this.r = Math.min(255, Math.max(0, r)) | 0;\n this.g = Math.min(255, Math.max(0, g)) | 0;\n this.b = Math.min(255, Math.max(0, b)) | 0;\n this.a = roundFloat(Math.max(Math.min(1, a), 0), 3);\n }\n static equals(a, b) {\n return a.r === b.r && a.g === b.g && a.b === b.b && a.a === b.a;\n }\n };\n var HSLA = class HSLA {\n constructor(h, s, l, a) {\n this._hslaBrand = void 0;\n this.h = Math.max(Math.min(360, h), 0) | 0;\n this.s = roundFloat(Math.max(Math.min(1, s), 0), 3);\n this.l = roundFloat(Math.max(Math.min(1, l), 0), 3);\n this.a = roundFloat(Math.max(Math.min(1, a), 0), 3);\n }\n static equals(a, b) {\n return a.h === b.h && a.s === b.s && a.l === b.l && a.a === b.a;\n }\n /**\n * Converts an RGB color value to HSL. Conversion formula\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\n * Assumes r, g, and b are contained in the set [0, 255] and\n * returns h in the set [0, 360], s, and l in the set [0, 1].\n */\n static fromRGBA(rgba) {\n const r = rgba.r / 255;\n const g = rgba.g / 255;\n const b = rgba.b / 255;\n const a = rgba.a;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0;\n let s = 0;\n const l = (min + max) / 2;\n const chroma = max - min;\n if (chroma > 0) {\n s = Math.min(l <= .5 ? chroma / (2 * l) : chroma / (2 - 2 * l), 1);\n switch (max) {\n case r:\n h = (g - b) / chroma + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / chroma + 2;\n break;\n case b:\n h = (r - g) / chroma + 4;\n break;\n }\n h *= 60;\n h = Math.round(h);\n }\n return new HSLA(h, s, l, a);\n }\n static _hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n /**\n * Converts an HSL color value to RGB. Conversion formula\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\n * Assumes h in the set [0, 360] s, and l are contained in the set [0, 1] and\n * returns r, g, and b in the set [0, 255].\n */\n static toRGBA(hsla) {\n const h = hsla.h / 360;\n const { s, l, a } = hsla;\n let r, g, b;\n if (s === 0) r = g = b = l;\n else {\n const q = l < .5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n r = HSLA._hue2rgb(p, q, h + 1 / 3);\n g = HSLA._hue2rgb(p, q, h);\n b = HSLA._hue2rgb(p, q, h - 1 / 3);\n }\n return new RGBA(Math.round(r * 255), Math.round(g * 255), Math.round(b * 255), a);\n }\n };\n var HSVA = class HSVA {\n constructor(h, s, v, a) {\n this._hsvaBrand = void 0;\n this.h = Math.max(Math.min(360, h), 0) | 0;\n this.s = roundFloat(Math.max(Math.min(1, s), 0), 3);\n this.v = roundFloat(Math.max(Math.min(1, v), 0), 3);\n this.a = roundFloat(Math.max(Math.min(1, a), 0), 3);\n }\n static equals(a, b) {\n return a.h === b.h && a.s === b.s && a.v === b.v && a.a === b.a;\n }\n static fromRGBA(rgba) {\n const r = rgba.r / 255;\n const g = rgba.g / 255;\n const b = rgba.b / 255;\n const cmax = Math.max(r, g, b);\n const delta = cmax - Math.min(r, g, b);\n const s = cmax === 0 ? 0 : delta / cmax;\n let m;\n if (delta === 0) m = 0;\n else if (cmax === r) m = ((g - b) / delta % 6 + 6) % 6;\n else if (cmax === g) m = (b - r) / delta + 2;\n else m = (r - g) / delta + 4;\n return new HSVA(Math.round(m * 60), s, cmax, rgba.a);\n }\n static toRGBA(hsva) {\n const { h, s, v, a } = hsva;\n const c = v * s;\n const x = c * (1 - Math.abs(h / 60 % 2 - 1));\n const m = v - c;\n let [r, g, b] = [\n 0,\n 0,\n 0\n ];\n if (h < 60) {\n r = c;\n g = x;\n } else if (h < 120) {\n r = x;\n g = c;\n } else if (h < 180) {\n g = c;\n b = x;\n } else if (h < 240) {\n g = x;\n b = c;\n } else if (h < 300) {\n r = x;\n b = c;\n } else if (h <= 360) {\n r = c;\n b = x;\n }\n r = Math.round((r + m) * 255);\n g = Math.round((g + m) * 255);\n b = Math.round((b + m) * 255);\n return new RGBA(r, g, b, a);\n }\n };\n var Color = class Color {\n static fromHex(hex) {\n return Color.Format.CSS.parseHex(hex) || Color.red;\n }\n static equals(a, b) {\n if (!a && !b) return true;\n if (!a || !b) return false;\n return a.equals(b);\n }\n get hsla() {\n if (this._hsla) return this._hsla;\n else return HSLA.fromRGBA(this.rgba);\n }\n get hsva() {\n if (this._hsva) return this._hsva;\n return HSVA.fromRGBA(this.rgba);\n }\n constructor(arg) {\n if (!arg) throw new Error(\"Color needs a value\");\n else if (arg instanceof RGBA) this.rgba = arg;\n else if (arg instanceof HSLA) {\n this._hsla = arg;\n this.rgba = HSLA.toRGBA(arg);\n } else if (arg instanceof HSVA) {\n this._hsva = arg;\n this.rgba = HSVA.toRGBA(arg);\n } else throw new Error(\"Invalid color ctor argument\");\n }\n equals(other) {\n return !!other && RGBA.equals(this.rgba, other.rgba) && HSLA.equals(this.hsla, other.hsla) && HSVA.equals(this.hsva, other.hsva);\n }\n /**\n * http://www.w3.org/TR/WCAG20/#relativeluminancedef\n * Returns the number in the set [0, 1]. O => Darkest Black. 1 => Lightest white.\n */\n getRelativeLuminance() {\n const R = Color._relativeLuminanceForComponent(this.rgba.r);\n const G = Color._relativeLuminanceForComponent(this.rgba.g);\n const B = Color._relativeLuminanceForComponent(this.rgba.b);\n return roundFloat(.2126 * R + .7152 * G + .0722 * B, 4);\n }\n static _relativeLuminanceForComponent(color) {\n const c = color / 255;\n return c <= .03928 ? c / 12.92 : Math.pow((c + .055) / 1.055, 2.4);\n }\n /**\n * http://24ways.org/2010/calculating-color-contrast\n * Return 'true' if lighter color otherwise 'false'\n */\n isLighter() {\n return (this.rgba.r * 299 + this.rgba.g * 587 + this.rgba.b * 114) / 1e3 >= 128;\n }\n isLighterThan(another) {\n return this.getRelativeLuminance() > another.getRelativeLuminance();\n }\n isDarkerThan(another) {\n return this.getRelativeLuminance() < another.getRelativeLuminance();\n }\n lighten(factor) {\n return new Color(new HSLA(this.hsla.h, this.hsla.s, this.hsla.l + this.hsla.l * factor, this.hsla.a));\n }\n darken(factor) {\n return new Color(new HSLA(this.hsla.h, this.hsla.s, this.hsla.l - this.hsla.l * factor, this.hsla.a));\n }\n transparent(factor) {\n const { r, g, b, a } = this.rgba;\n return new Color(new RGBA(r, g, b, a * factor));\n }\n isTransparent() {\n return this.rgba.a === 0;\n }\n isOpaque() {\n return this.rgba.a === 1;\n }\n opposite() {\n return new Color(new RGBA(255 - this.rgba.r, 255 - this.rgba.g, 255 - this.rgba.b, this.rgba.a));\n }\n /**\n * Mixes the current color with the provided color based on the given factor.\n * @param color The color to mix with\n * @param factor The factor of mixing (0 means this color, 1 means the input color, 0.5 means equal mix)\n * @returns A new color representing the mix\n */\n mix(color, factor = .5) {\n const normalize = Math.min(Math.max(factor, 0), 1);\n const thisRGBA = this.rgba;\n const otherRGBA = color.rgba;\n const r = thisRGBA.r + (otherRGBA.r - thisRGBA.r) * normalize;\n const g = thisRGBA.g + (otherRGBA.g - thisRGBA.g) * normalize;\n const b = thisRGBA.b + (otherRGBA.b - thisRGBA.b) * normalize;\n const a = thisRGBA.a + (otherRGBA.a - thisRGBA.a) * normalize;\n return new Color(new RGBA(r, g, b, a));\n }\n makeOpaque(opaqueBackground) {\n if (this.isOpaque() || opaqueBackground.rgba.a !== 1) return this;\n const { r, g, b, a } = this.rgba;\n return new Color(new RGBA(opaqueBackground.rgba.r - a * (opaqueBackground.rgba.r - r), opaqueBackground.rgba.g - a * (opaqueBackground.rgba.g - g), opaqueBackground.rgba.b - a * (opaqueBackground.rgba.b - b), 1));\n }\n toString() {\n if (!this._toString) this._toString = Color.Format.CSS.format(this);\n return this._toString;\n }\n toNumber32Bit() {\n if (!this._toNumber32Bit) this._toNumber32Bit = (this.rgba.r << 24 | this.rgba.g << 16 | this.rgba.b << 8 | this.rgba.a * 255 << 0) >>> 0;\n return this._toNumber32Bit;\n }\n static getLighterColor(of, relative, factor) {\n if (of.isLighterThan(relative)) return of;\n factor = factor ? factor : .5;\n const lum1 = of.getRelativeLuminance();\n const lum2 = relative.getRelativeLuminance();\n factor = factor * (lum2 - lum1) / lum2;\n return of.lighten(factor);\n }\n static getDarkerColor(of, relative, factor) {\n if (of.isDarkerThan(relative)) return of;\n factor = factor ? factor : .5;\n const lum1 = of.getRelativeLuminance();\n const lum2 = relative.getRelativeLuminance();\n factor = factor * (lum1 - lum2) / lum1;\n return of.darken(factor);\n }\n static {\n this.white = new Color(new RGBA(255, 255, 255, 1));\n }\n static {\n this.black = new Color(new RGBA(0, 0, 0, 1));\n }\n static {\n this.red = new Color(new RGBA(255, 0, 0, 1));\n }\n static {\n this.blue = new Color(new RGBA(0, 0, 255, 1));\n }\n static {\n this.green = new Color(new RGBA(0, 255, 0, 1));\n }\n static {\n this.cyan = new Color(new RGBA(0, 255, 255, 1));\n }\n static {\n this.lightgrey = new Color(new RGBA(211, 211, 211, 1));\n }\n static {\n this.transparent = new Color(new RGBA(0, 0, 0, 0));\n }\n };\n (function(Color) {\n (function(Format) {\n (function(CSS) {\n function formatRGB(color) {\n if (color.rgba.a === 1) return `rgb(${color.rgba.r}, ${color.rgba.g}, ${color.rgba.b})`;\n return Color.Format.CSS.formatRGBA(color);\n }\n CSS.formatRGB = formatRGB;\n function formatRGBA(color) {\n return `rgba(${color.rgba.r}, ${color.rgba.g}, ${color.rgba.b}, ${+color.rgba.a.toFixed(2)})`;\n }\n CSS.formatRGBA = formatRGBA;\n function formatHSL(color) {\n if (color.hsla.a === 1) return `hsl(${color.hsla.h}, ${Math.round(color.hsla.s * 100)}%, ${Math.round(color.hsla.l * 100)}%)`;\n return Color.Format.CSS.formatHSLA(color);\n }\n CSS.formatHSL = formatHSL;\n function formatHSLA(color) {\n return `hsla(${color.hsla.h}, ${Math.round(color.hsla.s * 100)}%, ${Math.round(color.hsla.l * 100)}%, ${color.hsla.a.toFixed(2)})`;\n }\n CSS.formatHSLA = formatHSLA;\n function _toTwoDigitHex(n) {\n const r = n.toString(16);\n return r.length !== 2 ? \"0\" + r : r;\n }\n /**\n * Formats the color as #RRGGBB\n */\n function formatHex(color) {\n return `#${_toTwoDigitHex(color.rgba.r)}${_toTwoDigitHex(color.rgba.g)}${_toTwoDigitHex(color.rgba.b)}`;\n }\n CSS.formatHex = formatHex;\n /**\n * Formats the color as #RRGGBBAA\n * If 'compact' is set, colors without transparancy will be printed as #RRGGBB\n */\n function formatHexA(color, compact = false) {\n if (compact && color.rgba.a === 1) return Color.Format.CSS.formatHex(color);\n return `#${_toTwoDigitHex(color.rgba.r)}${_toTwoDigitHex(color.rgba.g)}${_toTwoDigitHex(color.rgba.b)}${_toTwoDigitHex(Math.round(color.rgba.a * 255))}`;\n }\n CSS.formatHexA = formatHexA;\n /**\n * The default format will use HEX if opaque and RGBA otherwise.\n */\n function format(color) {\n if (color.isOpaque()) return Color.Format.CSS.formatHex(color);\n return Color.Format.CSS.formatRGBA(color);\n }\n CSS.format = format;\n /**\n * Parse a CSS color and return a {@link Color}.\n * @param css The CSS color to parse.\n * @see https://drafts.csswg.org/css-color/#typedef-color\n */\n function parse(css) {\n if (css === \"transparent\") return Color.transparent;\n if (css.startsWith(\"#\")) return parseHex(css);\n if (css.startsWith(\"rgba(\")) {\n const color = css.match(/rgba\\((?<r>(?:\\+|-)?\\d+), *(?<g>(?:\\+|-)?\\d+), *(?<b>(?:\\+|-)?\\d+), *(?<a>(?:\\+|-)?\\d+(\\.\\d+)?)\\)/);\n if (!color) throw new Error(\"Invalid color format \" + css);\n return new Color(new RGBA(parseInt(color.groups?.r ?? \"0\"), parseInt(color.groups?.g ?? \"0\"), parseInt(color.groups?.b ?? \"0\"), parseFloat(color.groups?.a ?? \"0\")));\n }\n if (css.startsWith(\"rgb(\")) {\n const color = css.match(/rgb\\((?<r>(?:\\+|-)?\\d+), *(?<g>(?:\\+|-)?\\d+), *(?<b>(?:\\+|-)?\\d+)\\)/);\n if (!color) throw new Error(\"Invalid color format \" + css);\n return new Color(new RGBA(parseInt(color.groups?.r ?? \"0\"), parseInt(color.groups?.g ?? \"0\"), parseInt(color.groups?.b ?? \"0\")));\n }\n return parseNamedKeyword(css);\n }\n CSS.parse = parse;\n function parseNamedKeyword(css) {\n switch (css) {\n case \"aliceblue\": return new Color(new RGBA(240, 248, 255, 1));\n case \"antiquewhite\": return new Color(new RGBA(250, 235, 215, 1));\n case \"aqua\": return new Color(new RGBA(0, 255, 255, 1));\n case \"aquamarine\": return new Color(new RGBA(127, 255, 212, 1));\n case \"azure\": return new Color(new RGBA(240, 255, 255, 1));\n case \"beige\": return new Color(new RGBA(245, 245, 220, 1));\n case \"bisque\": return new Color(new RGBA(255, 228, 196, 1));\n case \"black\": return new Color(new RGBA(0, 0, 0, 1));\n case \"blanchedalmond\": return new Color(new RGBA(255, 235, 205, 1));\n case \"blue\": return new Color(new RGBA(0, 0, 255, 1));\n case \"blueviolet\": return new Color(new RGBA(138, 43, 226, 1));\n case \"brown\": return new Color(new RGBA(165, 42, 42, 1));\n case \"burlywood\": return new Color(new RGBA(222, 184, 135, 1));\n case \"cadetblue\": return new Color(new RGBA(95, 158, 160, 1));\n case \"chartreuse\": return new Color(new RGBA(127, 255, 0, 1));\n case \"chocolate\": return new Color(new RGBA(210, 105, 30, 1));\n case \"coral\": return new Color(new RGBA(255, 127, 80, 1));\n case \"cornflowerblue\": return new Color(new RGBA(100, 149, 237, 1));\n case \"cornsilk\": return new Color(new RGBA(255, 248, 220, 1));\n case \"crimson\": return new Color(new RGBA(220, 20, 60, 1));\n case \"cyan\": return new Color(new RGBA(0, 255, 255, 1));\n case \"darkblue\": return new Color(new RGBA(0, 0, 139, 1));\n case \"darkcyan\": return new Color(new RGBA(0, 139, 139, 1));\n case \"darkgoldenrod\": return new Color(new RGBA(184, 134, 11, 1));\n case \"darkgray\": return new Color(new RGBA(169, 169, 169, 1));\n case \"darkgreen\": return new Color(new RGBA(0, 100, 0, 1));\n case \"darkgrey\": return new Color(new RGBA(169, 169, 169, 1));\n case \"darkkhaki\": return new Color(new RGBA(189, 183, 107, 1));\n case \"darkmagenta\": return new Color(new RGBA(139, 0, 139, 1));\n case \"darkolivegreen\": return new Color(new RGBA(85, 107, 47, 1));\n case \"darkorange\": return new Color(new RGBA(255, 140, 0, 1));\n case \"darkorchid\": return new Color(new RGBA(153, 50, 204, 1));\n case \"darkred\": return new Color(new RGBA(139, 0, 0, 1));\n case \"darksalmon\": return new Color(new RGBA(233, 150, 122, 1));\n case \"darkseagreen\": return new Color(new RGBA(143, 188, 143, 1));\n case \"darkslateblue\": return new Color(new RGBA(72, 61, 139, 1));\n case \"darkslategray\": return new Color(new RGBA(47, 79, 79, 1));\n case \"darkslategrey\": return new Color(new RGBA(47, 79, 79, 1));\n case \"darkturquoise\": return new Color(new RGBA(0, 206, 209, 1));\n case \"darkviolet\": return new Color(new RGBA(148, 0, 211, 1));\n case \"deeppink\": return new Color(new RGBA(255, 20, 147, 1));\n case \"deepskyblue\": return new Color(new RGBA(0, 191, 255, 1));\n case \"dimgray\": return new Color(new RGBA(105, 105, 105, 1));\n case \"dimgrey\": return new Color(new RGBA(105, 105, 105, 1));\n case \"dodgerblue\": return new Color(new RGBA(30, 144, 255, 1));\n case \"firebrick\": return new Color(new RGBA(178, 34, 34, 1));\n case \"floralwhite\": return new Color(new RGBA(255, 250, 240, 1));\n case \"forestgreen\": return new Color(new RGBA(34, 139, 34, 1));\n case \"fuchsia\": return new Color(new RGBA(255, 0, 255, 1));\n case \"gainsboro\": return new Color(new RGBA(220, 220, 220, 1));\n case \"ghostwhite\": return new Color(new RGBA(248, 248, 255, 1));\n case \"gold\": return new Color(new RGBA(255, 215, 0, 1));\n case \"goldenrod\": return new Color(new RGBA(218, 165, 32, 1));\n case \"gray\": return new Color(new RGBA(128, 128, 128, 1));\n case \"green\": return new Color(new RGBA(0, 128, 0, 1));\n case \"greenyellow\": return new Color(new RGBA(173, 255, 47, 1));\n case \"grey\": return new Color(new RGBA(128, 128, 128, 1));\n case \"honeydew\": return new Color(new RGBA(240, 255, 240, 1));\n case \"hotpink\": return new Color(new RGBA(255, 105, 180, 1));\n case \"indianred\": return new Color(new RGBA(205, 92, 92, 1));\n case \"indigo\": return new Color(new RGBA(75, 0, 130, 1));\n case \"ivory\": return new Color(new RGBA(255, 255, 240, 1));\n case \"khaki\": return new Color(new RGBA(240, 230, 140, 1));\n case \"lavender\": return new Color(new RGBA(230, 230, 250, 1));\n case \"lavenderblush\": return new Color(new RGBA(255, 240, 245, 1));\n case \"lawngreen\": return new Color(new RGBA(124, 252, 0, 1));\n case \"lemonchiffon\": return new Color(new RGBA(255, 250, 205, 1));\n case \"lightblue\": return new Color(new RGBA(173, 216, 230, 1));\n case \"lightcoral\": return new Color(new RGBA(240, 128, 128, 1));\n case \"lightcyan\": return new Color(new RGBA(224, 255, 255, 1));\n case \"lightgoldenrodyellow\": return new Color(new RGBA(250, 250, 210, 1));\n case \"lightgray\": return new Color(new RGBA(211, 211, 211, 1));\n case \"lightgreen\": return new Color(new RGBA(144, 238, 144, 1));\n case \"lightgrey\": return new Color(new RGBA(211, 211, 211, 1));\n case \"lightpink\": return new Color(new RGBA(255, 182, 193, 1));\n case \"lightsalmon\": return new Color(new RGBA(255, 160, 122, 1));\n case \"lightseagreen\": return new Color(new RGBA(32, 178, 170, 1));\n case \"lightskyblue\": return new Color(new RGBA(135, 206, 250, 1));\n case \"lightslategray\": return new Color(new RGBA(119, 136, 153, 1));\n case \"lightslategrey\": return new Color(new RGBA(119, 136, 153, 1));\n case \"lightsteelblue\": return new Color(new RGBA(176, 196, 222, 1));\n case \"lightyellow\": return new Color(new RGBA(255, 255, 224, 1));\n case \"lime\": return new Color(new RGBA(0, 255, 0, 1));\n case \"limegreen\": return new Color(new RGBA(50, 205, 50, 1));\n case \"linen\": return new Color(new RGBA(250, 240, 230, 1));\n case \"magenta\": return new Color(new RGBA(255, 0, 255, 1));\n case \"maroon\": return new Color(new RGBA(128, 0, 0, 1));\n case \"mediumaquamarine\": return new Color(new RGBA(102, 205, 170, 1));\n case \"mediumblue\": return new Color(new RGBA(0, 0, 205, 1));\n case \"mediumorchid\": return new Color(new RGBA(186, 85, 211, 1));\n case \"mediumpurple\": return new Color(new RGBA(147, 112, 219, 1));\n case \"mediumseagreen\": return new Color(new RGBA(60, 179, 113, 1));\n case \"mediumslateblue\": return new Color(new RGBA(123, 104, 238, 1));\n case \"mediumspringgreen\": return new Color(new RGBA(0, 250, 154, 1));\n case \"mediumturquoise\": return new Color(new RGBA(72, 209, 204, 1));\n case \"mediumvioletred\": return new Color(new RGBA(199, 21, 133, 1));\n case \"midnightblue\": return new Color(new RGBA(25, 25, 112, 1));\n case \"mintcream\": return new Color(new RGBA(245, 255, 250, 1));\n case \"mistyrose\": return new Color(new RGBA(255, 228, 225, 1));\n case \"moccasin\": return new Color(new RGBA(255, 228, 181, 1));\n case \"navajowhite\": return new Color(new RGBA(255, 222, 173, 1));\n case \"navy\": return new Color(new RGBA(0, 0, 128, 1));\n case \"oldlace\": return new Color(new RGBA(253, 245, 230, 1));\n case \"olive\": return new Color(new RGBA(128, 128, 0, 1));\n case \"olivedrab\": return new Color(new RGBA(107, 142, 35, 1));\n case \"orange\": return new Color(new RGBA(255, 165, 0, 1));\n case \"orangered\": return new Color(new RGBA(255, 69, 0, 1));\n case \"orchid\": return new Color(new RGBA(218, 112, 214, 1));\n case \"palegoldenrod\": return new Color(new RGBA(238, 232, 170, 1));\n case \"palegreen\": return new Color(new RGBA(152, 251, 152, 1));\n case \"paleturquoise\": return new Color(new RGBA(175, 238, 238, 1));\n case \"palevioletred\": return new Color(new RGBA(219, 112, 147, 1));\n case \"papayawhip\": return new Color(new RGBA(255, 239, 213, 1));\n case \"peachpuff\": return new Color(new RGBA(255, 218, 185, 1));\n case \"peru\": return new Color(new RGBA(205, 133, 63, 1));\n case \"pink\": return new Color(new RGBA(255, 192, 203, 1));\n case \"plum\": return new Color(new RGBA(221, 160, 221, 1));\n case \"powderblue\": return new Color(new RGBA(176, 224, 230, 1));\n case \"purple\": return new Color(new RGBA(128, 0, 128, 1));\n case \"rebeccapurple\": return new Color(new RGBA(102, 51, 153, 1));\n case \"red\": return new Color(new RGBA(255, 0, 0, 1));\n case \"rosybrown\": return new Color(new RGBA(188, 143, 143, 1));\n case \"royalblue\": return new Color(new RGBA(65, 105, 225, 1));\n case \"saddlebrown\": return new Color(new RGBA(139, 69, 19, 1));\n case \"salmon\": return new Color(new RGBA(250, 128, 114, 1));\n case \"sandybrown\": return new Color(new RGBA(244, 164, 96, 1));\n case \"seagreen\": return new Color(new RGBA(46, 139, 87, 1));\n case \"seashell\": return new Color(new RGBA(255, 245, 238, 1));\n case \"sienna\": return new Color(new RGBA(160, 82, 45, 1));\n case \"silver\": return new Color(new RGBA(192, 192, 192, 1));\n case \"skyblue\": return new Color(new RGBA(135, 206, 235, 1));\n case \"slateblue\": return new Color(new RGBA(106, 90, 205, 1));\n case \"slategray\": return new Color(new RGBA(112, 128, 144, 1));\n case \"slategrey\": return new Color(new RGBA(112, 128, 144, 1));\n case \"snow\": return new Color(new RGBA(255, 250, 250, 1));\n case \"springgreen\": return new Color(new RGBA(0, 255, 127, 1));\n case \"steelblue\": return new Color(new RGBA(70, 130, 180, 1));\n case \"tan\": return new Color(new RGBA(210, 180, 140, 1));\n case \"teal\": return new Color(new RGBA(0, 128, 128, 1));\n case \"thistle\": return new Color(new RGBA(216, 191, 216, 1));\n case \"tomato\": return new Color(new RGBA(255, 99, 71, 1));\n case \"turquoise\": return new Color(new RGBA(64, 224, 208, 1));\n case \"violet\": return new Color(new RGBA(238, 130, 238, 1));\n case \"wheat\": return new Color(new RGBA(245, 222, 179, 1));\n case \"white\": return new Color(new RGBA(255, 255, 255, 1));\n case \"whitesmoke\": return new Color(new RGBA(245, 245, 245, 1));\n case \"yellow\": return new Color(new RGBA(255, 255, 0, 1));\n case \"yellowgreen\": return new Color(new RGBA(154, 205, 50, 1));\n default: return null;\n }\n }\n /**\n * Converts an Hex color value to a Color.\n * returns r, g, and b are contained in the set [0, 255]\n * @param hex string (#RGB, #RGBA, #RRGGBB or #RRGGBBAA).\n */\n function parseHex(hex) {\n const length = hex.length;\n if (length === 0) return null;\n if (hex.charCodeAt(0) !== 35) return null;\n if (length === 7) return new Color(new RGBA(16 * _parseHexDigit(hex.charCodeAt(1)) + _parseHexDigit(hex.charCodeAt(2)), 16 * _parseHexDigit(hex.charCodeAt(3)) + _parseHexDigit(hex.charCodeAt(4)), 16 * _parseHexDigit(hex.charCodeAt(5)) + _parseHexDigit(hex.charCodeAt(6)), 1));\n if (length === 9) return new Color(new RGBA(16 * _parseHexDigit(hex.charCodeAt(1)) + _parseHexDigit(hex.charCodeAt(2)), 16 * _parseHexDigit(hex.charCodeAt(3)) + _parseHexDigit(hex.charCodeAt(4)), 16 * _parseHexDigit(hex.charCodeAt(5)) + _parseHexDigit(hex.charCodeAt(6)), (16 * _parseHexDigit(hex.charCodeAt(7)) + _parseHexDigit(hex.charCodeAt(8))) / 255));\n if (length === 4) {\n const r = _parseHexDigit(hex.charCodeAt(1));\n const g = _parseHexDigit(hex.charCodeAt(2));\n const b = _parseHexDigit(hex.charCodeAt(3));\n return new Color(new RGBA(16 * r + r, 16 * g + g, 16 * b + b));\n }\n if (length === 5) {\n const r = _parseHexDigit(hex.charCodeAt(1));\n const g = _parseHexDigit(hex.charCodeAt(2));\n const b = _parseHexDigit(hex.charCodeAt(3));\n const a = _parseHexDigit(hex.charCodeAt(4));\n return new Color(new RGBA(16 * r + r, 16 * g + g, 16 * b + b, (16 * a + a) / 255));\n }\n return null;\n }\n CSS.parseHex = parseHex;\n function _parseHexDigit(charCode) {\n switch (charCode) {\n case 48: return 0;\n case 49: return 1;\n case 50: return 2;\n case 51: return 3;\n case 52: return 4;\n case 53: return 5;\n case 54: return 6;\n case 55: return 7;\n case 56: return 8;\n case 57: return 9;\n case 97: return 10;\n case 65: return 10;\n case 98: return 11;\n case 66: return 11;\n case 99: return 12;\n case 67: return 12;\n case 100: return 13;\n case 68: return 13;\n case 101: return 14;\n case 69: return 14;\n case 102: return 15;\n case 70: return 15;\n }\n return 0;\n }\n })(Format.CSS || (Format.CSS = {}));\n })(Color.Format || (Color.Format = {}));\n })(Color || (Color = {}));\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/languages/defaultDocumentColorsComputer.js\n function _parseCaptureGroups(captureGroups) {\n const values = [];\n for (const captureGroup of captureGroups) {\n const parsedNumber = Number(captureGroup);\n if (parsedNumber || parsedNumber === 0 && captureGroup.replace(/\\s/g, \"\") !== \"\") values.push(parsedNumber);\n }\n return values;\n }\n function _toIColor(r, g, b, a) {\n return {\n red: r / 255,\n blue: b / 255,\n green: g / 255,\n alpha: a\n };\n }\n function _findRange(model, match) {\n const index = match.index;\n const length = match[0].length;\n if (index === void 0) return;\n const startPosition = model.positionAt(index);\n return {\n startLineNumber: startPosition.lineNumber,\n startColumn: startPosition.column,\n endLineNumber: startPosition.lineNumber,\n endColumn: startPosition.column + length\n };\n }\n function _findHexColorInformation(range, hexValue) {\n if (!range) return;\n const parsedHexColor = Color.Format.CSS.parseHex(hexValue);\n if (!parsedHexColor) return;\n return {\n range,\n color: _toIColor(parsedHexColor.rgba.r, parsedHexColor.rgba.g, parsedHexColor.rgba.b, parsedHexColor.rgba.a)\n };\n }\n function _findRGBColorInformation(range, matches, isAlpha) {\n if (!range || matches.length !== 1) return;\n const parsedRegex = _parseCaptureGroups(matches[0].values());\n return {\n range,\n color: _toIColor(parsedRegex[0], parsedRegex[1], parsedRegex[2], isAlpha ? parsedRegex[3] : 1)\n };\n }\n function _findHSLColorInformation(range, matches, isAlpha) {\n if (!range || matches.length !== 1) return;\n const parsedRegex = _parseCaptureGroups(matches[0].values());\n const colorEquivalent = new Color(new HSLA(parsedRegex[0], parsedRegex[1] / 100, parsedRegex[2] / 100, isAlpha ? parsedRegex[3] : 1));\n return {\n range,\n color: _toIColor(colorEquivalent.rgba.r, colorEquivalent.rgba.g, colorEquivalent.rgba.b, colorEquivalent.rgba.a)\n };\n }\n function _findMatches(model, regex) {\n if (typeof model === \"string\") return [...model.matchAll(regex)];\n else return model.findMatches(regex);\n }\n function computeColors(model) {\n const result = [];\n const initialValidationMatches = _findMatches(model, /\\b(rgb|rgba|hsl|hsla)(\\([0-9\\s,.\\%]*\\))|^(#)([A-Fa-f0-9]{3})\\b|^(#)([A-Fa-f0-9]{4})\\b|^(#)([A-Fa-f0-9]{6})\\b|^(#)([A-Fa-f0-9]{8})\\b|(?<=['\"\\s])(#)([A-Fa-f0-9]{3})\\b|(?<=['\"\\s])(#)([A-Fa-f0-9]{4})\\b|(?<=['\"\\s])(#)([A-Fa-f0-9]{6})\\b|(?<=['\"\\s])(#)([A-Fa-f0-9]{8})\\b/gm);\n if (initialValidationMatches.length > 0) for (const initialMatch of initialValidationMatches) {\n const initialCaptureGroups = initialMatch.filter((captureGroup) => captureGroup !== void 0);\n const colorScheme = initialCaptureGroups[1];\n const colorParameters = initialCaptureGroups[2];\n if (!colorParameters) continue;\n let colorInformation;\n if (colorScheme === \"rgb\") colorInformation = _findRGBColorInformation(_findRange(model, initialMatch), _findMatches(colorParameters, /^\\(\\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\\s*,\\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\\s*,\\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\\s*\\)$/gm), false);\n else if (colorScheme === \"rgba\") colorInformation = _findRGBColorInformation(_findRange(model, initialMatch), _findMatches(colorParameters, /^\\(\\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\\s*,\\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\\s*,\\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\\s*,\\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\\s*\\)$/gm), true);\n else if (colorScheme === \"hsl\") colorInformation = _findHSLColorInformation(_findRange(model, initialMatch), _findMatches(colorParameters, /^\\(\\s*((?:360(?:\\.0+)?|(?:36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])(?:\\.\\d+)?))\\s*[\\s,]\\s*(100|\\d{1,2}[.]\\d*|\\d{1,2})%\\s*[\\s,]\\s*(100|\\d{1,2}[.]\\d*|\\d{1,2})%\\s*\\)$/gm), false);\n else if (colorScheme === \"hsla\") colorInformation = _findHSLColorInformation(_findRange(model, initialMatch), _findMatches(colorParameters, /^\\(\\s*((?:360(?:\\.0+)?|(?:36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])(?:\\.\\d+)?))\\s*[\\s,]\\s*(100|\\d{1,2}[.]\\d*|\\d{1,2})%\\s*[\\s,]\\s*(100|\\d{1,2}[.]\\d*|\\d{1,2})%\\s*[\\s,]\\s*(0[.][0-9]+|[.][0-9]+|[01][.]0*|[01])\\s*\\)$/gm), true);\n else if (colorScheme === \"#\") colorInformation = _findHexColorInformation(_findRange(model, initialMatch), colorScheme + colorParameters);\n if (colorInformation) result.push(colorInformation);\n }\n return result;\n }\n /**\n * Returns an array of all default document colors in the provided document\n */\n function computeDefaultDocumentColors(model) {\n if (!model || typeof model.getValue !== \"function\" || typeof model.positionAt !== \"function\") return [];\n return computeColors(model);\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/services/findSectionHeaders.js\n const trimDashesRegex = /^-+|-+$/g;\n const CHUNK_SIZE = 100;\n const MAX_SECTION_LINES = 5;\n /**\n * Find section headers in the model.\n *\n * @param model the text model to search in\n * @param options options to search with\n * @returns an array of section headers\n */\n function findSectionHeaders(model, options) {\n let headers = [];\n if (options.findRegionSectionHeaders && options.foldingRules?.markers) {\n const regionHeaders = collectRegionHeaders(model, options);\n headers = headers.concat(regionHeaders);\n }\n if (options.findMarkSectionHeaders) {\n const markHeaders = collectMarkHeaders(model, options);\n headers = headers.concat(markHeaders);\n }\n return headers;\n }\n function collectRegionHeaders(model, options) {\n const regionHeaders = [];\n const endLineNumber = model.getLineCount();\n for (let lineNumber = 1; lineNumber <= endLineNumber; lineNumber++) {\n const lineContent = model.getLineContent(lineNumber);\n const match = lineContent.match(options.foldingRules.markers.start);\n if (match) {\n const range = {\n startLineNumber: lineNumber,\n startColumn: match[0].length + 1,\n endLineNumber: lineNumber,\n endColumn: lineContent.length + 1\n };\n if (range.endColumn > range.startColumn) {\n const sectionHeader = {\n range,\n ...getHeaderText(lineContent.substring(match[0].length)),\n shouldBeInComments: false\n };\n if (sectionHeader.text || sectionHeader.hasSeparatorLine) regionHeaders.push(sectionHeader);\n }\n }\n }\n return regionHeaders;\n }\n function collectMarkHeaders(model, options) {\n const markHeaders = [];\n const endLineNumber = model.getLineCount();\n if (!options.markSectionHeaderRegex || options.markSectionHeaderRegex.trim() === \"\") return markHeaders;\n const multiline = isMultilineRegexSource(options.markSectionHeaderRegex);\n const regex = new RegExp(options.markSectionHeaderRegex, `gdm${multiline ? \"s\" : \"\"}`);\n if (regExpLeadsToEndlessLoop(regex)) return markHeaders;\n for (let startLine = 1; startLine <= endLineNumber; startLine += CHUNK_SIZE - MAX_SECTION_LINES) {\n const endLine = Math.min(startLine + CHUNK_SIZE - 1, endLineNumber);\n const lines = [];\n for (let i = startLine; i <= endLine; i++) lines.push(model.getLineContent(i));\n const text = lines.join(\"\\n\");\n regex.lastIndex = 0;\n let match;\n while ((match = regex.exec(text)) !== null) {\n const precedingText = text.substring(0, match.index);\n const lineOffset = (precedingText.match(/\\n/g) || []).length;\n const lineNumber = startLine + lineOffset;\n const matchLines = match[0].split(\"\\n\");\n const matchHeight = matchLines.length;\n const matchEndLine = lineNumber + matchHeight - 1;\n const lineStartIndex = precedingText.lastIndexOf(\"\\n\") + 1;\n const startColumn = match.index - lineStartIndex + 1;\n const lastMatchLine = matchLines[matchLines.length - 1];\n const sectionHeader = {\n range: {\n startLineNumber: lineNumber,\n startColumn,\n endLineNumber: matchEndLine,\n endColumn: matchHeight === 1 ? startColumn + match[0].length : lastMatchLine.length + 1\n },\n text: (match.groups ?? {})[\"label\"] ?? \"\",\n hasSeparatorLine: ((match.groups ?? {})[\"separator\"] ?? \"\") !== \"\",\n shouldBeInComments: true\n };\n if (sectionHeader.text || sectionHeader.hasSeparatorLine) {\n if (markHeaders.length === 0 || markHeaders[markHeaders.length - 1].range.endLineNumber < sectionHeader.range.startLineNumber) markHeaders.push(sectionHeader);\n }\n regex.lastIndex = match.index + match[0].length;\n }\n }\n return markHeaders;\n }\n function getHeaderText(text) {\n text = text.trim();\n const hasSeparatorLine = text.startsWith(\"-\");\n text = text.replace(trimDashesRegex, \"\");\n return {\n text,\n hasSeparatorLine\n };\n }\n (function() {\n const safeGlobal = globalThis;\n if (typeof safeGlobal.requestIdleCallback !== \"function\" || typeof safeGlobal.cancelIdleCallback !== \"function\");\n })();\n /**\n * Creates a promise whose resolution or rejection can be controlled imperatively.\n */\n var DeferredPromise = class {\n get isRejected() {\n return this.outcome?.outcome === 1;\n }\n get isSettled() {\n return !!this.outcome;\n }\n constructor() {\n this.p = new Promise((c, e) => {\n this.completeCallback = c;\n this.errorCallback = e;\n });\n }\n complete(value) {\n if (this.isSettled) return Promise.resolve();\n return new Promise((resolve) => {\n this.completeCallback(value);\n this.outcome = {\n outcome: 0,\n value\n };\n resolve();\n });\n }\n error(err) {\n if (this.isSettled) return Promise.resolve();\n return new Promise((resolve) => {\n this.errorCallback(err);\n this.outcome = {\n outcome: 1,\n value: err\n };\n resolve();\n });\n }\n cancel() {\n return this.error(new CancellationError());\n }\n };\n var Promises;\n (function(Promises) {\n /**\n * A drop-in replacement for `Promise.all` with the only difference\n * that the method awaits every promise to either fulfill or reject.\n *\n * Similar to `Promise.all`, only the first error will be returned\n * if any.\n */\n async function settled(promises) {\n let firstError = void 0;\n const result = await Promise.all(promises.map((promise) => promise.then((value) => value, (error) => {\n if (!firstError) firstError = error;\n })));\n if (typeof firstError !== \"undefined\") throw firstError;\n return result;\n }\n Promises.settled = settled;\n /**\n * A helper to create a new `Promise<T>` with a body that is a promise\n * itself. By default, an error that raises from the async body will\n * end up as a unhandled rejection, so this utility properly awaits the\n * body and rejects the promise as a normal promise does without async\n * body.\n *\n * This method should only be used in rare cases where otherwise `async`\n * cannot be used (e.g. when callbacks are involved that require this).\n */\n function withAsyncBody(bodyFn) {\n return new Promise(async (resolve, reject) => {\n try {\n await bodyFn(resolve, reject);\n } catch (error) {\n reject(error);\n }\n });\n }\n Promises.withAsyncBody = withAsyncBody;\n })(Promises || (Promises = {}));\n var ProducerConsumer = class {\n constructor() {\n this._unsatisfiedConsumers = [];\n this._unconsumedValues = [];\n }\n get hasFinalValue() {\n return !!this._finalValue;\n }\n produce(value) {\n this._ensureNoFinalValue();\n if (this._unsatisfiedConsumers.length > 0) {\n const deferred = this._unsatisfiedConsumers.shift();\n this._resolveOrRejectDeferred(deferred, value);\n } else this._unconsumedValues.push(value);\n }\n produceFinal(value) {\n this._ensureNoFinalValue();\n this._finalValue = value;\n for (const deferred of this._unsatisfiedConsumers) this._resolveOrRejectDeferred(deferred, value);\n this._unsatisfiedConsumers.length = 0;\n }\n _ensureNoFinalValue() {\n if (this._finalValue) throw new BugIndicatingError(\"ProducerConsumer: cannot produce after final value has been set\");\n }\n _resolveOrRejectDeferred(deferred, value) {\n if (value.ok) deferred.complete(value.value);\n else deferred.error(value.error);\n }\n consume() {\n if (this._unconsumedValues.length > 0 || this._finalValue) {\n const value = this._unconsumedValues.length > 0 ? this._unconsumedValues.shift() : this._finalValue;\n if (value.ok) return Promise.resolve(value.value);\n else return Promise.reject(value.error);\n } else {\n const deferred = new DeferredPromise();\n this._unsatisfiedConsumers.push(deferred);\n return deferred.p;\n }\n }\n };\n (class AsyncIterableProducer {\n constructor(executor, _onReturn) {\n this._onReturn = _onReturn;\n this._producerConsumer = new ProducerConsumer();\n this._iterator = {\n next: () => this._producerConsumer.consume(),\n return: () => {\n this._onReturn?.();\n return Promise.resolve({\n done: true,\n value: void 0\n });\n },\n throw: async (e) => {\n this._finishError(e);\n return {\n done: true,\n value: void 0\n };\n }\n };\n queueMicrotask(async () => {\n const p = executor({\n emitOne: (value) => this._producerConsumer.produce({\n ok: true,\n value: {\n done: false,\n value\n }\n }),\n emitMany: (values) => {\n for (const value of values) this._producerConsumer.produce({\n ok: true,\n value: {\n done: false,\n value\n }\n });\n },\n reject: (error) => this._finishError(error)\n });\n if (!this._producerConsumer.hasFinalValue) try {\n await p;\n this._finishOk();\n } catch (error) {\n this._finishError(error);\n }\n });\n }\n static fromArray(items) {\n return new AsyncIterableProducer((writer) => {\n writer.emitMany(items);\n });\n }\n static fromPromise(promise) {\n return new AsyncIterableProducer(async (emitter) => {\n emitter.emitMany(await promise);\n });\n }\n static fromPromisesResolveOrder(promises) {\n return new AsyncIterableProducer(async (emitter) => {\n await Promise.all(promises.map(async (p) => emitter.emitOne(await p)));\n });\n }\n static merge(iterables) {\n return new AsyncIterableProducer(async (emitter) => {\n await Promise.all(iterables.map(async (iterable) => {\n for await (const item of iterable) emitter.emitOne(item);\n }));\n });\n }\n static {\n this.EMPTY = AsyncIterableProducer.fromArray([]);\n }\n static map(iterable, mapFn) {\n return new AsyncIterableProducer(async (emitter) => {\n for await (const item of iterable) emitter.emitOne(mapFn(item));\n });\n }\n map(mapFn) {\n return AsyncIterableProducer.map(this, mapFn);\n }\n static coalesce(iterable) {\n return AsyncIterableProducer.filter(iterable, (item) => !!item);\n }\n coalesce() {\n return AsyncIterableProducer.coalesce(this);\n }\n static filter(iterable, filterFn) {\n return new AsyncIterableProducer(async (emitter) => {\n for await (const item of iterable) if (filterFn(item)) emitter.emitOne(item);\n });\n }\n filter(filterFn) {\n return AsyncIterableProducer.filter(this, filterFn);\n }\n _finishOk() {\n if (!this._producerConsumer.hasFinalValue) this._producerConsumer.produceFinal({\n ok: true,\n value: {\n done: true,\n value: void 0\n }\n });\n }\n _finishError(error) {\n if (!this._producerConsumer.hasFinalValue) this._producerConsumer.produceFinal({\n ok: false,\n error\n });\n }\n [Symbol.asyncIterator]() {\n return this._iterator;\n }\n });\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/model/prefixSumComputer.js\n var PrefixSumComputer = class {\n constructor(values) {\n this.values = values;\n this.prefixSum = new Uint32Array(values.length);\n this.prefixSumValidIndex = /* @__PURE__ */ new Int32Array(1);\n this.prefixSumValidIndex[0] = -1;\n }\n insertValues(insertIndex, insertValues) {\n insertIndex = toUint32(insertIndex);\n const oldValues = this.values;\n const oldPrefixSum = this.prefixSum;\n const insertValuesLen = insertValues.length;\n if (insertValuesLen === 0) return false;\n this.values = new Uint32Array(oldValues.length + insertValuesLen);\n this.values.set(oldValues.subarray(0, insertIndex), 0);\n this.values.set(oldValues.subarray(insertIndex), insertIndex + insertValuesLen);\n this.values.set(insertValues, insertIndex);\n if (insertIndex - 1 < this.prefixSumValidIndex[0]) this.prefixSumValidIndex[0] = insertIndex - 1;\n this.prefixSum = new Uint32Array(this.values.length);\n if (this.prefixSumValidIndex[0] >= 0) this.prefixSum.set(oldPrefixSum.subarray(0, this.prefixSumValidIndex[0] + 1));\n return true;\n }\n setValue(index, value) {\n index = toUint32(index);\n value = toUint32(value);\n if (this.values[index] === value) return false;\n this.values[index] = value;\n if (index - 1 < this.prefixSumValidIndex[0]) this.prefixSumValidIndex[0] = index - 1;\n return true;\n }\n removeValues(startIndex, count) {\n startIndex = toUint32(startIndex);\n count = toUint32(count);\n const oldValues = this.values;\n const oldPrefixSum = this.prefixSum;\n if (startIndex >= oldValues.length) return false;\n const maxCount = oldValues.length - startIndex;\n if (count >= maxCount) count = maxCount;\n if (count === 0) return false;\n this.values = new Uint32Array(oldValues.length - count);\n this.values.set(oldValues.subarray(0, startIndex), 0);\n this.values.set(oldValues.subarray(startIndex + count), startIndex);\n this.prefixSum = new Uint32Array(this.values.length);\n if (startIndex - 1 < this.prefixSumValidIndex[0]) this.prefixSumValidIndex[0] = startIndex - 1;\n if (this.prefixSumValidIndex[0] >= 0) this.prefixSum.set(oldPrefixSum.subarray(0, this.prefixSumValidIndex[0] + 1));\n return true;\n }\n getTotalSum() {\n if (this.values.length === 0) return 0;\n return this._getPrefixSum(this.values.length - 1);\n }\n /**\n * Returns the sum of the first `index + 1` many items.\n * @returns `SUM(0 <= j <= index, values[j])`.\n */\n getPrefixSum(index) {\n if (index < 0) return 0;\n index = toUint32(index);\n return this._getPrefixSum(index);\n }\n _getPrefixSum(index) {\n if (index <= this.prefixSumValidIndex[0]) return this.prefixSum[index];\n let startIndex = this.prefixSumValidIndex[0] + 1;\n if (startIndex === 0) {\n this.prefixSum[0] = this.values[0];\n startIndex++;\n }\n if (index >= this.values.length) index = this.values.length - 1;\n for (let i = startIndex; i <= index; i++) this.prefixSum[i] = this.prefixSum[i - 1] + this.values[i];\n this.prefixSumValidIndex[0] = Math.max(this.prefixSumValidIndex[0], index);\n return this.prefixSum[index];\n }\n getIndexOf(sum) {\n sum = Math.floor(sum);\n this.getTotalSum();\n let low = 0;\n let high = this.values.length - 1;\n let mid = 0;\n let midStop = 0;\n let midStart = 0;\n while (low <= high) {\n mid = low + (high - low) / 2 | 0;\n midStop = this.prefixSum[mid];\n midStart = midStop - this.values[mid];\n if (sum < midStart) high = mid - 1;\n else if (sum >= midStop) low = mid + 1;\n else break;\n }\n return new PrefixSumIndexOfResult(mid, sum - midStart);\n }\n };\n var PrefixSumIndexOfResult = class {\n constructor(index, remainder) {\n this.index = index;\n this.remainder = remainder;\n this._prefixSumIndexOfResultBrand = void 0;\n this.index = index;\n this.remainder = remainder;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/model/mirrorTextModel.js\n var MirrorTextModel = class {\n constructor(uri, lines, eol, versionId) {\n this._uri = uri;\n this._lines = lines;\n this._eol = eol;\n this._versionId = versionId;\n this._lineStarts = null;\n this._cachedTextValue = null;\n }\n dispose() {\n this._lines.length = 0;\n }\n get version() {\n return this._versionId;\n }\n getText() {\n if (this._cachedTextValue === null) this._cachedTextValue = this._lines.join(this._eol);\n return this._cachedTextValue;\n }\n onEvents(e) {\n if (e.eol && e.eol !== this._eol) {\n this._eol = e.eol;\n this._lineStarts = null;\n }\n const changes = e.changes;\n for (const change of changes) {\n this._acceptDeleteRange(change.range);\n this._acceptInsertText(new Position(change.range.startLineNumber, change.range.startColumn), change.text);\n }\n this._versionId = e.versionId;\n this._cachedTextValue = null;\n }\n _ensureLineStarts() {\n if (!this._lineStarts) {\n const eolLength = this._eol.length;\n const linesLength = this._lines.length;\n const lineStartValues = new Uint32Array(linesLength);\n for (let i = 0; i < linesLength; i++) lineStartValues[i] = this._lines[i].length + eolLength;\n this._lineStarts = new PrefixSumComputer(lineStartValues);\n }\n }\n /**\n * All changes to a line's text go through this method\n */\n _setLineText(lineIndex, newValue) {\n this._lines[lineIndex] = newValue;\n if (this._lineStarts) this._lineStarts.setValue(lineIndex, this._lines[lineIndex].length + this._eol.length);\n }\n _acceptDeleteRange(range) {\n if (range.startLineNumber === range.endLineNumber) {\n if (range.startColumn === range.endColumn) return;\n this._setLineText(range.startLineNumber - 1, this._lines[range.startLineNumber - 1].substring(0, range.startColumn - 1) + this._lines[range.startLineNumber - 1].substring(range.endColumn - 1));\n return;\n }\n this._setLineText(range.startLineNumber - 1, this._lines[range.startLineNumber - 1].substring(0, range.startColumn - 1) + this._lines[range.endLineNumber - 1].substring(range.endColumn - 1));\n this._lines.splice(range.startLineNumber, range.endLineNumber - range.startLineNumber);\n if (this._lineStarts) this._lineStarts.removeValues(range.startLineNumber, range.endLineNumber - range.startLineNumber);\n }\n _acceptInsertText(position, insertText) {\n if (insertText.length === 0) return;\n const insertLines = splitLines(insertText);\n if (insertLines.length === 1) {\n this._setLineText(position.lineNumber - 1, this._lines[position.lineNumber - 1].substring(0, position.column - 1) + insertLines[0] + this._lines[position.lineNumber - 1].substring(position.column - 1));\n return;\n }\n insertLines[insertLines.length - 1] += this._lines[position.lineNumber - 1].substring(position.column - 1);\n this._setLineText(position.lineNumber - 1, this._lines[position.lineNumber - 1].substring(0, position.column - 1) + insertLines[0]);\n const newLengths = new Uint32Array(insertLines.length - 1);\n for (let i = 1; i < insertLines.length; i++) {\n this._lines.splice(position.lineNumber + i - 1, 0, insertLines[i]);\n newLengths[i - 1] = insertLines[i].length + this._eol.length;\n }\n if (this._lineStarts) this._lineStarts.insertValues(position.lineNumber, newLengths);\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/services/textModelSync/textModelSync.impl.js\n var WorkerTextModelSyncServer = class {\n constructor() {\n this._models = Object.create(null);\n }\n getModel(uri) {\n return this._models[uri];\n }\n getModels() {\n const all = [];\n Object.keys(this._models).forEach((key) => all.push(this._models[key]));\n return all;\n }\n $acceptNewModel(data) {\n this._models[data.url] = new MirrorModel(URI.parse(data.url), data.lines, data.EOL, data.versionId);\n }\n $acceptModelChanged(uri, e) {\n if (!this._models[uri]) return;\n this._models[uri].onEvents(e);\n }\n $acceptRemovedModel(uri) {\n if (!this._models[uri]) return;\n delete this._models[uri];\n }\n };\n var MirrorModel = class extends MirrorTextModel {\n get uri() {\n return this._uri;\n }\n get eol() {\n return this._eol;\n }\n getValue() {\n return this.getText();\n }\n findMatches(regex) {\n const matches = [];\n for (let i = 0; i < this._lines.length; i++) {\n const line = this._lines[i];\n const offsetToAdd = this.offsetAt(new Position(i + 1, 1));\n const iteratorOverMatches = line.matchAll(regex);\n for (const match of iteratorOverMatches) {\n if (match.index || match.index === 0) match.index = match.index + offsetToAdd;\n matches.push(match);\n }\n }\n return matches;\n }\n getLinesContent() {\n return this._lines.slice(0);\n }\n getLineCount() {\n return this._lines.length;\n }\n getLineContent(lineNumber) {\n return this._lines[lineNumber - 1];\n }\n getWordAtPosition(position, wordDefinition) {\n const wordAtText = getWordAtText(position.column, ensureValidWordDefinition(wordDefinition), this._lines[position.lineNumber - 1], 0);\n if (wordAtText) return new Range(position.lineNumber, wordAtText.startColumn, position.lineNumber, wordAtText.endColumn);\n return null;\n }\n words(wordDefinition) {\n const lines = this._lines;\n const wordenize = this._wordenize.bind(this);\n let lineNumber = 0;\n let lineText = \"\";\n let wordRangesIdx = 0;\n let wordRanges = [];\n return { *[Symbol.iterator]() {\n while (true) if (wordRangesIdx < wordRanges.length) {\n const value = lineText.substring(wordRanges[wordRangesIdx].start, wordRanges[wordRangesIdx].end);\n wordRangesIdx += 1;\n yield value;\n } else if (lineNumber < lines.length) {\n lineText = lines[lineNumber];\n wordRanges = wordenize(lineText, wordDefinition);\n wordRangesIdx = 0;\n lineNumber += 1;\n } else break;\n } };\n }\n getLineWords(lineNumber, wordDefinition) {\n const content = this._lines[lineNumber - 1];\n const ranges = this._wordenize(content, wordDefinition);\n const words = [];\n for (const range of ranges) words.push({\n word: content.substring(range.start, range.end),\n startColumn: range.start + 1,\n endColumn: range.end + 1\n });\n return words;\n }\n _wordenize(content, wordDefinition) {\n const result = [];\n let match;\n wordDefinition.lastIndex = 0;\n while (match = wordDefinition.exec(content)) {\n if (match[0].length === 0) break;\n result.push({\n start: match.index,\n end: match.index + match[0].length\n });\n }\n return result;\n }\n getValueInRange(range) {\n range = this._validateRange(range);\n if (range.startLineNumber === range.endLineNumber) return this._lines[range.startLineNumber - 1].substring(range.startColumn - 1, range.endColumn - 1);\n const lineEnding = this._eol;\n const startLineIndex = range.startLineNumber - 1;\n const endLineIndex = range.endLineNumber - 1;\n const resultLines = [];\n resultLines.push(this._lines[startLineIndex].substring(range.startColumn - 1));\n for (let i = startLineIndex + 1; i < endLineIndex; i++) resultLines.push(this._lines[i]);\n resultLines.push(this._lines[endLineIndex].substring(0, range.endColumn - 1));\n return resultLines.join(lineEnding);\n }\n offsetAt(position) {\n position = this._validatePosition(position);\n this._ensureLineStarts();\n return this._lineStarts.getPrefixSum(position.lineNumber - 2) + (position.column - 1);\n }\n positionAt(offset) {\n offset = Math.floor(offset);\n offset = Math.max(0, offset);\n this._ensureLineStarts();\n const out = this._lineStarts.getIndexOf(offset);\n const lineLength = this._lines[out.index].length;\n return {\n lineNumber: 1 + out.index,\n column: 1 + Math.min(out.remainder, lineLength)\n };\n }\n _validateRange(range) {\n const start = this._validatePosition({\n lineNumber: range.startLineNumber,\n column: range.startColumn\n });\n const end = this._validatePosition({\n lineNumber: range.endLineNumber,\n column: range.endColumn\n });\n if (start.lineNumber !== range.startLineNumber || start.column !== range.startColumn || end.lineNumber !== range.endLineNumber || end.column !== range.endColumn) return {\n startLineNumber: start.lineNumber,\n startColumn: start.column,\n endLineNumber: end.lineNumber,\n endColumn: end.column\n };\n return range;\n }\n _validatePosition(position) {\n if (!Position.isIPosition(position)) throw new Error(\"bad position\");\n let { lineNumber, column } = position;\n let hasChanged = false;\n if (lineNumber < 1) {\n lineNumber = 1;\n column = 1;\n hasChanged = true;\n } else if (lineNumber > this._lines.length) {\n lineNumber = this._lines.length;\n column = this._lines[lineNumber - 1].length + 1;\n hasChanged = true;\n } else {\n const maxCharacter = this._lines[lineNumber - 1].length + 1;\n if (column < 1) {\n column = 1;\n hasChanged = true;\n } else if (column > maxCharacter) {\n column = maxCharacter;\n hasChanged = true;\n }\n }\n if (!hasChanged) return position;\n else return {\n lineNumber,\n column\n };\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/services/editorWebWorker.js\n /**\n * @internal\n */\n var EditorWorker = class EditorWorker {\n constructor(_foreignModule = null) {\n this._foreignModule = _foreignModule;\n this._requestHandlerBrand = void 0;\n this._workerTextModelSyncServer = new WorkerTextModelSyncServer();\n }\n dispose() {}\n async $ping() {\n return \"pong\";\n }\n _getModel(uri) {\n return this._workerTextModelSyncServer.getModel(uri);\n }\n getModels() {\n return this._workerTextModelSyncServer.getModels();\n }\n $acceptNewModel(data) {\n this._workerTextModelSyncServer.$acceptNewModel(data);\n }\n $acceptModelChanged(uri, e) {\n this._workerTextModelSyncServer.$acceptModelChanged(uri, e);\n }\n $acceptRemovedModel(uri) {\n this._workerTextModelSyncServer.$acceptRemovedModel(uri);\n }\n async $computeUnicodeHighlights(url, options, range) {\n const model = this._getModel(url);\n if (!model) return {\n ranges: [],\n hasMore: false,\n ambiguousCharacterCount: 0,\n invisibleCharacterCount: 0,\n nonBasicAsciiCharacterCount: 0\n };\n return UnicodeTextModelHighlighter.computeUnicodeHighlights(model, options, range);\n }\n async $findSectionHeaders(url, options) {\n const model = this._getModel(url);\n if (!model) return [];\n return findSectionHeaders(model, options);\n }\n async $computeDiff(originalUrl, modifiedUrl, options, algorithm) {\n const original = this._getModel(originalUrl);\n const modified = this._getModel(modifiedUrl);\n if (!original || !modified) return null;\n return EditorWorker.computeDiff(original, modified, options, algorithm);\n }\n static computeDiff(originalTextModel, modifiedTextModel, options, algorithm) {\n const diffAlgorithm = algorithm === \"advanced\" ? linesDiffComputers.getDefault() : linesDiffComputers.getLegacy();\n const originalLines = originalTextModel.getLinesContent();\n const modifiedLines = modifiedTextModel.getLinesContent();\n const result = diffAlgorithm.computeDiff(originalLines, modifiedLines, options);\n const identical = result.changes.length > 0 ? false : this._modelsAreIdentical(originalTextModel, modifiedTextModel);\n function getLineChanges(changes) {\n return changes.map((m) => [\n m.original.startLineNumber,\n m.original.endLineNumberExclusive,\n m.modified.startLineNumber,\n m.modified.endLineNumberExclusive,\n m.innerChanges?.map((m) => [\n m.originalRange.startLineNumber,\n m.originalRange.startColumn,\n m.originalRange.endLineNumber,\n m.originalRange.endColumn,\n m.modifiedRange.startLineNumber,\n m.modifiedRange.startColumn,\n m.modifiedRange.endLineNumber,\n m.modifiedRange.endColumn\n ])\n ]);\n }\n return {\n identical,\n quitEarly: result.hitTimeout,\n changes: getLineChanges(result.changes),\n moves: result.moves.map((m) => [\n m.lineRangeMapping.original.startLineNumber,\n m.lineRangeMapping.original.endLineNumberExclusive,\n m.lineRangeMapping.modified.startLineNumber,\n m.lineRangeMapping.modified.endLineNumberExclusive,\n getLineChanges(m.changes)\n ])\n };\n }\n static _modelsAreIdentical(original, modified) {\n const originalLineCount = original.getLineCount();\n if (originalLineCount !== modified.getLineCount()) return false;\n for (let line = 1; line <= originalLineCount; line++) if (original.getLineContent(line) !== modified.getLineContent(line)) return false;\n return true;\n }\n static {\n this._diffLimit = 1e5;\n }\n async $computeMoreMinimalEdits(modelUrl, edits, pretty) {\n const model = this._getModel(modelUrl);\n if (!model) return edits;\n const result = [];\n let lastEol = void 0;\n edits = edits.slice(0).sort((a, b) => {\n if (a.range && b.range) return Range.compareRangesUsingStarts(a.range, b.range);\n return (a.range ? 0 : 1) - (b.range ? 0 : 1);\n });\n let writeIndex = 0;\n for (let readIndex = 1; readIndex < edits.length; readIndex++) if (Range.getEndPosition(edits[writeIndex].range).equals(Range.getStartPosition(edits[readIndex].range))) {\n edits[writeIndex].range = Range.fromPositions(Range.getStartPosition(edits[writeIndex].range), Range.getEndPosition(edits[readIndex].range));\n edits[writeIndex].text += edits[readIndex].text;\n } else {\n writeIndex++;\n edits[writeIndex] = edits[readIndex];\n }\n edits.length = writeIndex + 1;\n for (let { range, text, eol } of edits) {\n if (typeof eol === \"number\") lastEol = eol;\n if (Range.isEmpty(range) && !text) continue;\n const original = model.getValueInRange(range);\n text = text.replace(/\\r\\n|\\n|\\r/g, model.eol);\n if (original === text) continue;\n if (Math.max(text.length, original.length) > EditorWorker._diffLimit) {\n result.push({\n range,\n text\n });\n continue;\n }\n const changes = stringDiff(original, text, pretty);\n const editOffset = model.offsetAt(Range.lift(range).getStartPosition());\n for (const change of changes) {\n const start = model.positionAt(editOffset + change.originalStart);\n const end = model.positionAt(editOffset + change.originalStart + change.originalLength);\n const newEdit = {\n text: text.substr(change.modifiedStart, change.modifiedLength),\n range: {\n startLineNumber: start.lineNumber,\n startColumn: start.column,\n endLineNumber: end.lineNumber,\n endColumn: end.column\n }\n };\n if (model.getValueInRange(newEdit.range) !== newEdit.text) result.push(newEdit);\n }\n }\n if (typeof lastEol === \"number\") result.push({\n eol: lastEol,\n text: \"\",\n range: {\n startLineNumber: 0,\n startColumn: 0,\n endLineNumber: 0,\n endColumn: 0\n }\n });\n return result;\n }\n async $computeLinks(modelUrl) {\n const model = this._getModel(modelUrl);\n if (!model) return null;\n return computeLinks(model);\n }\n async $computeDefaultDocumentColors(modelUrl) {\n const model = this._getModel(modelUrl);\n if (!model) return null;\n return computeDefaultDocumentColors(model);\n }\n static {\n this._suggestionsLimit = 1e4;\n }\n async $textualSuggest(modelUrls, leadingWord, wordDef, wordDefFlags) {\n const sw = new StopWatch();\n const wordDefRegExp = new RegExp(wordDef, wordDefFlags);\n const seen = /* @__PURE__ */ new Set();\n outer: for (const url of modelUrls) {\n const model = this._getModel(url);\n if (!model) continue;\n for (const word of model.words(wordDefRegExp)) {\n if (word === leadingWord || !isNaN(Number(word))) continue;\n seen.add(word);\n if (seen.size > EditorWorker._suggestionsLimit) break outer;\n }\n }\n return {\n words: Array.from(seen),\n duration: sw.elapsed()\n };\n }\n async $computeWordRanges(modelUrl, range, wordDef, wordDefFlags) {\n const model = this._getModel(modelUrl);\n if (!model) return Object.create(null);\n const wordDefRegExp = new RegExp(wordDef, wordDefFlags);\n const result = Object.create(null);\n for (let line = range.startLineNumber; line < range.endLineNumber; line++) {\n const words = model.getLineWords(line, wordDefRegExp);\n for (const word of words) {\n if (!isNaN(Number(word.word))) continue;\n let array = result[word.word];\n if (!array) {\n array = [];\n result[word.word] = array;\n }\n array.push({\n startLineNumber: line,\n startColumn: word.startColumn,\n endLineNumber: line,\n endColumn: word.endColumn\n });\n }\n }\n return result;\n }\n async $navigateValueSet(modelUrl, range, up, wordDef, wordDefFlags) {\n const model = this._getModel(modelUrl);\n if (!model) return null;\n const wordDefRegExp = new RegExp(wordDef, wordDefFlags);\n if (range.startColumn === range.endColumn) range = {\n startLineNumber: range.startLineNumber,\n startColumn: range.startColumn,\n endLineNumber: range.endLineNumber,\n endColumn: range.endColumn + 1\n };\n const selectionText = model.getValueInRange(range);\n const wordRange = model.getWordAtPosition({\n lineNumber: range.startLineNumber,\n column: range.startColumn\n }, wordDefRegExp);\n if (!wordRange) return null;\n const word = model.getValueInRange(wordRange);\n return BasicInplaceReplace.INSTANCE.navigateValueSet(range, selectionText, wordRange, word, up);\n }\n $fmr(method, args) {\n if (!this._foreignModule || typeof this._foreignModule[method] !== \"function\") return Promise.reject(/* @__PURE__ */ new Error(\"Missing requestHandler or method: \" + method));\n try {\n return Promise.resolve(this._foreignModule[method].apply(this._foreignModule, args));\n } catch (e) {\n return Promise.reject(e);\n }\n }\n };\n if (typeof importScripts === \"function\") globalThis.monaco = createMonacoBaseAPI();\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/services/editorWorkerHost.js\n var EditorWorkerHost = class EditorWorkerHost {\n static {\n this.CHANNEL_NAME = \"editorWorkerHost\";\n }\n static getChannel(workerServer) {\n return workerServer.getChannel(EditorWorkerHost.CHANNEL_NAME);\n }\n static setChannel(workerClient, obj) {\n workerClient.setChannel(EditorWorkerHost.CHANNEL_NAME, obj);\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/editor.worker.start.js\n /**\n * Used by `monaco-editor` to hook up web worker rpc.\n * @skipMangle\n * @internal\n */\n function start(createClient) {\n let client;\n const webWorkerServer = initialize((workerServer) => {\n const editorWorkerHost = EditorWorkerHost.getChannel(workerServer);\n client = createClient({\n host: new Proxy({}, { get(target, prop, receiver) {\n if (prop === \"then\") return;\n if (typeof prop !== \"string\") throw new Error(`Not supported`);\n return (...args) => {\n return editorWorkerHost.$fhr(prop, args);\n };\n } }),\n getMirrorModels: () => {\n return webWorkerServer.requestHandler.getModels();\n }\n });\n return new EditorWorker(client);\n });\n return client;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/common/initialize.js\n let initialized = false;\n function isWorkerInitialized() {\n return initialized;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/editor.worker.js\n self.onmessage = () => {\n if (!isWorkerInitialized()) start(() => {\n return {};\n });\n };\n //#endregion\n})();\n\n//# sourceMappingURL=editor.worker-e3drisr8.js.map";
|
|
2
|
+
var jsContent = "(function() {\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/errors.js\n var ErrorHandler = class {\n constructor() {\n this.listeners = [];\n this.unexpectedErrorHandler = function(e) {\n setTimeout(() => {\n if (e.stack) {\n if (ErrorNoTelemetry.isErrorNoTelemetry(e)) throw new ErrorNoTelemetry(e.message + \"\\n\\n\" + e.stack);\n throw new Error(e.message + \"\\n\\n\" + e.stack);\n }\n throw e;\n }, 0);\n };\n }\n emit(e) {\n this.listeners.forEach((listener) => {\n listener(e);\n });\n }\n onUnexpectedError(e) {\n this.unexpectedErrorHandler(e);\n this.emit(e);\n }\n onUnexpectedExternalError(e) {\n this.unexpectedErrorHandler(e);\n }\n };\n const errorHandler = new ErrorHandler();\n function onUnexpectedError(e) {\n if (!isCancellationError(e)) errorHandler.onUnexpectedError(e);\n }\n function transformErrorForSerialization(error) {\n if (error instanceof Error) {\n const { name, message, cause } = error;\n return {\n $isError: true,\n name,\n message,\n stack: error.stacktrace || error.stack,\n noTelemetry: ErrorNoTelemetry.isErrorNoTelemetry(error),\n cause: cause ? transformErrorForSerialization(cause) : void 0,\n code: error.code\n };\n }\n return error;\n }\n const canceledName = \"Canceled\";\n /**\n * Checks if the given error is a promise in canceled state\n */\n function isCancellationError(error) {\n if (error instanceof CancellationError) return true;\n return error instanceof Error && error.name === \"Canceled\" && error.message === \"Canceled\";\n }\n var CancellationError = class extends Error {\n constructor() {\n super(canceledName);\n this.name = this.message;\n }\n };\n /**\n * Error that when thrown won't be logged in telemetry as an unhandled error.\n */\n var ErrorNoTelemetry = class ErrorNoTelemetry extends Error {\n constructor(msg) {\n super(msg);\n this.name = \"CodeExpectedError\";\n }\n static fromError(err) {\n if (err instanceof ErrorNoTelemetry) return err;\n const result = new ErrorNoTelemetry();\n result.message = err.message;\n result.stack = err.stack;\n return result;\n }\n static isErrorNoTelemetry(err) {\n return err.name === \"CodeExpectedError\";\n }\n };\n /**\n * This error indicates a bug.\n * Do not throw this for invalid user input.\n * Only catch this error to recover gracefully from bugs.\n */\n var BugIndicatingError = class BugIndicatingError extends Error {\n constructor(message) {\n super(message || \"An unexpected bug occurred.\");\n Object.setPrototypeOf(this, BugIndicatingError.prototype);\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/assert.js\n function assertNever(value, message = \"Unreachable\") {\n throw new Error(message);\n }\n /**\n * Asserts that a condition is `truthy`.\n *\n * @throws provided {@linkcode messageOrError} if the {@linkcode condition} is `falsy`.\n *\n * @param condition The condition to assert.\n * @param messageOrError An error message or error object to throw if condition is `falsy`.\n */\n function assert(condition, messageOrError = \"unexpected state\") {\n if (!condition) throw typeof messageOrError === \"string\" ? new BugIndicatingError(`Assertion Failed: ${messageOrError}`) : messageOrError;\n }\n /**\n * condition must be side-effect free!\n */\n function assertFn(condition) {\n if (!condition()) {\n debugger;\n condition();\n onUnexpectedError(new BugIndicatingError(\"Assertion Failed\"));\n }\n }\n function checkAdjacentItems(items, predicate) {\n let i = 0;\n while (i < items.length - 1) {\n const a = items[i];\n const b = items[i + 1];\n if (!predicate(a, b)) return false;\n i++;\n }\n return true;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/types.js\n /**\n * @returns whether the provided parameter is a JavaScript String or not.\n */\n function isString(str) {\n return typeof str === \"string\";\n }\n /**\n * @returns whether the provided parameter is an Iterable, casting to the given generic\n */\n function isIterable(obj) {\n return !!obj && typeof obj[Symbol.iterator] === \"function\";\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/iterator.js\n var Iterable;\n (function(Iterable) {\n function is(thing) {\n return !!thing && typeof thing === \"object\" && typeof thing[Symbol.iterator] === \"function\";\n }\n Iterable.is = is;\n const _empty = Object.freeze([]);\n function empty() {\n return _empty;\n }\n Iterable.empty = empty;\n function* single(element) {\n yield element;\n }\n Iterable.single = single;\n function wrap(iterableOrElement) {\n if (is(iterableOrElement)) return iterableOrElement;\n else return single(iterableOrElement);\n }\n Iterable.wrap = wrap;\n function from(iterable) {\n return iterable || _empty;\n }\n Iterable.from = from;\n function* reverse(array) {\n for (let i = array.length - 1; i >= 0; i--) yield array[i];\n }\n Iterable.reverse = reverse;\n function isEmpty(iterable) {\n return !iterable || iterable[Symbol.iterator]().next().done === true;\n }\n Iterable.isEmpty = isEmpty;\n function first(iterable) {\n return iterable[Symbol.iterator]().next().value;\n }\n Iterable.first = first;\n function some(iterable, predicate) {\n let i = 0;\n for (const element of iterable) if (predicate(element, i++)) return true;\n return false;\n }\n Iterable.some = some;\n function every(iterable, predicate) {\n let i = 0;\n for (const element of iterable) if (!predicate(element, i++)) return false;\n return true;\n }\n Iterable.every = every;\n function find(iterable, predicate) {\n for (const element of iterable) if (predicate(element)) return element;\n }\n Iterable.find = find;\n function* filter(iterable, predicate) {\n for (const element of iterable) if (predicate(element)) yield element;\n }\n Iterable.filter = filter;\n function* map(iterable, fn) {\n let index = 0;\n for (const element of iterable) yield fn(element, index++);\n }\n Iterable.map = map;\n function* flatMap(iterable, fn) {\n let index = 0;\n for (const element of iterable) yield* fn(element, index++);\n }\n Iterable.flatMap = flatMap;\n function* concat(...iterables) {\n for (const item of iterables) if (isIterable(item)) yield* item;\n else yield item;\n }\n Iterable.concat = concat;\n function reduce(iterable, reducer, initialValue) {\n let value = initialValue;\n for (const element of iterable) value = reducer(value, element);\n return value;\n }\n Iterable.reduce = reduce;\n function length(iterable) {\n let count = 0;\n for (const _ of iterable) count++;\n return count;\n }\n Iterable.length = length;\n /**\n * Returns an iterable slice of the array, with the same semantics as `array.slice()`.\n */\n function* slice(arr, from, to = arr.length) {\n if (from < -arr.length) from = 0;\n if (from < 0) from += arr.length;\n if (to < 0) to += arr.length;\n else if (to > arr.length) to = arr.length;\n for (; from < to; from++) yield arr[from];\n }\n Iterable.slice = slice;\n /**\n * Consumes `atMost` elements from iterable and returns the consumed elements,\n * and an iterable for the rest of the elements.\n */\n function consume(iterable, atMost = Number.POSITIVE_INFINITY) {\n const consumed = [];\n if (atMost === 0) return [consumed, iterable];\n const iterator = iterable[Symbol.iterator]();\n for (let i = 0; i < atMost; i++) {\n const next = iterator.next();\n if (next.done) return [consumed, Iterable.empty()];\n consumed.push(next.value);\n }\n return [consumed, { [Symbol.iterator]() {\n return iterator;\n } }];\n }\n Iterable.consume = consume;\n async function asyncToArray(iterable) {\n const result = [];\n for await (const item of iterable) result.push(item);\n return result;\n }\n Iterable.asyncToArray = asyncToArray;\n async function asyncToArrayFlat(iterable) {\n let result = [];\n for await (const item of iterable) result = result.concat(item);\n return result;\n }\n Iterable.asyncToArrayFlat = asyncToArrayFlat;\n })(Iterable || (Iterable = {}));\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\n function dispose(arg) {\n if (Iterable.is(arg)) {\n const errors = [];\n for (const d of arg) if (d) try {\n d.dispose();\n } catch (e) {\n errors.push(e);\n }\n if (errors.length === 1) throw errors[0];\n else if (errors.length > 1) throw new AggregateError(errors, \"Encountered errors while disposing of store\");\n return Array.isArray(arg) ? [] : arg;\n } else if (arg) {\n arg.dispose();\n return arg;\n }\n }\n /**\n * Combine multiple disposable values into a single {@link IDisposable}.\n */\n function combinedDisposable(...disposables) {\n return toDisposable(() => dispose(disposables));\n }\n var FunctionDisposable = class {\n constructor(fn) {\n this._isDisposed = false;\n this._fn = fn;\n }\n dispose() {\n if (this._isDisposed) return;\n if (!this._fn) throw new Error(`Unbound disposable context: Need to use an arrow function to preserve the value of this`);\n this._isDisposed = true;\n this._fn();\n }\n };\n /**\n * Turn a function that implements dispose into an {@link IDisposable}.\n *\n * @param fn Clean up function, guaranteed to be called only **once**.\n */\n function toDisposable(fn) {\n return new FunctionDisposable(fn);\n }\n /**\n * Manages a collection of disposable values.\n *\n * This is the preferred way to manage multiple disposables. A `DisposableStore` is safer to work with than an\n * `IDisposable[]` as it considers edge cases, such as registering the same value multiple times or adding an item to a\n * store that has already been disposed of.\n */\n var DisposableStore = class DisposableStore {\n static {\n this.DISABLE_DISPOSED_WARNING = false;\n }\n constructor() {\n this._toDispose = /* @__PURE__ */ new Set();\n this._isDisposed = false;\n }\n /**\n * Dispose of all registered disposables and mark this object as disposed.\n *\n * Any future disposables added to this object will be disposed of on `add`.\n */\n dispose() {\n if (this._isDisposed) return;\n this._isDisposed = true;\n this.clear();\n }\n /**\n * @return `true` if this object has been disposed of.\n */\n get isDisposed() {\n return this._isDisposed;\n }\n /**\n * Dispose of all registered disposables but do not mark this object as disposed.\n */\n clear() {\n if (this._toDispose.size === 0) return;\n try {\n dispose(this._toDispose);\n } finally {\n this._toDispose.clear();\n }\n }\n /**\n * Add a new {@link IDisposable disposable} to the collection.\n */\n add(o) {\n if (!o || o === Disposable.None) return o;\n if (o === this) throw new Error(\"Cannot register a disposable on itself!\");\n if (this._isDisposed) {\n if (!DisposableStore.DISABLE_DISPOSED_WARNING) console.warn((/* @__PURE__ */ new Error(\"Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!\")).stack);\n } else this._toDispose.add(o);\n return o;\n }\n /**\n * Deletes a disposable from store and disposes of it. This will not throw or warn and proceed to dispose the\n * disposable even when the disposable is not part in the store.\n */\n delete(o) {\n if (!o) return;\n if (o === this) throw new Error(\"Cannot dispose a disposable on itself!\");\n this._toDispose.delete(o);\n o.dispose();\n }\n };\n /**\n * Abstract base class for a {@link IDisposable disposable} object.\n *\n * Subclasses can {@linkcode _register} disposables that will be automatically cleaned up when this object is disposed of.\n */\n var Disposable = class {\n /**\n * A disposable that does nothing when it is disposed of.\n *\n * TODO: This should not be a static property.\n */\n static {\n this.None = Object.freeze({ dispose() {} });\n }\n constructor() {\n this._store = new DisposableStore();\n this._store;\n }\n dispose() {\n this._store.dispose();\n }\n /**\n * Adds `o` to the collection of disposables managed by this object.\n */\n _register(o) {\n if (o === this) throw new Error(\"Cannot register a disposable on itself!\");\n return this._store.add(o);\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/linkedList.js\n var Node = class Node {\n static {\n this.Undefined = new Node(void 0);\n }\n constructor(element) {\n this.element = element;\n this.next = Node.Undefined;\n this.prev = Node.Undefined;\n }\n };\n var LinkedList = class {\n constructor() {\n this._first = Node.Undefined;\n this._last = Node.Undefined;\n this._size = 0;\n }\n get size() {\n return this._size;\n }\n isEmpty() {\n return this._first === Node.Undefined;\n }\n clear() {\n let node = this._first;\n while (node !== Node.Undefined) {\n const next = node.next;\n node.prev = Node.Undefined;\n node.next = Node.Undefined;\n node = next;\n }\n this._first = Node.Undefined;\n this._last = Node.Undefined;\n this._size = 0;\n }\n unshift(element) {\n return this._insert(element, false);\n }\n push(element) {\n return this._insert(element, true);\n }\n _insert(element, atTheEnd) {\n const newNode = new Node(element);\n if (this._first === Node.Undefined) {\n this._first = newNode;\n this._last = newNode;\n } else if (atTheEnd) {\n const oldLast = this._last;\n this._last = newNode;\n newNode.prev = oldLast;\n oldLast.next = newNode;\n } else {\n const oldFirst = this._first;\n this._first = newNode;\n newNode.next = oldFirst;\n oldFirst.prev = newNode;\n }\n this._size += 1;\n let didRemove = false;\n return () => {\n if (!didRemove) {\n didRemove = true;\n this._remove(newNode);\n }\n };\n }\n shift() {\n if (this._first === Node.Undefined) return;\n else {\n const res = this._first.element;\n this._remove(this._first);\n return res;\n }\n }\n pop() {\n if (this._last === Node.Undefined) return;\n else {\n const res = this._last.element;\n this._remove(this._last);\n return res;\n }\n }\n _remove(node) {\n if (node.prev !== Node.Undefined && node.next !== Node.Undefined) {\n const anchor = node.prev;\n anchor.next = node.next;\n node.next.prev = anchor;\n } else if (node.prev === Node.Undefined && node.next === Node.Undefined) {\n this._first = Node.Undefined;\n this._last = Node.Undefined;\n } else if (node.next === Node.Undefined) {\n this._last = this._last.prev;\n this._last.next = Node.Undefined;\n } else if (node.prev === Node.Undefined) {\n this._first = this._first.next;\n this._first.prev = Node.Undefined;\n }\n this._size -= 1;\n }\n *[Symbol.iterator]() {\n let node = this._first;\n while (node !== Node.Undefined) {\n yield node.element;\n node = node.next;\n }\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/stopwatch.js\n const performanceNow = globalThis.performance.now.bind(globalThis.performance);\n var StopWatch = class StopWatch {\n static create(highResolution) {\n return new StopWatch(highResolution);\n }\n constructor(highResolution) {\n this._now = highResolution === false ? Date.now : performanceNow;\n this._startTime = this._now();\n this._stopTime = -1;\n }\n stop() {\n this._stopTime = this._now();\n }\n reset() {\n this._startTime = this._now();\n this._stopTime = -1;\n }\n elapsed() {\n if (this._stopTime !== -1) return this._stopTime - this._startTime;\n return this._now() - this._startTime;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/event.js\n var Event;\n (function(Event) {\n Event.None = () => Disposable.None;\n /**\n * Given an event, returns another event which debounces calls and defers the listeners to a later task via a shared\n * `setTimeout`. The event is converted into a signal (`Event<void>`) to avoid additional object creation as a\n * result of merging events and to try prevent race conditions that could arise when using related deferred and\n * non-deferred events.\n *\n * This is useful for deferring non-critical work (eg. general UI updates) to ensure it does not block critical work\n * (eg. latency of keypress to text rendered).\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n *\n * @param event The event source for the new event.\n * @param disposable A disposable store to add the new EventEmitter to.\n */\n function defer(event, disposable) {\n return debounce(event, () => void 0, 0, void 0, true, void 0, disposable);\n }\n Event.defer = defer;\n /**\n * Given an event, returns another event which only fires once.\n *\n * @param event The event source for the new event.\n */\n function once(event) {\n return (listener, thisArgs = null, disposables) => {\n let didFire = false;\n let result = void 0;\n result = event((e) => {\n if (didFire) return;\n else if (result) result.dispose();\n else didFire = true;\n return listener.call(thisArgs, e);\n }, null, disposables);\n if (didFire) result.dispose();\n return result;\n };\n }\n Event.once = once;\n /**\n * Given an event, returns another event which only fires once, and only when the condition is met.\n *\n * @param event The event source for the new event.\n */\n function onceIf(event, condition) {\n return Event.once(Event.filter(event, condition));\n }\n Event.onceIf = onceIf;\n /**\n * Maps an event of one type into an event of another type using a mapping function, similar to how\n * `Array.prototype.map` works.\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n *\n * @param event The event source for the new event.\n * @param map The mapping function.\n * @param disposable A disposable store to add the new EventEmitter to.\n */\n function map(event, map, disposable) {\n return snapshot((listener, thisArgs = null, disposables) => event((i) => listener.call(thisArgs, map(i)), null, disposables), disposable);\n }\n Event.map = map;\n /**\n * Wraps an event in another event that performs some function on the event object before firing.\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n *\n * @param event The event source for the new event.\n * @param each The function to perform on the event object.\n * @param disposable A disposable store to add the new EventEmitter to.\n */\n function forEach(event, each, disposable) {\n return snapshot((listener, thisArgs = null, disposables) => event((i) => {\n each(i);\n listener.call(thisArgs, i);\n }, null, disposables), disposable);\n }\n Event.forEach = forEach;\n function filter(event, filter, disposable) {\n return snapshot((listener, thisArgs = null, disposables) => event((e) => filter(e) && listener.call(thisArgs, e), null, disposables), disposable);\n }\n Event.filter = filter;\n /**\n * Given an event, returns the same event but typed as `Event<void>`.\n */\n function signal(event) {\n return event;\n }\n Event.signal = signal;\n function any(...events) {\n return (listener, thisArgs = null, disposables) => {\n return addAndReturnDisposable(combinedDisposable(...events.map((event) => event((e) => listener.call(thisArgs, e)))), disposables);\n };\n }\n Event.any = any;\n /**\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n */\n function reduce(event, merge, initial, disposable) {\n let output = initial;\n return map(event, (e) => {\n output = merge(output, e);\n return output;\n }, disposable);\n }\n Event.reduce = reduce;\n function snapshot(event, disposable) {\n let listener;\n const emitter = new Emitter({\n onWillAddFirstListener() {\n listener = event(emitter.fire, emitter);\n },\n onDidRemoveLastListener() {\n listener?.dispose();\n }\n });\n disposable?.add(emitter);\n return emitter.event;\n }\n /**\n * Adds the IDisposable to the store if it's set, and returns it. Useful to\n * Event function implementation.\n */\n function addAndReturnDisposable(d, store) {\n if (store instanceof Array) store.push(d);\n else if (store) store.add(d);\n return d;\n }\n function debounce(event, merge, delay = 100, leading = false, flushOnListenerRemove = false, leakWarningThreshold, disposable) {\n let subscription;\n let output = void 0;\n let handle = void 0;\n let numDebouncedCalls = 0;\n let doFire;\n const emitter = new Emitter({\n leakWarningThreshold,\n onWillAddFirstListener() {\n subscription = event((cur) => {\n numDebouncedCalls++;\n output = merge(output, cur);\n if (leading && !handle) {\n emitter.fire(output);\n output = void 0;\n }\n doFire = () => {\n const _output = output;\n output = void 0;\n handle = void 0;\n if (!leading || numDebouncedCalls > 1) emitter.fire(_output);\n numDebouncedCalls = 0;\n };\n if (typeof delay === \"number\") {\n if (handle) clearTimeout(handle);\n handle = setTimeout(doFire, delay);\n } else if (handle === void 0) {\n handle = null;\n queueMicrotask(doFire);\n }\n });\n },\n onWillRemoveListener() {\n if (flushOnListenerRemove && numDebouncedCalls > 0) doFire?.();\n },\n onDidRemoveLastListener() {\n doFire = void 0;\n subscription.dispose();\n }\n });\n disposable?.add(emitter);\n return emitter.event;\n }\n Event.debounce = debounce;\n /**\n * Debounces an event, firing after some delay (default=0) with an array of all event original objects.\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n */\n function accumulate(event, delay = 0, disposable) {\n return Event.debounce(event, (last, e) => {\n if (!last) return [e];\n last.push(e);\n return last;\n }, delay, void 0, true, void 0, disposable);\n }\n Event.accumulate = accumulate;\n /**\n * Filters an event such that some condition is _not_ met more than once in a row, effectively ensuring duplicate\n * event objects from different sources do not fire the same event object.\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n *\n * @param event The event source for the new event.\n * @param equals The equality condition.\n * @param disposable A disposable store to add the new EventEmitter to.\n *\n * @example\n * ```\n * // Fire only one time when a single window is opened or focused\n * Event.latch(Event.any(onDidOpenWindow, onDidFocusWindow))\n * ```\n */\n function latch(event, equals = (a, b) => a === b, disposable) {\n let firstCall = true;\n let cache;\n return filter(event, (value) => {\n const shouldEmit = firstCall || !equals(value, cache);\n firstCall = false;\n cache = value;\n return shouldEmit;\n }, disposable);\n }\n Event.latch = latch;\n /**\n * Splits an event whose parameter is a union type into 2 separate events for each type in the union.\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n *\n * @example\n * ```\n * const event = new EventEmitter<number | undefined>().event;\n * const [numberEvent, undefinedEvent] = Event.split(event, isUndefined);\n * ```\n *\n * @param event The event source for the new event.\n * @param isT A function that determines what event is of the first type.\n * @param disposable A disposable store to add the new EventEmitter to.\n */\n function split(event, isT, disposable) {\n return [Event.filter(event, isT, disposable), Event.filter(event, (e) => !isT(e), disposable)];\n }\n Event.split = split;\n /**\n * Buffers an event until it has a listener attached.\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n *\n * @param event The event source for the new event.\n * @param flushAfterTimeout Determines whether to flush the buffer after a timeout immediately or after a\n * `setTimeout` when the first event listener is added.\n * @param _buffer Internal: A source event array used for tests.\n *\n * @example\n * ```\n * // Start accumulating events, when the first listener is attached, flush\n * // the event after a timeout such that multiple listeners attached before\n * // the timeout would receive the event\n * this.onInstallExtension = Event.buffer(service.onInstallExtension, true);\n * ```\n */\n function buffer(event, flushAfterTimeout = false, _buffer = [], disposable) {\n let buffer = _buffer.slice();\n let listener = event((e) => {\n if (buffer) buffer.push(e);\n else emitter.fire(e);\n });\n if (disposable) disposable.add(listener);\n const flush = () => {\n buffer?.forEach((e) => emitter.fire(e));\n buffer = null;\n };\n const emitter = new Emitter({\n onWillAddFirstListener() {\n if (!listener) {\n listener = event((e) => emitter.fire(e));\n if (disposable) disposable.add(listener);\n }\n },\n onDidAddFirstListener() {\n if (buffer) if (flushAfterTimeout) setTimeout(flush);\n else flush();\n },\n onDidRemoveLastListener() {\n if (listener) listener.dispose();\n listener = null;\n }\n });\n if (disposable) disposable.add(emitter);\n return emitter.event;\n }\n Event.buffer = buffer;\n /**\n * Wraps the event in an {@link IChainableEvent}, allowing a more functional programming style.\n *\n * @example\n * ```\n * // Normal\n * const onEnterPressNormal = Event.filter(\n * Event.map(onKeyPress.event, e => new StandardKeyboardEvent(e)),\n * e.keyCode === KeyCode.Enter\n * ).event;\n *\n * // Using chain\n * const onEnterPressChain = Event.chain(onKeyPress.event, $ => $\n * .map(e => new StandardKeyboardEvent(e))\n * .filter(e => e.keyCode === KeyCode.Enter)\n * );\n * ```\n */\n function chain(event, sythensize) {\n const fn = (listener, thisArgs, disposables) => {\n const cs = sythensize(new ChainableSynthesis());\n return event(function(value) {\n const result = cs.evaluate(value);\n if (result !== HaltChainable) listener.call(thisArgs, result);\n }, void 0, disposables);\n };\n return fn;\n }\n Event.chain = chain;\n const HaltChainable = Symbol(\"HaltChainable\");\n class ChainableSynthesis {\n constructor() {\n this.steps = [];\n }\n map(fn) {\n this.steps.push(fn);\n return this;\n }\n forEach(fn) {\n this.steps.push((v) => {\n fn(v);\n return v;\n });\n return this;\n }\n filter(fn) {\n this.steps.push((v) => fn(v) ? v : HaltChainable);\n return this;\n }\n reduce(merge, initial) {\n let last = initial;\n this.steps.push((v) => {\n last = merge(last, v);\n return last;\n });\n return this;\n }\n latch(equals = (a, b) => a === b) {\n let firstCall = true;\n let cache;\n this.steps.push((value) => {\n const shouldEmit = firstCall || !equals(value, cache);\n firstCall = false;\n cache = value;\n return shouldEmit ? value : HaltChainable;\n });\n return this;\n }\n evaluate(value) {\n for (const step of this.steps) {\n value = step(value);\n if (value === HaltChainable) break;\n }\n return value;\n }\n }\n /**\n * Creates an {@link Event} from a node event emitter.\n */\n function fromNodeEventEmitter(emitter, eventName, map = (id) => id) {\n const fn = (...args) => result.fire(map(...args));\n const onFirstListenerAdd = () => emitter.on(eventName, fn);\n const onLastListenerRemove = () => emitter.removeListener(eventName, fn);\n const result = new Emitter({\n onWillAddFirstListener: onFirstListenerAdd,\n onDidRemoveLastListener: onLastListenerRemove\n });\n return result.event;\n }\n Event.fromNodeEventEmitter = fromNodeEventEmitter;\n /**\n * Creates an {@link Event} from a DOM event emitter.\n */\n function fromDOMEventEmitter(emitter, eventName, map = (id) => id) {\n const fn = (...args) => result.fire(map(...args));\n const onFirstListenerAdd = () => emitter.addEventListener(eventName, fn);\n const onLastListenerRemove = () => emitter.removeEventListener(eventName, fn);\n const result = new Emitter({\n onWillAddFirstListener: onFirstListenerAdd,\n onDidRemoveLastListener: onLastListenerRemove\n });\n return result.event;\n }\n Event.fromDOMEventEmitter = fromDOMEventEmitter;\n /**\n * Creates a promise out of an event, using the {@link Event.once} helper.\n */\n function toPromise(event, disposables) {\n let cancelRef;\n const promise = new Promise((resolve, reject) => {\n const listener = once(event)(resolve, null, disposables);\n cancelRef = () => listener.dispose();\n });\n promise.cancel = cancelRef;\n return promise;\n }\n Event.toPromise = toPromise;\n /**\n * A convenience function for forwarding an event to another emitter which\n * improves readability.\n *\n * This is similar to {@link Relay} but allows instantiating and forwarding\n * on a single line and also allows for multiple source events.\n * @param from The event to forward.\n * @param to The emitter to forward the event to.\n * @example\n * Event.forward(event, emitter);\n * // equivalent to\n * event(e => emitter.fire(e));\n * // equivalent to\n * event(emitter.fire, emitter);\n */\n function forward(from, to) {\n return from((e) => to.fire(e));\n }\n Event.forward = forward;\n function runAndSubscribe(event, handler, initial) {\n handler(initial);\n return event((e) => handler(e));\n }\n Event.runAndSubscribe = runAndSubscribe;\n class EmitterObserver {\n constructor(_observable, store) {\n this._observable = _observable;\n this._counter = 0;\n this._hasChanged = false;\n const options = {\n onWillAddFirstListener: () => {\n _observable.addObserver(this);\n this._observable.reportChanges();\n },\n onDidRemoveLastListener: () => {\n _observable.removeObserver(this);\n }\n };\n this.emitter = new Emitter(options);\n if (store) store.add(this.emitter);\n }\n beginUpdate(_observable) {\n this._counter++;\n }\n handlePossibleChange(_observable) {}\n handleChange(_observable, _change) {\n this._hasChanged = true;\n }\n endUpdate(_observable) {\n this._counter--;\n if (this._counter === 0) {\n this._observable.reportChanges();\n if (this._hasChanged) {\n this._hasChanged = false;\n this.emitter.fire(this._observable.get());\n }\n }\n }\n }\n /**\n * Creates an event emitter that is fired when the observable changes.\n * Each listeners subscribes to the emitter.\n */\n function fromObservable(obs, store) {\n return new EmitterObserver(obs, store).emitter.event;\n }\n Event.fromObservable = fromObservable;\n /**\n * Each listener is attached to the observable directly.\n */\n function fromObservableLight(observable) {\n return (listener, thisArgs, disposables) => {\n let count = 0;\n let didChange = false;\n const observer = {\n beginUpdate() {\n count++;\n },\n endUpdate() {\n count--;\n if (count === 0) {\n observable.reportChanges();\n if (didChange) {\n didChange = false;\n listener.call(thisArgs);\n }\n }\n },\n handlePossibleChange() {},\n handleChange() {\n didChange = true;\n }\n };\n observable.addObserver(observer);\n observable.reportChanges();\n const disposable = { dispose() {\n observable.removeObserver(observer);\n } };\n if (disposables instanceof DisposableStore) disposables.add(disposable);\n else if (Array.isArray(disposables)) disposables.push(disposable);\n return disposable;\n };\n }\n Event.fromObservableLight = fromObservableLight;\n })(Event || (Event = {}));\n var EventProfiling = class EventProfiling {\n static {\n this.all = /* @__PURE__ */ new Set();\n }\n static {\n this._idPool = 0;\n }\n constructor(name) {\n this.listenerCount = 0;\n this.invocationCount = 0;\n this.elapsedOverall = 0;\n this.durations = [];\n this.name = `${name}_${EventProfiling._idPool++}`;\n EventProfiling.all.add(this);\n }\n start(listenerCount) {\n this._stopWatch = new StopWatch();\n this.listenerCount = listenerCount;\n }\n stop() {\n if (this._stopWatch) {\n const elapsed = this._stopWatch.elapsed();\n this.durations.push(elapsed);\n this.elapsedOverall += elapsed;\n this.invocationCount += 1;\n this._stopWatch = void 0;\n }\n }\n };\n let _globalLeakWarningThreshold = -1;\n var LeakageMonitor = class LeakageMonitor {\n static {\n this._idPool = 1;\n }\n constructor(_errorHandler, threshold, name = (LeakageMonitor._idPool++).toString(16).padStart(3, \"0\")) {\n this._errorHandler = _errorHandler;\n this.threshold = threshold;\n this.name = name;\n this._warnCountdown = 0;\n }\n dispose() {\n this._stacks?.clear();\n }\n check(stack, listenerCount) {\n const threshold = this.threshold;\n if (threshold <= 0 || listenerCount < threshold) return;\n if (!this._stacks) this._stacks = /* @__PURE__ */ new Map();\n const count = this._stacks.get(stack.value) || 0;\n this._stacks.set(stack.value, count + 1);\n this._warnCountdown -= 1;\n if (this._warnCountdown <= 0) {\n this._warnCountdown = threshold * .5;\n const [topStack, topCount] = this.getMostFrequentStack();\n const message = `[${this.name}] potential listener LEAK detected, having ${listenerCount} listeners already. MOST frequent listener (${topCount}):`;\n console.warn(message);\n console.warn(topStack);\n const error = new ListenerLeakError(message, topStack);\n this._errorHandler(error);\n }\n return () => {\n const count = this._stacks.get(stack.value) || 0;\n this._stacks.set(stack.value, count - 1);\n };\n }\n getMostFrequentStack() {\n if (!this._stacks) return;\n let topStack;\n let topCount = 0;\n for (const [stack, count] of this._stacks) if (!topStack || topCount < count) {\n topStack = [stack, count];\n topCount = count;\n }\n return topStack;\n }\n };\n var Stacktrace = class Stacktrace {\n static create() {\n return new Stacktrace((/* @__PURE__ */ new Error()).stack ?? \"\");\n }\n constructor(value) {\n this.value = value;\n }\n print() {\n console.warn(this.value.split(\"\\n\").slice(2).join(\"\\n\"));\n }\n };\n var ListenerLeakError = class extends Error {\n constructor(message, stack) {\n super(message);\n this.name = \"ListenerLeakError\";\n this.stack = stack;\n }\n };\n var ListenerRefusalError = class extends Error {\n constructor(message, stack) {\n super(message);\n this.name = \"ListenerRefusalError\";\n this.stack = stack;\n }\n };\n var UniqueContainer = class {\n constructor(value) {\n this.value = value;\n }\n };\n const compactionThreshold = 2;\n /**\n * The Emitter can be used to expose an Event to the public\n * to fire it from the insides.\n * Sample:\n class Document {\n \n private readonly _onDidChange = new Emitter<(value:string)=>any>();\n \n public onDidChange = this._onDidChange.event;\n \n // getter-style\n // get onDidChange(): Event<(value:string)=>any> {\n // return this._onDidChange.event;\n // }\n \n private _doIt() {\n //...\n this._onDidChange.fire(value);\n }\n }\n */\n var Emitter = class {\n constructor(options) {\n this._size = 0;\n this._options = options;\n this._leakageMon = this._options?.leakWarningThreshold ? new LeakageMonitor(options?.onListenerError ?? onUnexpectedError, this._options?.leakWarningThreshold ?? _globalLeakWarningThreshold) : void 0;\n this._perfMon = this._options?._profName ? new EventProfiling(this._options._profName) : void 0;\n this._deliveryQueue = this._options?.deliveryQueue;\n }\n dispose() {\n if (!this._disposed) {\n this._disposed = true;\n if (this._deliveryQueue?.current === this) this._deliveryQueue.reset();\n if (this._listeners) {\n this._listeners = void 0;\n this._size = 0;\n }\n this._options?.onDidRemoveLastListener?.();\n this._leakageMon?.dispose();\n }\n }\n /**\n * For the public to allow to subscribe\n * to events from this Emitter\n */\n get event() {\n this._event ??= (callback, thisArgs, disposables) => {\n if (this._leakageMon && this._size > this._leakageMon.threshold ** 2) {\n const message = `[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;\n console.warn(message);\n const tuple = this._leakageMon.getMostFrequentStack() ?? [\"UNKNOWN stack\", -1];\n const error = new ListenerRefusalError(`${message}. HINT: Stack shows most frequent listener (${tuple[1]}-times)`, tuple[0]);\n (this._options?.onListenerError || onUnexpectedError)(error);\n return Disposable.None;\n }\n if (this._disposed) return Disposable.None;\n if (thisArgs) callback = callback.bind(thisArgs);\n const contained = new UniqueContainer(callback);\n let removeMonitor;\n if (this._leakageMon && this._size >= Math.ceil(this._leakageMon.threshold * .2)) {\n contained.stack = Stacktrace.create();\n removeMonitor = this._leakageMon.check(contained.stack, this._size + 1);\n }\n if (!this._listeners) {\n this._options?.onWillAddFirstListener?.(this);\n this._listeners = contained;\n this._options?.onDidAddFirstListener?.(this);\n } else if (this._listeners instanceof UniqueContainer) {\n this._deliveryQueue ??= new EventDeliveryQueuePrivate();\n this._listeners = [this._listeners, contained];\n } else this._listeners.push(contained);\n this._options?.onDidAddListener?.(this);\n this._size++;\n const result = toDisposable(() => {\n removeMonitor?.();\n this._removeListener(contained);\n });\n if (disposables instanceof DisposableStore) disposables.add(result);\n else if (Array.isArray(disposables)) disposables.push(result);\n return result;\n };\n return this._event;\n }\n _removeListener(listener) {\n this._options?.onWillRemoveListener?.(this);\n if (!this._listeners) return;\n if (this._size === 1) {\n this._listeners = void 0;\n this._options?.onDidRemoveLastListener?.(this);\n this._size = 0;\n return;\n }\n const listeners = this._listeners;\n const index = listeners.indexOf(listener);\n if (index === -1) {\n console.log(\"disposed?\", this._disposed);\n console.log(\"size?\", this._size);\n console.log(\"arr?\", JSON.stringify(this._listeners));\n throw new Error(\"Attempted to dispose unknown listener\");\n }\n this._size--;\n listeners[index] = void 0;\n const adjustDeliveryQueue = this._deliveryQueue.current === this;\n if (this._size * compactionThreshold <= listeners.length) {\n let n = 0;\n for (let i = 0; i < listeners.length; i++) if (listeners[i]) listeners[n++] = listeners[i];\n else if (adjustDeliveryQueue && n < this._deliveryQueue.end) {\n this._deliveryQueue.end--;\n if (n < this._deliveryQueue.i) this._deliveryQueue.i--;\n }\n listeners.length = n;\n }\n }\n _deliver(listener, value) {\n if (!listener) return;\n const errorHandler = this._options?.onListenerError || onUnexpectedError;\n if (!errorHandler) {\n listener.value(value);\n return;\n }\n try {\n listener.value(value);\n } catch (e) {\n errorHandler(e);\n }\n }\n /** Delivers items in the queue. Assumes the queue is ready to go. */\n _deliverQueue(dq) {\n const listeners = dq.current._listeners;\n while (dq.i < dq.end) this._deliver(listeners[dq.i++], dq.value);\n dq.reset();\n }\n /**\n * To be kept private to fire an event to\n * subscribers\n */\n fire(event) {\n if (this._deliveryQueue?.current) {\n this._deliverQueue(this._deliveryQueue);\n this._perfMon?.stop();\n }\n this._perfMon?.start(this._size);\n if (!this._listeners);\n else if (this._listeners instanceof UniqueContainer) this._deliver(this._listeners, event);\n else {\n const dq = this._deliveryQueue;\n dq.enqueue(this, event, this._listeners.length);\n this._deliverQueue(dq);\n }\n this._perfMon?.stop();\n }\n hasListeners() {\n return this._size > 0;\n }\n };\n var EventDeliveryQueuePrivate = class {\n constructor() {\n /**\n * Index in current's listener list.\n */\n this.i = -1;\n /**\n * The last index in the listener's list to deliver.\n */\n this.end = 0;\n }\n enqueue(emitter, value, end) {\n this.i = 0;\n this.end = end;\n this.current = emitter;\n this.value = value;\n }\n reset() {\n this.i = this.end;\n this.current = void 0;\n this.value = void 0;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/nls.messages.js\n function getNLSMessages() {\n return globalThis._VSCODE_NLS_MESSAGES;\n }\n function getNLSLanguage() {\n return globalThis._VSCODE_NLS_LANGUAGE;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/nls.js\n const isPseudo = getNLSLanguage() === \"pseudo\" || typeof document !== \"undefined\" && document.location && typeof document.location.hash === \"string\" && document.location.hash.indexOf(\"pseudo=true\") >= 0;\n function _format$1(message, args) {\n let result;\n if (args.length === 0) result = message;\n else result = message.replace(/\\{(\\d+)\\}/g, (match, rest) => {\n const arg = args[rest[0]];\n let result = match;\n if (typeof arg === \"string\") result = arg;\n else if (typeof arg === \"number\" || typeof arg === \"boolean\" || arg === void 0 || arg === null) result = String(arg);\n return result;\n });\n if (isPseudo) result = \"[\" + result.replace(/[aouei]/g, \"$&$&\") + \"]\";\n return result;\n }\n /**\n * @skipMangle\n */\n function localize(data, message, ...args) {\n if (typeof data === \"number\") return _format$1(lookupMessage(data, message), args);\n return _format$1(message, args);\n }\n /**\n * Only used when built: Looks up the message in the global NLS table.\n * This table is being made available as a global through bootstrapping\n * depending on the target context.\n */\n function lookupMessage(index, fallback) {\n const message = getNLSMessages()?.[index];\n if (typeof message !== \"string\") {\n if (typeof fallback === \"string\") return fallback;\n throw new Error(`!!! NLS MISSING: ${index} !!!`);\n }\n return message;\n }\n let _isWindows = false;\n let _isMacintosh = false;\n let _isLinux = false;\n let _isWeb = false;\n let _userAgent = void 0;\n const $globalThis = globalThis;\n let nodeProcess = void 0;\n if (typeof $globalThis.vscode !== \"undefined\" && typeof $globalThis.vscode.process !== \"undefined\") nodeProcess = $globalThis.vscode.process;\n else if (typeof process !== \"undefined\" && typeof process?.versions?.node === \"string\") nodeProcess = process;\n const isElectronRenderer = typeof nodeProcess?.versions?.electron === \"string\" && nodeProcess?.type === \"renderer\";\n if (typeof nodeProcess === \"object\") {\n _isWindows = nodeProcess.platform === \"win32\";\n _isMacintosh = nodeProcess.platform === \"darwin\";\n _isLinux = nodeProcess.platform === \"linux\";\n _isLinux && nodeProcess.env[\"SNAP\"] && nodeProcess.env[\"SNAP_REVISION\"];\n nodeProcess.env[\"CI\"] || nodeProcess.env[\"BUILD_ARTIFACTSTAGINGDIRECTORY\"] || nodeProcess.env[\"GITHUB_WORKSPACE\"];\n const rawNlsConfig = nodeProcess.env[\"VSCODE_NLS_CONFIG\"];\n if (rawNlsConfig) try {\n const nlsConfig = JSON.parse(rawNlsConfig);\n nlsConfig.userLocale;\n nlsConfig.osLocale;\n nlsConfig.resolvedLanguage;\n nlsConfig.languagePack?.translationsConfigFile;\n } catch (e) {}\n } else if (typeof navigator === \"object\" && !isElectronRenderer) {\n _userAgent = navigator.userAgent;\n _isWindows = _userAgent.indexOf(\"Windows\") >= 0;\n _isMacintosh = _userAgent.indexOf(\"Macintosh\") >= 0;\n (_userAgent.indexOf(\"Macintosh\") >= 0 || _userAgent.indexOf(\"iPad\") >= 0 || _userAgent.indexOf(\"iPhone\") >= 0) && navigator.maxTouchPoints && navigator.maxTouchPoints;\n _isLinux = _userAgent.indexOf(\"Linux\") >= 0;\n _userAgent?.indexOf(\"Mobi\");\n _isWeb = true;\n getNLSLanguage();\n navigator.language.toLowerCase();\n } else console.error(\"Unable to resolve platform.\");\n if (_isMacintosh);\n else if (_isWindows);\n else if (_isLinux);\n const isWindows = _isWindows;\n const isMacintosh = _isMacintosh;\n _isWeb && typeof $globalThis.importScripts === \"function\" && $globalThis.origin;\n const userAgent = _userAgent;\n const setTimeout0IsFaster = typeof $globalThis.postMessage === \"function\" && !$globalThis.importScripts;\n (() => {\n if (setTimeout0IsFaster) {\n const pending = [];\n $globalThis.addEventListener(\"message\", (e) => {\n if (e.data && e.data.vscodeScheduleAsyncWork) for (let i = 0, len = pending.length; i < len; i++) {\n const candidate = pending[i];\n if (candidate.id === e.data.vscodeScheduleAsyncWork) {\n pending.splice(i, 1);\n candidate.callback();\n return;\n }\n }\n });\n let lastId = 0;\n return (callback) => {\n const myId = ++lastId;\n pending.push({\n id: myId,\n callback\n });\n $globalThis.postMessage({ vscodeScheduleAsyncWork: myId }, \"*\");\n };\n }\n return (callback) => setTimeout(callback);\n })();\n const isChrome = !!(userAgent && userAgent.indexOf(\"Chrome\") >= 0);\n userAgent && userAgent.indexOf(\"Firefox\");\n !isChrome && userAgent && userAgent.indexOf(\"Safari\");\n userAgent && userAgent.indexOf(\"Edg/\");\n userAgent && userAgent.indexOf(\"Android\");\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/cache.js\n function identity(t) {\n return t;\n }\n /**\n * Uses a LRU cache to make a given parametrized function cached.\n * Caches just the last key/value.\n */\n var LRUCachedFunction = class {\n constructor(arg1, arg2) {\n this.lastCache = void 0;\n this.lastArgKey = void 0;\n if (typeof arg1 === \"function\") {\n this._fn = arg1;\n this._computeKey = identity;\n } else {\n this._fn = arg2;\n this._computeKey = arg1.getCacheKey;\n }\n }\n get(arg) {\n const key = this._computeKey(arg);\n if (this.lastArgKey !== key) {\n this.lastArgKey = key;\n this.lastCache = this._fn(arg);\n }\n return this.lastCache;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/lazy.js\n var LazyValueState;\n (function(LazyValueState) {\n LazyValueState[LazyValueState[\"Uninitialized\"] = 0] = \"Uninitialized\";\n LazyValueState[LazyValueState[\"Running\"] = 1] = \"Running\";\n LazyValueState[LazyValueState[\"Completed\"] = 2] = \"Completed\";\n })(LazyValueState || (LazyValueState = {}));\n var Lazy = class {\n constructor(executor) {\n this.executor = executor;\n this._state = LazyValueState.Uninitialized;\n }\n /**\n * Get the wrapped value.\n *\n * This will force evaluation of the lazy value if it has not been resolved yet. Lazy values are only\n * resolved once. `getValue` will re-throw exceptions that are hit while resolving the value\n */\n get value() {\n if (this._state === LazyValueState.Uninitialized) {\n this._state = LazyValueState.Running;\n try {\n this._value = this.executor();\n } catch (err) {\n this._error = err;\n } finally {\n this._state = LazyValueState.Completed;\n }\n } else if (this._state === LazyValueState.Running) throw new Error(\"Cannot read the value of a lazy that is being initialized\");\n if (this._error) throw this._error;\n return this._value;\n }\n /**\n * Get the wrapped value without forcing evaluation.\n */\n get rawValue() {\n return this._value;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/strings.js\n /**\n * Escapes regular expression characters in a given string\n */\n function escapeRegExpCharacters(value) {\n return value.replace(/[\\\\\\{\\}\\*\\+\\?\\|\\^\\$\\.\\[\\]\\(\\)]/g, \"\\\\$&\");\n }\n function regExpLeadsToEndlessLoop(regexp) {\n if (regexp.source === \"^\" || regexp.source === \"^$\" || regexp.source === \"$\" || regexp.source === \"^\\\\s*$\") return false;\n return !!(regexp.exec(\"\") && regexp.lastIndex === 0);\n }\n function splitLines(str) {\n return str.split(/\\r\\n|\\r|\\n/);\n }\n /**\n * Returns first index of the string that is not whitespace.\n * If string is empty or contains only whitespaces, returns -1\n */\n function firstNonWhitespaceIndex(str) {\n for (let i = 0, len = str.length; i < len; i++) {\n const chCode = str.charCodeAt(i);\n if (chCode !== 32 && chCode !== 9) return i;\n }\n return -1;\n }\n /**\n * Returns last index of the string that is not whitespace.\n * If string is empty or contains only whitespaces, returns -1\n */\n function lastNonWhitespaceIndex(str, startIndex = str.length - 1) {\n for (let i = startIndex; i >= 0; i--) {\n const chCode = str.charCodeAt(i);\n if (chCode !== 32 && chCode !== 9) return i;\n }\n return -1;\n }\n function isUpperAsciiLetter(code) {\n return code >= 65 && code <= 90;\n }\n /**\n * @returns the length of the common prefix of the two strings.\n */\n function commonPrefixLength(a, b) {\n const len = Math.min(a.length, b.length);\n let i;\n for (i = 0; i < len; i++) if (a.charCodeAt(i) !== b.charCodeAt(i)) return i;\n return len;\n }\n /**\n * @returns the length of the common suffix of the two strings.\n */\n function commonSuffixLength(a, b) {\n const len = Math.min(a.length, b.length);\n let i;\n const aLastIndex = a.length - 1;\n const bLastIndex = b.length - 1;\n for (i = 0; i < len; i++) if (a.charCodeAt(aLastIndex - i) !== b.charCodeAt(bLastIndex - i)) return i;\n return len;\n }\n /**\n * See http://en.wikipedia.org/wiki/Surrogate_pair\n */\n function isHighSurrogate(charCode) {\n return 55296 <= charCode && charCode <= 56319;\n }\n /**\n * See http://en.wikipedia.org/wiki/Surrogate_pair\n */\n function isLowSurrogate(charCode) {\n return 56320 <= charCode && charCode <= 57343;\n }\n /**\n * See http://en.wikipedia.org/wiki/Surrogate_pair\n */\n function computeCodePoint(highSurrogate, lowSurrogate) {\n return (highSurrogate - 55296 << 10) + (lowSurrogate - 56320) + 65536;\n }\n /**\n * get the code point that begins at offset `offset`\n */\n function getNextCodePoint(str, len, offset) {\n const charCode = str.charCodeAt(offset);\n if (isHighSurrogate(charCode) && offset + 1 < len) {\n const nextCharCode = str.charCodeAt(offset + 1);\n if (isLowSurrogate(nextCharCode)) return computeCodePoint(charCode, nextCharCode);\n }\n return charCode;\n }\n const IS_BASIC_ASCII = /^[\\t\\n\\r\\x20-\\x7E]*$/;\n /**\n * Returns true if `str` contains only basic ASCII characters in the range 32 - 126 (including 32 and 126) or \\n, \\r, \\t\n */\n function isBasicASCII(str) {\n return IS_BASIC_ASCII.test(str);\n }\n (class GraphemeBreakTree {\n static {\n this._INSTANCE = null;\n }\n static getInstance() {\n if (!GraphemeBreakTree._INSTANCE) GraphemeBreakTree._INSTANCE = new GraphemeBreakTree();\n return GraphemeBreakTree._INSTANCE;\n }\n constructor() {\n this._data = getGraphemeBreakRawData();\n }\n getGraphemeBreakType(codePoint) {\n if (codePoint < 32) {\n if (codePoint === 10) return 3;\n if (codePoint === 13) return 2;\n return 4;\n }\n if (codePoint < 127) return 0;\n const data = this._data;\n const nodeCount = data.length / 3;\n let nodeIndex = 1;\n while (nodeIndex <= nodeCount) if (codePoint < data[3 * nodeIndex]) nodeIndex = 2 * nodeIndex;\n else if (codePoint > data[3 * nodeIndex + 1]) nodeIndex = 2 * nodeIndex + 1;\n else return data[3 * nodeIndex + 2];\n return 0;\n }\n });\n function getGraphemeBreakRawData() {\n return JSON.parse(\"[0,0,0,51229,51255,12,44061,44087,12,127462,127487,6,7083,7085,5,47645,47671,12,54813,54839,12,128678,128678,14,3270,3270,5,9919,9923,14,45853,45879,12,49437,49463,12,53021,53047,12,71216,71218,7,128398,128399,14,129360,129374,14,2519,2519,5,4448,4519,9,9742,9742,14,12336,12336,14,44957,44983,12,46749,46775,12,48541,48567,12,50333,50359,12,52125,52151,12,53917,53943,12,69888,69890,5,73018,73018,5,127990,127990,14,128558,128559,14,128759,128760,14,129653,129655,14,2027,2035,5,2891,2892,7,3761,3761,5,6683,6683,5,8293,8293,4,9825,9826,14,9999,9999,14,43452,43453,5,44509,44535,12,45405,45431,12,46301,46327,12,47197,47223,12,48093,48119,12,48989,49015,12,49885,49911,12,50781,50807,12,51677,51703,12,52573,52599,12,53469,53495,12,54365,54391,12,65279,65279,4,70471,70472,7,72145,72147,7,119173,119179,5,127799,127818,14,128240,128244,14,128512,128512,14,128652,128652,14,128721,128722,14,129292,129292,14,129445,129450,14,129734,129743,14,1476,1477,5,2366,2368,7,2750,2752,7,3076,3076,5,3415,3415,5,4141,4144,5,6109,6109,5,6964,6964,5,7394,7400,5,9197,9198,14,9770,9770,14,9877,9877,14,9968,9969,14,10084,10084,14,43052,43052,5,43713,43713,5,44285,44311,12,44733,44759,12,45181,45207,12,45629,45655,12,46077,46103,12,46525,46551,12,46973,46999,12,47421,47447,12,47869,47895,12,48317,48343,12,48765,48791,12,49213,49239,12,49661,49687,12,50109,50135,12,50557,50583,12,51005,51031,12,51453,51479,12,51901,51927,12,52349,52375,12,52797,52823,12,53245,53271,12,53693,53719,12,54141,54167,12,54589,54615,12,55037,55063,12,69506,69509,5,70191,70193,5,70841,70841,7,71463,71467,5,72330,72342,5,94031,94031,5,123628,123631,5,127763,127765,14,127941,127941,14,128043,128062,14,128302,128317,14,128465,128467,14,128539,128539,14,128640,128640,14,128662,128662,14,128703,128703,14,128745,128745,14,129004,129007,14,129329,129330,14,129402,129402,14,129483,129483,14,129686,129704,14,130048,131069,14,173,173,4,1757,1757,1,2200,2207,5,2434,2435,7,2631,2632,5,2817,2817,5,3008,3008,5,3201,3201,5,3387,3388,5,3542,3542,5,3902,3903,7,4190,4192,5,6002,6003,5,6439,6440,5,6765,6770,7,7019,7027,5,7154,7155,7,8205,8205,13,8505,8505,14,9654,9654,14,9757,9757,14,9792,9792,14,9852,9853,14,9890,9894,14,9937,9937,14,9981,9981,14,10035,10036,14,11035,11036,14,42654,42655,5,43346,43347,7,43587,43587,5,44006,44007,7,44173,44199,12,44397,44423,12,44621,44647,12,44845,44871,12,45069,45095,12,45293,45319,12,45517,45543,12,45741,45767,12,45965,45991,12,46189,46215,12,46413,46439,12,46637,46663,12,46861,46887,12,47085,47111,12,47309,47335,12,47533,47559,12,47757,47783,12,47981,48007,12,48205,48231,12,48429,48455,12,48653,48679,12,48877,48903,12,49101,49127,12,49325,49351,12,49549,49575,12,49773,49799,12,49997,50023,12,50221,50247,12,50445,50471,12,50669,50695,12,50893,50919,12,51117,51143,12,51341,51367,12,51565,51591,12,51789,51815,12,52013,52039,12,52237,52263,12,52461,52487,12,52685,52711,12,52909,52935,12,53133,53159,12,53357,53383,12,53581,53607,12,53805,53831,12,54029,54055,12,54253,54279,12,54477,54503,12,54701,54727,12,54925,54951,12,55149,55175,12,68101,68102,5,69762,69762,7,70067,70069,7,70371,70378,5,70720,70721,7,71087,71087,5,71341,71341,5,71995,71996,5,72249,72249,7,72850,72871,5,73109,73109,5,118576,118598,5,121505,121519,5,127245,127247,14,127568,127569,14,127777,127777,14,127872,127891,14,127956,127967,14,128015,128016,14,128110,128172,14,128259,128259,14,128367,128368,14,128424,128424,14,128488,128488,14,128530,128532,14,128550,128551,14,128566,128566,14,128647,128647,14,128656,128656,14,128667,128673,14,128691,128693,14,128715,128715,14,128728,128732,14,128752,128752,14,128765,128767,14,129096,129103,14,129311,129311,14,129344,129349,14,129394,129394,14,129413,129425,14,129466,129471,14,129511,129535,14,129664,129666,14,129719,129722,14,129760,129767,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2307,2307,7,2382,2383,7,2497,2500,5,2563,2563,7,2677,2677,5,2763,2764,7,2879,2879,5,2914,2915,5,3021,3021,5,3142,3144,5,3263,3263,5,3285,3286,5,3398,3400,7,3530,3530,5,3633,3633,5,3864,3865,5,3974,3975,5,4155,4156,7,4229,4230,5,5909,5909,7,6078,6085,7,6277,6278,5,6451,6456,7,6744,6750,5,6846,6846,5,6972,6972,5,7074,7077,5,7146,7148,7,7222,7223,5,7416,7417,5,8234,8238,4,8417,8417,5,9000,9000,14,9203,9203,14,9730,9731,14,9748,9749,14,9762,9763,14,9776,9783,14,9800,9811,14,9831,9831,14,9872,9873,14,9882,9882,14,9900,9903,14,9929,9933,14,9941,9960,14,9974,9974,14,9989,9989,14,10006,10006,14,10062,10062,14,10160,10160,14,11647,11647,5,12953,12953,14,43019,43019,5,43232,43249,5,43443,43443,5,43567,43568,7,43696,43696,5,43765,43765,7,44013,44013,5,44117,44143,12,44229,44255,12,44341,44367,12,44453,44479,12,44565,44591,12,44677,44703,12,44789,44815,12,44901,44927,12,45013,45039,12,45125,45151,12,45237,45263,12,45349,45375,12,45461,45487,12,45573,45599,12,45685,45711,12,45797,45823,12,45909,45935,12,46021,46047,12,46133,46159,12,46245,46271,12,46357,46383,12,46469,46495,12,46581,46607,12,46693,46719,12,46805,46831,12,46917,46943,12,47029,47055,12,47141,47167,12,47253,47279,12,47365,47391,12,47477,47503,12,47589,47615,12,47701,47727,12,47813,47839,12,47925,47951,12,48037,48063,12,48149,48175,12,48261,48287,12,48373,48399,12,48485,48511,12,48597,48623,12,48709,48735,12,48821,48847,12,48933,48959,12,49045,49071,12,49157,49183,12,49269,49295,12,49381,49407,12,49493,49519,12,49605,49631,12,49717,49743,12,49829,49855,12,49941,49967,12,50053,50079,12,50165,50191,12,50277,50303,12,50389,50415,12,50501,50527,12,50613,50639,12,50725,50751,12,50837,50863,12,50949,50975,12,51061,51087,12,51173,51199,12,51285,51311,12,51397,51423,12,51509,51535,12,51621,51647,12,51733,51759,12,51845,51871,12,51957,51983,12,52069,52095,12,52181,52207,12,52293,52319,12,52405,52431,12,52517,52543,12,52629,52655,12,52741,52767,12,52853,52879,12,52965,52991,12,53077,53103,12,53189,53215,12,53301,53327,12,53413,53439,12,53525,53551,12,53637,53663,12,53749,53775,12,53861,53887,12,53973,53999,12,54085,54111,12,54197,54223,12,54309,54335,12,54421,54447,12,54533,54559,12,54645,54671,12,54757,54783,12,54869,54895,12,54981,55007,12,55093,55119,12,55243,55291,10,66045,66045,5,68325,68326,5,69688,69702,5,69817,69818,5,69957,69958,7,70089,70092,5,70198,70199,5,70462,70462,5,70502,70508,5,70750,70750,5,70846,70846,7,71100,71101,5,71230,71230,7,71351,71351,5,71737,71738,5,72000,72000,7,72160,72160,5,72273,72278,5,72752,72758,5,72882,72883,5,73031,73031,5,73461,73462,7,94192,94193,7,119149,119149,7,121403,121452,5,122915,122916,5,126980,126980,14,127358,127359,14,127535,127535,14,127759,127759,14,127771,127771,14,127792,127793,14,127825,127867,14,127897,127899,14,127945,127945,14,127985,127986,14,128000,128007,14,128021,128021,14,128066,128100,14,128184,128235,14,128249,128252,14,128266,128276,14,128335,128335,14,128379,128390,14,128407,128419,14,128444,128444,14,128481,128481,14,128499,128499,14,128526,128526,14,128536,128536,14,128543,128543,14,128556,128556,14,128564,128564,14,128577,128580,14,128643,128645,14,128649,128649,14,128654,128654,14,128660,128660,14,128664,128664,14,128675,128675,14,128686,128689,14,128695,128696,14,128705,128709,14,128717,128719,14,128725,128725,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129009,129023,14,129160,129167,14,129296,129304,14,129320,129327,14,129340,129342,14,129356,129356,14,129388,129392,14,129399,129400,14,129404,129407,14,129432,129442,14,129454,129455,14,129473,129474,14,129485,129487,14,129648,129651,14,129659,129660,14,129671,129679,14,129709,129711,14,129728,129730,14,129751,129753,14,129776,129782,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,2274,2274,1,2363,2363,7,2377,2380,7,2402,2403,5,2494,2494,5,2507,2508,7,2558,2558,5,2622,2624,7,2641,2641,5,2691,2691,7,2759,2760,5,2786,2787,5,2876,2876,5,2881,2884,5,2901,2902,5,3006,3006,5,3014,3016,7,3072,3072,5,3134,3136,5,3157,3158,5,3260,3260,5,3266,3266,5,3274,3275,7,3328,3329,5,3391,3392,7,3405,3405,5,3457,3457,5,3536,3537,7,3551,3551,5,3636,3642,5,3764,3772,5,3895,3895,5,3967,3967,7,3993,4028,5,4146,4151,5,4182,4183,7,4226,4226,5,4253,4253,5,4957,4959,5,5940,5940,7,6070,6070,7,6087,6088,7,6158,6158,4,6432,6434,5,6448,6449,7,6679,6680,5,6742,6742,5,6754,6754,5,6783,6783,5,6912,6915,5,6966,6970,5,6978,6978,5,7042,7042,7,7080,7081,5,7143,7143,7,7150,7150,7,7212,7219,5,7380,7392,5,7412,7412,5,8203,8203,4,8232,8232,4,8265,8265,14,8400,8412,5,8421,8432,5,8617,8618,14,9167,9167,14,9200,9200,14,9410,9410,14,9723,9726,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9774,14,9786,9786,14,9794,9794,14,9823,9823,14,9828,9828,14,9833,9850,14,9855,9855,14,9875,9875,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9935,9935,14,9939,9939,14,9962,9962,14,9972,9972,14,9978,9978,14,9986,9986,14,9997,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10133,10135,14,10548,10549,14,11093,11093,14,12330,12333,5,12441,12442,5,42608,42610,5,43010,43010,5,43045,43046,5,43188,43203,7,43302,43309,5,43392,43394,5,43446,43449,5,43493,43493,5,43571,43572,7,43597,43597,7,43703,43704,5,43756,43757,5,44003,44004,7,44009,44010,7,44033,44059,12,44089,44115,12,44145,44171,12,44201,44227,12,44257,44283,12,44313,44339,12,44369,44395,12,44425,44451,12,44481,44507,12,44537,44563,12,44593,44619,12,44649,44675,12,44705,44731,12,44761,44787,12,44817,44843,12,44873,44899,12,44929,44955,12,44985,45011,12,45041,45067,12,45097,45123,12,45153,45179,12,45209,45235,12,45265,45291,12,45321,45347,12,45377,45403,12,45433,45459,12,45489,45515,12,45545,45571,12,45601,45627,12,45657,45683,12,45713,45739,12,45769,45795,12,45825,45851,12,45881,45907,12,45937,45963,12,45993,46019,12,46049,46075,12,46105,46131,12,46161,46187,12,46217,46243,12,46273,46299,12,46329,46355,12,46385,46411,12,46441,46467,12,46497,46523,12,46553,46579,12,46609,46635,12,46665,46691,12,46721,46747,12,46777,46803,12,46833,46859,12,46889,46915,12,46945,46971,12,47001,47027,12,47057,47083,12,47113,47139,12,47169,47195,12,47225,47251,12,47281,47307,12,47337,47363,12,47393,47419,12,47449,47475,12,47505,47531,12,47561,47587,12,47617,47643,12,47673,47699,12,47729,47755,12,47785,47811,12,47841,47867,12,47897,47923,12,47953,47979,12,48009,48035,12,48065,48091,12,48121,48147,12,48177,48203,12,48233,48259,12,48289,48315,12,48345,48371,12,48401,48427,12,48457,48483,12,48513,48539,12,48569,48595,12,48625,48651,12,48681,48707,12,48737,48763,12,48793,48819,12,48849,48875,12,48905,48931,12,48961,48987,12,49017,49043,12,49073,49099,12,49129,49155,12,49185,49211,12,49241,49267,12,49297,49323,12,49353,49379,12,49409,49435,12,49465,49491,12,49521,49547,12,49577,49603,12,49633,49659,12,49689,49715,12,49745,49771,12,49801,49827,12,49857,49883,12,49913,49939,12,49969,49995,12,50025,50051,12,50081,50107,12,50137,50163,12,50193,50219,12,50249,50275,12,50305,50331,12,50361,50387,12,50417,50443,12,50473,50499,12,50529,50555,12,50585,50611,12,50641,50667,12,50697,50723,12,50753,50779,12,50809,50835,12,50865,50891,12,50921,50947,12,50977,51003,12,51033,51059,12,51089,51115,12,51145,51171,12,51201,51227,12,51257,51283,12,51313,51339,12,51369,51395,12,51425,51451,12,51481,51507,12,51537,51563,12,51593,51619,12,51649,51675,12,51705,51731,12,51761,51787,12,51817,51843,12,51873,51899,12,51929,51955,12,51985,52011,12,52041,52067,12,52097,52123,12,52153,52179,12,52209,52235,12,52265,52291,12,52321,52347,12,52377,52403,12,52433,52459,12,52489,52515,12,52545,52571,12,52601,52627,12,52657,52683,12,52713,52739,12,52769,52795,12,52825,52851,12,52881,52907,12,52937,52963,12,52993,53019,12,53049,53075,12,53105,53131,12,53161,53187,12,53217,53243,12,53273,53299,12,53329,53355,12,53385,53411,12,53441,53467,12,53497,53523,12,53553,53579,12,53609,53635,12,53665,53691,12,53721,53747,12,53777,53803,12,53833,53859,12,53889,53915,12,53945,53971,12,54001,54027,12,54057,54083,12,54113,54139,12,54169,54195,12,54225,54251,12,54281,54307,12,54337,54363,12,54393,54419,12,54449,54475,12,54505,54531,12,54561,54587,12,54617,54643,12,54673,54699,12,54729,54755,12,54785,54811,12,54841,54867,12,54897,54923,12,54953,54979,12,55009,55035,12,55065,55091,12,55121,55147,12,55177,55203,12,65024,65039,5,65520,65528,4,66422,66426,5,68152,68154,5,69291,69292,5,69633,69633,5,69747,69748,5,69811,69814,5,69826,69826,5,69932,69932,7,70016,70017,5,70079,70080,7,70095,70095,5,70196,70196,5,70367,70367,5,70402,70403,7,70464,70464,5,70487,70487,5,70709,70711,7,70725,70725,7,70833,70834,7,70843,70844,7,70849,70849,7,71090,71093,5,71103,71104,5,71227,71228,7,71339,71339,5,71344,71349,5,71458,71461,5,71727,71735,5,71985,71989,7,71998,71998,5,72002,72002,7,72154,72155,5,72193,72202,5,72251,72254,5,72281,72283,5,72344,72345,5,72766,72766,7,72874,72880,5,72885,72886,5,73023,73029,5,73104,73105,5,73111,73111,5,92912,92916,5,94095,94098,5,113824,113827,4,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,125252,125258,5,127183,127183,14,127340,127343,14,127377,127386,14,127491,127503,14,127548,127551,14,127744,127756,14,127761,127761,14,127769,127769,14,127773,127774,14,127780,127788,14,127796,127797,14,127820,127823,14,127869,127869,14,127894,127895,14,127902,127903,14,127943,127943,14,127947,127950,14,127972,127972,14,127988,127988,14,127992,127994,14,128009,128011,14,128019,128019,14,128023,128041,14,128064,128064,14,128102,128107,14,128174,128181,14,128238,128238,14,128246,128247,14,128254,128254,14,128264,128264,14,128278,128299,14,128329,128330,14,128348,128359,14,128371,128377,14,128392,128393,14,128401,128404,14,128421,128421,14,128433,128434,14,128450,128452,14,128476,128478,14,128483,128483,14,128495,128495,14,128506,128506,14,128519,128520,14,128528,128528,14,128534,128534,14,128538,128538,14,128540,128542,14,128544,128549,14,128552,128555,14,128557,128557,14,128560,128563,14,128565,128565,14,128567,128576,14,128581,128591,14,128641,128642,14,128646,128646,14,128648,128648,14,128650,128651,14,128653,128653,14,128655,128655,14,128657,128659,14,128661,128661,14,128663,128663,14,128665,128666,14,128674,128674,14,128676,128677,14,128679,128685,14,128690,128690,14,128694,128694,14,128697,128702,14,128704,128704,14,128710,128714,14,128716,128716,14,128720,128720,14,128723,128724,14,128726,128727,14,128733,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,129008,129008,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,129661,129663,14,129667,129670,14,129680,129685,14,129705,129708,14,129712,129718,14,129723,129727,14,129731,129733,14,129744,129750,14,129754,129759,14,129768,129775,14,129783,129791,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,2192,2193,1,2250,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,3132,3132,5,3137,3140,7,3146,3149,5,3170,3171,5,3202,3203,7,3262,3262,7,3264,3265,7,3267,3268,7,3271,3272,7,3276,3277,5,3298,3299,5,3330,3331,7,3390,3390,5,3393,3396,5,3402,3404,7,3406,3406,1,3426,3427,5,3458,3459,7,3535,3535,5,3538,3540,5,3544,3550,7,3570,3571,7,3635,3635,7,3655,3662,5,3763,3763,7,3784,3789,5,3893,3893,5,3897,3897,5,3953,3966,5,3968,3972,5,3981,3991,5,4038,4038,5,4145,4145,7,4153,4154,5,4157,4158,5,4184,4185,5,4209,4212,5,4228,4228,7,4237,4237,5,4352,4447,8,4520,4607,10,5906,5908,5,5938,5939,5,5970,5971,5,6068,6069,5,6071,6077,5,6086,6086,5,6089,6099,5,6155,6157,5,6159,6159,5,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,6862,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,7679,5,8204,8204,5,8206,8207,4,8233,8233,4,8252,8252,14,8288,8292,4,8294,8303,4,8413,8416,5,8418,8420,5,8482,8482,14,8596,8601,14,8986,8987,14,9096,9096,14,9193,9196,14,9199,9199,14,9201,9202,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9729,14,9732,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,9775,9775,14,9784,9785,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,9874,14,9876,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,9934,14,9936,9936,14,9938,9938,14,9940,9940,14,9961,9961,14,9963,9967,14,9970,9971,14,9973,9973,14,9975,9977,14,9979,9980,14,9982,9985,14,9987,9988,14,9992,9996,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,10083,14,10085,10087,14,10145,10145,14,10175,10175,14,11013,11015,14,11088,11088,14,11503,11505,5,11744,11775,5,12334,12335,5,12349,12349,14,12951,12951,14,42607,42607,5,42612,42621,5,42736,42737,5,43014,43014,5,43043,43044,7,43047,43047,7,43136,43137,7,43204,43205,5,43263,43263,5,43335,43345,5,43360,43388,8,43395,43395,7,43444,43445,7,43450,43451,7,43454,43456,7,43561,43566,5,43569,43570,5,43573,43574,5,43596,43596,5,43644,43644,5,43698,43700,5,43710,43711,5,43755,43755,7,43758,43759,7,43766,43766,5,44005,44005,5,44008,44008,5,44012,44012,7,44032,44032,11,44060,44060,11,44088,44088,11,44116,44116,11,44144,44144,11,44172,44172,11,44200,44200,11,44228,44228,11,44256,44256,11,44284,44284,11,44312,44312,11,44340,44340,11,44368,44368,11,44396,44396,11,44424,44424,11,44452,44452,11,44480,44480,11,44508,44508,11,44536,44536,11,44564,44564,11,44592,44592,11,44620,44620,11,44648,44648,11,44676,44676,11,44704,44704,11,44732,44732,11,44760,44760,11,44788,44788,11,44816,44816,11,44844,44844,11,44872,44872,11,44900,44900,11,44928,44928,11,44956,44956,11,44984,44984,11,45012,45012,11,45040,45040,11,45068,45068,11,45096,45096,11,45124,45124,11,45152,45152,11,45180,45180,11,45208,45208,11,45236,45236,11,45264,45264,11,45292,45292,11,45320,45320,11,45348,45348,11,45376,45376,11,45404,45404,11,45432,45432,11,45460,45460,11,45488,45488,11,45516,45516,11,45544,45544,11,45572,45572,11,45600,45600,11,45628,45628,11,45656,45656,11,45684,45684,11,45712,45712,11,45740,45740,11,45768,45768,11,45796,45796,11,45824,45824,11,45852,45852,11,45880,45880,11,45908,45908,11,45936,45936,11,45964,45964,11,45992,45992,11,46020,46020,11,46048,46048,11,46076,46076,11,46104,46104,11,46132,46132,11,46160,46160,11,46188,46188,11,46216,46216,11,46244,46244,11,46272,46272,11,46300,46300,11,46328,46328,11,46356,46356,11,46384,46384,11,46412,46412,11,46440,46440,11,46468,46468,11,46496,46496,11,46524,46524,11,46552,46552,11,46580,46580,11,46608,46608,11,46636,46636,11,46664,46664,11,46692,46692,11,46720,46720,11,46748,46748,11,46776,46776,11,46804,46804,11,46832,46832,11,46860,46860,11,46888,46888,11,46916,46916,11,46944,46944,11,46972,46972,11,47000,47000,11,47028,47028,11,47056,47056,11,47084,47084,11,47112,47112,11,47140,47140,11,47168,47168,11,47196,47196,11,47224,47224,11,47252,47252,11,47280,47280,11,47308,47308,11,47336,47336,11,47364,47364,11,47392,47392,11,47420,47420,11,47448,47448,11,47476,47476,11,47504,47504,11,47532,47532,11,47560,47560,11,47588,47588,11,47616,47616,11,47644,47644,11,47672,47672,11,47700,47700,11,47728,47728,11,47756,47756,11,47784,47784,11,47812,47812,11,47840,47840,11,47868,47868,11,47896,47896,11,47924,47924,11,47952,47952,11,47980,47980,11,48008,48008,11,48036,48036,11,48064,48064,11,48092,48092,11,48120,48120,11,48148,48148,11,48176,48176,11,48204,48204,11,48232,48232,11,48260,48260,11,48288,48288,11,48316,48316,11,48344,48344,11,48372,48372,11,48400,48400,11,48428,48428,11,48456,48456,11,48484,48484,11,48512,48512,11,48540,48540,11,48568,48568,11,48596,48596,11,48624,48624,11,48652,48652,11,48680,48680,11,48708,48708,11,48736,48736,11,48764,48764,11,48792,48792,11,48820,48820,11,48848,48848,11,48876,48876,11,48904,48904,11,48932,48932,11,48960,48960,11,48988,48988,11,49016,49016,11,49044,49044,11,49072,49072,11,49100,49100,11,49128,49128,11,49156,49156,11,49184,49184,11,49212,49212,11,49240,49240,11,49268,49268,11,49296,49296,11,49324,49324,11,49352,49352,11,49380,49380,11,49408,49408,11,49436,49436,11,49464,49464,11,49492,49492,11,49520,49520,11,49548,49548,11,49576,49576,11,49604,49604,11,49632,49632,11,49660,49660,11,49688,49688,11,49716,49716,11,49744,49744,11,49772,49772,11,49800,49800,11,49828,49828,11,49856,49856,11,49884,49884,11,49912,49912,11,49940,49940,11,49968,49968,11,49996,49996,11,50024,50024,11,50052,50052,11,50080,50080,11,50108,50108,11,50136,50136,11,50164,50164,11,50192,50192,11,50220,50220,11,50248,50248,11,50276,50276,11,50304,50304,11,50332,50332,11,50360,50360,11,50388,50388,11,50416,50416,11,50444,50444,11,50472,50472,11,50500,50500,11,50528,50528,11,50556,50556,11,50584,50584,11,50612,50612,11,50640,50640,11,50668,50668,11,50696,50696,11,50724,50724,11,50752,50752,11,50780,50780,11,50808,50808,11,50836,50836,11,50864,50864,11,50892,50892,11,50920,50920,11,50948,50948,11,50976,50976,11,51004,51004,11,51032,51032,11,51060,51060,11,51088,51088,11,51116,51116,11,51144,51144,11,51172,51172,11,51200,51200,11,51228,51228,11,51256,51256,11,51284,51284,11,51312,51312,11,51340,51340,11,51368,51368,11,51396,51396,11,51424,51424,11,51452,51452,11,51480,51480,11,51508,51508,11,51536,51536,11,51564,51564,11,51592,51592,11,51620,51620,11,51648,51648,11,51676,51676,11,51704,51704,11,51732,51732,11,51760,51760,11,51788,51788,11,51816,51816,11,51844,51844,11,51872,51872,11,51900,51900,11,51928,51928,11,51956,51956,11,51984,51984,11,52012,52012,11,52040,52040,11,52068,52068,11,52096,52096,11,52124,52124,11,52152,52152,11,52180,52180,11,52208,52208,11,52236,52236,11,52264,52264,11,52292,52292,11,52320,52320,11,52348,52348,11,52376,52376,11,52404,52404,11,52432,52432,11,52460,52460,11,52488,52488,11,52516,52516,11,52544,52544,11,52572,52572,11,52600,52600,11,52628,52628,11,52656,52656,11,52684,52684,11,52712,52712,11,52740,52740,11,52768,52768,11,52796,52796,11,52824,52824,11,52852,52852,11,52880,52880,11,52908,52908,11,52936,52936,11,52964,52964,11,52992,52992,11,53020,53020,11,53048,53048,11,53076,53076,11,53104,53104,11,53132,53132,11,53160,53160,11,53188,53188,11,53216,53216,11,53244,53244,11,53272,53272,11,53300,53300,11,53328,53328,11,53356,53356,11,53384,53384,11,53412,53412,11,53440,53440,11,53468,53468,11,53496,53496,11,53524,53524,11,53552,53552,11,53580,53580,11,53608,53608,11,53636,53636,11,53664,53664,11,53692,53692,11,53720,53720,11,53748,53748,11,53776,53776,11,53804,53804,11,53832,53832,11,53860,53860,11,53888,53888,11,53916,53916,11,53944,53944,11,53972,53972,11,54000,54000,11,54028,54028,11,54056,54056,11,54084,54084,11,54112,54112,11,54140,54140,11,54168,54168,11,54196,54196,11,54224,54224,11,54252,54252,11,54280,54280,11,54308,54308,11,54336,54336,11,54364,54364,11,54392,54392,11,54420,54420,11,54448,54448,11,54476,54476,11,54504,54504,11,54532,54532,11,54560,54560,11,54588,54588,11,54616,54616,11,54644,54644,11,54672,54672,11,54700,54700,11,54728,54728,11,54756,54756,11,54784,54784,11,54812,54812,11,54840,54840,11,54868,54868,11,54896,54896,11,54924,54924,11,54952,54952,11,54980,54980,11,55008,55008,11,55036,55036,11,55064,55064,11,55092,55092,11,55120,55120,11,55148,55148,11,55176,55176,11,55216,55238,9,64286,64286,5,65056,65071,5,65438,65439,5,65529,65531,4,66272,66272,5,68097,68099,5,68108,68111,5,68159,68159,5,68900,68903,5,69446,69456,5,69632,69632,7,69634,69634,7,69744,69744,5,69759,69761,5,69808,69810,7,69815,69816,7,69821,69821,1,69837,69837,1,69927,69931,5,69933,69940,5,70003,70003,5,70018,70018,7,70070,70078,5,70082,70083,1,70094,70094,7,70188,70190,7,70194,70195,7,70197,70197,7,70206,70206,5,70368,70370,7,70400,70401,5,70459,70460,5,70463,70463,7,70465,70468,7,70475,70477,7,70498,70499,7,70512,70516,5,70712,70719,5,70722,70724,5,70726,70726,5,70832,70832,5,70835,70840,5,70842,70842,5,70845,70845,5,70847,70848,5,70850,70851,5,71088,71089,7,71096,71099,7,71102,71102,7,71132,71133,5,71219,71226,5,71229,71229,5,71231,71232,5,71340,71340,7,71342,71343,7,71350,71350,7,71453,71455,5,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,118528,118573,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,123566,123566,5,125136,125142,5,126976,126979,14,126981,127182,14,127184,127231,14,127279,127279,14,127344,127345,14,127374,127374,14,127405,127461,14,127489,127490,14,127514,127514,14,127538,127546,14,127561,127567,14,127570,127743,14,127757,127758,14,127760,127760,14,127762,127762,14,127766,127768,14,127770,127770,14,127772,127772,14,127775,127776,14,127778,127779,14,127789,127791,14,127794,127795,14,127798,127798,14,127819,127819,14,127824,127824,14,127868,127868,14,127870,127871,14,127892,127893,14,127896,127896,14,127900,127901,14,127904,127940,14,127942,127942,14,127944,127944,14,127946,127946,14,127951,127955,14,127968,127971,14,127973,127984,14,127987,127987,14,127989,127989,14,127991,127991,14,127995,127999,5,128008,128008,14,128012,128014,14,128017,128018,14,128020,128020,14,128022,128022,14,128042,128042,14,128063,128063,14,128065,128065,14,128101,128101,14,128108,128109,14,128173,128173,14,128182,128183,14,128236,128237,14,128239,128239,14,128245,128245,14,128248,128248,14,128253,128253,14,128255,128258,14,128260,128263,14,128265,128265,14,128277,128277,14,128300,128301,14,128326,128328,14,128331,128334,14,128336,128347,14,128360,128366,14,128369,128370,14,128378,128378,14,128391,128391,14,128394,128397,14,128400,128400,14,128405,128406,14,128420,128420,14,128422,128423,14,128425,128432,14,128435,128443,14,128445,128449,14,128453,128464,14,128468,128475,14,128479,128480,14,128482,128482,14,128484,128487,14,128489,128494,14,128496,128498,14,128500,128505,14,128507,128511,14,128513,128518,14,128521,128525,14,128527,128527,14,128529,128529,14,128533,128533,14,128535,128535,14,128537,128537,14]\");\n }\n var AmbiguousCharacters = class AmbiguousCharacters {\n static {\n this.ambiguousCharacterData = new Lazy(() => {\n return JSON.parse(\"{\\\"_common\\\":[8232,32,8233,32,5760,32,8192,32,8193,32,8194,32,8195,32,8196,32,8197,32,8198,32,8200,32,8201,32,8202,32,8287,32,8199,32,8239,32,2042,95,65101,95,65102,95,65103,95,8208,45,8209,45,8210,45,65112,45,1748,45,8259,45,727,45,8722,45,10134,45,11450,45,1549,44,1643,44,184,44,42233,44,894,59,2307,58,2691,58,1417,58,1795,58,1796,58,5868,58,65072,58,6147,58,6153,58,8282,58,1475,58,760,58,42889,58,8758,58,720,58,42237,58,451,33,11601,33,660,63,577,63,2429,63,5038,63,42731,63,119149,46,8228,46,1793,46,1794,46,42510,46,68176,46,1632,46,1776,46,42232,46,1373,96,65287,96,8219,96,1523,96,8242,96,1370,96,8175,96,65344,96,900,96,8189,96,8125,96,8127,96,8190,96,697,96,884,96,712,96,714,96,715,96,756,96,699,96,701,96,700,96,702,96,42892,96,1497,96,2036,96,2037,96,5194,96,5836,96,94033,96,94034,96,65339,91,10088,40,10098,40,12308,40,64830,40,65341,93,10089,41,10099,41,12309,41,64831,41,10100,123,119060,123,10101,125,65342,94,8270,42,1645,42,8727,42,66335,42,5941,47,8257,47,8725,47,8260,47,9585,47,10187,47,10744,47,119354,47,12755,47,12339,47,11462,47,20031,47,12035,47,65340,92,65128,92,8726,92,10189,92,10741,92,10745,92,119311,92,119355,92,12756,92,20022,92,12034,92,42872,38,708,94,710,94,5869,43,10133,43,66203,43,8249,60,10094,60,706,60,119350,60,5176,60,5810,60,5120,61,11840,61,12448,61,42239,61,8250,62,10095,62,707,62,119351,62,5171,62,94015,62,8275,126,732,126,8128,126,8764,126,65372,124,65293,45,118002,50,120784,50,120794,50,120804,50,120814,50,120824,50,130034,50,42842,50,423,50,1000,50,42564,50,5311,50,42735,50,119302,51,118003,51,120785,51,120795,51,120805,51,120815,51,120825,51,130035,51,42923,51,540,51,439,51,42858,51,11468,51,1248,51,94011,51,71882,51,118004,52,120786,52,120796,52,120806,52,120816,52,120826,52,130036,52,5070,52,71855,52,118005,53,120787,53,120797,53,120807,53,120817,53,120827,53,130037,53,444,53,71867,53,118006,54,120788,54,120798,54,120808,54,120818,54,120828,54,130038,54,11474,54,5102,54,71893,54,119314,55,118007,55,120789,55,120799,55,120809,55,120819,55,120829,55,130039,55,66770,55,71878,55,2819,56,2538,56,2666,56,125131,56,118008,56,120790,56,120800,56,120810,56,120820,56,120830,56,130040,56,547,56,546,56,66330,56,2663,57,2920,57,2541,57,3437,57,118009,57,120791,57,120801,57,120811,57,120821,57,120831,57,130041,57,42862,57,11466,57,71884,57,71852,57,71894,57,9082,97,65345,97,119834,97,119886,97,119938,97,119990,97,120042,97,120094,97,120146,97,120198,97,120250,97,120302,97,120354,97,120406,97,120458,97,593,97,945,97,120514,97,120572,97,120630,97,120688,97,120746,97,65313,65,117974,65,119808,65,119860,65,119912,65,119964,65,120016,65,120068,65,120120,65,120172,65,120224,65,120276,65,120328,65,120380,65,120432,65,913,65,120488,65,120546,65,120604,65,120662,65,120720,65,5034,65,5573,65,42222,65,94016,65,66208,65,119835,98,119887,98,119939,98,119991,98,120043,98,120095,98,120147,98,120199,98,120251,98,120303,98,120355,98,120407,98,120459,98,388,98,5071,98,5234,98,5551,98,65314,66,8492,66,117975,66,119809,66,119861,66,119913,66,120017,66,120069,66,120121,66,120173,66,120225,66,120277,66,120329,66,120381,66,120433,66,42932,66,914,66,120489,66,120547,66,120605,66,120663,66,120721,66,5108,66,5623,66,42192,66,66178,66,66209,66,66305,66,65347,99,8573,99,119836,99,119888,99,119940,99,119992,99,120044,99,120096,99,120148,99,120200,99,120252,99,120304,99,120356,99,120408,99,120460,99,7428,99,1010,99,11429,99,43951,99,66621,99,128844,67,71913,67,71922,67,65315,67,8557,67,8450,67,8493,67,117976,67,119810,67,119862,67,119914,67,119966,67,120018,67,120174,67,120226,67,120278,67,120330,67,120382,67,120434,67,1017,67,11428,67,5087,67,42202,67,66210,67,66306,67,66581,67,66844,67,8574,100,8518,100,119837,100,119889,100,119941,100,119993,100,120045,100,120097,100,120149,100,120201,100,120253,100,120305,100,120357,100,120409,100,120461,100,1281,100,5095,100,5231,100,42194,100,8558,68,8517,68,117977,68,119811,68,119863,68,119915,68,119967,68,120019,68,120071,68,120123,68,120175,68,120227,68,120279,68,120331,68,120383,68,120435,68,5024,68,5598,68,5610,68,42195,68,8494,101,65349,101,8495,101,8519,101,119838,101,119890,101,119942,101,120046,101,120098,101,120150,101,120202,101,120254,101,120306,101,120358,101,120410,101,120462,101,43826,101,1213,101,8959,69,65317,69,8496,69,117978,69,119812,69,119864,69,119916,69,120020,69,120072,69,120124,69,120176,69,120228,69,120280,69,120332,69,120384,69,120436,69,917,69,120492,69,120550,69,120608,69,120666,69,120724,69,11577,69,5036,69,42224,69,71846,69,71854,69,66182,69,119839,102,119891,102,119943,102,119995,102,120047,102,120099,102,120151,102,120203,102,120255,102,120307,102,120359,102,120411,102,120463,102,43829,102,42905,102,383,102,7837,102,1412,102,119315,70,8497,70,117979,70,119813,70,119865,70,119917,70,120021,70,120073,70,120125,70,120177,70,120229,70,120281,70,120333,70,120385,70,120437,70,42904,70,988,70,120778,70,5556,70,42205,70,71874,70,71842,70,66183,70,66213,70,66853,70,65351,103,8458,103,119840,103,119892,103,119944,103,120048,103,120100,103,120152,103,120204,103,120256,103,120308,103,120360,103,120412,103,120464,103,609,103,7555,103,397,103,1409,103,117980,71,119814,71,119866,71,119918,71,119970,71,120022,71,120074,71,120126,71,120178,71,120230,71,120282,71,120334,71,120386,71,120438,71,1292,71,5056,71,5107,71,42198,71,65352,104,8462,104,119841,104,119945,104,119997,104,120049,104,120101,104,120153,104,120205,104,120257,104,120309,104,120361,104,120413,104,120465,104,1211,104,1392,104,5058,104,65320,72,8459,72,8460,72,8461,72,117981,72,119815,72,119867,72,119919,72,120023,72,120179,72,120231,72,120283,72,120335,72,120387,72,120439,72,919,72,120494,72,120552,72,120610,72,120668,72,120726,72,11406,72,5051,72,5500,72,42215,72,66255,72,731,105,9075,105,65353,105,8560,105,8505,105,8520,105,119842,105,119894,105,119946,105,119998,105,120050,105,120102,105,120154,105,120206,105,120258,105,120310,105,120362,105,120414,105,120466,105,120484,105,618,105,617,105,953,105,8126,105,890,105,120522,105,120580,105,120638,105,120696,105,120754,105,1110,105,42567,105,1231,105,43893,105,5029,105,71875,105,65354,106,8521,106,119843,106,119895,106,119947,106,119999,106,120051,106,120103,106,120155,106,120207,106,120259,106,120311,106,120363,106,120415,106,120467,106,1011,106,1112,106,65322,74,117983,74,119817,74,119869,74,119921,74,119973,74,120025,74,120077,74,120129,74,120181,74,120233,74,120285,74,120337,74,120389,74,120441,74,42930,74,895,74,1032,74,5035,74,5261,74,42201,74,119844,107,119896,107,119948,107,120000,107,120052,107,120104,107,120156,107,120208,107,120260,107,120312,107,120364,107,120416,107,120468,107,8490,75,65323,75,117984,75,119818,75,119870,75,119922,75,119974,75,120026,75,120078,75,120130,75,120182,75,120234,75,120286,75,120338,75,120390,75,120442,75,922,75,120497,75,120555,75,120613,75,120671,75,120729,75,11412,75,5094,75,5845,75,42199,75,66840,75,1472,108,8739,73,9213,73,65512,73,1633,108,1777,73,66336,108,125127,108,118001,108,120783,73,120793,73,120803,73,120813,73,120823,73,130033,73,65321,73,8544,73,8464,73,8465,73,117982,108,119816,73,119868,73,119920,73,120024,73,120128,73,120180,73,120232,73,120284,73,120336,73,120388,73,120440,73,65356,108,8572,73,8467,108,119845,108,119897,108,119949,108,120001,108,120053,108,120105,73,120157,73,120209,73,120261,73,120313,73,120365,73,120417,73,120469,73,448,73,120496,73,120554,73,120612,73,120670,73,120728,73,11410,73,1030,73,1216,73,1493,108,1503,108,1575,108,126464,108,126592,108,65166,108,65165,108,1994,108,11599,73,5825,73,42226,73,93992,73,66186,124,66313,124,119338,76,8556,76,8466,76,117985,76,119819,76,119871,76,119923,76,120027,76,120079,76,120131,76,120183,76,120235,76,120287,76,120339,76,120391,76,120443,76,11472,76,5086,76,5290,76,42209,76,93974,76,71843,76,71858,76,66587,76,66854,76,65325,77,8559,77,8499,77,117986,77,119820,77,119872,77,119924,77,120028,77,120080,77,120132,77,120184,77,120236,77,120288,77,120340,77,120392,77,120444,77,924,77,120499,77,120557,77,120615,77,120673,77,120731,77,1018,77,11416,77,5047,77,5616,77,5846,77,42207,77,66224,77,66321,77,119847,110,119899,110,119951,110,120003,110,120055,110,120107,110,120159,110,120211,110,120263,110,120315,110,120367,110,120419,110,120471,110,1400,110,1404,110,65326,78,8469,78,117987,78,119821,78,119873,78,119925,78,119977,78,120029,78,120081,78,120185,78,120237,78,120289,78,120341,78,120393,78,120445,78,925,78,120500,78,120558,78,120616,78,120674,78,120732,78,11418,78,42208,78,66835,78,3074,111,3202,111,3330,111,3458,111,2406,111,2662,111,2790,111,3046,111,3174,111,3302,111,3430,111,3664,111,3792,111,4160,111,1637,111,1781,111,65359,111,8500,111,119848,111,119900,111,119952,111,120056,111,120108,111,120160,111,120212,111,120264,111,120316,111,120368,111,120420,111,120472,111,7439,111,7441,111,43837,111,959,111,120528,111,120586,111,120644,111,120702,111,120760,111,963,111,120532,111,120590,111,120648,111,120706,111,120764,111,11423,111,4351,111,1413,111,1505,111,1607,111,126500,111,126564,111,126596,111,65259,111,65260,111,65258,111,65257,111,1726,111,64428,111,64429,111,64427,111,64426,111,1729,111,64424,111,64425,111,64423,111,64422,111,1749,111,3360,111,4125,111,66794,111,71880,111,71895,111,66604,111,1984,79,2534,79,2918,79,12295,79,70864,79,71904,79,118000,79,120782,79,120792,79,120802,79,120812,79,120822,79,130032,79,65327,79,117988,79,119822,79,119874,79,119926,79,119978,79,120030,79,120082,79,120134,79,120186,79,120238,79,120290,79,120342,79,120394,79,120446,79,927,79,120502,79,120560,79,120618,79,120676,79,120734,79,11422,79,1365,79,11604,79,4816,79,2848,79,66754,79,42227,79,71861,79,66194,79,66219,79,66564,79,66838,79,9076,112,65360,112,119849,112,119901,112,119953,112,120005,112,120057,112,120109,112,120161,112,120213,112,120265,112,120317,112,120369,112,120421,112,120473,112,961,112,120530,112,120544,112,120588,112,120602,112,120646,112,120660,112,120704,112,120718,112,120762,112,120776,112,11427,112,65328,80,8473,80,117989,80,119823,80,119875,80,119927,80,119979,80,120031,80,120083,80,120187,80,120239,80,120291,80,120343,80,120395,80,120447,80,929,80,120504,80,120562,80,120620,80,120678,80,120736,80,11426,80,5090,80,5229,80,42193,80,66197,80,119850,113,119902,113,119954,113,120006,113,120058,113,120110,113,120162,113,120214,113,120266,113,120318,113,120370,113,120422,113,120474,113,1307,113,1379,113,1382,113,8474,81,117990,81,119824,81,119876,81,119928,81,119980,81,120032,81,120084,81,120188,81,120240,81,120292,81,120344,81,120396,81,120448,81,11605,81,119851,114,119903,114,119955,114,120007,114,120059,114,120111,114,120163,114,120215,114,120267,114,120319,114,120371,114,120423,114,120475,114,43847,114,43848,114,7462,114,11397,114,43905,114,119318,82,8475,82,8476,82,8477,82,117991,82,119825,82,119877,82,119929,82,120033,82,120189,82,120241,82,120293,82,120345,82,120397,82,120449,82,422,82,5025,82,5074,82,66740,82,5511,82,42211,82,94005,82,65363,115,119852,115,119904,115,119956,115,120008,115,120060,115,120112,115,120164,115,120216,115,120268,115,120320,115,120372,115,120424,115,120476,115,42801,115,445,115,1109,115,43946,115,71873,115,66632,115,65331,83,117992,83,119826,83,119878,83,119930,83,119982,83,120034,83,120086,83,120138,83,120190,83,120242,83,120294,83,120346,83,120398,83,120450,83,1029,83,1359,83,5077,83,5082,83,42210,83,94010,83,66198,83,66592,83,119853,116,119905,116,119957,116,120009,116,120061,116,120113,116,120165,116,120217,116,120269,116,120321,116,120373,116,120425,116,120477,116,8868,84,10201,84,128872,84,65332,84,117993,84,119827,84,119879,84,119931,84,119983,84,120035,84,120087,84,120139,84,120191,84,120243,84,120295,84,120347,84,120399,84,120451,84,932,84,120507,84,120565,84,120623,84,120681,84,120739,84,11430,84,5026,84,42196,84,93962,84,71868,84,66199,84,66225,84,66325,84,119854,117,119906,117,119958,117,120010,117,120062,117,120114,117,120166,117,120218,117,120270,117,120322,117,120374,117,120426,117,120478,117,42911,117,7452,117,43854,117,43858,117,651,117,965,117,120534,117,120592,117,120650,117,120708,117,120766,117,1405,117,66806,117,71896,117,8746,85,8899,85,117994,85,119828,85,119880,85,119932,85,119984,85,120036,85,120088,85,120140,85,120192,85,120244,85,120296,85,120348,85,120400,85,120452,85,1357,85,4608,85,66766,85,5196,85,42228,85,94018,85,71864,85,8744,118,8897,118,65366,118,8564,118,119855,118,119907,118,119959,118,120011,118,120063,118,120115,118,120167,118,120219,118,120271,118,120323,118,120375,118,120427,118,120479,118,7456,118,957,118,120526,118,120584,118,120642,118,120700,118,120758,118,1141,118,1496,118,71430,118,43945,118,71872,118,119309,86,1639,86,1783,86,8548,86,117995,86,119829,86,119881,86,119933,86,119985,86,120037,86,120089,86,120141,86,120193,86,120245,86,120297,86,120349,86,120401,86,120453,86,1140,86,11576,86,5081,86,5167,86,42719,86,42214,86,93960,86,71840,86,66845,86,623,119,119856,119,119908,119,119960,119,120012,119,120064,119,120116,119,120168,119,120220,119,120272,119,120324,119,120376,119,120428,119,120480,119,7457,119,1121,119,1309,119,1377,119,71434,119,71438,119,71439,119,43907,119,71910,87,71919,87,117996,87,119830,87,119882,87,119934,87,119986,87,120038,87,120090,87,120142,87,120194,87,120246,87,120298,87,120350,87,120402,87,120454,87,1308,87,5043,87,5076,87,42218,87,5742,120,10539,120,10540,120,10799,120,65368,120,8569,120,119857,120,119909,120,119961,120,120013,120,120065,120,120117,120,120169,120,120221,120,120273,120,120325,120,120377,120,120429,120,120481,120,5441,120,5501,120,5741,88,9587,88,66338,88,71916,88,65336,88,8553,88,117997,88,119831,88,119883,88,119935,88,119987,88,120039,88,120091,88,120143,88,120195,88,120247,88,120299,88,120351,88,120403,88,120455,88,42931,88,935,88,120510,88,120568,88,120626,88,120684,88,120742,88,11436,88,11613,88,5815,88,42219,88,66192,88,66228,88,66327,88,66855,88,611,121,7564,121,65369,121,119858,121,119910,121,119962,121,120014,121,120066,121,120118,121,120170,121,120222,121,120274,121,120326,121,120378,121,120430,121,120482,121,655,121,7935,121,43866,121,947,121,8509,121,120516,121,120574,121,120632,121,120690,121,120748,121,1199,121,4327,121,71900,121,65337,89,117998,89,119832,89,119884,89,119936,89,119988,89,120040,89,120092,89,120144,89,120196,89,120248,89,120300,89,120352,89,120404,89,120456,89,933,89,978,89,120508,89,120566,89,120624,89,120682,89,120740,89,11432,89,1198,89,5033,89,5053,89,42220,89,94019,89,71844,89,66226,89,119859,122,119911,122,119963,122,120015,122,120067,122,120119,122,120171,122,120223,122,120275,122,120327,122,120379,122,120431,122,120483,122,7458,122,43923,122,71876,122,71909,90,66293,90,65338,90,8484,90,8488,90,117999,90,119833,90,119885,90,119937,90,119989,90,120041,90,120197,90,120249,90,120301,90,120353,90,120405,90,120457,90,918,90,120493,90,120551,90,120609,90,120667,90,120725,90,5059,90,42204,90,71849,90,65282,34,65283,35,65284,36,65285,37,65286,38,65290,42,65291,43,65294,46,65295,47,65296,48,65298,50,65299,51,65300,52,65301,53,65302,54,65303,55,65304,56,65305,57,65308,60,65309,61,65310,62,65312,64,65316,68,65318,70,65319,71,65324,76,65329,81,65330,82,65333,85,65334,86,65335,87,65343,95,65346,98,65348,100,65350,102,65355,107,65357,109,65358,110,65361,113,65362,114,65364,116,65365,117,65367,119,65370,122,65371,123,65373,125,119846,109],\\\"_default\\\":[160,32,8211,45,65374,126,8218,44,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],\\\"cs\\\":[65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],\\\"de\\\":[65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],\\\"es\\\":[8211,45,65374,126,8218,44,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],\\\"fr\\\":[65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],\\\"it\\\":[160,32,8211,45,65374,126,8218,44,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],\\\"ja\\\":[8211,45,8218,44,65281,33,8216,96,8245,96,180,96,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65292,44,65297,49,65307,59],\\\"ko\\\":[8211,45,65374,126,8218,44,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],\\\"pl\\\":[65374,126,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],\\\"pt-BR\\\":[65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],\\\"qps-ploc\\\":[160,32,8211,45,65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],\\\"ru\\\":[65374,126,8218,44,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,305,105,921,73,1009,112,215,120,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],\\\"tr\\\":[160,32,8211,45,65374,126,8218,44,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41,65292,44,65297,49,65307,59,65311,63],\\\"zh-hans\\\":[160,32,65374,126,8218,44,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65297,49],\\\"zh-hant\\\":[8211,45,65374,126,8218,44,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89]}\");\n });\n }\n static {\n this.cache = new LRUCachedFunction({ getCacheKey: JSON.stringify }, (locales) => {\n function arrayToMap(arr) {\n const result = /* @__PURE__ */ new Map();\n for (let i = 0; i < arr.length; i += 2) result.set(arr[i], arr[i + 1]);\n return result;\n }\n function mergeMaps(map1, map2) {\n const result = new Map(map1);\n for (const [key, value] of map2) result.set(key, value);\n return result;\n }\n function intersectMaps(map1, map2) {\n if (!map1) return map2;\n const result = /* @__PURE__ */ new Map();\n for (const [key, value] of map1) if (map2.has(key)) result.set(key, value);\n return result;\n }\n const data = this.ambiguousCharacterData.value;\n let filteredLocales = locales.filter((l) => !l.startsWith(\"_\") && Object.hasOwn(data, l));\n if (filteredLocales.length === 0) filteredLocales = [\"_default\"];\n let languageSpecificMap = void 0;\n for (const locale of filteredLocales) {\n const map = arrayToMap(data[locale]);\n languageSpecificMap = intersectMaps(languageSpecificMap, map);\n }\n const map = mergeMaps(arrayToMap(data[\"_common\"]), languageSpecificMap);\n return new AmbiguousCharacters(map);\n });\n }\n static getInstance(locales) {\n return AmbiguousCharacters.cache.get(Array.from(locales));\n }\n static {\n this._locales = new Lazy(() => Object.keys(AmbiguousCharacters.ambiguousCharacterData.value).filter((k) => !k.startsWith(\"_\")));\n }\n static getLocales() {\n return AmbiguousCharacters._locales.value;\n }\n constructor(confusableDictionary) {\n this.confusableDictionary = confusableDictionary;\n }\n isAmbiguous(codePoint) {\n return this.confusableDictionary.has(codePoint);\n }\n /**\n * Returns the non basic ASCII code point that the given code point can be confused,\n * or undefined if such code point does note exist.\n */\n getPrimaryConfusable(codePoint) {\n return this.confusableDictionary.get(codePoint);\n }\n getConfusableCodePoints() {\n return new Set(this.confusableDictionary.keys());\n }\n };\n var InvisibleCharacters = class InvisibleCharacters {\n static getRawData() {\n return JSON.parse(\"{\\\"_common\\\":[11,12,13,127,847,1564,4447,4448,6068,6069,6155,6156,6157,6158,7355,7356,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8204,8205,8206,8207,8234,8235,8236,8237,8238,8239,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,10240,12644,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65279,65440,65520,65521,65522,65523,65524,65525,65526,65527,65528,65532,78844,119155,119156,119157,119158,119159,119160,119161,119162,917504,917505,917506,917507,917508,917509,917510,917511,917512,917513,917514,917515,917516,917517,917518,917519,917520,917521,917522,917523,917524,917525,917526,917527,917528,917529,917530,917531,917532,917533,917534,917535,917536,917537,917538,917539,917540,917541,917542,917543,917544,917545,917546,917547,917548,917549,917550,917551,917552,917553,917554,917555,917556,917557,917558,917559,917560,917561,917562,917563,917564,917565,917566,917567,917568,917569,917570,917571,917572,917573,917574,917575,917576,917577,917578,917579,917580,917581,917582,917583,917584,917585,917586,917587,917588,917589,917590,917591,917592,917593,917594,917595,917596,917597,917598,917599,917600,917601,917602,917603,917604,917605,917606,917607,917608,917609,917610,917611,917612,917613,917614,917615,917616,917617,917618,917619,917620,917621,917622,917623,917624,917625,917626,917627,917628,917629,917630,917631,917760,917761,917762,917763,917764,917765,917766,917767,917768,917769,917770,917771,917772,917773,917774,917775,917776,917777,917778,917779,917780,917781,917782,917783,917784,917785,917786,917787,917788,917789,917790,917791,917792,917793,917794,917795,917796,917797,917798,917799,917800,917801,917802,917803,917804,917805,917806,917807,917808,917809,917810,917811,917812,917813,917814,917815,917816,917817,917818,917819,917820,917821,917822,917823,917824,917825,917826,917827,917828,917829,917830,917831,917832,917833,917834,917835,917836,917837,917838,917839,917840,917841,917842,917843,917844,917845,917846,917847,917848,917849,917850,917851,917852,917853,917854,917855,917856,917857,917858,917859,917860,917861,917862,917863,917864,917865,917866,917867,917868,917869,917870,917871,917872,917873,917874,917875,917876,917877,917878,917879,917880,917881,917882,917883,917884,917885,917886,917887,917888,917889,917890,917891,917892,917893,917894,917895,917896,917897,917898,917899,917900,917901,917902,917903,917904,917905,917906,917907,917908,917909,917910,917911,917912,917913,917914,917915,917916,917917,917918,917919,917920,917921,917922,917923,917924,917925,917926,917927,917928,917929,917930,917931,917932,917933,917934,917935,917936,917937,917938,917939,917940,917941,917942,917943,917944,917945,917946,917947,917948,917949,917950,917951,917952,917953,917954,917955,917956,917957,917958,917959,917960,917961,917962,917963,917964,917965,917966,917967,917968,917969,917970,917971,917972,917973,917974,917975,917976,917977,917978,917979,917980,917981,917982,917983,917984,917985,917986,917987,917988,917989,917990,917991,917992,917993,917994,917995,917996,917997,917998,917999],\\\"cs\\\":[173,8203,12288],\\\"de\\\":[173,8203,12288],\\\"es\\\":[8203,12288],\\\"fr\\\":[173,8203,12288],\\\"it\\\":[160,173,12288],\\\"ja\\\":[173],\\\"ko\\\":[173,12288],\\\"pl\\\":[173,8203,12288],\\\"pt-BR\\\":[173,8203,12288],\\\"qps-ploc\\\":[160,173,8203,12288],\\\"ru\\\":[173,12288],\\\"tr\\\":[160,173,8203,12288],\\\"zh-hans\\\":[160,173,8203,12288],\\\"zh-hant\\\":[173,12288]}\");\n }\n static {\n this._data = void 0;\n }\n static getData() {\n if (!this._data) this._data = new Set([...Object.values(InvisibleCharacters.getRawData())].flat());\n return this._data;\n }\n static isInvisibleCharacter(codePoint) {\n return InvisibleCharacters.getData().has(codePoint);\n }\n static get codePoints() {\n return InvisibleCharacters.getData();\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/worker/webWorker.js\n const DEFAULT_CHANNEL = \"default\";\n const INITIALIZE = \"$initialize\";\n var RequestMessage = class {\n constructor(vsWorker, req, channel, method, args) {\n this.vsWorker = vsWorker;\n this.req = req;\n this.channel = channel;\n this.method = method;\n this.args = args;\n this.type = 0;\n }\n };\n var ReplyMessage = class {\n constructor(vsWorker, seq, res, err) {\n this.vsWorker = vsWorker;\n this.seq = seq;\n this.res = res;\n this.err = err;\n this.type = 1;\n }\n };\n var SubscribeEventMessage = class {\n constructor(vsWorker, req, channel, eventName, arg) {\n this.vsWorker = vsWorker;\n this.req = req;\n this.channel = channel;\n this.eventName = eventName;\n this.arg = arg;\n this.type = 2;\n }\n };\n var EventMessage = class {\n constructor(vsWorker, req, event) {\n this.vsWorker = vsWorker;\n this.req = req;\n this.event = event;\n this.type = 3;\n }\n };\n var UnsubscribeEventMessage = class {\n constructor(vsWorker, req) {\n this.vsWorker = vsWorker;\n this.req = req;\n this.type = 4;\n }\n };\n var WebWorkerProtocol = class {\n constructor(handler) {\n this._workerId = -1;\n this._handler = handler;\n this._lastSentReq = 0;\n this._pendingReplies = Object.create(null);\n this._pendingEmitters = /* @__PURE__ */ new Map();\n this._pendingEvents = /* @__PURE__ */ new Map();\n }\n setWorkerId(workerId) {\n this._workerId = workerId;\n }\n async sendMessage(channel, method, args) {\n const req = String(++this._lastSentReq);\n return new Promise((resolve, reject) => {\n this._pendingReplies[req] = {\n resolve,\n reject\n };\n this._send(new RequestMessage(this._workerId, req, channel, method, args));\n });\n }\n listen(channel, eventName, arg) {\n let req = null;\n const emitter = new Emitter({\n onWillAddFirstListener: () => {\n req = String(++this._lastSentReq);\n this._pendingEmitters.set(req, emitter);\n this._send(new SubscribeEventMessage(this._workerId, req, channel, eventName, arg));\n },\n onDidRemoveLastListener: () => {\n this._pendingEmitters.delete(req);\n this._send(new UnsubscribeEventMessage(this._workerId, req));\n req = null;\n }\n });\n return emitter.event;\n }\n handleMessage(message) {\n if (!message || !message.vsWorker) return;\n if (this._workerId !== -1 && message.vsWorker !== this._workerId) return;\n this._handleMessage(message);\n }\n createProxyToRemoteChannel(channel, sendMessageBarrier) {\n return new Proxy(Object.create(null), { get: (target, name) => {\n if (typeof name === \"string\" && !target[name]) {\n if (propertyIsDynamicEvent(name)) target[name] = (arg) => {\n return this.listen(channel, name, arg);\n };\n else if (propertyIsEvent(name)) target[name] = this.listen(channel, name, void 0);\n else if (name.charCodeAt(0) === 36) target[name] = async (...myArgs) => {\n await sendMessageBarrier?.();\n return this.sendMessage(channel, name, myArgs);\n };\n }\n return target[name];\n } });\n }\n _handleMessage(msg) {\n switch (msg.type) {\n case 1: return this._handleReplyMessage(msg);\n case 0: return this._handleRequestMessage(msg);\n case 2: return this._handleSubscribeEventMessage(msg);\n case 3: return this._handleEventMessage(msg);\n case 4: return this._handleUnsubscribeEventMessage(msg);\n }\n }\n _handleReplyMessage(replyMessage) {\n if (!this._pendingReplies[replyMessage.seq]) {\n console.warn(\"Got reply to unknown seq\");\n return;\n }\n const reply = this._pendingReplies[replyMessage.seq];\n delete this._pendingReplies[replyMessage.seq];\n if (replyMessage.err) {\n let err = replyMessage.err;\n if (replyMessage.err.$isError) {\n const newErr = /* @__PURE__ */ new Error();\n newErr.name = replyMessage.err.name;\n newErr.message = replyMessage.err.message;\n newErr.stack = replyMessage.err.stack;\n err = newErr;\n }\n reply.reject(err);\n return;\n }\n reply.resolve(replyMessage.res);\n }\n _handleRequestMessage(requestMessage) {\n const req = requestMessage.req;\n this._handler.handleMessage(requestMessage.channel, requestMessage.method, requestMessage.args).then((r) => {\n this._send(new ReplyMessage(this._workerId, req, r, void 0));\n }, (e) => {\n if (e.detail instanceof Error) e.detail = transformErrorForSerialization(e.detail);\n this._send(new ReplyMessage(this._workerId, req, void 0, transformErrorForSerialization(e)));\n });\n }\n _handleSubscribeEventMessage(msg) {\n const req = msg.req;\n const disposable = this._handler.handleEvent(msg.channel, msg.eventName, msg.arg)((event) => {\n this._send(new EventMessage(this._workerId, req, event));\n });\n this._pendingEvents.set(req, disposable);\n }\n _handleEventMessage(msg) {\n if (!this._pendingEmitters.has(msg.req)) {\n console.warn(\"Got event for unknown req\");\n return;\n }\n this._pendingEmitters.get(msg.req).fire(msg.event);\n }\n _handleUnsubscribeEventMessage(msg) {\n if (!this._pendingEvents.has(msg.req)) {\n console.warn(\"Got unsubscribe for unknown req\");\n return;\n }\n this._pendingEvents.get(msg.req).dispose();\n this._pendingEvents.delete(msg.req);\n }\n _send(msg) {\n const transfer = [];\n if (msg.type === 0) for (let i = 0; i < msg.args.length; i++) {\n const arg = msg.args[i];\n if (arg instanceof ArrayBuffer) transfer.push(arg);\n }\n else if (msg.type === 1) {\n if (msg.res instanceof ArrayBuffer) transfer.push(msg.res);\n }\n this._handler.sendMessage(msg, transfer);\n }\n };\n function propertyIsEvent(name) {\n return name[0] === \"o\" && name[1] === \"n\" && isUpperAsciiLetter(name.charCodeAt(2));\n }\n function propertyIsDynamicEvent(name) {\n return /^onDynamic/.test(name) && isUpperAsciiLetter(name.charCodeAt(9));\n }\n /**\n * Worker side\n */\n var WebWorkerServer = class {\n constructor(postMessage, requestHandlerFactory) {\n this._localChannels = /* @__PURE__ */ new Map();\n this._remoteChannels = /* @__PURE__ */ new Map();\n this._protocol = new WebWorkerProtocol({\n sendMessage: (msg, transfer) => {\n postMessage(msg, transfer);\n },\n handleMessage: (channel, method, args) => this._handleMessage(channel, method, args),\n handleEvent: (channel, eventName, arg) => this._handleEvent(channel, eventName, arg)\n });\n this.requestHandler = requestHandlerFactory(this);\n }\n onmessage(msg) {\n this._protocol.handleMessage(msg);\n }\n _handleMessage(channel, method, args) {\n if (channel === DEFAULT_CHANNEL && method === INITIALIZE) return this.initialize(args[0]);\n const requestHandler = channel === DEFAULT_CHANNEL ? this.requestHandler : this._localChannels.get(channel);\n if (!requestHandler) return Promise.reject(/* @__PURE__ */ new Error(`Missing channel ${channel} on worker thread`));\n const fn = requestHandler[method];\n if (typeof fn !== \"function\") return Promise.reject(/* @__PURE__ */ new Error(`Missing method ${method} on worker thread channel ${channel}`));\n try {\n return Promise.resolve(fn.apply(requestHandler, args));\n } catch (e) {\n return Promise.reject(e);\n }\n }\n _handleEvent(channel, eventName, arg) {\n const requestHandler = channel === DEFAULT_CHANNEL ? this.requestHandler : this._localChannels.get(channel);\n if (!requestHandler) throw new Error(`Missing channel ${channel} on worker thread`);\n if (propertyIsDynamicEvent(eventName)) {\n const fn = requestHandler[eventName];\n if (typeof fn !== \"function\") throw new Error(`Missing dynamic event ${eventName} on request handler.`);\n const event = fn.call(requestHandler, arg);\n if (typeof event !== \"function\") throw new Error(`Missing dynamic event ${eventName} on request handler.`);\n return event;\n }\n if (propertyIsEvent(eventName)) {\n const event = requestHandler[eventName];\n if (typeof event !== \"function\") throw new Error(`Missing event ${eventName} on request handler.`);\n return event;\n }\n throw new Error(`Malformed event name ${eventName}`);\n }\n getChannel(channel) {\n if (!this._remoteChannels.has(channel)) {\n const inst = this._protocol.createProxyToRemoteChannel(channel);\n this._remoteChannels.set(channel, inst);\n }\n return this._remoteChannels.get(channel);\n }\n async initialize(workerId) {\n this._protocol.setWorkerId(workerId);\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/worker/webWorkerBootstrap.js\n let initialized$1 = false;\n function initialize(factory) {\n if (initialized$1) throw new Error(\"WebWorker already initialized!\");\n initialized$1 = true;\n const webWorkerServer = new WebWorkerServer((msg) => globalThis.postMessage(msg), (workerServer) => factory(workerServer));\n globalThis.onmessage = (e) => {\n webWorkerServer.onmessage(e.data);\n };\n return webWorkerServer;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/diff/diffChange.js\n /**\n * Represents information about a specific difference between two sequences.\n */\n var DiffChange = class {\n /**\n * Constructs a new DiffChange with the given sequence information\n * and content.\n */\n constructor(originalStart, originalLength, modifiedStart, modifiedLength) {\n this.originalStart = originalStart;\n this.originalLength = originalLength;\n this.modifiedStart = modifiedStart;\n this.modifiedLength = modifiedLength;\n }\n /**\n * The end point (exclusive) of the change in the original sequence.\n */\n getOriginalEnd() {\n return this.originalStart + this.originalLength;\n }\n /**\n * The end point (exclusive) of the change in the modified sequence.\n */\n getModifiedEnd() {\n return this.modifiedStart + this.modifiedLength;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/buffer.js\n const hasBuffer = typeof Buffer !== \"undefined\";\n new Lazy(() => /* @__PURE__ */ new Uint8Array(256));\n let textDecoder;\n var VSBuffer = class VSBuffer {\n /**\n * When running in a nodejs context, if `actual` is not a nodejs Buffer, the backing store for\n * the returned `VSBuffer` instance might use a nodejs Buffer allocated from node's Buffer pool,\n * which is not transferrable.\n */\n static wrap(actual) {\n if (hasBuffer && !Buffer.isBuffer(actual)) actual = Buffer.from(actual.buffer, actual.byteOffset, actual.byteLength);\n return new VSBuffer(actual);\n }\n constructor(buffer) {\n this.buffer = buffer;\n this.byteLength = this.buffer.byteLength;\n }\n toString() {\n if (hasBuffer) return this.buffer.toString();\n else {\n if (!textDecoder) textDecoder = new TextDecoder();\n return textDecoder.decode(this.buffer);\n }\n }\n };\n const hexChars = \"0123456789abcdef\";\n function encodeHex({ buffer }) {\n let result = \"\";\n for (let i = 0; i < buffer.length; i++) {\n const byte = buffer[i];\n result += hexChars[byte >>> 4];\n result += hexChars[byte & 15];\n }\n return result;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/hash.js\n function numberHash(val, initialHashVal) {\n return (initialHashVal << 5) - initialHashVal + val | 0;\n }\n function stringHash(s, hashVal) {\n hashVal = numberHash(149417, hashVal);\n for (let i = 0, length = s.length; i < length; i++) hashVal = numberHash(s.charCodeAt(i), hashVal);\n return hashVal;\n }\n function leftRotate(value, bits, totalBits = 32) {\n const delta = totalBits - bits;\n const mask = ~((1 << delta) - 1);\n return (value << bits | (mask & value) >>> delta) >>> 0;\n }\n function toHexString(bufferOrValue, bitsize = 32) {\n if (bufferOrValue instanceof ArrayBuffer) return encodeHex(VSBuffer.wrap(new Uint8Array(bufferOrValue)));\n return (bufferOrValue >>> 0).toString(16).padStart(bitsize / 4, \"0\");\n }\n (class StringSHA1 {\n static {\n this._bigBlock32 = /* @__PURE__ */ new DataView(/* @__PURE__ */ new ArrayBuffer(320));\n }\n constructor() {\n this._h0 = 1732584193;\n this._h1 = 4023233417;\n this._h2 = 2562383102;\n this._h3 = 271733878;\n this._h4 = 3285377520;\n this._buff = /* @__PURE__ */ new Uint8Array(67);\n this._buffDV = new DataView(this._buff.buffer);\n this._buffLen = 0;\n this._totalLen = 0;\n this._leftoverHighSurrogate = 0;\n this._finished = false;\n }\n update(str) {\n const strLen = str.length;\n if (strLen === 0) return;\n const buff = this._buff;\n let buffLen = this._buffLen;\n let leftoverHighSurrogate = this._leftoverHighSurrogate;\n let charCode;\n let offset;\n if (leftoverHighSurrogate !== 0) {\n charCode = leftoverHighSurrogate;\n offset = -1;\n leftoverHighSurrogate = 0;\n } else {\n charCode = str.charCodeAt(0);\n offset = 0;\n }\n while (true) {\n let codePoint = charCode;\n if (isHighSurrogate(charCode)) if (offset + 1 < strLen) {\n const nextCharCode = str.charCodeAt(offset + 1);\n if (isLowSurrogate(nextCharCode)) {\n offset++;\n codePoint = computeCodePoint(charCode, nextCharCode);\n } else codePoint = 65533;\n } else {\n leftoverHighSurrogate = charCode;\n break;\n }\n else if (isLowSurrogate(charCode)) codePoint = 65533;\n buffLen = this._push(buff, buffLen, codePoint);\n offset++;\n if (offset < strLen) charCode = str.charCodeAt(offset);\n else break;\n }\n this._buffLen = buffLen;\n this._leftoverHighSurrogate = leftoverHighSurrogate;\n }\n _push(buff, buffLen, codePoint) {\n if (codePoint < 128) buff[buffLen++] = codePoint;\n else if (codePoint < 2048) {\n buff[buffLen++] = 192 | (codePoint & 1984) >>> 6;\n buff[buffLen++] = 128 | (codePoint & 63) >>> 0;\n } else if (codePoint < 65536) {\n buff[buffLen++] = 224 | (codePoint & 61440) >>> 12;\n buff[buffLen++] = 128 | (codePoint & 4032) >>> 6;\n buff[buffLen++] = 128 | (codePoint & 63) >>> 0;\n } else {\n buff[buffLen++] = 240 | (codePoint & 1835008) >>> 18;\n buff[buffLen++] = 128 | (codePoint & 258048) >>> 12;\n buff[buffLen++] = 128 | (codePoint & 4032) >>> 6;\n buff[buffLen++] = 128 | (codePoint & 63) >>> 0;\n }\n if (buffLen >= 64) {\n this._step();\n buffLen -= 64;\n this._totalLen += 64;\n buff[0] = buff[64];\n buff[1] = buff[65];\n buff[2] = buff[66];\n }\n return buffLen;\n }\n digest() {\n if (!this._finished) {\n this._finished = true;\n if (this._leftoverHighSurrogate) {\n this._leftoverHighSurrogate = 0;\n this._buffLen = this._push(this._buff, this._buffLen, 65533);\n }\n this._totalLen += this._buffLen;\n this._wrapUp();\n }\n return toHexString(this._h0) + toHexString(this._h1) + toHexString(this._h2) + toHexString(this._h3) + toHexString(this._h4);\n }\n _wrapUp() {\n this._buff[this._buffLen++] = 128;\n this._buff.subarray(this._buffLen).fill(0);\n if (this._buffLen > 56) {\n this._step();\n this._buff.fill(0);\n }\n const ml = 8 * this._totalLen;\n this._buffDV.setUint32(56, Math.floor(ml / 4294967296), false);\n this._buffDV.setUint32(60, ml % 4294967296, false);\n this._step();\n }\n _step() {\n const bigBlock32 = StringSHA1._bigBlock32;\n const data = this._buffDV;\n for (let j = 0; j < 64; j += 4) bigBlock32.setUint32(j, data.getUint32(j, false), false);\n for (let j = 64; j < 320; j += 4) 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);\n let a = this._h0;\n let b = this._h1;\n let c = this._h2;\n let d = this._h3;\n let e = this._h4;\n let f, k;\n let temp;\n for (let j = 0; j < 80; j++) {\n if (j < 20) {\n f = b & c | ~b & d;\n k = 1518500249;\n } else if (j < 40) {\n f = b ^ c ^ d;\n k = 1859775393;\n } else if (j < 60) {\n f = b & c | b & d | c & d;\n k = 2400959708;\n } else {\n f = b ^ c ^ d;\n k = 3395469782;\n }\n temp = leftRotate(a, 5) + f + e + k + bigBlock32.getUint32(j * 4, false) & 4294967295;\n e = d;\n d = c;\n c = leftRotate(b, 30);\n b = a;\n a = temp;\n }\n this._h0 = this._h0 + a & 4294967295;\n this._h1 = this._h1 + b & 4294967295;\n this._h2 = this._h2 + c & 4294967295;\n this._h3 = this._h3 + d & 4294967295;\n this._h4 = this._h4 + e & 4294967295;\n }\n });\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/diff/diff.js\n var StringDiffSequence = class {\n constructor(source) {\n this.source = source;\n }\n getElements() {\n const source = this.source;\n const characters = new Int32Array(source.length);\n for (let i = 0, len = source.length; i < len; i++) characters[i] = source.charCodeAt(i);\n return characters;\n }\n };\n function stringDiff(original, modified, pretty) {\n return new LcsDiff(new StringDiffSequence(original), new StringDiffSequence(modified)).ComputeDiff(pretty).changes;\n }\n var Debug = class {\n static Assert(condition, message) {\n if (!condition) throw new Error(message);\n }\n };\n var MyArray = class {\n /**\n * Copies a range of elements from an Array starting at the specified source index and pastes\n * them to another Array starting at the specified destination index. The length and the indexes\n * are specified as 64-bit integers.\n * sourceArray:\n * The Array that contains the data to copy.\n * sourceIndex:\n * A 64-bit integer that represents the index in the sourceArray at which copying begins.\n * destinationArray:\n * The Array that receives the data.\n * destinationIndex:\n * A 64-bit integer that represents the index in the destinationArray at which storing begins.\n * length:\n * A 64-bit integer that represents the number of elements to copy.\n */\n static Copy(sourceArray, sourceIndex, destinationArray, destinationIndex, length) {\n for (let i = 0; i < length; i++) destinationArray[destinationIndex + i] = sourceArray[sourceIndex + i];\n }\n static Copy2(sourceArray, sourceIndex, destinationArray, destinationIndex, length) {\n for (let i = 0; i < length; i++) destinationArray[destinationIndex + i] = sourceArray[sourceIndex + i];\n }\n };\n /**\n * A utility class which helps to create the set of DiffChanges from\n * a difference operation. This class accepts original DiffElements and\n * modified DiffElements that are involved in a particular change. The\n * MarkNextChange() method can be called to mark the separation between\n * distinct changes. At the end, the Changes property can be called to retrieve\n * the constructed changes.\n */\n var DiffChangeHelper = class {\n /**\n * Constructs a new DiffChangeHelper for the given DiffSequences.\n */\n constructor() {\n this.m_changes = [];\n this.m_originalStart = 1073741824;\n this.m_modifiedStart = 1073741824;\n this.m_originalCount = 0;\n this.m_modifiedCount = 0;\n }\n /**\n * Marks the beginning of the next change in the set of differences.\n */\n MarkNextChange() {\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) this.m_changes.push(new DiffChange(this.m_originalStart, this.m_originalCount, this.m_modifiedStart, this.m_modifiedCount));\n this.m_originalCount = 0;\n this.m_modifiedCount = 0;\n this.m_originalStart = 1073741824;\n this.m_modifiedStart = 1073741824;\n }\n /**\n * Adds the original element at the given position to the elements\n * affected by the current change. The modified index gives context\n * to the change position with respect to the original sequence.\n * @param originalIndex The index of the original element to add.\n * @param modifiedIndex The index of the modified element that provides corresponding position in the modified sequence.\n */\n AddOriginalElement(originalIndex, modifiedIndex) {\n this.m_originalStart = Math.min(this.m_originalStart, originalIndex);\n this.m_modifiedStart = Math.min(this.m_modifiedStart, modifiedIndex);\n this.m_originalCount++;\n }\n /**\n * Adds the modified element at the given position to the elements\n * affected by the current change. The original index gives context\n * to the change position with respect to the modified sequence.\n * @param originalIndex The index of the original element that provides corresponding position in the original sequence.\n * @param modifiedIndex The index of the modified element to add.\n */\n AddModifiedElement(originalIndex, modifiedIndex) {\n this.m_originalStart = Math.min(this.m_originalStart, originalIndex);\n this.m_modifiedStart = Math.min(this.m_modifiedStart, modifiedIndex);\n this.m_modifiedCount++;\n }\n /**\n * Retrieves all of the changes marked by the class.\n */\n getChanges() {\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) this.MarkNextChange();\n return this.m_changes;\n }\n /**\n * Retrieves all of the changes marked by the class in the reverse order\n */\n getReverseChanges() {\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) this.MarkNextChange();\n this.m_changes.reverse();\n return this.m_changes;\n }\n };\n /**\n * An implementation of the difference algorithm described in\n * \"An O(ND) Difference Algorithm and its variations\" by Eugene W. Myers\n */\n var LcsDiff = class LcsDiff {\n /**\n * Constructs the DiffFinder\n */\n constructor(originalSequence, modifiedSequence, continueProcessingPredicate = null) {\n this.ContinueProcessingPredicate = continueProcessingPredicate;\n this._originalSequence = originalSequence;\n this._modifiedSequence = modifiedSequence;\n const [originalStringElements, originalElementsOrHash, originalHasStrings] = LcsDiff._getElements(originalSequence);\n const [modifiedStringElements, modifiedElementsOrHash, modifiedHasStrings] = LcsDiff._getElements(modifiedSequence);\n this._hasStrings = originalHasStrings && modifiedHasStrings;\n this._originalStringElements = originalStringElements;\n this._originalElementsOrHash = originalElementsOrHash;\n this._modifiedStringElements = modifiedStringElements;\n this._modifiedElementsOrHash = modifiedElementsOrHash;\n this.m_forwardHistory = [];\n this.m_reverseHistory = [];\n }\n static _isStringArray(arr) {\n return arr.length > 0 && typeof arr[0] === \"string\";\n }\n static _getElements(sequence) {\n const elements = sequence.getElements();\n if (LcsDiff._isStringArray(elements)) {\n const hashes = new Int32Array(elements.length);\n for (let i = 0, len = elements.length; i < len; i++) hashes[i] = stringHash(elements[i], 0);\n return [\n elements,\n hashes,\n true\n ];\n }\n if (elements instanceof Int32Array) return [\n [],\n elements,\n false\n ];\n return [\n [],\n new Int32Array(elements),\n false\n ];\n }\n ElementsAreEqual(originalIndex, newIndex) {\n if (this._originalElementsOrHash[originalIndex] !== this._modifiedElementsOrHash[newIndex]) return false;\n return this._hasStrings ? this._originalStringElements[originalIndex] === this._modifiedStringElements[newIndex] : true;\n }\n ElementsAreStrictEqual(originalIndex, newIndex) {\n if (!this.ElementsAreEqual(originalIndex, newIndex)) return false;\n return LcsDiff._getStrictElement(this._originalSequence, originalIndex) === LcsDiff._getStrictElement(this._modifiedSequence, newIndex);\n }\n static _getStrictElement(sequence, index) {\n if (typeof sequence.getStrictElement === \"function\") return sequence.getStrictElement(index);\n return null;\n }\n OriginalElementsAreEqual(index1, index2) {\n if (this._originalElementsOrHash[index1] !== this._originalElementsOrHash[index2]) return false;\n return this._hasStrings ? this._originalStringElements[index1] === this._originalStringElements[index2] : true;\n }\n ModifiedElementsAreEqual(index1, index2) {\n if (this._modifiedElementsOrHash[index1] !== this._modifiedElementsOrHash[index2]) return false;\n return this._hasStrings ? this._modifiedStringElements[index1] === this._modifiedStringElements[index2] : true;\n }\n ComputeDiff(pretty) {\n return this._ComputeDiff(0, this._originalElementsOrHash.length - 1, 0, this._modifiedElementsOrHash.length - 1, pretty);\n }\n /**\n * Computes the differences between the original and modified input\n * sequences on the bounded range.\n * @returns An array of the differences between the two input sequences.\n */\n _ComputeDiff(originalStart, originalEnd, modifiedStart, modifiedEnd, pretty) {\n const quitEarlyArr = [false];\n let changes = this.ComputeDiffRecursive(originalStart, originalEnd, modifiedStart, modifiedEnd, quitEarlyArr);\n if (pretty) changes = this.PrettifyChanges(changes);\n return {\n quitEarly: quitEarlyArr[0],\n changes\n };\n }\n /**\n * Private helper method which computes the differences on the bounded range\n * recursively.\n * @returns An array of the differences between the two input sequences.\n */\n ComputeDiffRecursive(originalStart, originalEnd, modifiedStart, modifiedEnd, quitEarlyArr) {\n quitEarlyArr[0] = false;\n while (originalStart <= originalEnd && modifiedStart <= modifiedEnd && this.ElementsAreEqual(originalStart, modifiedStart)) {\n originalStart++;\n modifiedStart++;\n }\n while (originalEnd >= originalStart && modifiedEnd >= modifiedStart && this.ElementsAreEqual(originalEnd, modifiedEnd)) {\n originalEnd--;\n modifiedEnd--;\n }\n if (originalStart > originalEnd || modifiedStart > modifiedEnd) {\n let changes;\n if (modifiedStart <= modifiedEnd) {\n Debug.Assert(originalStart === originalEnd + 1, \"originalStart should only be one more than originalEnd\");\n changes = [new DiffChange(originalStart, 0, modifiedStart, modifiedEnd - modifiedStart + 1)];\n } else if (originalStart <= originalEnd) {\n Debug.Assert(modifiedStart === modifiedEnd + 1, \"modifiedStart should only be one more than modifiedEnd\");\n changes = [new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, 0)];\n } else {\n Debug.Assert(originalStart === originalEnd + 1, \"originalStart should only be one more than originalEnd\");\n Debug.Assert(modifiedStart === modifiedEnd + 1, \"modifiedStart should only be one more than modifiedEnd\");\n changes = [];\n }\n return changes;\n }\n const midOriginalArr = [0];\n const midModifiedArr = [0];\n const result = this.ComputeRecursionPoint(originalStart, originalEnd, modifiedStart, modifiedEnd, midOriginalArr, midModifiedArr, quitEarlyArr);\n const midOriginal = midOriginalArr[0];\n const midModified = midModifiedArr[0];\n if (result !== null) return result;\n else if (!quitEarlyArr[0]) {\n const leftChanges = this.ComputeDiffRecursive(originalStart, midOriginal, modifiedStart, midModified, quitEarlyArr);\n let rightChanges = [];\n if (!quitEarlyArr[0]) rightChanges = this.ComputeDiffRecursive(midOriginal + 1, originalEnd, midModified + 1, modifiedEnd, quitEarlyArr);\n else rightChanges = [new DiffChange(midOriginal + 1, originalEnd - (midOriginal + 1) + 1, midModified + 1, modifiedEnd - (midModified + 1) + 1)];\n return this.ConcatenateChanges(leftChanges, rightChanges);\n }\n return [new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, modifiedEnd - modifiedStart + 1)];\n }\n WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr) {\n let forwardChanges = null;\n let reverseChanges = null;\n let changeHelper = new DiffChangeHelper();\n let diagonalMin = diagonalForwardStart;\n let diagonalMax = diagonalForwardEnd;\n let diagonalRelative = midOriginalArr[0] - midModifiedArr[0] - diagonalForwardOffset;\n let lastOriginalIndex = -1073741824;\n let historyIndex = this.m_forwardHistory.length - 1;\n do {\n const diagonal = diagonalRelative + diagonalForwardBase;\n if (diagonal === diagonalMin || diagonal < diagonalMax && forwardPoints[diagonal - 1] < forwardPoints[diagonal + 1]) {\n originalIndex = forwardPoints[diagonal + 1];\n modifiedIndex = originalIndex - diagonalRelative - diagonalForwardOffset;\n if (originalIndex < lastOriginalIndex) changeHelper.MarkNextChange();\n lastOriginalIndex = originalIndex;\n changeHelper.AddModifiedElement(originalIndex + 1, modifiedIndex);\n diagonalRelative = diagonal + 1 - diagonalForwardBase;\n } else {\n originalIndex = forwardPoints[diagonal - 1] + 1;\n modifiedIndex = originalIndex - diagonalRelative - diagonalForwardOffset;\n if (originalIndex < lastOriginalIndex) changeHelper.MarkNextChange();\n lastOriginalIndex = originalIndex - 1;\n changeHelper.AddOriginalElement(originalIndex, modifiedIndex + 1);\n diagonalRelative = diagonal - 1 - diagonalForwardBase;\n }\n if (historyIndex >= 0) {\n forwardPoints = this.m_forwardHistory[historyIndex];\n diagonalForwardBase = forwardPoints[0];\n diagonalMin = 1;\n diagonalMax = forwardPoints.length - 1;\n }\n } while (--historyIndex >= -1);\n forwardChanges = changeHelper.getReverseChanges();\n if (quitEarlyArr[0]) {\n let originalStartPoint = midOriginalArr[0] + 1;\n let modifiedStartPoint = midModifiedArr[0] + 1;\n if (forwardChanges !== null && forwardChanges.length > 0) {\n const lastForwardChange = forwardChanges[forwardChanges.length - 1];\n originalStartPoint = Math.max(originalStartPoint, lastForwardChange.getOriginalEnd());\n modifiedStartPoint = Math.max(modifiedStartPoint, lastForwardChange.getModifiedEnd());\n }\n reverseChanges = [new DiffChange(originalStartPoint, originalEnd - originalStartPoint + 1, modifiedStartPoint, modifiedEnd - modifiedStartPoint + 1)];\n } else {\n changeHelper = new DiffChangeHelper();\n diagonalMin = diagonalReverseStart;\n diagonalMax = diagonalReverseEnd;\n diagonalRelative = midOriginalArr[0] - midModifiedArr[0] - diagonalReverseOffset;\n lastOriginalIndex = 1073741824;\n historyIndex = deltaIsEven ? this.m_reverseHistory.length - 1 : this.m_reverseHistory.length - 2;\n do {\n const diagonal = diagonalRelative + diagonalReverseBase;\n if (diagonal === diagonalMin || diagonal < diagonalMax && reversePoints[diagonal - 1] >= reversePoints[diagonal + 1]) {\n originalIndex = reversePoints[diagonal + 1] - 1;\n modifiedIndex = originalIndex - diagonalRelative - diagonalReverseOffset;\n if (originalIndex > lastOriginalIndex) changeHelper.MarkNextChange();\n lastOriginalIndex = originalIndex + 1;\n changeHelper.AddOriginalElement(originalIndex + 1, modifiedIndex + 1);\n diagonalRelative = diagonal + 1 - diagonalReverseBase;\n } else {\n originalIndex = reversePoints[diagonal - 1];\n modifiedIndex = originalIndex - diagonalRelative - diagonalReverseOffset;\n if (originalIndex > lastOriginalIndex) changeHelper.MarkNextChange();\n lastOriginalIndex = originalIndex;\n changeHelper.AddModifiedElement(originalIndex + 1, modifiedIndex + 1);\n diagonalRelative = diagonal - 1 - diagonalReverseBase;\n }\n if (historyIndex >= 0) {\n reversePoints = this.m_reverseHistory[historyIndex];\n diagonalReverseBase = reversePoints[0];\n diagonalMin = 1;\n diagonalMax = reversePoints.length - 1;\n }\n } while (--historyIndex >= -1);\n reverseChanges = changeHelper.getChanges();\n }\n return this.ConcatenateChanges(forwardChanges, reverseChanges);\n }\n /**\n * Given the range to compute the diff on, this method finds the point:\n * (midOriginal, midModified)\n * that exists in the middle of the LCS of the two sequences and\n * is the point at which the LCS problem may be broken down recursively.\n * This method will try to keep the LCS trace in memory. If the LCS recursion\n * point is calculated and the full trace is available in memory, then this method\n * will return the change list.\n * @param originalStart The start bound of the original sequence range\n * @param originalEnd The end bound of the original sequence range\n * @param modifiedStart The start bound of the modified sequence range\n * @param modifiedEnd The end bound of the modified sequence range\n * @param midOriginal The middle point of the original sequence range\n * @param midModified The middle point of the modified sequence range\n * @returns The diff changes, if available, otherwise null\n */\n ComputeRecursionPoint(originalStart, originalEnd, modifiedStart, modifiedEnd, midOriginalArr, midModifiedArr, quitEarlyArr) {\n let originalIndex = 0, modifiedIndex = 0;\n let diagonalForwardStart = 0, diagonalForwardEnd = 0;\n let diagonalReverseStart = 0, diagonalReverseEnd = 0;\n originalStart--;\n modifiedStart--;\n midOriginalArr[0] = 0;\n midModifiedArr[0] = 0;\n this.m_forwardHistory = [];\n this.m_reverseHistory = [];\n const maxDifferences = originalEnd - originalStart + (modifiedEnd - modifiedStart);\n const numDiagonals = maxDifferences + 1;\n const forwardPoints = new Int32Array(numDiagonals);\n const reversePoints = new Int32Array(numDiagonals);\n const diagonalForwardBase = modifiedEnd - modifiedStart;\n const diagonalReverseBase = originalEnd - originalStart;\n const diagonalForwardOffset = originalStart - modifiedStart;\n const diagonalReverseOffset = originalEnd - modifiedEnd;\n const deltaIsEven = (diagonalReverseBase - diagonalForwardBase) % 2 === 0;\n forwardPoints[diagonalForwardBase] = originalStart;\n reversePoints[diagonalReverseBase] = originalEnd;\n quitEarlyArr[0] = false;\n for (let numDifferences = 1; numDifferences <= maxDifferences / 2 + 1; numDifferences++) {\n let furthestOriginalIndex = 0;\n let furthestModifiedIndex = 0;\n diagonalForwardStart = this.ClipDiagonalBound(diagonalForwardBase - numDifferences, numDifferences, diagonalForwardBase, numDiagonals);\n diagonalForwardEnd = this.ClipDiagonalBound(diagonalForwardBase + numDifferences, numDifferences, diagonalForwardBase, numDiagonals);\n for (let diagonal = diagonalForwardStart; diagonal <= diagonalForwardEnd; diagonal += 2) {\n if (diagonal === diagonalForwardStart || diagonal < diagonalForwardEnd && forwardPoints[diagonal - 1] < forwardPoints[diagonal + 1]) originalIndex = forwardPoints[diagonal + 1];\n else originalIndex = forwardPoints[diagonal - 1] + 1;\n modifiedIndex = originalIndex - (diagonal - diagonalForwardBase) - diagonalForwardOffset;\n const tempOriginalIndex = originalIndex;\n while (originalIndex < originalEnd && modifiedIndex < modifiedEnd && this.ElementsAreEqual(originalIndex + 1, modifiedIndex + 1)) {\n originalIndex++;\n modifiedIndex++;\n }\n forwardPoints[diagonal] = originalIndex;\n if (originalIndex + modifiedIndex > furthestOriginalIndex + furthestModifiedIndex) {\n furthestOriginalIndex = originalIndex;\n furthestModifiedIndex = modifiedIndex;\n }\n if (!deltaIsEven && Math.abs(diagonal - diagonalReverseBase) <= numDifferences - 1) {\n if (originalIndex >= reversePoints[diagonal]) {\n midOriginalArr[0] = originalIndex;\n midModifiedArr[0] = modifiedIndex;\n if (tempOriginalIndex <= reversePoints[diagonal] && numDifferences <= 1448) return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\n else return null;\n }\n }\n }\n const matchLengthOfLongest = (furthestOriginalIndex - originalStart + (furthestModifiedIndex - modifiedStart) - numDifferences) / 2;\n if (this.ContinueProcessingPredicate !== null && !this.ContinueProcessingPredicate(furthestOriginalIndex, matchLengthOfLongest)) {\n quitEarlyArr[0] = true;\n midOriginalArr[0] = furthestOriginalIndex;\n midModifiedArr[0] = furthestModifiedIndex;\n if (matchLengthOfLongest > 0 && numDifferences <= 1448) return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\n else {\n originalStart++;\n modifiedStart++;\n return [new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, modifiedEnd - modifiedStart + 1)];\n }\n }\n diagonalReverseStart = this.ClipDiagonalBound(diagonalReverseBase - numDifferences, numDifferences, diagonalReverseBase, numDiagonals);\n diagonalReverseEnd = this.ClipDiagonalBound(diagonalReverseBase + numDifferences, numDifferences, diagonalReverseBase, numDiagonals);\n for (let diagonal = diagonalReverseStart; diagonal <= diagonalReverseEnd; diagonal += 2) {\n if (diagonal === diagonalReverseStart || diagonal < diagonalReverseEnd && reversePoints[diagonal - 1] >= reversePoints[diagonal + 1]) originalIndex = reversePoints[diagonal + 1] - 1;\n else originalIndex = reversePoints[diagonal - 1];\n modifiedIndex = originalIndex - (diagonal - diagonalReverseBase) - diagonalReverseOffset;\n const tempOriginalIndex = originalIndex;\n while (originalIndex > originalStart && modifiedIndex > modifiedStart && this.ElementsAreEqual(originalIndex, modifiedIndex)) {\n originalIndex--;\n modifiedIndex--;\n }\n reversePoints[diagonal] = originalIndex;\n if (deltaIsEven && Math.abs(diagonal - diagonalForwardBase) <= numDifferences) {\n if (originalIndex <= forwardPoints[diagonal]) {\n midOriginalArr[0] = originalIndex;\n midModifiedArr[0] = modifiedIndex;\n if (tempOriginalIndex >= forwardPoints[diagonal] && numDifferences <= 1448) return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\n else return null;\n }\n }\n }\n if (numDifferences <= 1447) {\n let temp = new Int32Array(diagonalForwardEnd - diagonalForwardStart + 2);\n temp[0] = diagonalForwardBase - diagonalForwardStart + 1;\n MyArray.Copy2(forwardPoints, diagonalForwardStart, temp, 1, diagonalForwardEnd - diagonalForwardStart + 1);\n this.m_forwardHistory.push(temp);\n temp = new Int32Array(diagonalReverseEnd - diagonalReverseStart + 2);\n temp[0] = diagonalReverseBase - diagonalReverseStart + 1;\n MyArray.Copy2(reversePoints, diagonalReverseStart, temp, 1, diagonalReverseEnd - diagonalReverseStart + 1);\n this.m_reverseHistory.push(temp);\n }\n }\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\n }\n /**\n * Shifts the given changes to provide a more intuitive diff.\n * While the first element in a diff matches the first element after the diff,\n * we shift the diff down.\n *\n * @param changes The list of changes to shift\n * @returns The shifted changes\n */\n PrettifyChanges(changes) {\n for (let i = 0; i < changes.length; i++) {\n const change = changes[i];\n const originalStop = i < changes.length - 1 ? changes[i + 1].originalStart : this._originalElementsOrHash.length;\n const modifiedStop = i < changes.length - 1 ? changes[i + 1].modifiedStart : this._modifiedElementsOrHash.length;\n const checkOriginal = change.originalLength > 0;\n const checkModified = change.modifiedLength > 0;\n while (change.originalStart + change.originalLength < originalStop && change.modifiedStart + change.modifiedLength < modifiedStop && (!checkOriginal || this.OriginalElementsAreEqual(change.originalStart, change.originalStart + change.originalLength)) && (!checkModified || this.ModifiedElementsAreEqual(change.modifiedStart, change.modifiedStart + change.modifiedLength))) {\n const startStrictEqual = this.ElementsAreStrictEqual(change.originalStart, change.modifiedStart);\n if (this.ElementsAreStrictEqual(change.originalStart + change.originalLength, change.modifiedStart + change.modifiedLength) && !startStrictEqual) break;\n change.originalStart++;\n change.modifiedStart++;\n }\n const mergedChangeArr = [null];\n if (i < changes.length - 1 && this.ChangesOverlap(changes[i], changes[i + 1], mergedChangeArr)) {\n changes[i] = mergedChangeArr[0];\n changes.splice(i + 1, 1);\n i--;\n continue;\n }\n }\n for (let i = changes.length - 1; i >= 0; i--) {\n const change = changes[i];\n let originalStop = 0;\n let modifiedStop = 0;\n if (i > 0) {\n const prevChange = changes[i - 1];\n originalStop = prevChange.originalStart + prevChange.originalLength;\n modifiedStop = prevChange.modifiedStart + prevChange.modifiedLength;\n }\n const checkOriginal = change.originalLength > 0;\n const checkModified = change.modifiedLength > 0;\n let bestDelta = 0;\n let bestScore = this._boundaryScore(change.originalStart, change.originalLength, change.modifiedStart, change.modifiedLength);\n for (let delta = 1;; delta++) {\n const originalStart = change.originalStart - delta;\n const modifiedStart = change.modifiedStart - delta;\n if (originalStart < originalStop || modifiedStart < modifiedStop) break;\n if (checkOriginal && !this.OriginalElementsAreEqual(originalStart, originalStart + change.originalLength)) break;\n if (checkModified && !this.ModifiedElementsAreEqual(modifiedStart, modifiedStart + change.modifiedLength)) break;\n const score = (originalStart === originalStop && modifiedStart === modifiedStop ? 5 : 0) + this._boundaryScore(originalStart, change.originalLength, modifiedStart, change.modifiedLength);\n if (score > bestScore) {\n bestScore = score;\n bestDelta = delta;\n }\n }\n change.originalStart -= bestDelta;\n change.modifiedStart -= bestDelta;\n const mergedChangeArr = [null];\n if (i > 0 && this.ChangesOverlap(changes[i - 1], changes[i], mergedChangeArr)) {\n changes[i - 1] = mergedChangeArr[0];\n changes.splice(i, 1);\n i++;\n continue;\n }\n }\n if (this._hasStrings) for (let i = 1, len = changes.length; i < len; i++) {\n const aChange = changes[i - 1];\n const bChange = changes[i];\n const matchedLength = bChange.originalStart - aChange.originalStart - aChange.originalLength;\n const aOriginalStart = aChange.originalStart;\n const bOriginalEnd = bChange.originalStart + bChange.originalLength;\n const abOriginalLength = bOriginalEnd - aOriginalStart;\n const aModifiedStart = aChange.modifiedStart;\n const bModifiedEnd = bChange.modifiedStart + bChange.modifiedLength;\n const abModifiedLength = bModifiedEnd - aModifiedStart;\n if (matchedLength < 5 && abOriginalLength < 20 && abModifiedLength < 20) {\n const t = this._findBetterContiguousSequence(aOriginalStart, abOriginalLength, aModifiedStart, abModifiedLength, matchedLength);\n if (t) {\n const [originalMatchStart, modifiedMatchStart] = t;\n if (originalMatchStart !== aChange.originalStart + aChange.originalLength || modifiedMatchStart !== aChange.modifiedStart + aChange.modifiedLength) {\n aChange.originalLength = originalMatchStart - aChange.originalStart;\n aChange.modifiedLength = modifiedMatchStart - aChange.modifiedStart;\n bChange.originalStart = originalMatchStart + matchedLength;\n bChange.modifiedStart = modifiedMatchStart + matchedLength;\n bChange.originalLength = bOriginalEnd - bChange.originalStart;\n bChange.modifiedLength = bModifiedEnd - bChange.modifiedStart;\n }\n }\n }\n }\n return changes;\n }\n _findBetterContiguousSequence(originalStart, originalLength, modifiedStart, modifiedLength, desiredLength) {\n if (originalLength < desiredLength || modifiedLength < desiredLength) return null;\n const originalMax = originalStart + originalLength - desiredLength + 1;\n const modifiedMax = modifiedStart + modifiedLength - desiredLength + 1;\n let bestScore = 0;\n let bestOriginalStart = 0;\n let bestModifiedStart = 0;\n for (let i = originalStart; i < originalMax; i++) for (let j = modifiedStart; j < modifiedMax; j++) {\n const score = this._contiguousSequenceScore(i, j, desiredLength);\n if (score > 0 && score > bestScore) {\n bestScore = score;\n bestOriginalStart = i;\n bestModifiedStart = j;\n }\n }\n if (bestScore > 0) return [bestOriginalStart, bestModifiedStart];\n return null;\n }\n _contiguousSequenceScore(originalStart, modifiedStart, length) {\n let score = 0;\n for (let l = 0; l < length; l++) {\n if (!this.ElementsAreEqual(originalStart + l, modifiedStart + l)) return 0;\n score += this._originalStringElements[originalStart + l].length;\n }\n return score;\n }\n _OriginalIsBoundary(index) {\n if (index <= 0 || index >= this._originalElementsOrHash.length - 1) return true;\n return this._hasStrings && /^\\s*$/.test(this._originalStringElements[index]);\n }\n _OriginalRegionIsBoundary(originalStart, originalLength) {\n if (this._OriginalIsBoundary(originalStart) || this._OriginalIsBoundary(originalStart - 1)) return true;\n if (originalLength > 0) {\n const originalEnd = originalStart + originalLength;\n if (this._OriginalIsBoundary(originalEnd - 1) || this._OriginalIsBoundary(originalEnd)) return true;\n }\n return false;\n }\n _ModifiedIsBoundary(index) {\n if (index <= 0 || index >= this._modifiedElementsOrHash.length - 1) return true;\n return this._hasStrings && /^\\s*$/.test(this._modifiedStringElements[index]);\n }\n _ModifiedRegionIsBoundary(modifiedStart, modifiedLength) {\n if (this._ModifiedIsBoundary(modifiedStart) || this._ModifiedIsBoundary(modifiedStart - 1)) return true;\n if (modifiedLength > 0) {\n const modifiedEnd = modifiedStart + modifiedLength;\n if (this._ModifiedIsBoundary(modifiedEnd - 1) || this._ModifiedIsBoundary(modifiedEnd)) return true;\n }\n return false;\n }\n _boundaryScore(originalStart, originalLength, modifiedStart, modifiedLength) {\n return (this._OriginalRegionIsBoundary(originalStart, originalLength) ? 1 : 0) + (this._ModifiedRegionIsBoundary(modifiedStart, modifiedLength) ? 1 : 0);\n }\n /**\n * Concatenates the two input DiffChange lists and returns the resulting\n * list.\n * @param The left changes\n * @param The right changes\n * @returns The concatenated list\n */\n ConcatenateChanges(left, right) {\n const mergedChangeArr = [];\n if (left.length === 0 || right.length === 0) return right.length > 0 ? right : left;\n else if (this.ChangesOverlap(left[left.length - 1], right[0], mergedChangeArr)) {\n const result = new Array(left.length + right.length - 1);\n MyArray.Copy(left, 0, result, 0, left.length - 1);\n result[left.length - 1] = mergedChangeArr[0];\n MyArray.Copy(right, 1, result, left.length, right.length - 1);\n return result;\n } else {\n const result = new Array(left.length + right.length);\n MyArray.Copy(left, 0, result, 0, left.length);\n MyArray.Copy(right, 0, result, left.length, right.length);\n return result;\n }\n }\n /**\n * Returns true if the two changes overlap and can be merged into a single\n * change\n * @param left The left change\n * @param right The right change\n * @param mergedChange The merged change if the two overlap, null otherwise\n * @returns True if the two changes overlap\n */\n ChangesOverlap(left, right, mergedChangeArr) {\n Debug.Assert(left.originalStart <= right.originalStart, \"Left change is not less than or equal to right change\");\n Debug.Assert(left.modifiedStart <= right.modifiedStart, \"Left change is not less than or equal to right change\");\n if (left.originalStart + left.originalLength >= right.originalStart || left.modifiedStart + left.modifiedLength >= right.modifiedStart) {\n const originalStart = left.originalStart;\n let originalLength = left.originalLength;\n const modifiedStart = left.modifiedStart;\n let modifiedLength = left.modifiedLength;\n if (left.originalStart + left.originalLength >= right.originalStart) originalLength = right.originalStart + right.originalLength - left.originalStart;\n if (left.modifiedStart + left.modifiedLength >= right.modifiedStart) modifiedLength = right.modifiedStart + right.modifiedLength - left.modifiedStart;\n mergedChangeArr[0] = new DiffChange(originalStart, originalLength, modifiedStart, modifiedLength);\n return true;\n } else {\n mergedChangeArr[0] = null;\n return false;\n }\n }\n /**\n * Helper method used to clip a diagonal index to the range of valid\n * diagonals. This also decides whether or not the diagonal index,\n * if it exceeds the boundary, should be clipped to the boundary or clipped\n * one inside the boundary depending on the Even/Odd status of the boundary\n * and numDifferences.\n * @param diagonal The index of the diagonal to clip.\n * @param numDifferences The current number of differences being iterated upon.\n * @param diagonalBaseIndex The base reference diagonal.\n * @param numDiagonals The total number of diagonals.\n * @returns The clipped diagonal index.\n */\n ClipDiagonalBound(diagonal, numDifferences, diagonalBaseIndex, numDiagonals) {\n if (diagonal >= 0 && diagonal < numDiagonals) return diagonal;\n const diagonalsBelow = diagonalBaseIndex;\n const diagonalsAbove = numDiagonals - diagonalBaseIndex - 1;\n const diffEven = numDifferences % 2 === 0;\n if (diagonal < 0) return diffEven === (diagonalsBelow % 2 === 0) ? 0 : 1;\n else return diffEven === (diagonalsAbove % 2 === 0) ? numDiagonals - 1 : numDiagonals - 2;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/core/position.js\n /**\n * A position in the editor.\n */\n var Position = class Position {\n constructor(lineNumber, column) {\n this.lineNumber = lineNumber;\n this.column = column;\n }\n /**\n * Create a new position from this position.\n *\n * @param newLineNumber new line number\n * @param newColumn new column\n */\n with(newLineNumber = this.lineNumber, newColumn = this.column) {\n if (newLineNumber === this.lineNumber && newColumn === this.column) return this;\n else return new Position(newLineNumber, newColumn);\n }\n /**\n * Derive a new position from this position.\n *\n * @param deltaLineNumber line number delta\n * @param deltaColumn column delta\n */\n delta(deltaLineNumber = 0, deltaColumn = 0) {\n return this.with(Math.max(1, this.lineNumber + deltaLineNumber), Math.max(1, this.column + deltaColumn));\n }\n /**\n * Test if this position equals other position\n */\n equals(other) {\n return Position.equals(this, other);\n }\n /**\n * Test if position `a` equals position `b`\n */\n static equals(a, b) {\n if (!a && !b) return true;\n return !!a && !!b && a.lineNumber === b.lineNumber && a.column === b.column;\n }\n /**\n * Test if this position is before other position.\n * If the two positions are equal, the result will be false.\n */\n isBefore(other) {\n return Position.isBefore(this, other);\n }\n /**\n * Test if position `a` is before position `b`.\n * If the two positions are equal, the result will be false.\n */\n static isBefore(a, b) {\n if (a.lineNumber < b.lineNumber) return true;\n if (b.lineNumber < a.lineNumber) return false;\n return a.column < b.column;\n }\n /**\n * Test if this position is before other position.\n * If the two positions are equal, the result will be true.\n */\n isBeforeOrEqual(other) {\n return Position.isBeforeOrEqual(this, other);\n }\n /**\n * Test if position `a` is before position `b`.\n * If the two positions are equal, the result will be true.\n */\n static isBeforeOrEqual(a, b) {\n if (a.lineNumber < b.lineNumber) return true;\n if (b.lineNumber < a.lineNumber) return false;\n return a.column <= b.column;\n }\n /**\n * A function that compares positions, useful for sorting\n */\n static compare(a, b) {\n const aLineNumber = a.lineNumber | 0;\n const bLineNumber = b.lineNumber | 0;\n if (aLineNumber === bLineNumber) return (a.column | 0) - (b.column | 0);\n return aLineNumber - bLineNumber;\n }\n /**\n * Clone this position.\n */\n clone() {\n return new Position(this.lineNumber, this.column);\n }\n /**\n * Convert to a human-readable representation.\n */\n toString() {\n return \"(\" + this.lineNumber + \",\" + this.column + \")\";\n }\n /**\n * Create a `Position` from an `IPosition`.\n */\n static lift(pos) {\n return new Position(pos.lineNumber, pos.column);\n }\n /**\n * Test if `obj` is an `IPosition`.\n */\n static isIPosition(obj) {\n return !!obj && typeof obj.lineNumber === \"number\" && typeof obj.column === \"number\";\n }\n toJSON() {\n return {\n lineNumber: this.lineNumber,\n column: this.column\n };\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/core/range.js\n /**\n * A range in the editor. (startLineNumber,startColumn) is <= (endLineNumber,endColumn)\n */\n var Range = class Range {\n constructor(startLineNumber, startColumn, endLineNumber, endColumn) {\n if (startLineNumber > endLineNumber || startLineNumber === endLineNumber && startColumn > endColumn) {\n this.startLineNumber = endLineNumber;\n this.startColumn = endColumn;\n this.endLineNumber = startLineNumber;\n this.endColumn = startColumn;\n } else {\n this.startLineNumber = startLineNumber;\n this.startColumn = startColumn;\n this.endLineNumber = endLineNumber;\n this.endColumn = endColumn;\n }\n }\n /**\n * Test if this range is empty.\n */\n isEmpty() {\n return Range.isEmpty(this);\n }\n /**\n * Test if `range` is empty.\n */\n static isEmpty(range) {\n return range.startLineNumber === range.endLineNumber && range.startColumn === range.endColumn;\n }\n /**\n * Test if position is in this range. If the position is at the edges, will return true.\n */\n containsPosition(position) {\n return Range.containsPosition(this, position);\n }\n /**\n * Test if `position` is in `range`. If the position is at the edges, will return true.\n */\n static containsPosition(range, position) {\n if (position.lineNumber < range.startLineNumber || position.lineNumber > range.endLineNumber) return false;\n if (position.lineNumber === range.startLineNumber && position.column < range.startColumn) return false;\n if (position.lineNumber === range.endLineNumber && position.column > range.endColumn) return false;\n return true;\n }\n /**\n * Test if `position` is in `range`. If the position is at the edges, will return false.\n * @internal\n */\n static strictContainsPosition(range, position) {\n if (position.lineNumber < range.startLineNumber || position.lineNumber > range.endLineNumber) return false;\n if (position.lineNumber === range.startLineNumber && position.column <= range.startColumn) return false;\n if (position.lineNumber === range.endLineNumber && position.column >= range.endColumn) return false;\n return true;\n }\n /**\n * Test if range is in this range. If the range is equal to this range, will return true.\n */\n containsRange(range) {\n return Range.containsRange(this, range);\n }\n /**\n * Test if `otherRange` is in `range`. If the ranges are equal, will return true.\n */\n static containsRange(range, otherRange) {\n if (otherRange.startLineNumber < range.startLineNumber || otherRange.endLineNumber < range.startLineNumber) return false;\n if (otherRange.startLineNumber > range.endLineNumber || otherRange.endLineNumber > range.endLineNumber) return false;\n if (otherRange.startLineNumber === range.startLineNumber && otherRange.startColumn < range.startColumn) return false;\n if (otherRange.endLineNumber === range.endLineNumber && otherRange.endColumn > range.endColumn) return false;\n return true;\n }\n /**\n * Test if `range` is strictly in this range. `range` must start after and end before this range for the result to be true.\n */\n strictContainsRange(range) {\n return Range.strictContainsRange(this, range);\n }\n /**\n * Test if `otherRange` is strictly in `range` (must start after, and end before). If the ranges are equal, will return false.\n */\n static strictContainsRange(range, otherRange) {\n if (otherRange.startLineNumber < range.startLineNumber || otherRange.endLineNumber < range.startLineNumber) return false;\n if (otherRange.startLineNumber > range.endLineNumber || otherRange.endLineNumber > range.endLineNumber) return false;\n if (otherRange.startLineNumber === range.startLineNumber && otherRange.startColumn <= range.startColumn) return false;\n if (otherRange.endLineNumber === range.endLineNumber && otherRange.endColumn >= range.endColumn) return false;\n return true;\n }\n /**\n * A reunion of the two ranges.\n * The smallest position will be used as the start point, and the largest one as the end point.\n */\n plusRange(range) {\n return Range.plusRange(this, range);\n }\n /**\n * A reunion of the two ranges.\n * The smallest position will be used as the start point, and the largest one as the end point.\n */\n static plusRange(a, b) {\n let startLineNumber;\n let startColumn;\n let endLineNumber;\n let endColumn;\n if (b.startLineNumber < a.startLineNumber) {\n startLineNumber = b.startLineNumber;\n startColumn = b.startColumn;\n } else if (b.startLineNumber === a.startLineNumber) {\n startLineNumber = b.startLineNumber;\n startColumn = Math.min(b.startColumn, a.startColumn);\n } else {\n startLineNumber = a.startLineNumber;\n startColumn = a.startColumn;\n }\n if (b.endLineNumber > a.endLineNumber) {\n endLineNumber = b.endLineNumber;\n endColumn = b.endColumn;\n } else if (b.endLineNumber === a.endLineNumber) {\n endLineNumber = b.endLineNumber;\n endColumn = Math.max(b.endColumn, a.endColumn);\n } else {\n endLineNumber = a.endLineNumber;\n endColumn = a.endColumn;\n }\n return new Range(startLineNumber, startColumn, endLineNumber, endColumn);\n }\n /**\n * A intersection of the two ranges.\n */\n intersectRanges(range) {\n return Range.intersectRanges(this, range);\n }\n /**\n * A intersection of the two ranges.\n */\n static intersectRanges(a, b) {\n let resultStartLineNumber = a.startLineNumber;\n let resultStartColumn = a.startColumn;\n let resultEndLineNumber = a.endLineNumber;\n let resultEndColumn = a.endColumn;\n const otherStartLineNumber = b.startLineNumber;\n const otherStartColumn = b.startColumn;\n const otherEndLineNumber = b.endLineNumber;\n const otherEndColumn = b.endColumn;\n if (resultStartLineNumber < otherStartLineNumber) {\n resultStartLineNumber = otherStartLineNumber;\n resultStartColumn = otherStartColumn;\n } else if (resultStartLineNumber === otherStartLineNumber) resultStartColumn = Math.max(resultStartColumn, otherStartColumn);\n if (resultEndLineNumber > otherEndLineNumber) {\n resultEndLineNumber = otherEndLineNumber;\n resultEndColumn = otherEndColumn;\n } else if (resultEndLineNumber === otherEndLineNumber) resultEndColumn = Math.min(resultEndColumn, otherEndColumn);\n if (resultStartLineNumber > resultEndLineNumber) return null;\n if (resultStartLineNumber === resultEndLineNumber && resultStartColumn > resultEndColumn) return null;\n return new Range(resultStartLineNumber, resultStartColumn, resultEndLineNumber, resultEndColumn);\n }\n /**\n * Test if this range equals other.\n */\n equalsRange(other) {\n return Range.equalsRange(this, other);\n }\n /**\n * Test if range `a` equals `b`.\n */\n static equalsRange(a, b) {\n if (!a && !b) return true;\n return !!a && !!b && a.startLineNumber === b.startLineNumber && a.startColumn === b.startColumn && a.endLineNumber === b.endLineNumber && a.endColumn === b.endColumn;\n }\n /**\n * Return the end position (which will be after or equal to the start position)\n */\n getEndPosition() {\n return Range.getEndPosition(this);\n }\n /**\n * Return the end position (which will be after or equal to the start position)\n */\n static getEndPosition(range) {\n return new Position(range.endLineNumber, range.endColumn);\n }\n /**\n * Return the start position (which will be before or equal to the end position)\n */\n getStartPosition() {\n return Range.getStartPosition(this);\n }\n /**\n * Return the start position (which will be before or equal to the end position)\n */\n static getStartPosition(range) {\n return new Position(range.startLineNumber, range.startColumn);\n }\n /**\n * Transform to a user presentable string representation.\n */\n toString() {\n return \"[\" + this.startLineNumber + \",\" + this.startColumn + \" -> \" + this.endLineNumber + \",\" + this.endColumn + \"]\";\n }\n /**\n * Create a new range using this range's start position, and using endLineNumber and endColumn as the end position.\n */\n setEndPosition(endLineNumber, endColumn) {\n return new Range(this.startLineNumber, this.startColumn, endLineNumber, endColumn);\n }\n /**\n * Create a new range using this range's end position, and using startLineNumber and startColumn as the start position.\n */\n setStartPosition(startLineNumber, startColumn) {\n return new Range(startLineNumber, startColumn, this.endLineNumber, this.endColumn);\n }\n /**\n * Create a new empty range using this range's start position.\n */\n collapseToStart() {\n return Range.collapseToStart(this);\n }\n /**\n * Create a new empty range using this range's start position.\n */\n static collapseToStart(range) {\n return new Range(range.startLineNumber, range.startColumn, range.startLineNumber, range.startColumn);\n }\n /**\n * Create a new empty range using this range's end position.\n */\n collapseToEnd() {\n return Range.collapseToEnd(this);\n }\n /**\n * Create a new empty range using this range's end position.\n */\n static collapseToEnd(range) {\n return new Range(range.endLineNumber, range.endColumn, range.endLineNumber, range.endColumn);\n }\n /**\n * Moves the range by the given amount of lines.\n */\n delta(lineCount) {\n return new Range(this.startLineNumber + lineCount, this.startColumn, this.endLineNumber + lineCount, this.endColumn);\n }\n isSingleLine() {\n return this.startLineNumber === this.endLineNumber;\n }\n static fromPositions(start, end = start) {\n return new Range(start.lineNumber, start.column, end.lineNumber, end.column);\n }\n static lift(range) {\n if (!range) return null;\n return new Range(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);\n }\n /**\n * Test if `obj` is an `IRange`.\n */\n static isIRange(obj) {\n return !!obj && typeof obj.startLineNumber === \"number\" && typeof obj.startColumn === \"number\" && typeof obj.endLineNumber === \"number\" && typeof obj.endColumn === \"number\";\n }\n /**\n * Test if the two ranges are touching in any way.\n */\n static areIntersectingOrTouching(a, b) {\n if (a.endLineNumber < b.startLineNumber || a.endLineNumber === b.startLineNumber && a.endColumn < b.startColumn) return false;\n if (b.endLineNumber < a.startLineNumber || b.endLineNumber === a.startLineNumber && b.endColumn < a.startColumn) return false;\n return true;\n }\n /**\n * Test if the two ranges are intersecting. If the ranges are touching it returns true.\n */\n static areIntersecting(a, b) {\n if (a.endLineNumber < b.startLineNumber || a.endLineNumber === b.startLineNumber && a.endColumn <= b.startColumn) return false;\n if (b.endLineNumber < a.startLineNumber || b.endLineNumber === a.startLineNumber && b.endColumn <= a.startColumn) return false;\n return true;\n }\n /**\n * Test if the two ranges are intersecting, but not touching at all.\n */\n static areOnlyIntersecting(a, b) {\n if (a.endLineNumber < b.startLineNumber - 1 || a.endLineNumber === b.startLineNumber && a.endColumn < b.startColumn - 1) return false;\n if (b.endLineNumber < a.startLineNumber - 1 || b.endLineNumber === a.startLineNumber && b.endColumn < a.startColumn - 1) return false;\n return true;\n }\n /**\n * A function that compares ranges, useful for sorting ranges\n * It will first compare ranges on the startPosition and then on the endPosition\n */\n static compareRangesUsingStarts(a, b) {\n if (a && b) {\n const aStartLineNumber = a.startLineNumber | 0;\n const bStartLineNumber = b.startLineNumber | 0;\n if (aStartLineNumber === bStartLineNumber) {\n const aStartColumn = a.startColumn | 0;\n const bStartColumn = b.startColumn | 0;\n if (aStartColumn === bStartColumn) {\n const aEndLineNumber = a.endLineNumber | 0;\n const bEndLineNumber = b.endLineNumber | 0;\n if (aEndLineNumber === bEndLineNumber) return (a.endColumn | 0) - (b.endColumn | 0);\n return aEndLineNumber - bEndLineNumber;\n }\n return aStartColumn - bStartColumn;\n }\n return aStartLineNumber - bStartLineNumber;\n }\n return (a ? 1 : 0) - (b ? 1 : 0);\n }\n /**\n * A function that compares ranges, useful for sorting ranges\n * It will first compare ranges on the endPosition and then on the startPosition\n */\n static compareRangesUsingEnds(a, b) {\n if (a.endLineNumber === b.endLineNumber) {\n if (a.endColumn === b.endColumn) {\n if (a.startLineNumber === b.startLineNumber) return a.startColumn - b.startColumn;\n return a.startLineNumber - b.startLineNumber;\n }\n return a.endColumn - b.endColumn;\n }\n return a.endLineNumber - b.endLineNumber;\n }\n /**\n * Test if the range spans multiple lines.\n */\n static spansMultipleLines(range) {\n return range.endLineNumber > range.startLineNumber;\n }\n toJSON() {\n return this;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/uint.js\n function toUint8(v) {\n if (v < 0) return 0;\n if (v > 255) return 255;\n return v | 0;\n }\n function toUint32(v) {\n if (v < 0) return 0;\n if (v > 4294967295) return 4294967295;\n return v | 0;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/core/characterClassifier.js\n /**\n * A fast character classifier that uses a compact array for ASCII values.\n */\n var CharacterClassifier = class CharacterClassifier {\n constructor(_defaultValue) {\n const defaultValue = toUint8(_defaultValue);\n this._defaultValue = defaultValue;\n this._asciiMap = CharacterClassifier._createAsciiMap(defaultValue);\n this._map = /* @__PURE__ */ new Map();\n }\n static _createAsciiMap(defaultValue) {\n const asciiMap = /* @__PURE__ */ new Uint8Array(256);\n asciiMap.fill(defaultValue);\n return asciiMap;\n }\n set(charCode, _value) {\n const value = toUint8(_value);\n if (charCode >= 0 && charCode < 256) this._asciiMap[charCode] = value;\n else this._map.set(charCode, value);\n }\n get(charCode) {\n if (charCode >= 0 && charCode < 256) return this._asciiMap[charCode];\n else return this._map.get(charCode) || this._defaultValue;\n }\n clear() {\n this._asciiMap.fill(this._defaultValue);\n this._map.clear();\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/languages/linkComputer.js\n var Uint8Matrix = class {\n constructor(rows, cols, defaultValue) {\n const data = new Uint8Array(rows * cols);\n for (let i = 0, len = rows * cols; i < len; i++) data[i] = defaultValue;\n this._data = data;\n this.rows = rows;\n this.cols = cols;\n }\n get(row, col) {\n return this._data[row * this.cols + col];\n }\n set(row, col, value) {\n this._data[row * this.cols + col] = value;\n }\n };\n var StateMachine = class {\n constructor(edges) {\n let maxCharCode = 0;\n let maxState = 0;\n for (let i = 0, len = edges.length; i < len; i++) {\n const [from, chCode, to] = edges[i];\n if (chCode > maxCharCode) maxCharCode = chCode;\n if (from > maxState) maxState = from;\n if (to > maxState) maxState = to;\n }\n maxCharCode++;\n maxState++;\n const states = new Uint8Matrix(maxState, maxCharCode, 0);\n for (let i = 0, len = edges.length; i < len; i++) {\n const [from, chCode, to] = edges[i];\n states.set(from, chCode, to);\n }\n this._states = states;\n this._maxCharCode = maxCharCode;\n }\n nextState(currentState, chCode) {\n if (chCode < 0 || chCode >= this._maxCharCode) return 0;\n return this._states.get(currentState, chCode);\n }\n };\n let _stateMachine = null;\n function getStateMachine() {\n if (_stateMachine === null) _stateMachine = new StateMachine([\n [\n 1,\n 104,\n 2\n ],\n [\n 1,\n 72,\n 2\n ],\n [\n 1,\n 102,\n 6\n ],\n [\n 1,\n 70,\n 6\n ],\n [\n 2,\n 116,\n 3\n ],\n [\n 2,\n 84,\n 3\n ],\n [\n 3,\n 116,\n 4\n ],\n [\n 3,\n 84,\n 4\n ],\n [\n 4,\n 112,\n 5\n ],\n [\n 4,\n 80,\n 5\n ],\n [\n 5,\n 115,\n 9\n ],\n [\n 5,\n 83,\n 9\n ],\n [\n 5,\n 58,\n 10\n ],\n [\n 6,\n 105,\n 7\n ],\n [\n 6,\n 73,\n 7\n ],\n [\n 7,\n 108,\n 8\n ],\n [\n 7,\n 76,\n 8\n ],\n [\n 8,\n 101,\n 9\n ],\n [\n 8,\n 69,\n 9\n ],\n [\n 9,\n 58,\n 10\n ],\n [\n 10,\n 47,\n 11\n ],\n [\n 11,\n 47,\n 12\n ]\n ]);\n return _stateMachine;\n }\n let _classifier = null;\n function getClassifier() {\n if (_classifier === null) {\n _classifier = new CharacterClassifier(0);\n const FORCE_TERMINATION_CHARACTERS = \" <>'\\\"、。。、,.:;‘〈「『〔([{「」}])〕』」〉’`~…|\";\n for (let i = 0; i < 36; i++) _classifier.set(FORCE_TERMINATION_CHARACTERS.charCodeAt(i), 1);\n const CANNOT_END_WITH_CHARACTERS = \".,;:\";\n for (let i = 0; i < 4; i++) _classifier.set(CANNOT_END_WITH_CHARACTERS.charCodeAt(i), 2);\n }\n return _classifier;\n }\n var LinkComputer = class LinkComputer {\n static _createLink(classifier, line, lineNumber, linkBeginIndex, linkEndIndex) {\n let lastIncludedCharIndex = linkEndIndex - 1;\n do {\n const chCode = line.charCodeAt(lastIncludedCharIndex);\n if (classifier.get(chCode) !== 2) break;\n lastIncludedCharIndex--;\n } while (lastIncludedCharIndex > linkBeginIndex);\n if (linkBeginIndex > 0) {\n const charCodeBeforeLink = line.charCodeAt(linkBeginIndex - 1);\n const lastCharCodeInLink = line.charCodeAt(lastIncludedCharIndex);\n if (charCodeBeforeLink === 40 && lastCharCodeInLink === 41 || charCodeBeforeLink === 91 && lastCharCodeInLink === 93 || charCodeBeforeLink === 123 && lastCharCodeInLink === 125) lastIncludedCharIndex--;\n }\n return {\n range: {\n startLineNumber: lineNumber,\n startColumn: linkBeginIndex + 1,\n endLineNumber: lineNumber,\n endColumn: lastIncludedCharIndex + 2\n },\n url: line.substring(linkBeginIndex, lastIncludedCharIndex + 1)\n };\n }\n static computeLinks(model, stateMachine = getStateMachine()) {\n const classifier = getClassifier();\n const result = [];\n for (let i = 1, lineCount = model.getLineCount(); i <= lineCount; i++) {\n const line = model.getLineContent(i);\n const len = line.length;\n let j = 0;\n let linkBeginIndex = 0;\n let linkBeginChCode = 0;\n let state = 1;\n let hasOpenParens = false;\n let hasOpenSquareBracket = false;\n let inSquareBrackets = false;\n let hasOpenCurlyBracket = false;\n while (j < len) {\n let resetStateMachine = false;\n const chCode = line.charCodeAt(j);\n if (state === 13) {\n let chClass;\n switch (chCode) {\n case 40:\n hasOpenParens = true;\n chClass = 0;\n break;\n case 41:\n chClass = hasOpenParens ? 0 : 1;\n break;\n case 91:\n inSquareBrackets = true;\n hasOpenSquareBracket = true;\n chClass = 0;\n break;\n case 93:\n inSquareBrackets = false;\n chClass = hasOpenSquareBracket ? 0 : 1;\n break;\n case 123:\n hasOpenCurlyBracket = true;\n chClass = 0;\n break;\n case 125:\n chClass = hasOpenCurlyBracket ? 0 : 1;\n break;\n case 39:\n case 34:\n case 96:\n if (linkBeginChCode === chCode) chClass = 1;\n else if (linkBeginChCode === 39 || linkBeginChCode === 34 || linkBeginChCode === 96) chClass = 0;\n else chClass = 1;\n break;\n case 42:\n chClass = linkBeginChCode === 42 ? 1 : 0;\n break;\n case 32:\n chClass = inSquareBrackets ? 0 : 1;\n break;\n default: chClass = classifier.get(chCode);\n }\n if (chClass === 1) {\n result.push(LinkComputer._createLink(classifier, line, i, linkBeginIndex, j));\n resetStateMachine = true;\n }\n } else if (state === 12) {\n let chClass;\n if (chCode === 91) {\n hasOpenSquareBracket = true;\n chClass = 0;\n } else chClass = classifier.get(chCode);\n if (chClass === 1) resetStateMachine = true;\n else state = 13;\n } else {\n state = stateMachine.nextState(state, chCode);\n if (state === 0) resetStateMachine = true;\n }\n if (resetStateMachine) {\n state = 1;\n hasOpenParens = false;\n hasOpenSquareBracket = false;\n hasOpenCurlyBracket = false;\n linkBeginIndex = j + 1;\n linkBeginChCode = chCode;\n }\n j++;\n }\n if (state === 13) result.push(LinkComputer._createLink(classifier, line, i, linkBeginIndex, len));\n }\n return result;\n }\n };\n /**\n * Returns an array of all links contains in the provided\n * document. *Note* that this operation is computational\n * expensive and should not run in the UI thread.\n */\n function computeLinks(model) {\n if (!model || typeof model.getLineCount !== \"function\" || typeof model.getLineContent !== \"function\") return [];\n return LinkComputer.computeLinks(model);\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/languages/supports/inplaceReplaceSupport.js\n var BasicInplaceReplace = class BasicInplaceReplace {\n constructor() {\n this._defaultValueSet = [\n [\"true\", \"false\"],\n [\"True\", \"False\"],\n [\n \"Private\",\n \"Public\",\n \"Friend\",\n \"ReadOnly\",\n \"Partial\",\n \"Protected\",\n \"WriteOnly\"\n ],\n [\n \"public\",\n \"protected\",\n \"private\"\n ]\n ];\n }\n static {\n this.INSTANCE = new BasicInplaceReplace();\n }\n navigateValueSet(range1, text1, range2, text2, up) {\n if (range1 && text1) {\n const result = this.doNavigateValueSet(text1, up);\n if (result) return {\n range: range1,\n value: result\n };\n }\n if (range2 && text2) {\n const result = this.doNavigateValueSet(text2, up);\n if (result) return {\n range: range2,\n value: result\n };\n }\n return null;\n }\n doNavigateValueSet(text, up) {\n const numberResult = this.numberReplace(text, up);\n if (numberResult !== null) return numberResult;\n return this.textReplace(text, up);\n }\n numberReplace(value, up) {\n const precision = Math.pow(10, value.length - (value.lastIndexOf(\".\") + 1));\n let n1 = Number(value);\n const n2 = parseFloat(value);\n if (!isNaN(n1) && !isNaN(n2) && n1 === n2) if (n1 === 0 && !up) return null;\n else {\n n1 = Math.floor(n1 * precision);\n n1 += up ? precision : -precision;\n return String(n1 / precision);\n }\n return null;\n }\n textReplace(value, up) {\n return this.valueSetsReplace(this._defaultValueSet, value, up);\n }\n valueSetsReplace(valueSets, value, up) {\n let result = null;\n for (let i = 0, len = valueSets.length; result === null && i < len; i++) result = this.valueSetReplace(valueSets[i], value, up);\n return result;\n }\n valueSetReplace(valueSet, value, up) {\n let idx = valueSet.indexOf(value);\n if (idx >= 0) {\n idx += up ? 1 : -1;\n if (idx < 0) idx = valueSet.length - 1;\n else idx %= valueSet.length;\n return valueSet[idx];\n }\n return null;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/cancellation.js\n const shortcutEvent = Object.freeze(function(callback, context) {\n const handle = setTimeout(callback.bind(context), 0);\n return { dispose() {\n clearTimeout(handle);\n } };\n });\n var CancellationToken;\n (function(CancellationToken) {\n function isCancellationToken(thing) {\n if (thing === CancellationToken.None || thing === CancellationToken.Cancelled) return true;\n if (thing instanceof MutableToken) return true;\n if (!thing || typeof thing !== \"object\") return false;\n return typeof thing.isCancellationRequested === \"boolean\" && typeof thing.onCancellationRequested === \"function\";\n }\n CancellationToken.isCancellationToken = isCancellationToken;\n CancellationToken.None = Object.freeze({\n isCancellationRequested: false,\n onCancellationRequested: Event.None\n });\n CancellationToken.Cancelled = Object.freeze({\n isCancellationRequested: true,\n onCancellationRequested: shortcutEvent\n });\n })(CancellationToken || (CancellationToken = {}));\n var MutableToken = class {\n constructor() {\n this._isCancelled = false;\n this._emitter = null;\n }\n cancel() {\n if (!this._isCancelled) {\n this._isCancelled = true;\n if (this._emitter) {\n this._emitter.fire(void 0);\n this.dispose();\n }\n }\n }\n get isCancellationRequested() {\n return this._isCancelled;\n }\n get onCancellationRequested() {\n if (this._isCancelled) return shortcutEvent;\n if (!this._emitter) this._emitter = new Emitter();\n return this._emitter.event;\n }\n dispose() {\n if (this._emitter) {\n this._emitter.dispose();\n this._emitter = null;\n }\n }\n };\n var CancellationTokenSource = class {\n constructor(parent) {\n this._token = void 0;\n this._parentListener = void 0;\n this._parentListener = parent && parent.onCancellationRequested(this.cancel, this);\n }\n get token() {\n if (!this._token) this._token = new MutableToken();\n return this._token;\n }\n cancel() {\n if (!this._token) this._token = CancellationToken.Cancelled;\n else if (this._token instanceof MutableToken) this._token.cancel();\n }\n dispose(cancel = false) {\n if (cancel) this.cancel();\n this._parentListener?.dispose();\n if (!this._token) this._token = CancellationToken.None;\n else if (this._token instanceof MutableToken) this._token.dispose();\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/keyCodes.js\n var KeyCodeStrMap = class {\n constructor() {\n this._keyCodeToStr = [];\n this._strToKeyCode = Object.create(null);\n }\n define(keyCode, str) {\n this._keyCodeToStr[keyCode] = str;\n this._strToKeyCode[str.toLowerCase()] = keyCode;\n }\n keyCodeToStr(keyCode) {\n return this._keyCodeToStr[keyCode];\n }\n strToKeyCode(str) {\n return this._strToKeyCode[str.toLowerCase()] || 0;\n }\n };\n const uiMap = new KeyCodeStrMap();\n const userSettingsUSMap = new KeyCodeStrMap();\n const userSettingsGeneralMap = new KeyCodeStrMap();\n const EVENT_KEY_CODE_MAP = new Array(230);\n const scanCodeStrToInt = Object.create(null);\n const scanCodeLowerCaseStrToInt = Object.create(null);\n /**\n * -1 if a ScanCode => KeyCode mapping depends on kb layout.\n */\n const IMMUTABLE_CODE_TO_KEY_CODE = [];\n for (let i = 0; i <= 193; i++) IMMUTABLE_CODE_TO_KEY_CODE[i] = -1;\n (function() {\n const empty = \"\";\n const mappings = [\n [\n 1,\n 0,\n \"None\",\n 0,\n \"unknown\",\n 0,\n \"VK_UNKNOWN\",\n empty,\n empty\n ],\n [\n 1,\n 1,\n \"Hyper\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 2,\n \"Super\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 3,\n \"Fn\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 4,\n \"FnLock\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 5,\n \"Suspend\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 6,\n \"Resume\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 7,\n \"Turbo\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 8,\n \"Sleep\",\n 0,\n empty,\n 0,\n \"VK_SLEEP\",\n empty,\n empty\n ],\n [\n 1,\n 9,\n \"WakeUp\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 0,\n 10,\n \"KeyA\",\n 31,\n \"A\",\n 65,\n \"VK_A\",\n empty,\n empty\n ],\n [\n 0,\n 11,\n \"KeyB\",\n 32,\n \"B\",\n 66,\n \"VK_B\",\n empty,\n empty\n ],\n [\n 0,\n 12,\n \"KeyC\",\n 33,\n \"C\",\n 67,\n \"VK_C\",\n empty,\n empty\n ],\n [\n 0,\n 13,\n \"KeyD\",\n 34,\n \"D\",\n 68,\n \"VK_D\",\n empty,\n empty\n ],\n [\n 0,\n 14,\n \"KeyE\",\n 35,\n \"E\",\n 69,\n \"VK_E\",\n empty,\n empty\n ],\n [\n 0,\n 15,\n \"KeyF\",\n 36,\n \"F\",\n 70,\n \"VK_F\",\n empty,\n empty\n ],\n [\n 0,\n 16,\n \"KeyG\",\n 37,\n \"G\",\n 71,\n \"VK_G\",\n empty,\n empty\n ],\n [\n 0,\n 17,\n \"KeyH\",\n 38,\n \"H\",\n 72,\n \"VK_H\",\n empty,\n empty\n ],\n [\n 0,\n 18,\n \"KeyI\",\n 39,\n \"I\",\n 73,\n \"VK_I\",\n empty,\n empty\n ],\n [\n 0,\n 19,\n \"KeyJ\",\n 40,\n \"J\",\n 74,\n \"VK_J\",\n empty,\n empty\n ],\n [\n 0,\n 20,\n \"KeyK\",\n 41,\n \"K\",\n 75,\n \"VK_K\",\n empty,\n empty\n ],\n [\n 0,\n 21,\n \"KeyL\",\n 42,\n \"L\",\n 76,\n \"VK_L\",\n empty,\n empty\n ],\n [\n 0,\n 22,\n \"KeyM\",\n 43,\n \"M\",\n 77,\n \"VK_M\",\n empty,\n empty\n ],\n [\n 0,\n 23,\n \"KeyN\",\n 44,\n \"N\",\n 78,\n \"VK_N\",\n empty,\n empty\n ],\n [\n 0,\n 24,\n \"KeyO\",\n 45,\n \"O\",\n 79,\n \"VK_O\",\n empty,\n empty\n ],\n [\n 0,\n 25,\n \"KeyP\",\n 46,\n \"P\",\n 80,\n \"VK_P\",\n empty,\n empty\n ],\n [\n 0,\n 26,\n \"KeyQ\",\n 47,\n \"Q\",\n 81,\n \"VK_Q\",\n empty,\n empty\n ],\n [\n 0,\n 27,\n \"KeyR\",\n 48,\n \"R\",\n 82,\n \"VK_R\",\n empty,\n empty\n ],\n [\n 0,\n 28,\n \"KeyS\",\n 49,\n \"S\",\n 83,\n \"VK_S\",\n empty,\n empty\n ],\n [\n 0,\n 29,\n \"KeyT\",\n 50,\n \"T\",\n 84,\n \"VK_T\",\n empty,\n empty\n ],\n [\n 0,\n 30,\n \"KeyU\",\n 51,\n \"U\",\n 85,\n \"VK_U\",\n empty,\n empty\n ],\n [\n 0,\n 31,\n \"KeyV\",\n 52,\n \"V\",\n 86,\n \"VK_V\",\n empty,\n empty\n ],\n [\n 0,\n 32,\n \"KeyW\",\n 53,\n \"W\",\n 87,\n \"VK_W\",\n empty,\n empty\n ],\n [\n 0,\n 33,\n \"KeyX\",\n 54,\n \"X\",\n 88,\n \"VK_X\",\n empty,\n empty\n ],\n [\n 0,\n 34,\n \"KeyY\",\n 55,\n \"Y\",\n 89,\n \"VK_Y\",\n empty,\n empty\n ],\n [\n 0,\n 35,\n \"KeyZ\",\n 56,\n \"Z\",\n 90,\n \"VK_Z\",\n empty,\n empty\n ],\n [\n 0,\n 36,\n \"Digit1\",\n 22,\n \"1\",\n 49,\n \"VK_1\",\n empty,\n empty\n ],\n [\n 0,\n 37,\n \"Digit2\",\n 23,\n \"2\",\n 50,\n \"VK_2\",\n empty,\n empty\n ],\n [\n 0,\n 38,\n \"Digit3\",\n 24,\n \"3\",\n 51,\n \"VK_3\",\n empty,\n empty\n ],\n [\n 0,\n 39,\n \"Digit4\",\n 25,\n \"4\",\n 52,\n \"VK_4\",\n empty,\n empty\n ],\n [\n 0,\n 40,\n \"Digit5\",\n 26,\n \"5\",\n 53,\n \"VK_5\",\n empty,\n empty\n ],\n [\n 0,\n 41,\n \"Digit6\",\n 27,\n \"6\",\n 54,\n \"VK_6\",\n empty,\n empty\n ],\n [\n 0,\n 42,\n \"Digit7\",\n 28,\n \"7\",\n 55,\n \"VK_7\",\n empty,\n empty\n ],\n [\n 0,\n 43,\n \"Digit8\",\n 29,\n \"8\",\n 56,\n \"VK_8\",\n empty,\n empty\n ],\n [\n 0,\n 44,\n \"Digit9\",\n 30,\n \"9\",\n 57,\n \"VK_9\",\n empty,\n empty\n ],\n [\n 0,\n 45,\n \"Digit0\",\n 21,\n \"0\",\n 48,\n \"VK_0\",\n empty,\n empty\n ],\n [\n 1,\n 46,\n \"Enter\",\n 3,\n \"Enter\",\n 13,\n \"VK_RETURN\",\n empty,\n empty\n ],\n [\n 1,\n 47,\n \"Escape\",\n 9,\n \"Escape\",\n 27,\n \"VK_ESCAPE\",\n empty,\n empty\n ],\n [\n 1,\n 48,\n \"Backspace\",\n 1,\n \"Backspace\",\n 8,\n \"VK_BACK\",\n empty,\n empty\n ],\n [\n 1,\n 49,\n \"Tab\",\n 2,\n \"Tab\",\n 9,\n \"VK_TAB\",\n empty,\n empty\n ],\n [\n 1,\n 50,\n \"Space\",\n 10,\n \"Space\",\n 32,\n \"VK_SPACE\",\n empty,\n empty\n ],\n [\n 0,\n 51,\n \"Minus\",\n 88,\n \"-\",\n 189,\n \"VK_OEM_MINUS\",\n \"-\",\n \"OEM_MINUS\"\n ],\n [\n 0,\n 52,\n \"Equal\",\n 86,\n \"=\",\n 187,\n \"VK_OEM_PLUS\",\n \"=\",\n \"OEM_PLUS\"\n ],\n [\n 0,\n 53,\n \"BracketLeft\",\n 92,\n \"[\",\n 219,\n \"VK_OEM_4\",\n \"[\",\n \"OEM_4\"\n ],\n [\n 0,\n 54,\n \"BracketRight\",\n 94,\n \"]\",\n 221,\n \"VK_OEM_6\",\n \"]\",\n \"OEM_6\"\n ],\n [\n 0,\n 55,\n \"Backslash\",\n 93,\n \"\\\\\",\n 220,\n \"VK_OEM_5\",\n \"\\\\\",\n \"OEM_5\"\n ],\n [\n 0,\n 56,\n \"IntlHash\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 0,\n 57,\n \"Semicolon\",\n 85,\n \";\",\n 186,\n \"VK_OEM_1\",\n \";\",\n \"OEM_1\"\n ],\n [\n 0,\n 58,\n \"Quote\",\n 95,\n \"'\",\n 222,\n \"VK_OEM_7\",\n \"'\",\n \"OEM_7\"\n ],\n [\n 0,\n 59,\n \"Backquote\",\n 91,\n \"`\",\n 192,\n \"VK_OEM_3\",\n \"`\",\n \"OEM_3\"\n ],\n [\n 0,\n 60,\n \"Comma\",\n 87,\n \",\",\n 188,\n \"VK_OEM_COMMA\",\n \",\",\n \"OEM_COMMA\"\n ],\n [\n 0,\n 61,\n \"Period\",\n 89,\n \".\",\n 190,\n \"VK_OEM_PERIOD\",\n \".\",\n \"OEM_PERIOD\"\n ],\n [\n 0,\n 62,\n \"Slash\",\n 90,\n \"/\",\n 191,\n \"VK_OEM_2\",\n \"/\",\n \"OEM_2\"\n ],\n [\n 1,\n 63,\n \"CapsLock\",\n 8,\n \"CapsLock\",\n 20,\n \"VK_CAPITAL\",\n empty,\n empty\n ],\n [\n 1,\n 64,\n \"F1\",\n 59,\n \"F1\",\n 112,\n \"VK_F1\",\n empty,\n empty\n ],\n [\n 1,\n 65,\n \"F2\",\n 60,\n \"F2\",\n 113,\n \"VK_F2\",\n empty,\n empty\n ],\n [\n 1,\n 66,\n \"F3\",\n 61,\n \"F3\",\n 114,\n \"VK_F3\",\n empty,\n empty\n ],\n [\n 1,\n 67,\n \"F4\",\n 62,\n \"F4\",\n 115,\n \"VK_F4\",\n empty,\n empty\n ],\n [\n 1,\n 68,\n \"F5\",\n 63,\n \"F5\",\n 116,\n \"VK_F5\",\n empty,\n empty\n ],\n [\n 1,\n 69,\n \"F6\",\n 64,\n \"F6\",\n 117,\n \"VK_F6\",\n empty,\n empty\n ],\n [\n 1,\n 70,\n \"F7\",\n 65,\n \"F7\",\n 118,\n \"VK_F7\",\n empty,\n empty\n ],\n [\n 1,\n 71,\n \"F8\",\n 66,\n \"F8\",\n 119,\n \"VK_F8\",\n empty,\n empty\n ],\n [\n 1,\n 72,\n \"F9\",\n 67,\n \"F9\",\n 120,\n \"VK_F9\",\n empty,\n empty\n ],\n [\n 1,\n 73,\n \"F10\",\n 68,\n \"F10\",\n 121,\n \"VK_F10\",\n empty,\n empty\n ],\n [\n 1,\n 74,\n \"F11\",\n 69,\n \"F11\",\n 122,\n \"VK_F11\",\n empty,\n empty\n ],\n [\n 1,\n 75,\n \"F12\",\n 70,\n \"F12\",\n 123,\n \"VK_F12\",\n empty,\n empty\n ],\n [\n 1,\n 76,\n \"PrintScreen\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 77,\n \"ScrollLock\",\n 84,\n \"ScrollLock\",\n 145,\n \"VK_SCROLL\",\n empty,\n empty\n ],\n [\n 1,\n 78,\n \"Pause\",\n 7,\n \"PauseBreak\",\n 19,\n \"VK_PAUSE\",\n empty,\n empty\n ],\n [\n 1,\n 79,\n \"Insert\",\n 19,\n \"Insert\",\n 45,\n \"VK_INSERT\",\n empty,\n empty\n ],\n [\n 1,\n 80,\n \"Home\",\n 14,\n \"Home\",\n 36,\n \"VK_HOME\",\n empty,\n empty\n ],\n [\n 1,\n 81,\n \"PageUp\",\n 11,\n \"PageUp\",\n 33,\n \"VK_PRIOR\",\n empty,\n empty\n ],\n [\n 1,\n 82,\n \"Delete\",\n 20,\n \"Delete\",\n 46,\n \"VK_DELETE\",\n empty,\n empty\n ],\n [\n 1,\n 83,\n \"End\",\n 13,\n \"End\",\n 35,\n \"VK_END\",\n empty,\n empty\n ],\n [\n 1,\n 84,\n \"PageDown\",\n 12,\n \"PageDown\",\n 34,\n \"VK_NEXT\",\n empty,\n empty\n ],\n [\n 1,\n 85,\n \"ArrowRight\",\n 17,\n \"RightArrow\",\n 39,\n \"VK_RIGHT\",\n \"Right\",\n empty\n ],\n [\n 1,\n 86,\n \"ArrowLeft\",\n 15,\n \"LeftArrow\",\n 37,\n \"VK_LEFT\",\n \"Left\",\n empty\n ],\n [\n 1,\n 87,\n \"ArrowDown\",\n 18,\n \"DownArrow\",\n 40,\n \"VK_DOWN\",\n \"Down\",\n empty\n ],\n [\n 1,\n 88,\n \"ArrowUp\",\n 16,\n \"UpArrow\",\n 38,\n \"VK_UP\",\n \"Up\",\n empty\n ],\n [\n 1,\n 89,\n \"NumLock\",\n 83,\n \"NumLock\",\n 144,\n \"VK_NUMLOCK\",\n empty,\n empty\n ],\n [\n 1,\n 90,\n \"NumpadDivide\",\n 113,\n \"NumPad_Divide\",\n 111,\n \"VK_DIVIDE\",\n empty,\n empty\n ],\n [\n 1,\n 91,\n \"NumpadMultiply\",\n 108,\n \"NumPad_Multiply\",\n 106,\n \"VK_MULTIPLY\",\n empty,\n empty\n ],\n [\n 1,\n 92,\n \"NumpadSubtract\",\n 111,\n \"NumPad_Subtract\",\n 109,\n \"VK_SUBTRACT\",\n empty,\n empty\n ],\n [\n 1,\n 93,\n \"NumpadAdd\",\n 109,\n \"NumPad_Add\",\n 107,\n \"VK_ADD\",\n empty,\n empty\n ],\n [\n 1,\n 94,\n \"NumpadEnter\",\n 3,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 95,\n \"Numpad1\",\n 99,\n \"NumPad1\",\n 97,\n \"VK_NUMPAD1\",\n empty,\n empty\n ],\n [\n 1,\n 96,\n \"Numpad2\",\n 100,\n \"NumPad2\",\n 98,\n \"VK_NUMPAD2\",\n empty,\n empty\n ],\n [\n 1,\n 97,\n \"Numpad3\",\n 101,\n \"NumPad3\",\n 99,\n \"VK_NUMPAD3\",\n empty,\n empty\n ],\n [\n 1,\n 98,\n \"Numpad4\",\n 102,\n \"NumPad4\",\n 100,\n \"VK_NUMPAD4\",\n empty,\n empty\n ],\n [\n 1,\n 99,\n \"Numpad5\",\n 103,\n \"NumPad5\",\n 101,\n \"VK_NUMPAD5\",\n empty,\n empty\n ],\n [\n 1,\n 100,\n \"Numpad6\",\n 104,\n \"NumPad6\",\n 102,\n \"VK_NUMPAD6\",\n empty,\n empty\n ],\n [\n 1,\n 101,\n \"Numpad7\",\n 105,\n \"NumPad7\",\n 103,\n \"VK_NUMPAD7\",\n empty,\n empty\n ],\n [\n 1,\n 102,\n \"Numpad8\",\n 106,\n \"NumPad8\",\n 104,\n \"VK_NUMPAD8\",\n empty,\n empty\n ],\n [\n 1,\n 103,\n \"Numpad9\",\n 107,\n \"NumPad9\",\n 105,\n \"VK_NUMPAD9\",\n empty,\n empty\n ],\n [\n 1,\n 104,\n \"Numpad0\",\n 98,\n \"NumPad0\",\n 96,\n \"VK_NUMPAD0\",\n empty,\n empty\n ],\n [\n 1,\n 105,\n \"NumpadDecimal\",\n 112,\n \"NumPad_Decimal\",\n 110,\n \"VK_DECIMAL\",\n empty,\n empty\n ],\n [\n 0,\n 106,\n \"IntlBackslash\",\n 97,\n \"OEM_102\",\n 226,\n \"VK_OEM_102\",\n empty,\n empty\n ],\n [\n 1,\n 107,\n \"ContextMenu\",\n 58,\n \"ContextMenu\",\n 93,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 108,\n \"Power\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 109,\n \"NumpadEqual\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 110,\n \"F13\",\n 71,\n \"F13\",\n 124,\n \"VK_F13\",\n empty,\n empty\n ],\n [\n 1,\n 111,\n \"F14\",\n 72,\n \"F14\",\n 125,\n \"VK_F14\",\n empty,\n empty\n ],\n [\n 1,\n 112,\n \"F15\",\n 73,\n \"F15\",\n 126,\n \"VK_F15\",\n empty,\n empty\n ],\n [\n 1,\n 113,\n \"F16\",\n 74,\n \"F16\",\n 127,\n \"VK_F16\",\n empty,\n empty\n ],\n [\n 1,\n 114,\n \"F17\",\n 75,\n \"F17\",\n 128,\n \"VK_F17\",\n empty,\n empty\n ],\n [\n 1,\n 115,\n \"F18\",\n 76,\n \"F18\",\n 129,\n \"VK_F18\",\n empty,\n empty\n ],\n [\n 1,\n 116,\n \"F19\",\n 77,\n \"F19\",\n 130,\n \"VK_F19\",\n empty,\n empty\n ],\n [\n 1,\n 117,\n \"F20\",\n 78,\n \"F20\",\n 131,\n \"VK_F20\",\n empty,\n empty\n ],\n [\n 1,\n 118,\n \"F21\",\n 79,\n \"F21\",\n 132,\n \"VK_F21\",\n empty,\n empty\n ],\n [\n 1,\n 119,\n \"F22\",\n 80,\n \"F22\",\n 133,\n \"VK_F22\",\n empty,\n empty\n ],\n [\n 1,\n 120,\n \"F23\",\n 81,\n \"F23\",\n 134,\n \"VK_F23\",\n empty,\n empty\n ],\n [\n 1,\n 121,\n \"F24\",\n 82,\n \"F24\",\n 135,\n \"VK_F24\",\n empty,\n empty\n ],\n [\n 1,\n 122,\n \"Open\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 123,\n \"Help\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 124,\n \"Select\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 125,\n \"Again\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 126,\n \"Undo\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 127,\n \"Cut\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 128,\n \"Copy\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 129,\n \"Paste\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 130,\n \"Find\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 131,\n \"AudioVolumeMute\",\n 117,\n \"AudioVolumeMute\",\n 173,\n \"VK_VOLUME_MUTE\",\n empty,\n empty\n ],\n [\n 1,\n 132,\n \"AudioVolumeUp\",\n 118,\n \"AudioVolumeUp\",\n 175,\n \"VK_VOLUME_UP\",\n empty,\n empty\n ],\n [\n 1,\n 133,\n \"AudioVolumeDown\",\n 119,\n \"AudioVolumeDown\",\n 174,\n \"VK_VOLUME_DOWN\",\n empty,\n empty\n ],\n [\n 1,\n 134,\n \"NumpadComma\",\n 110,\n \"NumPad_Separator\",\n 108,\n \"VK_SEPARATOR\",\n empty,\n empty\n ],\n [\n 0,\n 135,\n \"IntlRo\",\n 115,\n \"ABNT_C1\",\n 193,\n \"VK_ABNT_C1\",\n empty,\n empty\n ],\n [\n 1,\n 136,\n \"KanaMode\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 0,\n 137,\n \"IntlYen\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 138,\n \"Convert\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 139,\n \"NonConvert\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 140,\n \"Lang1\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 141,\n \"Lang2\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 142,\n \"Lang3\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 143,\n \"Lang4\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 144,\n \"Lang5\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 145,\n \"Abort\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 146,\n \"Props\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 147,\n \"NumpadParenLeft\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 148,\n \"NumpadParenRight\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 149,\n \"NumpadBackspace\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 150,\n \"NumpadMemoryStore\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 151,\n \"NumpadMemoryRecall\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 152,\n \"NumpadMemoryClear\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 153,\n \"NumpadMemoryAdd\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 154,\n \"NumpadMemorySubtract\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 155,\n \"NumpadClear\",\n 131,\n \"Clear\",\n 12,\n \"VK_CLEAR\",\n empty,\n empty\n ],\n [\n 1,\n 156,\n \"NumpadClearEntry\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 5,\n \"Ctrl\",\n 17,\n \"VK_CONTROL\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 4,\n \"Shift\",\n 16,\n \"VK_SHIFT\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 6,\n \"Alt\",\n 18,\n \"VK_MENU\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 57,\n \"Meta\",\n 91,\n \"VK_COMMAND\",\n empty,\n empty\n ],\n [\n 1,\n 157,\n \"ControlLeft\",\n 5,\n empty,\n 0,\n \"VK_LCONTROL\",\n empty,\n empty\n ],\n [\n 1,\n 158,\n \"ShiftLeft\",\n 4,\n empty,\n 0,\n \"VK_LSHIFT\",\n empty,\n empty\n ],\n [\n 1,\n 159,\n \"AltLeft\",\n 6,\n empty,\n 0,\n \"VK_LMENU\",\n empty,\n empty\n ],\n [\n 1,\n 160,\n \"MetaLeft\",\n 57,\n empty,\n 0,\n \"VK_LWIN\",\n empty,\n empty\n ],\n [\n 1,\n 161,\n \"ControlRight\",\n 5,\n empty,\n 0,\n \"VK_RCONTROL\",\n empty,\n empty\n ],\n [\n 1,\n 162,\n \"ShiftRight\",\n 4,\n empty,\n 0,\n \"VK_RSHIFT\",\n empty,\n empty\n ],\n [\n 1,\n 163,\n \"AltRight\",\n 6,\n empty,\n 0,\n \"VK_RMENU\",\n empty,\n empty\n ],\n [\n 1,\n 164,\n \"MetaRight\",\n 57,\n empty,\n 0,\n \"VK_RWIN\",\n empty,\n empty\n ],\n [\n 1,\n 165,\n \"BrightnessUp\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 166,\n \"BrightnessDown\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 167,\n \"MediaPlay\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 168,\n \"MediaRecord\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 169,\n \"MediaFastForward\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 170,\n \"MediaRewind\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 171,\n \"MediaTrackNext\",\n 124,\n \"MediaTrackNext\",\n 176,\n \"VK_MEDIA_NEXT_TRACK\",\n empty,\n empty\n ],\n [\n 1,\n 172,\n \"MediaTrackPrevious\",\n 125,\n \"MediaTrackPrevious\",\n 177,\n \"VK_MEDIA_PREV_TRACK\",\n empty,\n empty\n ],\n [\n 1,\n 173,\n \"MediaStop\",\n 126,\n \"MediaStop\",\n 178,\n \"VK_MEDIA_STOP\",\n empty,\n empty\n ],\n [\n 1,\n 174,\n \"Eject\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 175,\n \"MediaPlayPause\",\n 127,\n \"MediaPlayPause\",\n 179,\n \"VK_MEDIA_PLAY_PAUSE\",\n empty,\n empty\n ],\n [\n 1,\n 176,\n \"MediaSelect\",\n 128,\n \"LaunchMediaPlayer\",\n 181,\n \"VK_MEDIA_LAUNCH_MEDIA_SELECT\",\n empty,\n empty\n ],\n [\n 1,\n 177,\n \"LaunchMail\",\n 129,\n \"LaunchMail\",\n 180,\n \"VK_MEDIA_LAUNCH_MAIL\",\n empty,\n empty\n ],\n [\n 1,\n 178,\n \"LaunchApp2\",\n 130,\n \"LaunchApp2\",\n 183,\n \"VK_MEDIA_LAUNCH_APP2\",\n empty,\n empty\n ],\n [\n 1,\n 179,\n \"LaunchApp1\",\n 0,\n empty,\n 0,\n \"VK_MEDIA_LAUNCH_APP1\",\n empty,\n empty\n ],\n [\n 1,\n 180,\n \"SelectTask\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 181,\n \"LaunchScreenSaver\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 182,\n \"BrowserSearch\",\n 120,\n \"BrowserSearch\",\n 170,\n \"VK_BROWSER_SEARCH\",\n empty,\n empty\n ],\n [\n 1,\n 183,\n \"BrowserHome\",\n 121,\n \"BrowserHome\",\n 172,\n \"VK_BROWSER_HOME\",\n empty,\n empty\n ],\n [\n 1,\n 184,\n \"BrowserBack\",\n 122,\n \"BrowserBack\",\n 166,\n \"VK_BROWSER_BACK\",\n empty,\n empty\n ],\n [\n 1,\n 185,\n \"BrowserForward\",\n 123,\n \"BrowserForward\",\n 167,\n \"VK_BROWSER_FORWARD\",\n empty,\n empty\n ],\n [\n 1,\n 186,\n \"BrowserStop\",\n 0,\n empty,\n 0,\n \"VK_BROWSER_STOP\",\n empty,\n empty\n ],\n [\n 1,\n 187,\n \"BrowserRefresh\",\n 0,\n empty,\n 0,\n \"VK_BROWSER_REFRESH\",\n empty,\n empty\n ],\n [\n 1,\n 188,\n \"BrowserFavorites\",\n 0,\n empty,\n 0,\n \"VK_BROWSER_FAVORITES\",\n empty,\n empty\n ],\n [\n 1,\n 189,\n \"ZoomToggle\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 190,\n \"MailReply\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 191,\n \"MailForward\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 192,\n \"MailSend\",\n 0,\n empty,\n 0,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 114,\n \"KeyInComposition\",\n 229,\n empty,\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 116,\n \"ABNT_C2\",\n 194,\n \"VK_ABNT_C2\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 96,\n \"OEM_8\",\n 223,\n \"VK_OEM_8\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_KANA\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_HANGUL\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_JUNJA\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_FINAL\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_HANJA\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_KANJI\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_CONVERT\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_NONCONVERT\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_ACCEPT\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_MODECHANGE\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_SELECT\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_PRINT\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_EXECUTE\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_SNAPSHOT\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_HELP\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_APPS\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_PROCESSKEY\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_PACKET\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_DBE_SBCSCHAR\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_DBE_DBCSCHAR\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_ATTN\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_CRSEL\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_EXSEL\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_EREOF\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_PLAY\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_ZOOM\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_NONAME\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_PA1\",\n empty,\n empty\n ],\n [\n 1,\n 0,\n empty,\n 0,\n empty,\n 0,\n \"VK_OEM_CLEAR\",\n empty,\n empty\n ]\n ];\n const seenKeyCode = [];\n const seenScanCode = [];\n for (const mapping of mappings) {\n const [immutable, scanCode, scanCodeStr, keyCode, keyCodeStr, eventKeyCode, vkey, usUserSettingsLabel, generalUserSettingsLabel] = mapping;\n if (!seenScanCode[scanCode]) {\n seenScanCode[scanCode] = true;\n scanCodeStrToInt[scanCodeStr] = scanCode;\n scanCodeLowerCaseStrToInt[scanCodeStr.toLowerCase()] = scanCode;\n if (immutable) IMMUTABLE_CODE_TO_KEY_CODE[scanCode] = keyCode;\n }\n if (!seenKeyCode[keyCode]) {\n seenKeyCode[keyCode] = true;\n if (!keyCodeStr) throw new Error(`String representation missing for key code ${keyCode} around scan code ${scanCodeStr}`);\n uiMap.define(keyCode, keyCodeStr);\n userSettingsUSMap.define(keyCode, usUserSettingsLabel || keyCodeStr);\n userSettingsGeneralMap.define(keyCode, generalUserSettingsLabel || usUserSettingsLabel || keyCodeStr);\n }\n if (eventKeyCode) EVENT_KEY_CODE_MAP[eventKeyCode] = keyCode;\n }\n })();\n var KeyCodeUtils;\n (function(KeyCodeUtils) {\n function toString(keyCode) {\n return uiMap.keyCodeToStr(keyCode);\n }\n KeyCodeUtils.toString = toString;\n function fromString(key) {\n return uiMap.strToKeyCode(key);\n }\n KeyCodeUtils.fromString = fromString;\n function toUserSettingsUS(keyCode) {\n return userSettingsUSMap.keyCodeToStr(keyCode);\n }\n KeyCodeUtils.toUserSettingsUS = toUserSettingsUS;\n function toUserSettingsGeneral(keyCode) {\n return userSettingsGeneralMap.keyCodeToStr(keyCode);\n }\n KeyCodeUtils.toUserSettingsGeneral = toUserSettingsGeneral;\n function fromUserSettings(key) {\n return userSettingsUSMap.strToKeyCode(key) || userSettingsGeneralMap.strToKeyCode(key);\n }\n KeyCodeUtils.fromUserSettings = fromUserSettings;\n function toElectronAccelerator(keyCode) {\n if (keyCode >= 98 && keyCode <= 113) return null;\n switch (keyCode) {\n case 16: return \"Up\";\n case 18: return \"Down\";\n case 15: return \"Left\";\n case 17: return \"Right\";\n }\n return uiMap.keyCodeToStr(keyCode);\n }\n KeyCodeUtils.toElectronAccelerator = toElectronAccelerator;\n })(KeyCodeUtils || (KeyCodeUtils = {}));\n function KeyChord(firstPart, secondPart) {\n return (firstPart | (secondPart & 65535) << 16 >>> 0) >>> 0;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/process.js\n let safeProcess;\n const vscodeGlobal = globalThis.vscode;\n if (typeof vscodeGlobal !== \"undefined\" && typeof vscodeGlobal.process !== \"undefined\") {\n const sandboxProcess = vscodeGlobal.process;\n safeProcess = {\n get platform() {\n return sandboxProcess.platform;\n },\n get arch() {\n return sandboxProcess.arch;\n },\n get env() {\n return sandboxProcess.env;\n },\n cwd() {\n return sandboxProcess.cwd();\n }\n };\n } else if (typeof process !== \"undefined\" && typeof process?.versions?.node === \"string\") safeProcess = {\n get platform() {\n return process.platform;\n },\n get arch() {\n return process.arch;\n },\n get env() {\n return process.env;\n },\n cwd() {\n return process.env[\"VSCODE_CWD\"] || process.cwd();\n }\n };\n else safeProcess = {\n get platform() {\n return isWindows ? \"win32\" : isMacintosh ? \"darwin\" : \"linux\";\n },\n get arch() {},\n get env() {\n return {};\n },\n cwd() {\n return \"/\";\n }\n };\n /**\n * Provides safe access to the `cwd` property in node.js, sandboxed or web\n * environments.\n *\n * Note: in web, this property is hardcoded to be `/`.\n *\n * @skipMangle\n */\n const cwd = safeProcess.cwd;\n /**\n * Provides safe access to the `env` property in node.js, sandboxed or web\n * environments.\n *\n * Note: in web, this property is hardcoded to be `{}`.\n */\n const env = safeProcess.env;\n /**\n * Provides safe access to the `platform` property in node.js, sandboxed or web\n * environments.\n */\n const platform = safeProcess.platform;\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/path.js\n /**\n * Copyright Joyent, Inc. and other Node contributors.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to permit\n * persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n const CHAR_UPPERCASE_A = 65;\n const CHAR_LOWERCASE_A = 97;\n const CHAR_UPPERCASE_Z = 90;\n const CHAR_LOWERCASE_Z = 122;\n const CHAR_DOT = 46;\n const CHAR_FORWARD_SLASH = 47;\n const CHAR_BACKWARD_SLASH = 92;\n const CHAR_COLON = 58;\n const CHAR_QUESTION_MARK = 63;\n var ErrorInvalidArgType = class extends Error {\n constructor(name, expected, actual) {\n let determiner;\n if (typeof expected === \"string\" && expected.indexOf(\"not \") === 0) {\n determiner = \"must not be\";\n expected = expected.replace(/^not /, \"\");\n } else determiner = \"must be\";\n let msg = `The \"${name}\" ${name.indexOf(\".\") !== -1 ? \"property\" : \"argument\"} ${determiner} of type ${expected}`;\n msg += `. Received type ${typeof actual}`;\n super(msg);\n this.code = \"ERR_INVALID_ARG_TYPE\";\n }\n };\n function validateObject(pathObject, name) {\n if (pathObject === null || typeof pathObject !== \"object\") throw new ErrorInvalidArgType(name, \"Object\", pathObject);\n }\n function validateString(value, name) {\n if (typeof value !== \"string\") throw new ErrorInvalidArgType(name, \"string\", value);\n }\n const platformIsWin32 = platform === \"win32\";\n function isPathSeparator(code) {\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n }\n function isPosixPathSeparator(code) {\n return code === CHAR_FORWARD_SLASH;\n }\n function isWindowsDeviceRoot(code) {\n return code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z || code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z;\n }\n function normalizeString(path, allowAboveRoot, separator, isPathSeparator) {\n let res = \"\";\n let lastSegmentLength = 0;\n let lastSlash = -1;\n let dots = 0;\n let code = 0;\n for (let i = 0; i <= path.length; ++i) {\n if (i < path.length) code = path.charCodeAt(i);\n else if (isPathSeparator(code)) break;\n else code = CHAR_FORWARD_SLASH;\n if (isPathSeparator(code)) {\n if (lastSlash === i - 1 || dots === 1);\n else if (dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== CHAR_DOT || res.charCodeAt(res.length - 2) !== CHAR_DOT) {\n if (res.length > 2) {\n const lastSlashIndex = res.lastIndexOf(separator);\n if (lastSlashIndex === -1) {\n res = \"\";\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf(separator);\n }\n lastSlash = i;\n dots = 0;\n continue;\n } else if (res.length !== 0) {\n res = \"\";\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n res += res.length > 0 ? `${separator}..` : \"..\";\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0) res += `${separator}${path.slice(lastSlash + 1, i)}`;\n else res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === CHAR_DOT && dots !== -1) ++dots;\n else dots = -1;\n }\n return res;\n }\n function formatExt(ext) {\n return ext ? `${ext[0] === \".\" ? \"\" : \".\"}${ext}` : \"\";\n }\n function _format(sep, pathObject) {\n validateObject(pathObject, \"pathObject\");\n const dir = pathObject.dir || pathObject.root;\n const base = pathObject.base || `${pathObject.name || \"\"}${formatExt(pathObject.ext)}`;\n if (!dir) return base;\n return dir === pathObject.root ? `${dir}${base}` : `${dir}${sep}${base}`;\n }\n const win32 = {\n resolve(...pathSegments) {\n let resolvedDevice = \"\";\n let resolvedTail = \"\";\n let resolvedAbsolute = false;\n for (let i = pathSegments.length - 1; i >= -1; i--) {\n let path;\n if (i >= 0) {\n path = pathSegments[i];\n validateString(path, `paths[${i}]`);\n if (path.length === 0) continue;\n } else if (resolvedDevice.length === 0) path = cwd();\n else {\n path = env[`=${resolvedDevice}`] || cwd();\n if (path === void 0 || path.slice(0, 2).toLowerCase() !== resolvedDevice.toLowerCase() && path.charCodeAt(2) === CHAR_BACKWARD_SLASH) path = `${resolvedDevice}\\\\`;\n }\n const len = path.length;\n let rootEnd = 0;\n let device = \"\";\n let isAbsolute = false;\n const code = path.charCodeAt(0);\n if (len === 1) {\n if (isPathSeparator(code)) {\n rootEnd = 1;\n isAbsolute = true;\n }\n } else if (isPathSeparator(code)) {\n isAbsolute = true;\n if (isPathSeparator(path.charCodeAt(1))) {\n let j = 2;\n let last = j;\n while (j < len && !isPathSeparator(path.charCodeAt(j))) j++;\n if (j < len && j !== last) {\n const firstPart = path.slice(last, j);\n last = j;\n while (j < len && isPathSeparator(path.charCodeAt(j))) j++;\n if (j < len && j !== last) {\n last = j;\n while (j < len && !isPathSeparator(path.charCodeAt(j))) j++;\n if (j === len || j !== last) {\n device = `\\\\\\\\${firstPart}\\\\${path.slice(last, j)}`;\n rootEnd = j;\n }\n }\n }\n } else rootEnd = 1;\n } else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\n device = path.slice(0, 2);\n rootEnd = 2;\n if (len > 2 && isPathSeparator(path.charCodeAt(2))) {\n isAbsolute = true;\n rootEnd = 3;\n }\n }\n if (device.length > 0) if (resolvedDevice.length > 0) {\n if (device.toLowerCase() !== resolvedDevice.toLowerCase()) continue;\n } else resolvedDevice = device;\n if (resolvedAbsolute) {\n if (resolvedDevice.length > 0) break;\n } else {\n resolvedTail = `${path.slice(rootEnd)}\\\\${resolvedTail}`;\n resolvedAbsolute = isAbsolute;\n if (isAbsolute && resolvedDevice.length > 0) break;\n }\n }\n resolvedTail = normalizeString(resolvedTail, !resolvedAbsolute, \"\\\\\", isPathSeparator);\n return resolvedAbsolute ? `${resolvedDevice}\\\\${resolvedTail}` : `${resolvedDevice}${resolvedTail}` || \".\";\n },\n normalize(path) {\n validateString(path, \"path\");\n const len = path.length;\n if (len === 0) return \".\";\n let rootEnd = 0;\n let device;\n let isAbsolute = false;\n const code = path.charCodeAt(0);\n if (len === 1) return isPosixPathSeparator(code) ? \"\\\\\" : path;\n if (isPathSeparator(code)) {\n isAbsolute = true;\n if (isPathSeparator(path.charCodeAt(1))) {\n let j = 2;\n let last = j;\n while (j < len && !isPathSeparator(path.charCodeAt(j))) j++;\n if (j < len && j !== last) {\n const firstPart = path.slice(last, j);\n last = j;\n while (j < len && isPathSeparator(path.charCodeAt(j))) j++;\n if (j < len && j !== last) {\n last = j;\n while (j < len && !isPathSeparator(path.charCodeAt(j))) j++;\n if (j === len) return `\\\\\\\\${firstPart}\\\\${path.slice(last)}\\\\`;\n if (j !== last) {\n device = `\\\\\\\\${firstPart}\\\\${path.slice(last, j)}`;\n rootEnd = j;\n }\n }\n }\n } else rootEnd = 1;\n } else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\n device = path.slice(0, 2);\n rootEnd = 2;\n if (len > 2 && isPathSeparator(path.charCodeAt(2))) {\n isAbsolute = true;\n rootEnd = 3;\n }\n }\n let tail = rootEnd < len ? normalizeString(path.slice(rootEnd), !isAbsolute, \"\\\\\", isPathSeparator) : \"\";\n if (tail.length === 0 && !isAbsolute) tail = \".\";\n if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) tail += \"\\\\\";\n if (!isAbsolute && device === void 0 && path.includes(\":\")) {\n if (tail.length >= 2 && isWindowsDeviceRoot(tail.charCodeAt(0)) && tail.charCodeAt(1) === CHAR_COLON) return `.\\\\${tail}`;\n let index = path.indexOf(\":\");\n do\n if (index === len - 1 || isPathSeparator(path.charCodeAt(index + 1))) return `.\\\\${tail}`;\n while ((index = path.indexOf(\":\", index + 1)) !== -1);\n }\n if (device === void 0) return isAbsolute ? `\\\\${tail}` : tail;\n return isAbsolute ? `${device}\\\\${tail}` : `${device}${tail}`;\n },\n isAbsolute(path) {\n validateString(path, \"path\");\n const len = path.length;\n if (len === 0) return false;\n const code = path.charCodeAt(0);\n return isPathSeparator(code) || len > 2 && isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON && isPathSeparator(path.charCodeAt(2));\n },\n join(...paths) {\n if (paths.length === 0) return \".\";\n let joined;\n let firstPart;\n for (let i = 0; i < paths.length; ++i) {\n const arg = paths[i];\n validateString(arg, \"path\");\n if (arg.length > 0) if (joined === void 0) joined = firstPart = arg;\n else joined += `\\\\${arg}`;\n }\n if (joined === void 0) return \".\";\n let needsReplace = true;\n let slashCount = 0;\n if (typeof firstPart === \"string\" && isPathSeparator(firstPart.charCodeAt(0))) {\n ++slashCount;\n const firstLen = firstPart.length;\n if (firstLen > 1 && isPathSeparator(firstPart.charCodeAt(1))) {\n ++slashCount;\n if (firstLen > 2) if (isPathSeparator(firstPart.charCodeAt(2))) ++slashCount;\n else needsReplace = false;\n }\n }\n if (needsReplace) {\n while (slashCount < joined.length && isPathSeparator(joined.charCodeAt(slashCount))) slashCount++;\n if (slashCount >= 2) joined = `\\\\${joined.slice(slashCount)}`;\n }\n return win32.normalize(joined);\n },\n relative(from, to) {\n validateString(from, \"from\");\n validateString(to, \"to\");\n if (from === to) return \"\";\n const fromOrig = win32.resolve(from);\n const toOrig = win32.resolve(to);\n if (fromOrig === toOrig) return \"\";\n from = fromOrig.toLowerCase();\n to = toOrig.toLowerCase();\n if (from === to) return \"\";\n if (fromOrig.length !== from.length || toOrig.length !== to.length) {\n const fromSplit = fromOrig.split(\"\\\\\");\n const toSplit = toOrig.split(\"\\\\\");\n if (fromSplit[fromSplit.length - 1] === \"\") fromSplit.pop();\n if (toSplit[toSplit.length - 1] === \"\") toSplit.pop();\n const fromLen = fromSplit.length;\n const toLen = toSplit.length;\n const length = fromLen < toLen ? fromLen : toLen;\n let i;\n for (i = 0; i < length; i++) if (fromSplit[i].toLowerCase() !== toSplit[i].toLowerCase()) break;\n if (i === 0) return toOrig;\n else if (i === length) {\n if (toLen > length) return toSplit.slice(i).join(\"\\\\\");\n if (fromLen > length) return \"..\\\\\".repeat(fromLen - 1 - i) + \"..\";\n return \"\";\n }\n return \"..\\\\\".repeat(fromLen - i) + toSplit.slice(i).join(\"\\\\\");\n }\n let fromStart = 0;\n while (fromStart < from.length && from.charCodeAt(fromStart) === CHAR_BACKWARD_SLASH) fromStart++;\n let fromEnd = from.length;\n while (fromEnd - 1 > fromStart && from.charCodeAt(fromEnd - 1) === CHAR_BACKWARD_SLASH) fromEnd--;\n const fromLen = fromEnd - fromStart;\n let toStart = 0;\n while (toStart < to.length && to.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) toStart++;\n let toEnd = to.length;\n while (toEnd - 1 > toStart && to.charCodeAt(toEnd - 1) === CHAR_BACKWARD_SLASH) toEnd--;\n const toLen = toEnd - toStart;\n const length = fromLen < toLen ? fromLen : toLen;\n let lastCommonSep = -1;\n let i = 0;\n for (; i < length; i++) {\n const fromCode = from.charCodeAt(fromStart + i);\n if (fromCode !== to.charCodeAt(toStart + i)) break;\n else if (fromCode === CHAR_BACKWARD_SLASH) lastCommonSep = i;\n }\n if (i !== length) {\n if (lastCommonSep === -1) return toOrig;\n } else {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) return toOrig.slice(toStart + i + 1);\n if (i === 2) return toOrig.slice(toStart + i);\n }\n if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) lastCommonSep = i;\n else if (i === 2) lastCommonSep = 3;\n }\n if (lastCommonSep === -1) lastCommonSep = 0;\n }\n let out = \"\";\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) out += out.length === 0 ? \"..\" : \"\\\\..\";\n toStart += lastCommonSep;\n if (out.length > 0) return `${out}${toOrig.slice(toStart, toEnd)}`;\n if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) ++toStart;\n return toOrig.slice(toStart, toEnd);\n },\n toNamespacedPath(path) {\n if (typeof path !== \"string\" || path.length === 0) return path;\n const resolvedPath = win32.resolve(path);\n if (resolvedPath.length <= 2) return path;\n if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) {\n if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) {\n const code = resolvedPath.charCodeAt(2);\n if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) return `\\\\\\\\?\\\\UNC\\\\${resolvedPath.slice(2)}`;\n }\n } else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0)) && resolvedPath.charCodeAt(1) === CHAR_COLON && resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH) return `\\\\\\\\?\\\\${resolvedPath}`;\n return resolvedPath;\n },\n dirname(path) {\n validateString(path, \"path\");\n const len = path.length;\n if (len === 0) return \".\";\n let rootEnd = -1;\n let offset = 0;\n const code = path.charCodeAt(0);\n if (len === 1) return isPathSeparator(code) ? path : \".\";\n if (isPathSeparator(code)) {\n rootEnd = offset = 1;\n if (isPathSeparator(path.charCodeAt(1))) {\n let j = 2;\n let last = j;\n while (j < len && !isPathSeparator(path.charCodeAt(j))) j++;\n if (j < len && j !== last) {\n last = j;\n while (j < len && isPathSeparator(path.charCodeAt(j))) j++;\n if (j < len && j !== last) {\n last = j;\n while (j < len && !isPathSeparator(path.charCodeAt(j))) j++;\n if (j === len) return path;\n if (j !== last) rootEnd = offset = j + 1;\n }\n }\n }\n } else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\n rootEnd = len > 2 && isPathSeparator(path.charCodeAt(2)) ? 3 : 2;\n offset = rootEnd;\n }\n let end = -1;\n let matchedSlash = true;\n for (let i = len - 1; i >= offset; --i) if (isPathSeparator(path.charCodeAt(i))) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else matchedSlash = false;\n if (end === -1) {\n if (rootEnd === -1) return \".\";\n end = rootEnd;\n }\n return path.slice(0, end);\n },\n basename(path, suffix) {\n if (suffix !== void 0) validateString(suffix, \"suffix\");\n validateString(path, \"path\");\n let start = 0;\n let end = -1;\n let matchedSlash = true;\n let i;\n if (path.length >= 2 && isWindowsDeviceRoot(path.charCodeAt(0)) && path.charCodeAt(1) === CHAR_COLON) start = 2;\n if (suffix !== void 0 && suffix.length > 0 && suffix.length <= path.length) {\n if (suffix === path) return \"\";\n let extIdx = suffix.length - 1;\n let firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= start; --i) {\n const code = path.charCodeAt(i);\n if (isPathSeparator(code)) {\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) if (code === suffix.charCodeAt(extIdx)) {\n if (--extIdx === -1) end = i;\n } else {\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n if (start === end) end = firstNonSlashEnd;\n else if (end === -1) end = path.length;\n return path.slice(start, end);\n }\n for (i = path.length - 1; i >= start; --i) if (isPathSeparator(path.charCodeAt(i))) {\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (end === -1) return \"\";\n return path.slice(start, end);\n },\n extname(path) {\n validateString(path, \"path\");\n let start = 0;\n let startDot = -1;\n let startPart = 0;\n let end = -1;\n let matchedSlash = true;\n let preDotState = 0;\n if (path.length >= 2 && path.charCodeAt(1) === CHAR_COLON && isWindowsDeviceRoot(path.charCodeAt(0))) start = startPart = 2;\n for (let i = path.length - 1; i >= start; --i) {\n const code = path.charCodeAt(i);\n if (isPathSeparator(code)) {\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (code === CHAR_DOT) {\n if (startDot === -1) startDot = i;\n else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) preDotState = -1;\n }\n if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) return \"\";\n return path.slice(startDot, end);\n },\n format: _format.bind(null, \"\\\\\"),\n parse(path) {\n validateString(path, \"path\");\n const ret = {\n root: \"\",\n dir: \"\",\n base: \"\",\n ext: \"\",\n name: \"\"\n };\n if (path.length === 0) return ret;\n const len = path.length;\n let rootEnd = 0;\n let code = path.charCodeAt(0);\n if (len === 1) {\n if (isPathSeparator(code)) {\n ret.root = ret.dir = path;\n return ret;\n }\n ret.base = ret.name = path;\n return ret;\n }\n if (isPathSeparator(code)) {\n rootEnd = 1;\n if (isPathSeparator(path.charCodeAt(1))) {\n let j = 2;\n let last = j;\n while (j < len && !isPathSeparator(path.charCodeAt(j))) j++;\n if (j < len && j !== last) {\n last = j;\n while (j < len && isPathSeparator(path.charCodeAt(j))) j++;\n if (j < len && j !== last) {\n last = j;\n while (j < len && !isPathSeparator(path.charCodeAt(j))) j++;\n if (j === len) rootEnd = j;\n else if (j !== last) rootEnd = j + 1;\n }\n }\n }\n } else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\n if (len <= 2) {\n ret.root = ret.dir = path;\n return ret;\n }\n rootEnd = 2;\n if (isPathSeparator(path.charCodeAt(2))) {\n if (len === 3) {\n ret.root = ret.dir = path;\n return ret;\n }\n rootEnd = 3;\n }\n }\n if (rootEnd > 0) ret.root = path.slice(0, rootEnd);\n let startDot = -1;\n let startPart = rootEnd;\n let end = -1;\n let matchedSlash = true;\n let i = path.length - 1;\n let preDotState = 0;\n for (; i >= rootEnd; --i) {\n code = path.charCodeAt(i);\n if (isPathSeparator(code)) {\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (code === CHAR_DOT) {\n if (startDot === -1) startDot = i;\n else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) preDotState = -1;\n }\n if (end !== -1) if (startDot === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) ret.base = ret.name = path.slice(startPart, end);\n else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n ret.ext = path.slice(startDot, end);\n }\n if (startPart > 0 && startPart !== rootEnd) ret.dir = path.slice(0, startPart - 1);\n else ret.dir = ret.root;\n return ret;\n },\n sep: \"\\\\\",\n delimiter: \";\",\n win32: null,\n posix: null\n };\n const posixCwd = (() => {\n if (platformIsWin32) {\n const regexp = /\\\\/g;\n return () => {\n const cwd$1 = cwd().replace(regexp, \"/\");\n return cwd$1.slice(cwd$1.indexOf(\"/\"));\n };\n }\n return () => cwd();\n })();\n const posix = {\n resolve(...pathSegments) {\n let resolvedPath = \"\";\n let resolvedAbsolute = false;\n for (let i = pathSegments.length - 1; i >= 0 && !resolvedAbsolute; i--) {\n const path = pathSegments[i];\n validateString(path, `paths[${i}]`);\n if (path.length === 0) continue;\n resolvedPath = `${path}/${resolvedPath}`;\n resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\n }\n if (!resolvedAbsolute) {\n const cwd = posixCwd();\n resolvedPath = `${cwd}/${resolvedPath}`;\n resolvedAbsolute = cwd.charCodeAt(0) === CHAR_FORWARD_SLASH;\n }\n resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, \"/\", isPosixPathSeparator);\n if (resolvedAbsolute) return `/${resolvedPath}`;\n return resolvedPath.length > 0 ? resolvedPath : \".\";\n },\n normalize(path) {\n validateString(path, \"path\");\n if (path.length === 0) return \".\";\n const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\n const trailingSeparator = path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH;\n path = normalizeString(path, !isAbsolute, \"/\", isPosixPathSeparator);\n if (path.length === 0) {\n if (isAbsolute) return \"/\";\n return trailingSeparator ? \"./\" : \".\";\n }\n if (trailingSeparator) path += \"/\";\n return isAbsolute ? `/${path}` : path;\n },\n isAbsolute(path) {\n validateString(path, \"path\");\n return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH;\n },\n join(...paths) {\n if (paths.length === 0) return \".\";\n const path = [];\n for (let i = 0; i < paths.length; ++i) {\n const arg = paths[i];\n validateString(arg, \"path\");\n if (arg.length > 0) path.push(arg);\n }\n if (path.length === 0) return \".\";\n return posix.normalize(path.join(\"/\"));\n },\n relative(from, to) {\n validateString(from, \"from\");\n validateString(to, \"to\");\n if (from === to) return \"\";\n from = posix.resolve(from);\n to = posix.resolve(to);\n if (from === to) return \"\";\n const fromStart = 1;\n const fromEnd = from.length;\n const fromLen = fromEnd - fromStart;\n const toStart = 1;\n const toLen = to.length - toStart;\n const length = fromLen < toLen ? fromLen : toLen;\n let lastCommonSep = -1;\n let i = 0;\n for (; i < length; i++) {\n const fromCode = from.charCodeAt(fromStart + i);\n if (fromCode !== to.charCodeAt(toStart + i)) break;\n else if (fromCode === CHAR_FORWARD_SLASH) lastCommonSep = i;\n }\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) return to.slice(toStart + i + 1);\n if (i === 0) return to.slice(toStart + i);\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) lastCommonSep = i;\n else if (i === 0) lastCommonSep = 0;\n }\n }\n let out = \"\";\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) out += out.length === 0 ? \"..\" : \"/..\";\n return `${out}${to.slice(toStart + lastCommonSep)}`;\n },\n toNamespacedPath(path) {\n return path;\n },\n dirname(path) {\n validateString(path, \"path\");\n if (path.length === 0) return \".\";\n const hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\n let end = -1;\n let matchedSlash = true;\n for (let i = path.length - 1; i >= 1; --i) if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else matchedSlash = false;\n if (end === -1) return hasRoot ? \"/\" : \".\";\n if (hasRoot && end === 1) return \"//\";\n return path.slice(0, end);\n },\n basename(path, suffix) {\n if (suffix !== void 0) validateString(suffix, \"suffix\");\n validateString(path, \"path\");\n let start = 0;\n let end = -1;\n let matchedSlash = true;\n let i;\n if (suffix !== void 0 && suffix.length > 0 && suffix.length <= path.length) {\n if (suffix === path) return \"\";\n let extIdx = suffix.length - 1;\n let firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n const code = path.charCodeAt(i);\n if (code === CHAR_FORWARD_SLASH) {\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) if (code === suffix.charCodeAt(extIdx)) {\n if (--extIdx === -1) end = i;\n } else {\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n if (start === end) end = firstNonSlashEnd;\n else if (end === -1) end = path.length;\n return path.slice(start, end);\n }\n for (i = path.length - 1; i >= 0; --i) if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) {\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (end === -1) return \"\";\n return path.slice(start, end);\n },\n extname(path) {\n validateString(path, \"path\");\n let startDot = -1;\n let startPart = 0;\n let end = -1;\n let matchedSlash = true;\n let preDotState = 0;\n for (let i = path.length - 1; i >= 0; --i) {\n const char = path[i];\n if (char === \"/\") {\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (char === \".\") {\n if (startDot === -1) startDot = i;\n else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) preDotState = -1;\n }\n if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) return \"\";\n return path.slice(startDot, end);\n },\n format: _format.bind(null, \"/\"),\n parse(path) {\n validateString(path, \"path\");\n const ret = {\n root: \"\",\n dir: \"\",\n base: \"\",\n ext: \"\",\n name: \"\"\n };\n if (path.length === 0) return ret;\n const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\n let start;\n if (isAbsolute) {\n ret.root = \"/\";\n start = 1;\n } else start = 0;\n let startDot = -1;\n let startPart = 0;\n let end = -1;\n let matchedSlash = true;\n let i = path.length - 1;\n let preDotState = 0;\n for (; i >= start; --i) {\n const code = path.charCodeAt(i);\n if (code === CHAR_FORWARD_SLASH) {\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (code === CHAR_DOT) {\n if (startDot === -1) startDot = i;\n else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) preDotState = -1;\n }\n if (end !== -1) {\n const start = startPart === 0 && isAbsolute ? 1 : startPart;\n if (startDot === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) ret.base = ret.name = path.slice(start, end);\n else {\n ret.name = path.slice(start, startDot);\n ret.base = path.slice(start, end);\n ret.ext = path.slice(startDot, end);\n }\n }\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);\n else if (isAbsolute) ret.dir = \"/\";\n return ret;\n },\n sep: \"/\",\n delimiter: \":\",\n win32: null,\n posix: null\n };\n posix.win32 = win32.win32 = win32;\n posix.posix = win32.posix = posix;\n platformIsWin32 ? win32.normalize : posix.normalize;\n platformIsWin32 ? win32.resolve : posix.resolve;\n platformIsWin32 ? win32.relative : posix.relative;\n platformIsWin32 ? win32.dirname : posix.dirname;\n platformIsWin32 ? win32.basename : posix.basename;\n platformIsWin32 ? win32.extname : posix.extname;\n platformIsWin32 ? win32.sep : posix.sep;\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/uri.js\n const _schemePattern = /^\\w[\\w\\d+.-]*$/;\n const _singleSlashStart = /^\\//;\n const _doubleSlashStart = /^\\/\\//;\n function _validateUri(ret, _strict) {\n if (!ret.scheme && _strict) throw new Error(`[UriError]: Scheme is missing: {scheme: \"\", authority: \"${ret.authority}\", path: \"${ret.path}\", query: \"${ret.query}\", fragment: \"${ret.fragment}\"}`);\n if (ret.scheme && !_schemePattern.test(ret.scheme)) throw new Error(\"[UriError]: Scheme contains illegal characters.\");\n if (ret.path) {\n if (ret.authority) {\n if (!_singleSlashStart.test(ret.path)) throw new Error(\"[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash (\\\"/\\\") character\");\n } else if (_doubleSlashStart.test(ret.path)) throw new Error(\"[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters (\\\"//\\\")\");\n }\n }\n function _schemeFix(scheme, _strict) {\n if (!scheme && !_strict) return \"file\";\n return scheme;\n }\n function _referenceResolution(scheme, path) {\n switch (scheme) {\n case \"https\":\n case \"http\":\n case \"file\":\n if (!path) path = _slash;\n else if (path[0] !== _slash) path = _slash + path;\n break;\n }\n return path;\n }\n const _empty = \"\";\n const _slash = \"/\";\n const _regexp = /^(([^:/?#]+?):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\n /**\n * Uniform Resource Identifier (URI) http://tools.ietf.org/html/rfc3986.\n * This class is a simple parser which creates the basic component parts\n * (http://tools.ietf.org/html/rfc3986#section-3) with minimal validation\n * and encoding.\n *\n * ```txt\n * foo://example.com:8042/over/there?name=ferret#nose\n * \\_/ \\______________/\\_________/ \\_________/ \\__/\n * | | | | |\n * scheme authority path query fragment\n * | _____________________|__\n * / \\ / \\\n * urn:example:animal:ferret:nose\n * ```\n */\n var URI = class URI {\n static isUri(thing) {\n if (thing instanceof URI) return true;\n if (!thing || typeof thing !== \"object\") return false;\n return typeof thing.authority === \"string\" && typeof thing.fragment === \"string\" && typeof thing.path === \"string\" && typeof thing.query === \"string\" && typeof thing.scheme === \"string\" && typeof thing.fsPath === \"string\" && typeof thing.with === \"function\" && typeof thing.toString === \"function\";\n }\n /**\n * @internal\n */\n constructor(schemeOrData, authority, path, query, fragment, _strict = false) {\n if (typeof schemeOrData === \"object\") {\n this.scheme = schemeOrData.scheme || _empty;\n this.authority = schemeOrData.authority || _empty;\n this.path = schemeOrData.path || _empty;\n this.query = schemeOrData.query || _empty;\n this.fragment = schemeOrData.fragment || _empty;\n } else {\n this.scheme = _schemeFix(schemeOrData, _strict);\n this.authority = authority || _empty;\n this.path = _referenceResolution(this.scheme, path || _empty);\n this.query = query || _empty;\n this.fragment = fragment || _empty;\n _validateUri(this, _strict);\n }\n }\n /**\n * Returns a string representing the corresponding file system path of this URI.\n * Will handle UNC paths, normalizes windows drive letters to lower-case, and uses the\n * platform specific path separator.\n *\n * * Will *not* validate the path for invalid characters and semantics.\n * * Will *not* look at the scheme of this URI.\n * * The result shall *not* be used for display purposes but for accessing a file on disk.\n *\n *\n * The *difference* to `URI#path` is the use of the platform specific separator and the handling\n * of UNC paths. See the below sample of a file-uri with an authority (UNC path).\n *\n * ```ts\n const u = URI.parse('file://server/c$/folder/file.txt')\n u.authority === 'server'\n u.path === '/shares/c$/file.txt'\n u.fsPath === '\\\\server\\c$\\folder\\file.txt'\n ```\n *\n * Using `URI#path` to read a file (using fs-apis) would not be enough because parts of the path,\n * namely the server name, would be missing. Therefore `URI#fsPath` exists - it's sugar to ease working\n * with URIs that represent files on disk (`file` scheme).\n */\n get fsPath() {\n return uriToFsPath(this, false);\n }\n with(change) {\n if (!change) return this;\n let { scheme, authority, path, query, fragment } = change;\n if (scheme === void 0) scheme = this.scheme;\n else if (scheme === null) scheme = _empty;\n if (authority === void 0) authority = this.authority;\n else if (authority === null) authority = _empty;\n if (path === void 0) path = this.path;\n else if (path === null) path = _empty;\n if (query === void 0) query = this.query;\n else if (query === null) query = _empty;\n if (fragment === void 0) fragment = this.fragment;\n else if (fragment === null) fragment = _empty;\n if (scheme === this.scheme && authority === this.authority && path === this.path && query === this.query && fragment === this.fragment) return this;\n return new Uri(scheme, authority, path, query, fragment);\n }\n /**\n * Creates a new URI from a string, e.g. `http://www.example.com/some/path`,\n * `file:///usr/home`, or `scheme:with/path`.\n *\n * @param value A string which represents an URI (see `URI#toString`).\n */\n static parse(value, _strict = false) {\n const match = _regexp.exec(value);\n if (!match) return new Uri(_empty, _empty, _empty, _empty, _empty);\n return new Uri(match[2] || _empty, percentDecode(match[4] || _empty), percentDecode(match[5] || _empty), percentDecode(match[7] || _empty), percentDecode(match[9] || _empty), _strict);\n }\n /**\n * Creates a new URI from a file system path, e.g. `c:\\my\\files`,\n * `/usr/home`, or `\\\\server\\share\\some\\path`.\n *\n * The *difference* between `URI#parse` and `URI#file` is that the latter treats the argument\n * as path, not as stringified-uri. E.g. `URI.file(path)` is **not the same as**\n * `URI.parse('file://' + path)` because the path might contain characters that are\n * interpreted (# and ?). See the following sample:\n * ```ts\n const good = URI.file('/coding/c#/project1');\n good.scheme === 'file';\n good.path === '/coding/c#/project1';\n good.fragment === '';\n const bad = URI.parse('file://' + '/coding/c#/project1');\n bad.scheme === 'file';\n bad.path === '/coding/c'; // path is now broken\n bad.fragment === '/project1';\n ```\n *\n * @param path A file system path (see `URI#fsPath`)\n */\n static file(path) {\n let authority = _empty;\n if (isWindows) path = path.replace(/\\\\/g, _slash);\n if (path[0] === _slash && path[1] === _slash) {\n const idx = path.indexOf(_slash, 2);\n if (idx === -1) {\n authority = path.substring(2);\n path = _slash;\n } else {\n authority = path.substring(2, idx);\n path = path.substring(idx) || _slash;\n }\n }\n return new Uri(\"file\", authority, path, _empty, _empty);\n }\n /**\n * Creates new URI from uri components.\n *\n * Unless `strict` is `true` the scheme is defaults to be `file`. This function performs\n * validation and should be used for untrusted uri components retrieved from storage,\n * user input, command arguments etc\n */\n static from(components, strict) {\n return new Uri(components.scheme, components.authority, components.path, components.query, components.fragment, strict);\n }\n /**\n * Join a URI path with path fragments and normalizes the resulting path.\n *\n * @param uri The input URI.\n * @param pathFragment The path fragment to add to the URI path.\n * @returns The resulting URI.\n */\n static joinPath(uri, ...pathFragment) {\n if (!uri.path) throw new Error(`[UriError]: cannot call joinPath on URI without path`);\n let newPath;\n if (isWindows && uri.scheme === \"file\") newPath = URI.file(win32.join(uriToFsPath(uri, true), ...pathFragment)).path;\n else newPath = posix.join(uri.path, ...pathFragment);\n return uri.with({ path: newPath });\n }\n /**\n * Creates a string representation for this URI. It's guaranteed that calling\n * `URI.parse` with the result of this function creates an URI which is equal\n * to this URI.\n *\n * * The result shall *not* be used for display purposes but for externalization or transport.\n * * The result will be encoded using the percentage encoding and encoding happens mostly\n * ignore the scheme-specific encoding rules.\n *\n * @param skipEncoding Do not encode the result, default is `false`\n */\n toString(skipEncoding = false) {\n return _asFormatted(this, skipEncoding);\n }\n toJSON() {\n return this;\n }\n static revive(data) {\n if (!data) return data;\n else if (data instanceof URI) return data;\n else {\n const result = new Uri(data);\n result._formatted = data.external ?? null;\n result._fsPath = data._sep === _pathSepMarker ? data.fsPath ?? null : null;\n return result;\n }\n }\n };\n const _pathSepMarker = isWindows ? 1 : void 0;\n var Uri = class extends URI {\n constructor() {\n super(...arguments);\n this._formatted = null;\n this._fsPath = null;\n }\n get fsPath() {\n if (!this._fsPath) this._fsPath = uriToFsPath(this, false);\n return this._fsPath;\n }\n toString(skipEncoding = false) {\n if (!skipEncoding) {\n if (!this._formatted) this._formatted = _asFormatted(this, false);\n return this._formatted;\n } else return _asFormatted(this, true);\n }\n toJSON() {\n const res = { $mid: 1 };\n if (this._fsPath) {\n res.fsPath = this._fsPath;\n res._sep = _pathSepMarker;\n }\n if (this._formatted) res.external = this._formatted;\n if (this.path) res.path = this.path;\n if (this.scheme) res.scheme = this.scheme;\n if (this.authority) res.authority = this.authority;\n if (this.query) res.query = this.query;\n if (this.fragment) res.fragment = this.fragment;\n return res;\n }\n };\n const encodeTable = {\n [58]: \"%3A\",\n [47]: \"%2F\",\n [63]: \"%3F\",\n [35]: \"%23\",\n [91]: \"%5B\",\n [93]: \"%5D\",\n [64]: \"%40\",\n [33]: \"%21\",\n [36]: \"%24\",\n [38]: \"%26\",\n [39]: \"%27\",\n [40]: \"%28\",\n [41]: \"%29\",\n [42]: \"%2A\",\n [43]: \"%2B\",\n [44]: \"%2C\",\n [59]: \"%3B\",\n [61]: \"%3D\",\n [32]: \"%20\"\n };\n function encodeURIComponentFast(uriComponent, isPath, isAuthority) {\n let res = void 0;\n let nativeEncodePos = -1;\n for (let pos = 0; pos < uriComponent.length; pos++) {\n const code = uriComponent.charCodeAt(pos);\n if (code >= 97 && code <= 122 || code >= 65 && code <= 90 || code >= 48 && code <= 57 || code === 45 || code === 46 || code === 95 || code === 126 || isPath && code === 47 || isAuthority && code === 91 || isAuthority && code === 93 || isAuthority && code === 58) {\n if (nativeEncodePos !== -1) {\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\n nativeEncodePos = -1;\n }\n if (res !== void 0) res += uriComponent.charAt(pos);\n } else {\n if (res === void 0) res = uriComponent.substr(0, pos);\n const escaped = encodeTable[code];\n if (escaped !== void 0) {\n if (nativeEncodePos !== -1) {\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\n nativeEncodePos = -1;\n }\n res += escaped;\n } else if (nativeEncodePos === -1) nativeEncodePos = pos;\n }\n }\n if (nativeEncodePos !== -1) res += encodeURIComponent(uriComponent.substring(nativeEncodePos));\n return res !== void 0 ? res : uriComponent;\n }\n function encodeURIComponentMinimal(path) {\n let res = void 0;\n for (let pos = 0; pos < path.length; pos++) {\n const code = path.charCodeAt(pos);\n if (code === 35 || code === 63) {\n if (res === void 0) res = path.substr(0, pos);\n res += encodeTable[code];\n } else if (res !== void 0) res += path[pos];\n }\n return res !== void 0 ? res : path;\n }\n /**\n * Compute `fsPath` for the given uri\n */\n function uriToFsPath(uri, keepDriveLetterCasing) {\n let value;\n if (uri.authority && uri.path.length > 1 && uri.scheme === \"file\") value = `//${uri.authority}${uri.path}`;\n else if (uri.path.charCodeAt(0) === 47 && (uri.path.charCodeAt(1) >= 65 && uri.path.charCodeAt(1) <= 90 || uri.path.charCodeAt(1) >= 97 && uri.path.charCodeAt(1) <= 122) && uri.path.charCodeAt(2) === 58) if (!keepDriveLetterCasing) value = uri.path[1].toLowerCase() + uri.path.substr(2);\n else value = uri.path.substr(1);\n else value = uri.path;\n if (isWindows) value = value.replace(/\\//g, \"\\\\\");\n return value;\n }\n /**\n * Create the external version of a uri\n */\n function _asFormatted(uri, skipEncoding) {\n const encoder = !skipEncoding ? encodeURIComponentFast : encodeURIComponentMinimal;\n let res = \"\";\n let { scheme, authority, path, query, fragment } = uri;\n if (scheme) {\n res += scheme;\n res += \":\";\n }\n if (authority || scheme === \"file\") {\n res += _slash;\n res += _slash;\n }\n if (authority) {\n let idx = authority.indexOf(\"@\");\n if (idx !== -1) {\n const userinfo = authority.substr(0, idx);\n authority = authority.substr(idx + 1);\n idx = userinfo.lastIndexOf(\":\");\n if (idx === -1) res += encoder(userinfo, false, false);\n else {\n res += encoder(userinfo.substr(0, idx), false, false);\n res += \":\";\n res += encoder(userinfo.substr(idx + 1), false, true);\n }\n res += \"@\";\n }\n authority = authority.toLowerCase();\n idx = authority.lastIndexOf(\":\");\n if (idx === -1) res += encoder(authority, false, true);\n else {\n res += encoder(authority.substr(0, idx), false, true);\n res += authority.substr(idx);\n }\n }\n if (path) {\n if (path.length >= 3 && path.charCodeAt(0) === 47 && path.charCodeAt(2) === 58) {\n const code = path.charCodeAt(1);\n if (code >= 65 && code <= 90) path = `/${String.fromCharCode(code + 32)}:${path.substr(3)}`;\n } else if (path.length >= 2 && path.charCodeAt(1) === 58) {\n const code = path.charCodeAt(0);\n if (code >= 65 && code <= 90) path = `${String.fromCharCode(code + 32)}:${path.substr(2)}`;\n }\n res += encoder(path, true, false);\n }\n if (query) {\n res += \"?\";\n res += encoder(query, false, false);\n }\n if (fragment) {\n res += \"#\";\n res += !skipEncoding ? encodeURIComponentFast(fragment, false, false) : fragment;\n }\n return res;\n }\n function decodeURIComponentGraceful(str) {\n try {\n return decodeURIComponent(str);\n } catch {\n if (str.length > 3) return str.substr(0, 3) + decodeURIComponentGraceful(str.substr(3));\n else return str;\n }\n }\n const _rEncodedAsHex = /(%[0-9A-Za-z][0-9A-Za-z])+/g;\n function percentDecode(str) {\n if (!str.match(_rEncodedAsHex)) return str;\n return str.replace(_rEncodedAsHex, (match) => decodeURIComponentGraceful(match));\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/core/selection.js\n /**\n * A selection in the editor.\n * The selection is a range that has an orientation.\n */\n var Selection = class Selection extends Range {\n constructor(selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn) {\n super(selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn);\n this.selectionStartLineNumber = selectionStartLineNumber;\n this.selectionStartColumn = selectionStartColumn;\n this.positionLineNumber = positionLineNumber;\n this.positionColumn = positionColumn;\n }\n /**\n * Transform to a human-readable representation.\n */\n toString() {\n return \"[\" + this.selectionStartLineNumber + \",\" + this.selectionStartColumn + \" -> \" + this.positionLineNumber + \",\" + this.positionColumn + \"]\";\n }\n /**\n * Test if equals other selection.\n */\n equalsSelection(other) {\n return Selection.selectionsEqual(this, other);\n }\n /**\n * Test if the two selections are equal.\n */\n static selectionsEqual(a, b) {\n return a.selectionStartLineNumber === b.selectionStartLineNumber && a.selectionStartColumn === b.selectionStartColumn && a.positionLineNumber === b.positionLineNumber && a.positionColumn === b.positionColumn;\n }\n /**\n * Get directions (LTR or RTL).\n */\n getDirection() {\n if (this.selectionStartLineNumber === this.startLineNumber && this.selectionStartColumn === this.startColumn) return 0;\n return 1;\n }\n /**\n * Create a new selection with a different `positionLineNumber` and `positionColumn`.\n */\n setEndPosition(endLineNumber, endColumn) {\n if (this.getDirection() === 0) return new Selection(this.startLineNumber, this.startColumn, endLineNumber, endColumn);\n return new Selection(endLineNumber, endColumn, this.startLineNumber, this.startColumn);\n }\n /**\n * Get the position at `positionLineNumber` and `positionColumn`.\n */\n getPosition() {\n return new Position(this.positionLineNumber, this.positionColumn);\n }\n /**\n * Get the position at the start of the selection.\n */\n getSelectionStart() {\n return new Position(this.selectionStartLineNumber, this.selectionStartColumn);\n }\n /**\n * Create a new selection with a different `selectionStartLineNumber` and `selectionStartColumn`.\n */\n setStartPosition(startLineNumber, startColumn) {\n if (this.getDirection() === 0) return new Selection(startLineNumber, startColumn, this.endLineNumber, this.endColumn);\n return new Selection(this.endLineNumber, this.endColumn, startLineNumber, startColumn);\n }\n /**\n * Create a `Selection` from one or two positions\n */\n static fromPositions(start, end = start) {\n return new Selection(start.lineNumber, start.column, end.lineNumber, end.column);\n }\n /**\n * Creates a `Selection` from a range, given a direction.\n */\n static fromRange(range, direction) {\n if (direction === 0) return new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);\n else return new Selection(range.endLineNumber, range.endColumn, range.startLineNumber, range.startColumn);\n }\n /**\n * Create a `Selection` from an `ISelection`.\n */\n static liftSelection(sel) {\n return new Selection(sel.selectionStartLineNumber, sel.selectionStartColumn, sel.positionLineNumber, sel.positionColumn);\n }\n /**\n * `a` equals `b`.\n */\n static selectionsArrEqual(a, b) {\n if (a && !b || !a && b) return false;\n if (!a && !b) return true;\n if (a.length !== b.length) return false;\n for (let i = 0, len = a.length; i < len; i++) if (!this.selectionsEqual(a[i], b[i])) return false;\n return true;\n }\n /**\n * Test if `obj` is an `ISelection`.\n */\n static isISelection(obj) {\n return !!obj && typeof obj.selectionStartLineNumber === \"number\" && typeof obj.selectionStartColumn === \"number\" && typeof obj.positionLineNumber === \"number\" && typeof obj.positionColumn === \"number\";\n }\n /**\n * Create with a direction.\n */\n static createWithDirection(startLineNumber, startColumn, endLineNumber, endColumn, direction) {\n if (direction === 0) return new Selection(startLineNumber, startColumn, endLineNumber, endColumn);\n return new Selection(endLineNumber, endColumn, startLineNumber, startColumn);\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/codiconsUtil.js\n const _codiconFontCharacters = Object.create(null);\n function register(id, fontCharacter) {\n if (isString(fontCharacter)) {\n const val = _codiconFontCharacters[fontCharacter];\n if (val === void 0) throw new Error(`${id} references an unknown codicon: ${fontCharacter}`);\n fontCharacter = val;\n }\n _codiconFontCharacters[id] = fontCharacter;\n return { id };\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/codiconsLibrary.js\n const codiconsLibrary = {\n add: register(\"add\", 6e4),\n plus: register(\"plus\", 6e4),\n gistNew: register(\"gist-new\", 6e4),\n repoCreate: register(\"repo-create\", 6e4),\n lightbulb: register(\"lightbulb\", 60001),\n lightBulb: register(\"light-bulb\", 60001),\n repo: register(\"repo\", 60002),\n repoDelete: register(\"repo-delete\", 60002),\n gistFork: register(\"gist-fork\", 60003),\n repoForked: register(\"repo-forked\", 60003),\n gitPullRequest: register(\"git-pull-request\", 60004),\n gitPullRequestAbandoned: register(\"git-pull-request-abandoned\", 60004),\n recordKeys: register(\"record-keys\", 60005),\n keyboard: register(\"keyboard\", 60005),\n tag: register(\"tag\", 60006),\n gitPullRequestLabel: register(\"git-pull-request-label\", 60006),\n tagAdd: register(\"tag-add\", 60006),\n tagRemove: register(\"tag-remove\", 60006),\n person: register(\"person\", 60007),\n personFollow: register(\"person-follow\", 60007),\n personOutline: register(\"person-outline\", 60007),\n personFilled: register(\"person-filled\", 60007),\n sourceControl: register(\"source-control\", 60008),\n mirror: register(\"mirror\", 60009),\n mirrorPublic: register(\"mirror-public\", 60009),\n star: register(\"star\", 60010),\n starAdd: register(\"star-add\", 60010),\n starDelete: register(\"star-delete\", 60010),\n starEmpty: register(\"star-empty\", 60010),\n comment: register(\"comment\", 60011),\n commentAdd: register(\"comment-add\", 60011),\n alert: register(\"alert\", 60012),\n warning: register(\"warning\", 60012),\n search: register(\"search\", 60013),\n searchSave: register(\"search-save\", 60013),\n logOut: register(\"log-out\", 60014),\n signOut: register(\"sign-out\", 60014),\n logIn: register(\"log-in\", 60015),\n signIn: register(\"sign-in\", 60015),\n eye: register(\"eye\", 60016),\n eyeUnwatch: register(\"eye-unwatch\", 60016),\n eyeWatch: register(\"eye-watch\", 60016),\n circleFilled: register(\"circle-filled\", 60017),\n primitiveDot: register(\"primitive-dot\", 60017),\n closeDirty: register(\"close-dirty\", 60017),\n debugBreakpoint: register(\"debug-breakpoint\", 60017),\n debugBreakpointDisabled: register(\"debug-breakpoint-disabled\", 60017),\n debugHint: register(\"debug-hint\", 60017),\n terminalDecorationSuccess: register(\"terminal-decoration-success\", 60017),\n primitiveSquare: register(\"primitive-square\", 60018),\n edit: register(\"edit\", 60019),\n pencil: register(\"pencil\", 60019),\n info: register(\"info\", 60020),\n issueOpened: register(\"issue-opened\", 60020),\n gistPrivate: register(\"gist-private\", 60021),\n gitForkPrivate: register(\"git-fork-private\", 60021),\n lock: register(\"lock\", 60021),\n mirrorPrivate: register(\"mirror-private\", 60021),\n close: register(\"close\", 60022),\n removeClose: register(\"remove-close\", 60022),\n x: register(\"x\", 60022),\n repoSync: register(\"repo-sync\", 60023),\n sync: register(\"sync\", 60023),\n clone: register(\"clone\", 60024),\n desktopDownload: register(\"desktop-download\", 60024),\n beaker: register(\"beaker\", 60025),\n microscope: register(\"microscope\", 60025),\n vm: register(\"vm\", 60026),\n deviceDesktop: register(\"device-desktop\", 60026),\n file: register(\"file\", 60027),\n more: register(\"more\", 60028),\n ellipsis: register(\"ellipsis\", 60028),\n kebabHorizontal: register(\"kebab-horizontal\", 60028),\n mailReply: register(\"mail-reply\", 60029),\n reply: register(\"reply\", 60029),\n organization: register(\"organization\", 60030),\n organizationFilled: register(\"organization-filled\", 60030),\n organizationOutline: register(\"organization-outline\", 60030),\n newFile: register(\"new-file\", 60031),\n fileAdd: register(\"file-add\", 60031),\n newFolder: register(\"new-folder\", 60032),\n fileDirectoryCreate: register(\"file-directory-create\", 60032),\n trash: register(\"trash\", 60033),\n trashcan: register(\"trashcan\", 60033),\n history: register(\"history\", 60034),\n clock: register(\"clock\", 60034),\n folder: register(\"folder\", 60035),\n fileDirectory: register(\"file-directory\", 60035),\n symbolFolder: register(\"symbol-folder\", 60035),\n logoGithub: register(\"logo-github\", 60036),\n markGithub: register(\"mark-github\", 60036),\n github: register(\"github\", 60036),\n terminal: register(\"terminal\", 60037),\n console: register(\"console\", 60037),\n repl: register(\"repl\", 60037),\n zap: register(\"zap\", 60038),\n symbolEvent: register(\"symbol-event\", 60038),\n error: register(\"error\", 60039),\n stop: register(\"stop\", 60039),\n variable: register(\"variable\", 60040),\n symbolVariable: register(\"symbol-variable\", 60040),\n array: register(\"array\", 60042),\n symbolArray: register(\"symbol-array\", 60042),\n symbolModule: register(\"symbol-module\", 60043),\n symbolPackage: register(\"symbol-package\", 60043),\n symbolNamespace: register(\"symbol-namespace\", 60043),\n symbolObject: register(\"symbol-object\", 60043),\n symbolMethod: register(\"symbol-method\", 60044),\n symbolFunction: register(\"symbol-function\", 60044),\n symbolConstructor: register(\"symbol-constructor\", 60044),\n symbolBoolean: register(\"symbol-boolean\", 60047),\n symbolNull: register(\"symbol-null\", 60047),\n symbolNumeric: register(\"symbol-numeric\", 60048),\n symbolNumber: register(\"symbol-number\", 60048),\n symbolStructure: register(\"symbol-structure\", 60049),\n symbolStruct: register(\"symbol-struct\", 60049),\n symbolParameter: register(\"symbol-parameter\", 60050),\n symbolTypeParameter: register(\"symbol-type-parameter\", 60050),\n symbolKey: register(\"symbol-key\", 60051),\n symbolText: register(\"symbol-text\", 60051),\n symbolReference: register(\"symbol-reference\", 60052),\n goToFile: register(\"go-to-file\", 60052),\n symbolEnum: register(\"symbol-enum\", 60053),\n symbolValue: register(\"symbol-value\", 60053),\n symbolRuler: register(\"symbol-ruler\", 60054),\n symbolUnit: register(\"symbol-unit\", 60054),\n activateBreakpoints: register(\"activate-breakpoints\", 60055),\n archive: register(\"archive\", 60056),\n arrowBoth: register(\"arrow-both\", 60057),\n arrowDown: register(\"arrow-down\", 60058),\n arrowLeft: register(\"arrow-left\", 60059),\n arrowRight: register(\"arrow-right\", 60060),\n arrowSmallDown: register(\"arrow-small-down\", 60061),\n arrowSmallLeft: register(\"arrow-small-left\", 60062),\n arrowSmallRight: register(\"arrow-small-right\", 60063),\n arrowSmallUp: register(\"arrow-small-up\", 60064),\n arrowUp: register(\"arrow-up\", 60065),\n bell: register(\"bell\", 60066),\n bold: register(\"bold\", 60067),\n book: register(\"book\", 60068),\n bookmark: register(\"bookmark\", 60069),\n debugBreakpointConditionalUnverified: register(\"debug-breakpoint-conditional-unverified\", 60070),\n debugBreakpointConditional: register(\"debug-breakpoint-conditional\", 60071),\n debugBreakpointConditionalDisabled: register(\"debug-breakpoint-conditional-disabled\", 60071),\n debugBreakpointDataUnverified: register(\"debug-breakpoint-data-unverified\", 60072),\n debugBreakpointData: register(\"debug-breakpoint-data\", 60073),\n debugBreakpointDataDisabled: register(\"debug-breakpoint-data-disabled\", 60073),\n debugBreakpointLogUnverified: register(\"debug-breakpoint-log-unverified\", 60074),\n debugBreakpointLog: register(\"debug-breakpoint-log\", 60075),\n debugBreakpointLogDisabled: register(\"debug-breakpoint-log-disabled\", 60075),\n briefcase: register(\"briefcase\", 60076),\n broadcast: register(\"broadcast\", 60077),\n browser: register(\"browser\", 60078),\n bug: register(\"bug\", 60079),\n calendar: register(\"calendar\", 60080),\n caseSensitive: register(\"case-sensitive\", 60081),\n check: register(\"check\", 60082),\n checklist: register(\"checklist\", 60083),\n chevronDown: register(\"chevron-down\", 60084),\n chevronLeft: register(\"chevron-left\", 60085),\n chevronRight: register(\"chevron-right\", 60086),\n chevronUp: register(\"chevron-up\", 60087),\n chromeClose: register(\"chrome-close\", 60088),\n chromeMaximize: register(\"chrome-maximize\", 60089),\n chromeMinimize: register(\"chrome-minimize\", 60090),\n chromeRestore: register(\"chrome-restore\", 60091),\n circleOutline: register(\"circle-outline\", 60092),\n circle: register(\"circle\", 60092),\n debugBreakpointUnverified: register(\"debug-breakpoint-unverified\", 60092),\n terminalDecorationIncomplete: register(\"terminal-decoration-incomplete\", 60092),\n circleSlash: register(\"circle-slash\", 60093),\n circuitBoard: register(\"circuit-board\", 60094),\n clearAll: register(\"clear-all\", 60095),\n clippy: register(\"clippy\", 60096),\n closeAll: register(\"close-all\", 60097),\n cloudDownload: register(\"cloud-download\", 60098),\n cloudUpload: register(\"cloud-upload\", 60099),\n code: register(\"code\", 60100),\n collapseAll: register(\"collapse-all\", 60101),\n colorMode: register(\"color-mode\", 60102),\n commentDiscussion: register(\"comment-discussion\", 60103),\n creditCard: register(\"credit-card\", 60105),\n dash: register(\"dash\", 60108),\n dashboard: register(\"dashboard\", 60109),\n database: register(\"database\", 60110),\n debugContinue: register(\"debug-continue\", 60111),\n debugDisconnect: register(\"debug-disconnect\", 60112),\n debugPause: register(\"debug-pause\", 60113),\n debugRestart: register(\"debug-restart\", 60114),\n debugStart: register(\"debug-start\", 60115),\n debugStepInto: register(\"debug-step-into\", 60116),\n debugStepOut: register(\"debug-step-out\", 60117),\n debugStepOver: register(\"debug-step-over\", 60118),\n debugStop: register(\"debug-stop\", 60119),\n debug: register(\"debug\", 60120),\n deviceCameraVideo: register(\"device-camera-video\", 60121),\n deviceCamera: register(\"device-camera\", 60122),\n deviceMobile: register(\"device-mobile\", 60123),\n diffAdded: register(\"diff-added\", 60124),\n diffIgnored: register(\"diff-ignored\", 60125),\n diffModified: register(\"diff-modified\", 60126),\n diffRemoved: register(\"diff-removed\", 60127),\n diffRenamed: register(\"diff-renamed\", 60128),\n diff: register(\"diff\", 60129),\n diffSidebyside: register(\"diff-sidebyside\", 60129),\n discard: register(\"discard\", 60130),\n editorLayout: register(\"editor-layout\", 60131),\n emptyWindow: register(\"empty-window\", 60132),\n exclude: register(\"exclude\", 60133),\n extensions: register(\"extensions\", 60134),\n eyeClosed: register(\"eye-closed\", 60135),\n fileBinary: register(\"file-binary\", 60136),\n fileCode: register(\"file-code\", 60137),\n fileMedia: register(\"file-media\", 60138),\n filePdf: register(\"file-pdf\", 60139),\n fileSubmodule: register(\"file-submodule\", 60140),\n fileSymlinkDirectory: register(\"file-symlink-directory\", 60141),\n fileSymlinkFile: register(\"file-symlink-file\", 60142),\n fileZip: register(\"file-zip\", 60143),\n files: register(\"files\", 60144),\n filter: register(\"filter\", 60145),\n flame: register(\"flame\", 60146),\n foldDown: register(\"fold-down\", 60147),\n foldUp: register(\"fold-up\", 60148),\n fold: register(\"fold\", 60149),\n folderActive: register(\"folder-active\", 60150),\n folderOpened: register(\"folder-opened\", 60151),\n gear: register(\"gear\", 60152),\n gift: register(\"gift\", 60153),\n gistSecret: register(\"gist-secret\", 60154),\n gist: register(\"gist\", 60155),\n gitCommit: register(\"git-commit\", 60156),\n gitCompare: register(\"git-compare\", 60157),\n compareChanges: register(\"compare-changes\", 60157),\n gitMerge: register(\"git-merge\", 60158),\n githubAction: register(\"github-action\", 60159),\n githubAlt: register(\"github-alt\", 60160),\n globe: register(\"globe\", 60161),\n grabber: register(\"grabber\", 60162),\n graph: register(\"graph\", 60163),\n gripper: register(\"gripper\", 60164),\n heart: register(\"heart\", 60165),\n home: register(\"home\", 60166),\n horizontalRule: register(\"horizontal-rule\", 60167),\n hubot: register(\"hubot\", 60168),\n inbox: register(\"inbox\", 60169),\n issueReopened: register(\"issue-reopened\", 60171),\n issues: register(\"issues\", 60172),\n italic: register(\"italic\", 60173),\n jersey: register(\"jersey\", 60174),\n json: register(\"json\", 60175),\n kebabVertical: register(\"kebab-vertical\", 60176),\n key: register(\"key\", 60177),\n law: register(\"law\", 60178),\n lightbulbAutofix: register(\"lightbulb-autofix\", 60179),\n linkExternal: register(\"link-external\", 60180),\n link: register(\"link\", 60181),\n listOrdered: register(\"list-ordered\", 60182),\n listUnordered: register(\"list-unordered\", 60183),\n liveShare: register(\"live-share\", 60184),\n loading: register(\"loading\", 60185),\n location: register(\"location\", 60186),\n mailRead: register(\"mail-read\", 60187),\n mail: register(\"mail\", 60188),\n markdown: register(\"markdown\", 60189),\n megaphone: register(\"megaphone\", 60190),\n mention: register(\"mention\", 60191),\n milestone: register(\"milestone\", 60192),\n gitPullRequestMilestone: register(\"git-pull-request-milestone\", 60192),\n mortarBoard: register(\"mortar-board\", 60193),\n move: register(\"move\", 60194),\n multipleWindows: register(\"multiple-windows\", 60195),\n mute: register(\"mute\", 60196),\n noNewline: register(\"no-newline\", 60197),\n note: register(\"note\", 60198),\n octoface: register(\"octoface\", 60199),\n openPreview: register(\"open-preview\", 60200),\n package: register(\"package\", 60201),\n paintcan: register(\"paintcan\", 60202),\n pin: register(\"pin\", 60203),\n play: register(\"play\", 60204),\n run: register(\"run\", 60204),\n plug: register(\"plug\", 60205),\n preserveCase: register(\"preserve-case\", 60206),\n preview: register(\"preview\", 60207),\n project: register(\"project\", 60208),\n pulse: register(\"pulse\", 60209),\n question: register(\"question\", 60210),\n quote: register(\"quote\", 60211),\n radioTower: register(\"radio-tower\", 60212),\n reactions: register(\"reactions\", 60213),\n references: register(\"references\", 60214),\n refresh: register(\"refresh\", 60215),\n regex: register(\"regex\", 60216),\n remoteExplorer: register(\"remote-explorer\", 60217),\n remote: register(\"remote\", 60218),\n remove: register(\"remove\", 60219),\n replaceAll: register(\"replace-all\", 60220),\n replace: register(\"replace\", 60221),\n repoClone: register(\"repo-clone\", 60222),\n repoForcePush: register(\"repo-force-push\", 60223),\n repoPull: register(\"repo-pull\", 60224),\n repoPush: register(\"repo-push\", 60225),\n report: register(\"report\", 60226),\n requestChanges: register(\"request-changes\", 60227),\n rocket: register(\"rocket\", 60228),\n rootFolderOpened: register(\"root-folder-opened\", 60229),\n rootFolder: register(\"root-folder\", 60230),\n rss: register(\"rss\", 60231),\n ruby: register(\"ruby\", 60232),\n saveAll: register(\"save-all\", 60233),\n saveAs: register(\"save-as\", 60234),\n save: register(\"save\", 60235),\n screenFull: register(\"screen-full\", 60236),\n screenNormal: register(\"screen-normal\", 60237),\n searchStop: register(\"search-stop\", 60238),\n server: register(\"server\", 60240),\n settingsGear: register(\"settings-gear\", 60241),\n settings: register(\"settings\", 60242),\n shield: register(\"shield\", 60243),\n smiley: register(\"smiley\", 60244),\n sortPrecedence: register(\"sort-precedence\", 60245),\n splitHorizontal: register(\"split-horizontal\", 60246),\n splitVertical: register(\"split-vertical\", 60247),\n squirrel: register(\"squirrel\", 60248),\n starFull: register(\"star-full\", 60249),\n starHalf: register(\"star-half\", 60250),\n symbolClass: register(\"symbol-class\", 60251),\n symbolColor: register(\"symbol-color\", 60252),\n symbolConstant: register(\"symbol-constant\", 60253),\n symbolEnumMember: register(\"symbol-enum-member\", 60254),\n symbolField: register(\"symbol-field\", 60255),\n symbolFile: register(\"symbol-file\", 60256),\n symbolInterface: register(\"symbol-interface\", 60257),\n symbolKeyword: register(\"symbol-keyword\", 60258),\n symbolMisc: register(\"symbol-misc\", 60259),\n symbolOperator: register(\"symbol-operator\", 60260),\n symbolProperty: register(\"symbol-property\", 60261),\n wrench: register(\"wrench\", 60261),\n wrenchSubaction: register(\"wrench-subaction\", 60261),\n symbolSnippet: register(\"symbol-snippet\", 60262),\n tasklist: register(\"tasklist\", 60263),\n telescope: register(\"telescope\", 60264),\n textSize: register(\"text-size\", 60265),\n threeBars: register(\"three-bars\", 60266),\n thumbsdown: register(\"thumbsdown\", 60267),\n thumbsup: register(\"thumbsup\", 60268),\n tools: register(\"tools\", 60269),\n triangleDown: register(\"triangle-down\", 60270),\n triangleLeft: register(\"triangle-left\", 60271),\n triangleRight: register(\"triangle-right\", 60272),\n triangleUp: register(\"triangle-up\", 60273),\n twitter: register(\"twitter\", 60274),\n unfold: register(\"unfold\", 60275),\n unlock: register(\"unlock\", 60276),\n unmute: register(\"unmute\", 60277),\n unverified: register(\"unverified\", 60278),\n verified: register(\"verified\", 60279),\n versions: register(\"versions\", 60280),\n vmActive: register(\"vm-active\", 60281),\n vmOutline: register(\"vm-outline\", 60282),\n vmRunning: register(\"vm-running\", 60283),\n watch: register(\"watch\", 60284),\n whitespace: register(\"whitespace\", 60285),\n wholeWord: register(\"whole-word\", 60286),\n window: register(\"window\", 60287),\n wordWrap: register(\"word-wrap\", 60288),\n zoomIn: register(\"zoom-in\", 60289),\n zoomOut: register(\"zoom-out\", 60290),\n listFilter: register(\"list-filter\", 60291),\n listFlat: register(\"list-flat\", 60292),\n listSelection: register(\"list-selection\", 60293),\n selection: register(\"selection\", 60293),\n listTree: register(\"list-tree\", 60294),\n debugBreakpointFunctionUnverified: register(\"debug-breakpoint-function-unverified\", 60295),\n debugBreakpointFunction: register(\"debug-breakpoint-function\", 60296),\n debugBreakpointFunctionDisabled: register(\"debug-breakpoint-function-disabled\", 60296),\n debugStackframeActive: register(\"debug-stackframe-active\", 60297),\n circleSmallFilled: register(\"circle-small-filled\", 60298),\n debugStackframeDot: register(\"debug-stackframe-dot\", 60298),\n terminalDecorationMark: register(\"terminal-decoration-mark\", 60298),\n debugStackframe: register(\"debug-stackframe\", 60299),\n debugStackframeFocused: register(\"debug-stackframe-focused\", 60299),\n debugBreakpointUnsupported: register(\"debug-breakpoint-unsupported\", 60300),\n symbolString: register(\"symbol-string\", 60301),\n debugReverseContinue: register(\"debug-reverse-continue\", 60302),\n debugStepBack: register(\"debug-step-back\", 60303),\n debugRestartFrame: register(\"debug-restart-frame\", 60304),\n debugAlt: register(\"debug-alt\", 60305),\n callIncoming: register(\"call-incoming\", 60306),\n callOutgoing: register(\"call-outgoing\", 60307),\n menu: register(\"menu\", 60308),\n expandAll: register(\"expand-all\", 60309),\n feedback: register(\"feedback\", 60310),\n gitPullRequestReviewer: register(\"git-pull-request-reviewer\", 60310),\n groupByRefType: register(\"group-by-ref-type\", 60311),\n ungroupByRefType: register(\"ungroup-by-ref-type\", 60312),\n account: register(\"account\", 60313),\n gitPullRequestAssignee: register(\"git-pull-request-assignee\", 60313),\n bellDot: register(\"bell-dot\", 60314),\n debugConsole: register(\"debug-console\", 60315),\n library: register(\"library\", 60316),\n output: register(\"output\", 60317),\n runAll: register(\"run-all\", 60318),\n syncIgnored: register(\"sync-ignored\", 60319),\n pinned: register(\"pinned\", 60320),\n githubInverted: register(\"github-inverted\", 60321),\n serverProcess: register(\"server-process\", 60322),\n serverEnvironment: register(\"server-environment\", 60323),\n pass: register(\"pass\", 60324),\n issueClosed: register(\"issue-closed\", 60324),\n stopCircle: register(\"stop-circle\", 60325),\n playCircle: register(\"play-circle\", 60326),\n record: register(\"record\", 60327),\n debugAltSmall: register(\"debug-alt-small\", 60328),\n vmConnect: register(\"vm-connect\", 60329),\n cloud: register(\"cloud\", 60330),\n merge: register(\"merge\", 60331),\n export: register(\"export\", 60332),\n graphLeft: register(\"graph-left\", 60333),\n magnet: register(\"magnet\", 60334),\n notebook: register(\"notebook\", 60335),\n redo: register(\"redo\", 60336),\n checkAll: register(\"check-all\", 60337),\n pinnedDirty: register(\"pinned-dirty\", 60338),\n passFilled: register(\"pass-filled\", 60339),\n circleLargeFilled: register(\"circle-large-filled\", 60340),\n circleLarge: register(\"circle-large\", 60341),\n circleLargeOutline: register(\"circle-large-outline\", 60341),\n combine: register(\"combine\", 60342),\n gather: register(\"gather\", 60342),\n table: register(\"table\", 60343),\n variableGroup: register(\"variable-group\", 60344),\n typeHierarchy: register(\"type-hierarchy\", 60345),\n typeHierarchySub: register(\"type-hierarchy-sub\", 60346),\n typeHierarchySuper: register(\"type-hierarchy-super\", 60347),\n gitPullRequestCreate: register(\"git-pull-request-create\", 60348),\n runAbove: register(\"run-above\", 60349),\n runBelow: register(\"run-below\", 60350),\n notebookTemplate: register(\"notebook-template\", 60351),\n debugRerun: register(\"debug-rerun\", 60352),\n workspaceTrusted: register(\"workspace-trusted\", 60353),\n workspaceUntrusted: register(\"workspace-untrusted\", 60354),\n workspaceUnknown: register(\"workspace-unknown\", 60355),\n terminalCmd: register(\"terminal-cmd\", 60356),\n terminalDebian: register(\"terminal-debian\", 60357),\n terminalLinux: register(\"terminal-linux\", 60358),\n terminalPowershell: register(\"terminal-powershell\", 60359),\n terminalTmux: register(\"terminal-tmux\", 60360),\n terminalUbuntu: register(\"terminal-ubuntu\", 60361),\n terminalBash: register(\"terminal-bash\", 60362),\n arrowSwap: register(\"arrow-swap\", 60363),\n copy: register(\"copy\", 60364),\n personAdd: register(\"person-add\", 60365),\n filterFilled: register(\"filter-filled\", 60366),\n wand: register(\"wand\", 60367),\n debugLineByLine: register(\"debug-line-by-line\", 60368),\n inspect: register(\"inspect\", 60369),\n layers: register(\"layers\", 60370),\n layersDot: register(\"layers-dot\", 60371),\n layersActive: register(\"layers-active\", 60372),\n compass: register(\"compass\", 60373),\n compassDot: register(\"compass-dot\", 60374),\n compassActive: register(\"compass-active\", 60375),\n azure: register(\"azure\", 60376),\n issueDraft: register(\"issue-draft\", 60377),\n gitPullRequestClosed: register(\"git-pull-request-closed\", 60378),\n gitPullRequestDraft: register(\"git-pull-request-draft\", 60379),\n debugAll: register(\"debug-all\", 60380),\n debugCoverage: register(\"debug-coverage\", 60381),\n runErrors: register(\"run-errors\", 60382),\n folderLibrary: register(\"folder-library\", 60383),\n debugContinueSmall: register(\"debug-continue-small\", 60384),\n beakerStop: register(\"beaker-stop\", 60385),\n graphLine: register(\"graph-line\", 60386),\n graphScatter: register(\"graph-scatter\", 60387),\n pieChart: register(\"pie-chart\", 60388),\n bracket: register(\"bracket\", 60175),\n bracketDot: register(\"bracket-dot\", 60389),\n bracketError: register(\"bracket-error\", 60390),\n lockSmall: register(\"lock-small\", 60391),\n azureDevops: register(\"azure-devops\", 60392),\n verifiedFilled: register(\"verified-filled\", 60393),\n newline: register(\"newline\", 60394),\n layout: register(\"layout\", 60395),\n layoutActivitybarLeft: register(\"layout-activitybar-left\", 60396),\n layoutActivitybarRight: register(\"layout-activitybar-right\", 60397),\n layoutPanelLeft: register(\"layout-panel-left\", 60398),\n layoutPanelCenter: register(\"layout-panel-center\", 60399),\n layoutPanelJustify: register(\"layout-panel-justify\", 60400),\n layoutPanelRight: register(\"layout-panel-right\", 60401),\n layoutPanel: register(\"layout-panel\", 60402),\n layoutSidebarLeft: register(\"layout-sidebar-left\", 60403),\n layoutSidebarRight: register(\"layout-sidebar-right\", 60404),\n layoutStatusbar: register(\"layout-statusbar\", 60405),\n layoutMenubar: register(\"layout-menubar\", 60406),\n layoutCentered: register(\"layout-centered\", 60407),\n target: register(\"target\", 60408),\n indent: register(\"indent\", 60409),\n recordSmall: register(\"record-small\", 60410),\n errorSmall: register(\"error-small\", 60411),\n terminalDecorationError: register(\"terminal-decoration-error\", 60411),\n arrowCircleDown: register(\"arrow-circle-down\", 60412),\n arrowCircleLeft: register(\"arrow-circle-left\", 60413),\n arrowCircleRight: register(\"arrow-circle-right\", 60414),\n arrowCircleUp: register(\"arrow-circle-up\", 60415),\n layoutSidebarRightOff: register(\"layout-sidebar-right-off\", 60416),\n layoutPanelOff: register(\"layout-panel-off\", 60417),\n layoutSidebarLeftOff: register(\"layout-sidebar-left-off\", 60418),\n blank: register(\"blank\", 60419),\n heartFilled: register(\"heart-filled\", 60420),\n map: register(\"map\", 60421),\n mapHorizontal: register(\"map-horizontal\", 60421),\n foldHorizontal: register(\"fold-horizontal\", 60421),\n mapFilled: register(\"map-filled\", 60422),\n mapHorizontalFilled: register(\"map-horizontal-filled\", 60422),\n foldHorizontalFilled: register(\"fold-horizontal-filled\", 60422),\n circleSmall: register(\"circle-small\", 60423),\n bellSlash: register(\"bell-slash\", 60424),\n bellSlashDot: register(\"bell-slash-dot\", 60425),\n commentUnresolved: register(\"comment-unresolved\", 60426),\n gitPullRequestGoToChanges: register(\"git-pull-request-go-to-changes\", 60427),\n gitPullRequestNewChanges: register(\"git-pull-request-new-changes\", 60428),\n searchFuzzy: register(\"search-fuzzy\", 60429),\n commentDraft: register(\"comment-draft\", 60430),\n send: register(\"send\", 60431),\n sparkle: register(\"sparkle\", 60432),\n insert: register(\"insert\", 60433),\n mic: register(\"mic\", 60434),\n thumbsdownFilled: register(\"thumbsdown-filled\", 60435),\n thumbsupFilled: register(\"thumbsup-filled\", 60436),\n coffee: register(\"coffee\", 60437),\n snake: register(\"snake\", 60438),\n game: register(\"game\", 60439),\n vr: register(\"vr\", 60440),\n chip: register(\"chip\", 60441),\n piano: register(\"piano\", 60442),\n music: register(\"music\", 60443),\n micFilled: register(\"mic-filled\", 60444),\n repoFetch: register(\"repo-fetch\", 60445),\n copilot: register(\"copilot\", 60446),\n lightbulbSparkle: register(\"lightbulb-sparkle\", 60447),\n robot: register(\"robot\", 60448),\n sparkleFilled: register(\"sparkle-filled\", 60449),\n diffSingle: register(\"diff-single\", 60450),\n diffMultiple: register(\"diff-multiple\", 60451),\n surroundWith: register(\"surround-with\", 60452),\n share: register(\"share\", 60453),\n gitStash: register(\"git-stash\", 60454),\n gitStashApply: register(\"git-stash-apply\", 60455),\n gitStashPop: register(\"git-stash-pop\", 60456),\n vscode: register(\"vscode\", 60457),\n vscodeInsiders: register(\"vscode-insiders\", 60458),\n codeOss: register(\"code-oss\", 60459),\n runCoverage: register(\"run-coverage\", 60460),\n runAllCoverage: register(\"run-all-coverage\", 60461),\n coverage: register(\"coverage\", 60462),\n githubProject: register(\"github-project\", 60463),\n mapVertical: register(\"map-vertical\", 60464),\n foldVertical: register(\"fold-vertical\", 60464),\n mapVerticalFilled: register(\"map-vertical-filled\", 60465),\n foldVerticalFilled: register(\"fold-vertical-filled\", 60465),\n goToSearch: register(\"go-to-search\", 60466),\n percentage: register(\"percentage\", 60467),\n sortPercentage: register(\"sort-percentage\", 60467),\n attach: register(\"attach\", 60468),\n goToEditingSession: register(\"go-to-editing-session\", 60469),\n editSession: register(\"edit-session\", 60470),\n codeReview: register(\"code-review\", 60471),\n copilotWarning: register(\"copilot-warning\", 60472),\n python: register(\"python\", 60473),\n copilotLarge: register(\"copilot-large\", 60474),\n copilotWarningLarge: register(\"copilot-warning-large\", 60475),\n keyboardTab: register(\"keyboard-tab\", 60476),\n copilotBlocked: register(\"copilot-blocked\", 60477),\n copilotNotConnected: register(\"copilot-not-connected\", 60478),\n flag: register(\"flag\", 60479),\n lightbulbEmpty: register(\"lightbulb-empty\", 60480),\n symbolMethodArrow: register(\"symbol-method-arrow\", 60481),\n copilotUnavailable: register(\"copilot-unavailable\", 60482),\n repoPinned: register(\"repo-pinned\", 60483),\n keyboardTabAbove: register(\"keyboard-tab-above\", 60484),\n keyboardTabBelow: register(\"keyboard-tab-below\", 60485),\n gitPullRequestDone: register(\"git-pull-request-done\", 60486),\n mcp: register(\"mcp\", 60487),\n extensionsLarge: register(\"extensions-large\", 60488),\n layoutPanelDock: register(\"layout-panel-dock\", 60489),\n layoutSidebarLeftDock: register(\"layout-sidebar-left-dock\", 60490),\n layoutSidebarRightDock: register(\"layout-sidebar-right-dock\", 60491),\n copilotInProgress: register(\"copilot-in-progress\", 60492),\n copilotError: register(\"copilot-error\", 60493),\n copilotSuccess: register(\"copilot-success\", 60494),\n chatSparkle: register(\"chat-sparkle\", 60495),\n searchSparkle: register(\"search-sparkle\", 60496),\n editSparkle: register(\"edit-sparkle\", 60497),\n copilotSnooze: register(\"copilot-snooze\", 60498),\n sendToRemoteAgent: register(\"send-to-remote-agent\", 60499),\n commentDiscussionSparkle: register(\"comment-discussion-sparkle\", 60500),\n chatSparkleWarning: register(\"chat-sparkle-warning\", 60501),\n chatSparkleError: register(\"chat-sparkle-error\", 60502),\n collection: register(\"collection\", 60503),\n newCollection: register(\"new-collection\", 60504),\n thinking: register(\"thinking\", 60505),\n build: register(\"build\", 60506),\n commentDiscussionQuote: register(\"comment-discussion-quote\", 60507),\n cursor: register(\"cursor\", 60508),\n eraser: register(\"eraser\", 60509),\n fileText: register(\"file-text\", 60510),\n gitLens: register(\"git-lens\", 60511),\n quotes: register(\"quotes\", 60512),\n rename: register(\"rename\", 60513),\n runWithDeps: register(\"run-with-deps\", 60514),\n debugConnected: register(\"debug-connected\", 60515),\n strikethrough: register(\"strikethrough\", 60516),\n openInProduct: register(\"open-in-product\", 60517),\n indexZero: register(\"index-zero\", 60518),\n agent: register(\"agent\", 60519),\n editCode: register(\"edit-code\", 60520),\n repoSelected: register(\"repo-selected\", 60521),\n skip: register(\"skip\", 60522),\n mergeInto: register(\"merge-into\", 60523),\n gitBranchChanges: register(\"git-branch-changes\", 60524),\n gitBranchStagedChanges: register(\"git-branch-staged-changes\", 60525),\n gitBranchConflicts: register(\"git-branch-conflicts\", 60526),\n gitBranch: register(\"git-branch\", 60527),\n gitBranchCreate: register(\"git-branch-create\", 60527),\n gitBranchDelete: register(\"git-branch-delete\", 60527),\n searchLarge: register(\"search-large\", 60528),\n terminalGitBash: register(\"terminal-git-bash\", 60529)\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/codicons.js\n /**\n * Derived icons, that could become separate icons.\n * These mappings should be moved into the mapping file in the vscode-codicons repo at some point.\n */\n const codiconsDerived = {\n dialogError: register(\"dialog-error\", \"error\"),\n dialogWarning: register(\"dialog-warning\", \"warning\"),\n dialogInfo: register(\"dialog-info\", \"info\"),\n dialogClose: register(\"dialog-close\", \"close\"),\n treeItemExpanded: register(\"tree-item-expanded\", \"chevron-down\"),\n treeFilterOnTypeOn: register(\"tree-filter-on-type-on\", \"list-filter\"),\n treeFilterOnTypeOff: register(\"tree-filter-on-type-off\", \"list-selection\"),\n treeFilterClear: register(\"tree-filter-clear\", \"close\"),\n treeItemLoading: register(\"tree-item-loading\", \"loading\"),\n menuSelection: register(\"menu-selection\", \"check\"),\n menuSubmenu: register(\"menu-submenu\", \"chevron-right\"),\n menuBarMore: register(\"menubar-more\", \"more\"),\n scrollbarButtonLeft: register(\"scrollbar-button-left\", \"triangle-left\"),\n scrollbarButtonRight: register(\"scrollbar-button-right\", \"triangle-right\"),\n scrollbarButtonUp: register(\"scrollbar-button-up\", \"triangle-up\"),\n scrollbarButtonDown: register(\"scrollbar-button-down\", \"triangle-down\"),\n toolBarMore: register(\"toolbar-more\", \"more\"),\n quickInputBack: register(\"quick-input-back\", \"arrow-left\"),\n dropDownButton: register(\"drop-down-button\", 60084),\n symbolCustomColor: register(\"symbol-customcolor\", 60252),\n exportIcon: register(\"export\", 60332),\n workspaceUnspecified: register(\"workspace-unspecified\", 60355),\n newLine: register(\"newline\", 60394),\n thumbsDownFilled: register(\"thumbsdown-filled\", 60435),\n thumbsUpFilled: register(\"thumbsup-filled\", 60436),\n gitFetch: register(\"git-fetch\", 60445),\n lightbulbSparkleAutofix: register(\"lightbulb-sparkle-autofix\", 60447),\n debugBreakpointPending: register(\"debug-breakpoint-pending\", 60377)\n };\n /**\n * The Codicon library is a set of default icons that are built-in in VS Code.\n *\n * In the product (outside of base) Codicons should only be used as defaults. In order to have all icons in VS Code\n * themeable, component should define new, UI component specific icons using `iconRegistry.registerIcon`.\n * In that call a Codicon can be named as default.\n */\n const Codicon = {\n ...codiconsLibrary,\n ...codiconsDerived\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/tokenizationRegistry.js\n var TokenizationRegistry$1 = class {\n constructor() {\n this._tokenizationSupports = /* @__PURE__ */ new Map();\n this._factories = /* @__PURE__ */ new Map();\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._colorMap = null;\n }\n handleChange(languageIds) {\n this._onDidChange.fire({\n changedLanguages: languageIds,\n changedColorMap: false\n });\n }\n register(languageId, support) {\n this._tokenizationSupports.set(languageId, support);\n this.handleChange([languageId]);\n return toDisposable(() => {\n if (this._tokenizationSupports.get(languageId) !== support) return;\n this._tokenizationSupports.delete(languageId);\n this.handleChange([languageId]);\n });\n }\n get(languageId) {\n return this._tokenizationSupports.get(languageId) || null;\n }\n registerFactory(languageId, factory) {\n this._factories.get(languageId)?.dispose();\n const myData = new TokenizationSupportFactoryData(this, languageId, factory);\n this._factories.set(languageId, myData);\n return toDisposable(() => {\n const v = this._factories.get(languageId);\n if (!v || v !== myData) return;\n this._factories.delete(languageId);\n v.dispose();\n });\n }\n async getOrCreate(languageId) {\n const tokenizationSupport = this.get(languageId);\n if (tokenizationSupport) return tokenizationSupport;\n const factory = this._factories.get(languageId);\n if (!factory || factory.isResolved) return null;\n await factory.resolve();\n return this.get(languageId);\n }\n isResolved(languageId) {\n if (this.get(languageId)) return true;\n const factory = this._factories.get(languageId);\n if (!factory || factory.isResolved) return true;\n return false;\n }\n setColorMap(colorMap) {\n this._colorMap = colorMap;\n this._onDidChange.fire({\n changedLanguages: Array.from(this._tokenizationSupports.keys()),\n changedColorMap: true\n });\n }\n getColorMap() {\n return this._colorMap;\n }\n getDefaultBackground() {\n if (this._colorMap && this._colorMap.length > 2) return this._colorMap[2];\n return null;\n }\n };\n var TokenizationSupportFactoryData = class extends Disposable {\n get isResolved() {\n return this._isResolved;\n }\n constructor(_registry, _languageId, _factory) {\n super();\n this._registry = _registry;\n this._languageId = _languageId;\n this._factory = _factory;\n this._isDisposed = false;\n this._resolvePromise = null;\n this._isResolved = false;\n }\n dispose() {\n this._isDisposed = true;\n super.dispose();\n }\n async resolve() {\n if (!this._resolvePromise) this._resolvePromise = this._create();\n return this._resolvePromise;\n }\n async _create() {\n const value = await this._factory.tokenizationSupport;\n this._isResolved = true;\n if (value && !this._isDisposed) this._register(this._registry.register(this._languageId, value));\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/languages.js\n var Token = class {\n constructor(offset, type, language) {\n this.offset = offset;\n this.type = type;\n this.language = language;\n this._tokenBrand = void 0;\n }\n toString() {\n return \"(\" + this.offset + \", \" + this.type + \")\";\n }\n };\n var HoverVerbosityAction$1;\n (function(HoverVerbosityAction) {\n /**\n * Increase the verbosity of the hover\n */\n HoverVerbosityAction[HoverVerbosityAction[\"Increase\"] = 0] = \"Increase\";\n /**\n * Decrease the verbosity of the hover\n */\n HoverVerbosityAction[HoverVerbosityAction[\"Decrease\"] = 1] = \"Decrease\";\n })(HoverVerbosityAction$1 || (HoverVerbosityAction$1 = {}));\n /**\n * @internal\n */\n var CompletionItemKinds;\n (function(CompletionItemKinds) {\n const byKind = /* @__PURE__ */ new Map();\n byKind.set(0, Codicon.symbolMethod);\n byKind.set(1, Codicon.symbolFunction);\n byKind.set(2, Codicon.symbolConstructor);\n byKind.set(3, Codicon.symbolField);\n byKind.set(4, Codicon.symbolVariable);\n byKind.set(5, Codicon.symbolClass);\n byKind.set(6, Codicon.symbolStruct);\n byKind.set(7, Codicon.symbolInterface);\n byKind.set(8, Codicon.symbolModule);\n byKind.set(9, Codicon.symbolProperty);\n byKind.set(10, Codicon.symbolEvent);\n byKind.set(11, Codicon.symbolOperator);\n byKind.set(12, Codicon.symbolUnit);\n byKind.set(13, Codicon.symbolValue);\n byKind.set(15, Codicon.symbolEnum);\n byKind.set(14, Codicon.symbolConstant);\n byKind.set(15, Codicon.symbolEnum);\n byKind.set(16, Codicon.symbolEnumMember);\n byKind.set(17, Codicon.symbolKeyword);\n byKind.set(28, Codicon.symbolSnippet);\n byKind.set(18, Codicon.symbolText);\n byKind.set(19, Codicon.symbolColor);\n byKind.set(20, Codicon.symbolFile);\n byKind.set(21, Codicon.symbolReference);\n byKind.set(22, Codicon.symbolCustomColor);\n byKind.set(23, Codicon.symbolFolder);\n byKind.set(24, Codicon.symbolTypeParameter);\n byKind.set(25, Codicon.account);\n byKind.set(26, Codicon.issues);\n byKind.set(27, Codicon.tools);\n /**\n * @internal\n */\n function toIcon(kind) {\n let codicon = byKind.get(kind);\n if (!codicon) {\n console.info(\"No codicon found for CompletionItemKind \" + kind);\n codicon = Codicon.symbolProperty;\n }\n return codicon;\n }\n CompletionItemKinds.toIcon = toIcon;\n /**\n * @internal\n */\n function toLabel(kind) {\n switch (kind) {\n case 0: return localize(728, \"Method\");\n case 1: return localize(729, \"Function\");\n case 2: return localize(730, \"Constructor\");\n case 3: return localize(731, \"Field\");\n case 4: return localize(732, \"Variable\");\n case 5: return localize(733, \"Class\");\n case 6: return localize(734, \"Struct\");\n case 7: return localize(735, \"Interface\");\n case 8: return localize(736, \"Module\");\n case 9: return localize(737, \"Property\");\n case 10: return localize(738, \"Event\");\n case 11: return localize(739, \"Operator\");\n case 12: return localize(740, \"Unit\");\n case 13: return localize(741, \"Value\");\n case 14: return localize(742, \"Constant\");\n case 15: return localize(743, \"Enum\");\n case 16: return localize(744, \"Enum Member\");\n case 17: return localize(745, \"Keyword\");\n case 18: return localize(746, \"Text\");\n case 19: return localize(747, \"Color\");\n case 20: return localize(748, \"File\");\n case 21: return localize(749, \"Reference\");\n case 22: return localize(750, \"Custom Color\");\n case 23: return localize(751, \"Folder\");\n case 24: return localize(752, \"Type Parameter\");\n case 25: return localize(753, \"User\");\n case 26: return localize(754, \"Issue\");\n case 27: return localize(755, \"Tool\");\n case 28: return localize(756, \"Snippet\");\n default: return \"\";\n }\n }\n CompletionItemKinds.toLabel = toLabel;\n const data = /* @__PURE__ */ new Map();\n data.set(\"method\", 0);\n data.set(\"function\", 1);\n data.set(\"constructor\", 2);\n data.set(\"field\", 3);\n data.set(\"variable\", 4);\n data.set(\"class\", 5);\n data.set(\"struct\", 6);\n data.set(\"interface\", 7);\n data.set(\"module\", 8);\n data.set(\"property\", 9);\n data.set(\"event\", 10);\n data.set(\"operator\", 11);\n data.set(\"unit\", 12);\n data.set(\"value\", 13);\n data.set(\"constant\", 14);\n data.set(\"enum\", 15);\n data.set(\"enum-member\", 16);\n data.set(\"enumMember\", 16);\n data.set(\"keyword\", 17);\n data.set(\"snippet\", 28);\n data.set(\"text\", 18);\n data.set(\"color\", 19);\n data.set(\"file\", 20);\n data.set(\"reference\", 21);\n data.set(\"customcolor\", 22);\n data.set(\"folder\", 23);\n data.set(\"type-parameter\", 24);\n data.set(\"typeParameter\", 24);\n data.set(\"account\", 25);\n data.set(\"issue\", 26);\n data.set(\"tool\", 27);\n /**\n * @internal\n */\n function fromString(value, strict) {\n let res = data.get(value);\n if (typeof res === \"undefined\" && !strict) res = 9;\n return res;\n }\n CompletionItemKinds.fromString = fromString;\n })(CompletionItemKinds || (CompletionItemKinds = {}));\n /**\n * How an {@link InlineCompletionsProvider inline completion provider} was triggered.\n */\n var InlineCompletionTriggerKind$1;\n (function(InlineCompletionTriggerKind) {\n /**\n * Completion was triggered automatically while editing.\n * It is sufficient to return a single completion item in this case.\n */\n InlineCompletionTriggerKind[InlineCompletionTriggerKind[\"Automatic\"] = 0] = \"Automatic\";\n /**\n * Completion was triggered explicitly by a user gesture.\n * Return multiple completion items to enable cycling through them.\n */\n InlineCompletionTriggerKind[InlineCompletionTriggerKind[\"Explicit\"] = 1] = \"Explicit\";\n })(InlineCompletionTriggerKind$1 || (InlineCompletionTriggerKind$1 = {}));\n var InlineCompletionHintStyle$1;\n (function(InlineCompletionHintStyle) {\n InlineCompletionHintStyle[InlineCompletionHintStyle[\"Code\"] = 1] = \"Code\";\n InlineCompletionHintStyle[InlineCompletionHintStyle[\"Label\"] = 2] = \"Label\";\n })(InlineCompletionHintStyle$1 || (InlineCompletionHintStyle$1 = {}));\n var InlineCompletionEndOfLifeReasonKind$1;\n (function(InlineCompletionEndOfLifeReasonKind) {\n InlineCompletionEndOfLifeReasonKind[InlineCompletionEndOfLifeReasonKind[\"Accepted\"] = 0] = \"Accepted\";\n InlineCompletionEndOfLifeReasonKind[InlineCompletionEndOfLifeReasonKind[\"Rejected\"] = 1] = \"Rejected\";\n InlineCompletionEndOfLifeReasonKind[InlineCompletionEndOfLifeReasonKind[\"Ignored\"] = 2] = \"Ignored\";\n })(InlineCompletionEndOfLifeReasonKind$1 || (InlineCompletionEndOfLifeReasonKind$1 = {}));\n /**\n * @internal\n */\n var DocumentPasteTriggerKind;\n (function(DocumentPasteTriggerKind) {\n DocumentPasteTriggerKind[DocumentPasteTriggerKind[\"Automatic\"] = 0] = \"Automatic\";\n DocumentPasteTriggerKind[DocumentPasteTriggerKind[\"PasteAs\"] = 1] = \"PasteAs\";\n })(DocumentPasteTriggerKind || (DocumentPasteTriggerKind = {}));\n var SignatureHelpTriggerKind$1;\n (function(SignatureHelpTriggerKind) {\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"Invoke\"] = 1] = \"Invoke\";\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"TriggerCharacter\"] = 2] = \"TriggerCharacter\";\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"ContentChange\"] = 3] = \"ContentChange\";\n })(SignatureHelpTriggerKind$1 || (SignatureHelpTriggerKind$1 = {}));\n /**\n * A document highlight kind.\n */\n var DocumentHighlightKind$1;\n (function(DocumentHighlightKind) {\n /**\n * A textual occurrence.\n */\n DocumentHighlightKind[DocumentHighlightKind[\"Text\"] = 0] = \"Text\";\n /**\n * Read-access of a symbol, like reading a variable.\n */\n DocumentHighlightKind[DocumentHighlightKind[\"Read\"] = 1] = \"Read\";\n /**\n * Write-access of a symbol, like writing to a variable.\n */\n DocumentHighlightKind[DocumentHighlightKind[\"Write\"] = 2] = \"Write\";\n })(DocumentHighlightKind$1 || (DocumentHighlightKind$1 = {}));\n localize(757, \"array\"), localize(758, \"boolean\"), localize(759, \"class\"), localize(760, \"constant\"), localize(761, \"constructor\"), localize(762, \"enumeration\"), localize(763, \"enumeration member\"), localize(764, \"event\"), localize(765, \"field\"), localize(766, \"file\"), localize(767, \"function\"), localize(768, \"interface\"), localize(769, \"key\"), localize(770, \"method\"), localize(771, \"module\"), localize(772, \"namespace\"), localize(773, \"null\"), localize(774, \"number\"), localize(775, \"object\"), localize(776, \"operator\"), localize(777, \"package\"), localize(778, \"property\"), localize(779, \"string\"), localize(780, \"struct\"), localize(781, \"type parameter\"), localize(782, \"variable\");\n /**\n * @internal\n */\n var SymbolKinds;\n (function(SymbolKinds) {\n const byKind = /* @__PURE__ */ new Map();\n byKind.set(0, Codicon.symbolFile);\n byKind.set(1, Codicon.symbolModule);\n byKind.set(2, Codicon.symbolNamespace);\n byKind.set(3, Codicon.symbolPackage);\n byKind.set(4, Codicon.symbolClass);\n byKind.set(5, Codicon.symbolMethod);\n byKind.set(6, Codicon.symbolProperty);\n byKind.set(7, Codicon.symbolField);\n byKind.set(8, Codicon.symbolConstructor);\n byKind.set(9, Codicon.symbolEnum);\n byKind.set(10, Codicon.symbolInterface);\n byKind.set(11, Codicon.symbolFunction);\n byKind.set(12, Codicon.symbolVariable);\n byKind.set(13, Codicon.symbolConstant);\n byKind.set(14, Codicon.symbolString);\n byKind.set(15, Codicon.symbolNumber);\n byKind.set(16, Codicon.symbolBoolean);\n byKind.set(17, Codicon.symbolArray);\n byKind.set(18, Codicon.symbolObject);\n byKind.set(19, Codicon.symbolKey);\n byKind.set(20, Codicon.symbolNull);\n byKind.set(21, Codicon.symbolEnumMember);\n byKind.set(22, Codicon.symbolStruct);\n byKind.set(23, Codicon.symbolEvent);\n byKind.set(24, Codicon.symbolOperator);\n byKind.set(25, Codicon.symbolTypeParameter);\n /**\n * @internal\n */\n function toIcon(kind) {\n let icon = byKind.get(kind);\n if (!icon) {\n console.info(\"No codicon found for SymbolKind \" + kind);\n icon = Codicon.symbolProperty;\n }\n return icon;\n }\n SymbolKinds.toIcon = toIcon;\n const byCompletionKind = /* @__PURE__ */ new Map();\n byCompletionKind.set(0, 20);\n byCompletionKind.set(1, 8);\n byCompletionKind.set(2, 8);\n byCompletionKind.set(3, 8);\n byCompletionKind.set(4, 5);\n byCompletionKind.set(5, 0);\n byCompletionKind.set(6, 9);\n byCompletionKind.set(7, 3);\n byCompletionKind.set(8, 2);\n byCompletionKind.set(9, 15);\n byCompletionKind.set(10, 7);\n byCompletionKind.set(11, 1);\n byCompletionKind.set(12, 4);\n byCompletionKind.set(13, 14);\n byCompletionKind.set(14, 18);\n byCompletionKind.set(15, 13);\n byCompletionKind.set(16, 13);\n byCompletionKind.set(17, 13);\n byCompletionKind.set(18, 13);\n byCompletionKind.set(19, 17);\n byCompletionKind.set(20, 13);\n byCompletionKind.set(21, 16);\n byCompletionKind.set(22, 6);\n byCompletionKind.set(23, 10);\n byCompletionKind.set(24, 11);\n byCompletionKind.set(25, 24);\n /**\n * @internal\n */\n function toCompletionKind(kind) {\n let completionKind = byCompletionKind.get(kind);\n if (completionKind === void 0) {\n console.info(\"No completion kind found for SymbolKind \" + kind);\n completionKind = 20;\n }\n return completionKind;\n }\n SymbolKinds.toCompletionKind = toCompletionKind;\n })(SymbolKinds || (SymbolKinds = {}));\n (class FoldingRangeKind {\n /**\n * Kind for folding range representing a comment. The value of the kind is 'comment'.\n */\n static {\n this.Comment = new FoldingRangeKind(\"comment\");\n }\n /**\n * Kind for folding range representing a import. The value of the kind is 'imports'.\n */\n static {\n this.Imports = new FoldingRangeKind(\"imports\");\n }\n /**\n * Kind for folding range representing regions (for example marked by `#region`, `#endregion`).\n * The value of the kind is 'region'.\n */\n static {\n this.Region = new FoldingRangeKind(\"region\");\n }\n /**\n * Returns a {@link FoldingRangeKind} for the given value.\n *\n * @param value of the kind.\n */\n static fromValue(value) {\n switch (value) {\n case \"comment\": return FoldingRangeKind.Comment;\n case \"imports\": return FoldingRangeKind.Imports;\n case \"region\": return FoldingRangeKind.Region;\n }\n return new FoldingRangeKind(value);\n }\n /**\n * Creates a new {@link FoldingRangeKind}.\n *\n * @param value of the kind.\n */\n constructor(value) {\n this.value = value;\n }\n });\n var NewSymbolNameTag$1;\n (function(NewSymbolNameTag) {\n NewSymbolNameTag[NewSymbolNameTag[\"AIGenerated\"] = 1] = \"AIGenerated\";\n })(NewSymbolNameTag$1 || (NewSymbolNameTag$1 = {}));\n var NewSymbolNameTriggerKind$1;\n (function(NewSymbolNameTriggerKind) {\n NewSymbolNameTriggerKind[NewSymbolNameTriggerKind[\"Invoke\"] = 0] = \"Invoke\";\n NewSymbolNameTriggerKind[NewSymbolNameTriggerKind[\"Automatic\"] = 1] = \"Automatic\";\n })(NewSymbolNameTriggerKind$1 || (NewSymbolNameTriggerKind$1 = {}));\n /**\n * @internal\n */\n var Command;\n (function(Command) {\n /**\n * @internal\n */\n function is(obj) {\n if (!obj || typeof obj !== \"object\") return false;\n return typeof obj.id === \"string\" && typeof obj.title === \"string\";\n }\n Command.is = is;\n })(Command || (Command = {}));\n var InlayHintKind$1;\n (function(InlayHintKind) {\n InlayHintKind[InlayHintKind[\"Type\"] = 1] = \"Type\";\n InlayHintKind[InlayHintKind[\"Parameter\"] = 2] = \"Parameter\";\n })(InlayHintKind$1 || (InlayHintKind$1 = {}));\n new TokenizationRegistry$1();\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/standalone/standaloneEnums.js\n var AccessibilitySupport;\n (function(AccessibilitySupport) {\n /**\n * This should be the browser case where it is not known if a screen reader is attached or no.\n */\n AccessibilitySupport[AccessibilitySupport[\"Unknown\"] = 0] = \"Unknown\";\n AccessibilitySupport[AccessibilitySupport[\"Disabled\"] = 1] = \"Disabled\";\n AccessibilitySupport[AccessibilitySupport[\"Enabled\"] = 2] = \"Enabled\";\n })(AccessibilitySupport || (AccessibilitySupport = {}));\n var CodeActionTriggerType;\n (function(CodeActionTriggerType) {\n CodeActionTriggerType[CodeActionTriggerType[\"Invoke\"] = 1] = \"Invoke\";\n CodeActionTriggerType[CodeActionTriggerType[\"Auto\"] = 2] = \"Auto\";\n })(CodeActionTriggerType || (CodeActionTriggerType = {}));\n var CompletionItemInsertTextRule;\n (function(CompletionItemInsertTextRule) {\n CompletionItemInsertTextRule[CompletionItemInsertTextRule[\"None\"] = 0] = \"None\";\n /**\n * Adjust whitespace/indentation of multiline insert texts to\n * match the current line indentation.\n */\n CompletionItemInsertTextRule[CompletionItemInsertTextRule[\"KeepWhitespace\"] = 1] = \"KeepWhitespace\";\n /**\n * `insertText` is a snippet.\n */\n CompletionItemInsertTextRule[CompletionItemInsertTextRule[\"InsertAsSnippet\"] = 4] = \"InsertAsSnippet\";\n })(CompletionItemInsertTextRule || (CompletionItemInsertTextRule = {}));\n var CompletionItemKind;\n (function(CompletionItemKind) {\n CompletionItemKind[CompletionItemKind[\"Method\"] = 0] = \"Method\";\n CompletionItemKind[CompletionItemKind[\"Function\"] = 1] = \"Function\";\n CompletionItemKind[CompletionItemKind[\"Constructor\"] = 2] = \"Constructor\";\n CompletionItemKind[CompletionItemKind[\"Field\"] = 3] = \"Field\";\n CompletionItemKind[CompletionItemKind[\"Variable\"] = 4] = \"Variable\";\n CompletionItemKind[CompletionItemKind[\"Class\"] = 5] = \"Class\";\n CompletionItemKind[CompletionItemKind[\"Struct\"] = 6] = \"Struct\";\n CompletionItemKind[CompletionItemKind[\"Interface\"] = 7] = \"Interface\";\n CompletionItemKind[CompletionItemKind[\"Module\"] = 8] = \"Module\";\n CompletionItemKind[CompletionItemKind[\"Property\"] = 9] = \"Property\";\n CompletionItemKind[CompletionItemKind[\"Event\"] = 10] = \"Event\";\n CompletionItemKind[CompletionItemKind[\"Operator\"] = 11] = \"Operator\";\n CompletionItemKind[CompletionItemKind[\"Unit\"] = 12] = \"Unit\";\n CompletionItemKind[CompletionItemKind[\"Value\"] = 13] = \"Value\";\n CompletionItemKind[CompletionItemKind[\"Constant\"] = 14] = \"Constant\";\n CompletionItemKind[CompletionItemKind[\"Enum\"] = 15] = \"Enum\";\n CompletionItemKind[CompletionItemKind[\"EnumMember\"] = 16] = \"EnumMember\";\n CompletionItemKind[CompletionItemKind[\"Keyword\"] = 17] = \"Keyword\";\n CompletionItemKind[CompletionItemKind[\"Text\"] = 18] = \"Text\";\n CompletionItemKind[CompletionItemKind[\"Color\"] = 19] = \"Color\";\n CompletionItemKind[CompletionItemKind[\"File\"] = 20] = \"File\";\n CompletionItemKind[CompletionItemKind[\"Reference\"] = 21] = \"Reference\";\n CompletionItemKind[CompletionItemKind[\"Customcolor\"] = 22] = \"Customcolor\";\n CompletionItemKind[CompletionItemKind[\"Folder\"] = 23] = \"Folder\";\n CompletionItemKind[CompletionItemKind[\"TypeParameter\"] = 24] = \"TypeParameter\";\n CompletionItemKind[CompletionItemKind[\"User\"] = 25] = \"User\";\n CompletionItemKind[CompletionItemKind[\"Issue\"] = 26] = \"Issue\";\n CompletionItemKind[CompletionItemKind[\"Tool\"] = 27] = \"Tool\";\n CompletionItemKind[CompletionItemKind[\"Snippet\"] = 28] = \"Snippet\";\n })(CompletionItemKind || (CompletionItemKind = {}));\n var CompletionItemTag;\n (function(CompletionItemTag) {\n CompletionItemTag[CompletionItemTag[\"Deprecated\"] = 1] = \"Deprecated\";\n })(CompletionItemTag || (CompletionItemTag = {}));\n /**\n * How a suggest provider was triggered.\n */\n var CompletionTriggerKind;\n (function(CompletionTriggerKind) {\n CompletionTriggerKind[CompletionTriggerKind[\"Invoke\"] = 0] = \"Invoke\";\n CompletionTriggerKind[CompletionTriggerKind[\"TriggerCharacter\"] = 1] = \"TriggerCharacter\";\n CompletionTriggerKind[CompletionTriggerKind[\"TriggerForIncompleteCompletions\"] = 2] = \"TriggerForIncompleteCompletions\";\n })(CompletionTriggerKind || (CompletionTriggerKind = {}));\n /**\n * A positioning preference for rendering content widgets.\n */\n var ContentWidgetPositionPreference;\n (function(ContentWidgetPositionPreference) {\n /**\n * Place the content widget exactly at a position\n */\n ContentWidgetPositionPreference[ContentWidgetPositionPreference[\"EXACT\"] = 0] = \"EXACT\";\n /**\n * Place the content widget above a position\n */\n ContentWidgetPositionPreference[ContentWidgetPositionPreference[\"ABOVE\"] = 1] = \"ABOVE\";\n /**\n * Place the content widget below a position\n */\n ContentWidgetPositionPreference[ContentWidgetPositionPreference[\"BELOW\"] = 2] = \"BELOW\";\n })(ContentWidgetPositionPreference || (ContentWidgetPositionPreference = {}));\n /**\n * Describes the reason the cursor has changed its position.\n */\n var CursorChangeReason;\n (function(CursorChangeReason) {\n /**\n * Unknown or not set.\n */\n CursorChangeReason[CursorChangeReason[\"NotSet\"] = 0] = \"NotSet\";\n /**\n * A `model.setValue()` was called.\n */\n CursorChangeReason[CursorChangeReason[\"ContentFlush\"] = 1] = \"ContentFlush\";\n /**\n * The `model` has been changed outside of this cursor and the cursor recovers its position from associated markers.\n */\n CursorChangeReason[CursorChangeReason[\"RecoverFromMarkers\"] = 2] = \"RecoverFromMarkers\";\n /**\n * There was an explicit user gesture.\n */\n CursorChangeReason[CursorChangeReason[\"Explicit\"] = 3] = \"Explicit\";\n /**\n * There was a Paste.\n */\n CursorChangeReason[CursorChangeReason[\"Paste\"] = 4] = \"Paste\";\n /**\n * There was an Undo.\n */\n CursorChangeReason[CursorChangeReason[\"Undo\"] = 5] = \"Undo\";\n /**\n * There was a Redo.\n */\n CursorChangeReason[CursorChangeReason[\"Redo\"] = 6] = \"Redo\";\n })(CursorChangeReason || (CursorChangeReason = {}));\n /**\n * The default end of line to use when instantiating models.\n */\n var DefaultEndOfLine;\n (function(DefaultEndOfLine) {\n /**\n * Use line feed (\\n) as the end of line character.\n */\n DefaultEndOfLine[DefaultEndOfLine[\"LF\"] = 1] = \"LF\";\n /**\n * Use carriage return and line feed (\\r\\n) as the end of line character.\n */\n DefaultEndOfLine[DefaultEndOfLine[\"CRLF\"] = 2] = \"CRLF\";\n })(DefaultEndOfLine || (DefaultEndOfLine = {}));\n /**\n * A document highlight kind.\n */\n var DocumentHighlightKind;\n (function(DocumentHighlightKind) {\n /**\n * A textual occurrence.\n */\n DocumentHighlightKind[DocumentHighlightKind[\"Text\"] = 0] = \"Text\";\n /**\n * Read-access of a symbol, like reading a variable.\n */\n DocumentHighlightKind[DocumentHighlightKind[\"Read\"] = 1] = \"Read\";\n /**\n * Write-access of a symbol, like writing to a variable.\n */\n DocumentHighlightKind[DocumentHighlightKind[\"Write\"] = 2] = \"Write\";\n })(DocumentHighlightKind || (DocumentHighlightKind = {}));\n /**\n * Configuration options for auto indentation in the editor\n */\n var EditorAutoIndentStrategy;\n (function(EditorAutoIndentStrategy) {\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"None\"] = 0] = \"None\";\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Keep\"] = 1] = \"Keep\";\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Brackets\"] = 2] = \"Brackets\";\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Advanced\"] = 3] = \"Advanced\";\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Full\"] = 4] = \"Full\";\n })(EditorAutoIndentStrategy || (EditorAutoIndentStrategy = {}));\n var EditorOption;\n (function(EditorOption) {\n EditorOption[EditorOption[\"acceptSuggestionOnCommitCharacter\"] = 0] = \"acceptSuggestionOnCommitCharacter\";\n EditorOption[EditorOption[\"acceptSuggestionOnEnter\"] = 1] = \"acceptSuggestionOnEnter\";\n EditorOption[EditorOption[\"accessibilitySupport\"] = 2] = \"accessibilitySupport\";\n EditorOption[EditorOption[\"accessibilityPageSize\"] = 3] = \"accessibilityPageSize\";\n EditorOption[EditorOption[\"allowOverflow\"] = 4] = \"allowOverflow\";\n EditorOption[EditorOption[\"allowVariableLineHeights\"] = 5] = \"allowVariableLineHeights\";\n EditorOption[EditorOption[\"allowVariableFonts\"] = 6] = \"allowVariableFonts\";\n EditorOption[EditorOption[\"allowVariableFontsInAccessibilityMode\"] = 7] = \"allowVariableFontsInAccessibilityMode\";\n EditorOption[EditorOption[\"ariaLabel\"] = 8] = \"ariaLabel\";\n EditorOption[EditorOption[\"ariaRequired\"] = 9] = \"ariaRequired\";\n EditorOption[EditorOption[\"autoClosingBrackets\"] = 10] = \"autoClosingBrackets\";\n EditorOption[EditorOption[\"autoClosingComments\"] = 11] = \"autoClosingComments\";\n EditorOption[EditorOption[\"screenReaderAnnounceInlineSuggestion\"] = 12] = \"screenReaderAnnounceInlineSuggestion\";\n EditorOption[EditorOption[\"autoClosingDelete\"] = 13] = \"autoClosingDelete\";\n EditorOption[EditorOption[\"autoClosingOvertype\"] = 14] = \"autoClosingOvertype\";\n EditorOption[EditorOption[\"autoClosingQuotes\"] = 15] = \"autoClosingQuotes\";\n EditorOption[EditorOption[\"autoIndent\"] = 16] = \"autoIndent\";\n EditorOption[EditorOption[\"autoIndentOnPaste\"] = 17] = \"autoIndentOnPaste\";\n EditorOption[EditorOption[\"autoIndentOnPasteWithinString\"] = 18] = \"autoIndentOnPasteWithinString\";\n EditorOption[EditorOption[\"automaticLayout\"] = 19] = \"automaticLayout\";\n EditorOption[EditorOption[\"autoSurround\"] = 20] = \"autoSurround\";\n EditorOption[EditorOption[\"bracketPairColorization\"] = 21] = \"bracketPairColorization\";\n EditorOption[EditorOption[\"guides\"] = 22] = \"guides\";\n EditorOption[EditorOption[\"codeLens\"] = 23] = \"codeLens\";\n EditorOption[EditorOption[\"codeLensFontFamily\"] = 24] = \"codeLensFontFamily\";\n EditorOption[EditorOption[\"codeLensFontSize\"] = 25] = \"codeLensFontSize\";\n EditorOption[EditorOption[\"colorDecorators\"] = 26] = \"colorDecorators\";\n EditorOption[EditorOption[\"colorDecoratorsLimit\"] = 27] = \"colorDecoratorsLimit\";\n EditorOption[EditorOption[\"columnSelection\"] = 28] = \"columnSelection\";\n EditorOption[EditorOption[\"comments\"] = 29] = \"comments\";\n EditorOption[EditorOption[\"contextmenu\"] = 30] = \"contextmenu\";\n EditorOption[EditorOption[\"copyWithSyntaxHighlighting\"] = 31] = \"copyWithSyntaxHighlighting\";\n EditorOption[EditorOption[\"cursorBlinking\"] = 32] = \"cursorBlinking\";\n EditorOption[EditorOption[\"cursorSmoothCaretAnimation\"] = 33] = \"cursorSmoothCaretAnimation\";\n EditorOption[EditorOption[\"cursorStyle\"] = 34] = \"cursorStyle\";\n EditorOption[EditorOption[\"cursorSurroundingLines\"] = 35] = \"cursorSurroundingLines\";\n EditorOption[EditorOption[\"cursorSurroundingLinesStyle\"] = 36] = \"cursorSurroundingLinesStyle\";\n EditorOption[EditorOption[\"cursorWidth\"] = 37] = \"cursorWidth\";\n EditorOption[EditorOption[\"cursorHeight\"] = 38] = \"cursorHeight\";\n EditorOption[EditorOption[\"disableLayerHinting\"] = 39] = \"disableLayerHinting\";\n EditorOption[EditorOption[\"disableMonospaceOptimizations\"] = 40] = \"disableMonospaceOptimizations\";\n EditorOption[EditorOption[\"domReadOnly\"] = 41] = \"domReadOnly\";\n EditorOption[EditorOption[\"dragAndDrop\"] = 42] = \"dragAndDrop\";\n EditorOption[EditorOption[\"dropIntoEditor\"] = 43] = \"dropIntoEditor\";\n EditorOption[EditorOption[\"editContext\"] = 44] = \"editContext\";\n EditorOption[EditorOption[\"emptySelectionClipboard\"] = 45] = \"emptySelectionClipboard\";\n EditorOption[EditorOption[\"experimentalGpuAcceleration\"] = 46] = \"experimentalGpuAcceleration\";\n EditorOption[EditorOption[\"experimentalWhitespaceRendering\"] = 47] = \"experimentalWhitespaceRendering\";\n EditorOption[EditorOption[\"extraEditorClassName\"] = 48] = \"extraEditorClassName\";\n EditorOption[EditorOption[\"fastScrollSensitivity\"] = 49] = \"fastScrollSensitivity\";\n EditorOption[EditorOption[\"find\"] = 50] = \"find\";\n EditorOption[EditorOption[\"fixedOverflowWidgets\"] = 51] = \"fixedOverflowWidgets\";\n EditorOption[EditorOption[\"folding\"] = 52] = \"folding\";\n EditorOption[EditorOption[\"foldingStrategy\"] = 53] = \"foldingStrategy\";\n EditorOption[EditorOption[\"foldingHighlight\"] = 54] = \"foldingHighlight\";\n EditorOption[EditorOption[\"foldingImportsByDefault\"] = 55] = \"foldingImportsByDefault\";\n EditorOption[EditorOption[\"foldingMaximumRegions\"] = 56] = \"foldingMaximumRegions\";\n EditorOption[EditorOption[\"unfoldOnClickAfterEndOfLine\"] = 57] = \"unfoldOnClickAfterEndOfLine\";\n EditorOption[EditorOption[\"fontFamily\"] = 58] = \"fontFamily\";\n EditorOption[EditorOption[\"fontInfo\"] = 59] = \"fontInfo\";\n EditorOption[EditorOption[\"fontLigatures\"] = 60] = \"fontLigatures\";\n EditorOption[EditorOption[\"fontSize\"] = 61] = \"fontSize\";\n EditorOption[EditorOption[\"fontWeight\"] = 62] = \"fontWeight\";\n EditorOption[EditorOption[\"fontVariations\"] = 63] = \"fontVariations\";\n EditorOption[EditorOption[\"formatOnPaste\"] = 64] = \"formatOnPaste\";\n EditorOption[EditorOption[\"formatOnType\"] = 65] = \"formatOnType\";\n EditorOption[EditorOption[\"glyphMargin\"] = 66] = \"glyphMargin\";\n EditorOption[EditorOption[\"gotoLocation\"] = 67] = \"gotoLocation\";\n EditorOption[EditorOption[\"hideCursorInOverviewRuler\"] = 68] = \"hideCursorInOverviewRuler\";\n EditorOption[EditorOption[\"hover\"] = 69] = \"hover\";\n EditorOption[EditorOption[\"inDiffEditor\"] = 70] = \"inDiffEditor\";\n EditorOption[EditorOption[\"inlineSuggest\"] = 71] = \"inlineSuggest\";\n EditorOption[EditorOption[\"letterSpacing\"] = 72] = \"letterSpacing\";\n EditorOption[EditorOption[\"lightbulb\"] = 73] = \"lightbulb\";\n EditorOption[EditorOption[\"lineDecorationsWidth\"] = 74] = \"lineDecorationsWidth\";\n EditorOption[EditorOption[\"lineHeight\"] = 75] = \"lineHeight\";\n EditorOption[EditorOption[\"lineNumbers\"] = 76] = \"lineNumbers\";\n EditorOption[EditorOption[\"lineNumbersMinChars\"] = 77] = \"lineNumbersMinChars\";\n EditorOption[EditorOption[\"linkedEditing\"] = 78] = \"linkedEditing\";\n EditorOption[EditorOption[\"links\"] = 79] = \"links\";\n EditorOption[EditorOption[\"matchBrackets\"] = 80] = \"matchBrackets\";\n EditorOption[EditorOption[\"minimap\"] = 81] = \"minimap\";\n EditorOption[EditorOption[\"mouseStyle\"] = 82] = \"mouseStyle\";\n EditorOption[EditorOption[\"mouseWheelScrollSensitivity\"] = 83] = \"mouseWheelScrollSensitivity\";\n EditorOption[EditorOption[\"mouseWheelZoom\"] = 84] = \"mouseWheelZoom\";\n EditorOption[EditorOption[\"multiCursorMergeOverlapping\"] = 85] = \"multiCursorMergeOverlapping\";\n EditorOption[EditorOption[\"multiCursorModifier\"] = 86] = \"multiCursorModifier\";\n EditorOption[EditorOption[\"mouseMiddleClickAction\"] = 87] = \"mouseMiddleClickAction\";\n EditorOption[EditorOption[\"multiCursorPaste\"] = 88] = \"multiCursorPaste\";\n EditorOption[EditorOption[\"multiCursorLimit\"] = 89] = \"multiCursorLimit\";\n EditorOption[EditorOption[\"occurrencesHighlight\"] = 90] = \"occurrencesHighlight\";\n EditorOption[EditorOption[\"occurrencesHighlightDelay\"] = 91] = \"occurrencesHighlightDelay\";\n EditorOption[EditorOption[\"overtypeCursorStyle\"] = 92] = \"overtypeCursorStyle\";\n EditorOption[EditorOption[\"overtypeOnPaste\"] = 93] = \"overtypeOnPaste\";\n EditorOption[EditorOption[\"overviewRulerBorder\"] = 94] = \"overviewRulerBorder\";\n EditorOption[EditorOption[\"overviewRulerLanes\"] = 95] = \"overviewRulerLanes\";\n EditorOption[EditorOption[\"padding\"] = 96] = \"padding\";\n EditorOption[EditorOption[\"pasteAs\"] = 97] = \"pasteAs\";\n EditorOption[EditorOption[\"parameterHints\"] = 98] = \"parameterHints\";\n EditorOption[EditorOption[\"peekWidgetDefaultFocus\"] = 99] = \"peekWidgetDefaultFocus\";\n EditorOption[EditorOption[\"placeholder\"] = 100] = \"placeholder\";\n EditorOption[EditorOption[\"definitionLinkOpensInPeek\"] = 101] = \"definitionLinkOpensInPeek\";\n EditorOption[EditorOption[\"quickSuggestions\"] = 102] = \"quickSuggestions\";\n EditorOption[EditorOption[\"quickSuggestionsDelay\"] = 103] = \"quickSuggestionsDelay\";\n EditorOption[EditorOption[\"readOnly\"] = 104] = \"readOnly\";\n EditorOption[EditorOption[\"readOnlyMessage\"] = 105] = \"readOnlyMessage\";\n EditorOption[EditorOption[\"renameOnType\"] = 106] = \"renameOnType\";\n EditorOption[EditorOption[\"renderRichScreenReaderContent\"] = 107] = \"renderRichScreenReaderContent\";\n EditorOption[EditorOption[\"renderControlCharacters\"] = 108] = \"renderControlCharacters\";\n EditorOption[EditorOption[\"renderFinalNewline\"] = 109] = \"renderFinalNewline\";\n EditorOption[EditorOption[\"renderLineHighlight\"] = 110] = \"renderLineHighlight\";\n EditorOption[EditorOption[\"renderLineHighlightOnlyWhenFocus\"] = 111] = \"renderLineHighlightOnlyWhenFocus\";\n EditorOption[EditorOption[\"renderValidationDecorations\"] = 112] = \"renderValidationDecorations\";\n EditorOption[EditorOption[\"renderWhitespace\"] = 113] = \"renderWhitespace\";\n EditorOption[EditorOption[\"revealHorizontalRightPadding\"] = 114] = \"revealHorizontalRightPadding\";\n EditorOption[EditorOption[\"roundedSelection\"] = 115] = \"roundedSelection\";\n EditorOption[EditorOption[\"rulers\"] = 116] = \"rulers\";\n EditorOption[EditorOption[\"scrollbar\"] = 117] = \"scrollbar\";\n EditorOption[EditorOption[\"scrollBeyondLastColumn\"] = 118] = \"scrollBeyondLastColumn\";\n EditorOption[EditorOption[\"scrollBeyondLastLine\"] = 119] = \"scrollBeyondLastLine\";\n EditorOption[EditorOption[\"scrollPredominantAxis\"] = 120] = \"scrollPredominantAxis\";\n EditorOption[EditorOption[\"selectionClipboard\"] = 121] = \"selectionClipboard\";\n EditorOption[EditorOption[\"selectionHighlight\"] = 122] = \"selectionHighlight\";\n EditorOption[EditorOption[\"selectionHighlightMaxLength\"] = 123] = \"selectionHighlightMaxLength\";\n EditorOption[EditorOption[\"selectionHighlightMultiline\"] = 124] = \"selectionHighlightMultiline\";\n EditorOption[EditorOption[\"selectOnLineNumbers\"] = 125] = \"selectOnLineNumbers\";\n EditorOption[EditorOption[\"showFoldingControls\"] = 126] = \"showFoldingControls\";\n EditorOption[EditorOption[\"showUnused\"] = 127] = \"showUnused\";\n EditorOption[EditorOption[\"snippetSuggestions\"] = 128] = \"snippetSuggestions\";\n EditorOption[EditorOption[\"smartSelect\"] = 129] = \"smartSelect\";\n EditorOption[EditorOption[\"smoothScrolling\"] = 130] = \"smoothScrolling\";\n EditorOption[EditorOption[\"stickyScroll\"] = 131] = \"stickyScroll\";\n EditorOption[EditorOption[\"stickyTabStops\"] = 132] = \"stickyTabStops\";\n EditorOption[EditorOption[\"stopRenderingLineAfter\"] = 133] = \"stopRenderingLineAfter\";\n EditorOption[EditorOption[\"suggest\"] = 134] = \"suggest\";\n EditorOption[EditorOption[\"suggestFontSize\"] = 135] = \"suggestFontSize\";\n EditorOption[EditorOption[\"suggestLineHeight\"] = 136] = \"suggestLineHeight\";\n EditorOption[EditorOption[\"suggestOnTriggerCharacters\"] = 137] = \"suggestOnTriggerCharacters\";\n EditorOption[EditorOption[\"suggestSelection\"] = 138] = \"suggestSelection\";\n EditorOption[EditorOption[\"tabCompletion\"] = 139] = \"tabCompletion\";\n EditorOption[EditorOption[\"tabIndex\"] = 140] = \"tabIndex\";\n EditorOption[EditorOption[\"trimWhitespaceOnDelete\"] = 141] = \"trimWhitespaceOnDelete\";\n EditorOption[EditorOption[\"unicodeHighlighting\"] = 142] = \"unicodeHighlighting\";\n EditorOption[EditorOption[\"unusualLineTerminators\"] = 143] = \"unusualLineTerminators\";\n EditorOption[EditorOption[\"useShadowDOM\"] = 144] = \"useShadowDOM\";\n EditorOption[EditorOption[\"useTabStops\"] = 145] = \"useTabStops\";\n EditorOption[EditorOption[\"wordBreak\"] = 146] = \"wordBreak\";\n EditorOption[EditorOption[\"wordSegmenterLocales\"] = 147] = \"wordSegmenterLocales\";\n EditorOption[EditorOption[\"wordSeparators\"] = 148] = \"wordSeparators\";\n EditorOption[EditorOption[\"wordWrap\"] = 149] = \"wordWrap\";\n EditorOption[EditorOption[\"wordWrapBreakAfterCharacters\"] = 150] = \"wordWrapBreakAfterCharacters\";\n EditorOption[EditorOption[\"wordWrapBreakBeforeCharacters\"] = 151] = \"wordWrapBreakBeforeCharacters\";\n EditorOption[EditorOption[\"wordWrapColumn\"] = 152] = \"wordWrapColumn\";\n EditorOption[EditorOption[\"wordWrapOverride1\"] = 153] = \"wordWrapOverride1\";\n EditorOption[EditorOption[\"wordWrapOverride2\"] = 154] = \"wordWrapOverride2\";\n EditorOption[EditorOption[\"wrappingIndent\"] = 155] = \"wrappingIndent\";\n EditorOption[EditorOption[\"wrappingStrategy\"] = 156] = \"wrappingStrategy\";\n EditorOption[EditorOption[\"showDeprecated\"] = 157] = \"showDeprecated\";\n EditorOption[EditorOption[\"inertialScroll\"] = 158] = \"inertialScroll\";\n EditorOption[EditorOption[\"inlayHints\"] = 159] = \"inlayHints\";\n EditorOption[EditorOption[\"wrapOnEscapedLineFeeds\"] = 160] = \"wrapOnEscapedLineFeeds\";\n EditorOption[EditorOption[\"effectiveCursorStyle\"] = 161] = \"effectiveCursorStyle\";\n EditorOption[EditorOption[\"editorClassName\"] = 162] = \"editorClassName\";\n EditorOption[EditorOption[\"pixelRatio\"] = 163] = \"pixelRatio\";\n EditorOption[EditorOption[\"tabFocusMode\"] = 164] = \"tabFocusMode\";\n EditorOption[EditorOption[\"layoutInfo\"] = 165] = \"layoutInfo\";\n EditorOption[EditorOption[\"wrappingInfo\"] = 166] = \"wrappingInfo\";\n EditorOption[EditorOption[\"defaultColorDecorators\"] = 167] = \"defaultColorDecorators\";\n EditorOption[EditorOption[\"colorDecoratorsActivatedOn\"] = 168] = \"colorDecoratorsActivatedOn\";\n EditorOption[EditorOption[\"inlineCompletionsAccessibilityVerbose\"] = 169] = \"inlineCompletionsAccessibilityVerbose\";\n EditorOption[EditorOption[\"effectiveEditContext\"] = 170] = \"effectiveEditContext\";\n EditorOption[EditorOption[\"scrollOnMiddleClick\"] = 171] = \"scrollOnMiddleClick\";\n EditorOption[EditorOption[\"effectiveAllowVariableFonts\"] = 172] = \"effectiveAllowVariableFonts\";\n })(EditorOption || (EditorOption = {}));\n /**\n * End of line character preference.\n */\n var EndOfLinePreference;\n (function(EndOfLinePreference) {\n /**\n * Use the end of line character identified in the text buffer.\n */\n EndOfLinePreference[EndOfLinePreference[\"TextDefined\"] = 0] = \"TextDefined\";\n /**\n * Use line feed (\\n) as the end of line character.\n */\n EndOfLinePreference[EndOfLinePreference[\"LF\"] = 1] = \"LF\";\n /**\n * Use carriage return and line feed (\\r\\n) as the end of line character.\n */\n EndOfLinePreference[EndOfLinePreference[\"CRLF\"] = 2] = \"CRLF\";\n })(EndOfLinePreference || (EndOfLinePreference = {}));\n /**\n * End of line character preference.\n */\n var EndOfLineSequence;\n (function(EndOfLineSequence) {\n /**\n * Use line feed (\\n) as the end of line character.\n */\n EndOfLineSequence[EndOfLineSequence[\"LF\"] = 0] = \"LF\";\n /**\n * Use carriage return and line feed (\\r\\n) as the end of line character.\n */\n EndOfLineSequence[EndOfLineSequence[\"CRLF\"] = 1] = \"CRLF\";\n })(EndOfLineSequence || (EndOfLineSequence = {}));\n /**\n * Vertical Lane in the glyph margin of the editor.\n */\n var GlyphMarginLane$1;\n (function(GlyphMarginLane) {\n GlyphMarginLane[GlyphMarginLane[\"Left\"] = 1] = \"Left\";\n GlyphMarginLane[GlyphMarginLane[\"Center\"] = 2] = \"Center\";\n GlyphMarginLane[GlyphMarginLane[\"Right\"] = 3] = \"Right\";\n })(GlyphMarginLane$1 || (GlyphMarginLane$1 = {}));\n var HoverVerbosityAction;\n (function(HoverVerbosityAction) {\n /**\n * Increase the verbosity of the hover\n */\n HoverVerbosityAction[HoverVerbosityAction[\"Increase\"] = 0] = \"Increase\";\n /**\n * Decrease the verbosity of the hover\n */\n HoverVerbosityAction[HoverVerbosityAction[\"Decrease\"] = 1] = \"Decrease\";\n })(HoverVerbosityAction || (HoverVerbosityAction = {}));\n /**\n * Describes what to do with the indentation when pressing Enter.\n */\n var IndentAction;\n (function(IndentAction) {\n /**\n * Insert new line and copy the previous line's indentation.\n */\n IndentAction[IndentAction[\"None\"] = 0] = \"None\";\n /**\n * Insert new line and indent once (relative to the previous line's indentation).\n */\n IndentAction[IndentAction[\"Indent\"] = 1] = \"Indent\";\n /**\n * Insert two new lines:\n * - the first one indented which will hold the cursor\n * - the second one at the same indentation level\n */\n IndentAction[IndentAction[\"IndentOutdent\"] = 2] = \"IndentOutdent\";\n /**\n * Insert new line and outdent once (relative to the previous line's indentation).\n */\n IndentAction[IndentAction[\"Outdent\"] = 3] = \"Outdent\";\n })(IndentAction || (IndentAction = {}));\n var InjectedTextCursorStops$1;\n (function(InjectedTextCursorStops) {\n InjectedTextCursorStops[InjectedTextCursorStops[\"Both\"] = 0] = \"Both\";\n InjectedTextCursorStops[InjectedTextCursorStops[\"Right\"] = 1] = \"Right\";\n InjectedTextCursorStops[InjectedTextCursorStops[\"Left\"] = 2] = \"Left\";\n InjectedTextCursorStops[InjectedTextCursorStops[\"None\"] = 3] = \"None\";\n })(InjectedTextCursorStops$1 || (InjectedTextCursorStops$1 = {}));\n var InlayHintKind;\n (function(InlayHintKind) {\n InlayHintKind[InlayHintKind[\"Type\"] = 1] = \"Type\";\n InlayHintKind[InlayHintKind[\"Parameter\"] = 2] = \"Parameter\";\n })(InlayHintKind || (InlayHintKind = {}));\n var InlineCompletionEndOfLifeReasonKind;\n (function(InlineCompletionEndOfLifeReasonKind) {\n InlineCompletionEndOfLifeReasonKind[InlineCompletionEndOfLifeReasonKind[\"Accepted\"] = 0] = \"Accepted\";\n InlineCompletionEndOfLifeReasonKind[InlineCompletionEndOfLifeReasonKind[\"Rejected\"] = 1] = \"Rejected\";\n InlineCompletionEndOfLifeReasonKind[InlineCompletionEndOfLifeReasonKind[\"Ignored\"] = 2] = \"Ignored\";\n })(InlineCompletionEndOfLifeReasonKind || (InlineCompletionEndOfLifeReasonKind = {}));\n var InlineCompletionHintStyle;\n (function(InlineCompletionHintStyle) {\n InlineCompletionHintStyle[InlineCompletionHintStyle[\"Code\"] = 1] = \"Code\";\n InlineCompletionHintStyle[InlineCompletionHintStyle[\"Label\"] = 2] = \"Label\";\n })(InlineCompletionHintStyle || (InlineCompletionHintStyle = {}));\n /**\n * How an {@link InlineCompletionsProvider inline completion provider} was triggered.\n */\n var InlineCompletionTriggerKind;\n (function(InlineCompletionTriggerKind) {\n /**\n * Completion was triggered automatically while editing.\n * It is sufficient to return a single completion item in this case.\n */\n InlineCompletionTriggerKind[InlineCompletionTriggerKind[\"Automatic\"] = 0] = \"Automatic\";\n /**\n * Completion was triggered explicitly by a user gesture.\n * Return multiple completion items to enable cycling through them.\n */\n InlineCompletionTriggerKind[InlineCompletionTriggerKind[\"Explicit\"] = 1] = \"Explicit\";\n })(InlineCompletionTriggerKind || (InlineCompletionTriggerKind = {}));\n /**\n * Virtual Key Codes, the value does not hold any inherent meaning.\n * Inspired somewhat from https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx\n * But these are \"more general\", as they should work across browsers & OS`s.\n */\n var KeyCode;\n (function(KeyCode) {\n KeyCode[KeyCode[\"DependsOnKbLayout\"] = -1] = \"DependsOnKbLayout\";\n /**\n * Placed first to cover the 0 value of the enum.\n */\n KeyCode[KeyCode[\"Unknown\"] = 0] = \"Unknown\";\n KeyCode[KeyCode[\"Backspace\"] = 1] = \"Backspace\";\n KeyCode[KeyCode[\"Tab\"] = 2] = \"Tab\";\n KeyCode[KeyCode[\"Enter\"] = 3] = \"Enter\";\n KeyCode[KeyCode[\"Shift\"] = 4] = \"Shift\";\n KeyCode[KeyCode[\"Ctrl\"] = 5] = \"Ctrl\";\n KeyCode[KeyCode[\"Alt\"] = 6] = \"Alt\";\n KeyCode[KeyCode[\"PauseBreak\"] = 7] = \"PauseBreak\";\n KeyCode[KeyCode[\"CapsLock\"] = 8] = \"CapsLock\";\n KeyCode[KeyCode[\"Escape\"] = 9] = \"Escape\";\n KeyCode[KeyCode[\"Space\"] = 10] = \"Space\";\n KeyCode[KeyCode[\"PageUp\"] = 11] = \"PageUp\";\n KeyCode[KeyCode[\"PageDown\"] = 12] = \"PageDown\";\n KeyCode[KeyCode[\"End\"] = 13] = \"End\";\n KeyCode[KeyCode[\"Home\"] = 14] = \"Home\";\n KeyCode[KeyCode[\"LeftArrow\"] = 15] = \"LeftArrow\";\n KeyCode[KeyCode[\"UpArrow\"] = 16] = \"UpArrow\";\n KeyCode[KeyCode[\"RightArrow\"] = 17] = \"RightArrow\";\n KeyCode[KeyCode[\"DownArrow\"] = 18] = \"DownArrow\";\n KeyCode[KeyCode[\"Insert\"] = 19] = \"Insert\";\n KeyCode[KeyCode[\"Delete\"] = 20] = \"Delete\";\n KeyCode[KeyCode[\"Digit0\"] = 21] = \"Digit0\";\n KeyCode[KeyCode[\"Digit1\"] = 22] = \"Digit1\";\n KeyCode[KeyCode[\"Digit2\"] = 23] = \"Digit2\";\n KeyCode[KeyCode[\"Digit3\"] = 24] = \"Digit3\";\n KeyCode[KeyCode[\"Digit4\"] = 25] = \"Digit4\";\n KeyCode[KeyCode[\"Digit5\"] = 26] = \"Digit5\";\n KeyCode[KeyCode[\"Digit6\"] = 27] = \"Digit6\";\n KeyCode[KeyCode[\"Digit7\"] = 28] = \"Digit7\";\n KeyCode[KeyCode[\"Digit8\"] = 29] = \"Digit8\";\n KeyCode[KeyCode[\"Digit9\"] = 30] = \"Digit9\";\n KeyCode[KeyCode[\"KeyA\"] = 31] = \"KeyA\";\n KeyCode[KeyCode[\"KeyB\"] = 32] = \"KeyB\";\n KeyCode[KeyCode[\"KeyC\"] = 33] = \"KeyC\";\n KeyCode[KeyCode[\"KeyD\"] = 34] = \"KeyD\";\n KeyCode[KeyCode[\"KeyE\"] = 35] = \"KeyE\";\n KeyCode[KeyCode[\"KeyF\"] = 36] = \"KeyF\";\n KeyCode[KeyCode[\"KeyG\"] = 37] = \"KeyG\";\n KeyCode[KeyCode[\"KeyH\"] = 38] = \"KeyH\";\n KeyCode[KeyCode[\"KeyI\"] = 39] = \"KeyI\";\n KeyCode[KeyCode[\"KeyJ\"] = 40] = \"KeyJ\";\n KeyCode[KeyCode[\"KeyK\"] = 41] = \"KeyK\";\n KeyCode[KeyCode[\"KeyL\"] = 42] = \"KeyL\";\n KeyCode[KeyCode[\"KeyM\"] = 43] = \"KeyM\";\n KeyCode[KeyCode[\"KeyN\"] = 44] = \"KeyN\";\n KeyCode[KeyCode[\"KeyO\"] = 45] = \"KeyO\";\n KeyCode[KeyCode[\"KeyP\"] = 46] = \"KeyP\";\n KeyCode[KeyCode[\"KeyQ\"] = 47] = \"KeyQ\";\n KeyCode[KeyCode[\"KeyR\"] = 48] = \"KeyR\";\n KeyCode[KeyCode[\"KeyS\"] = 49] = \"KeyS\";\n KeyCode[KeyCode[\"KeyT\"] = 50] = \"KeyT\";\n KeyCode[KeyCode[\"KeyU\"] = 51] = \"KeyU\";\n KeyCode[KeyCode[\"KeyV\"] = 52] = \"KeyV\";\n KeyCode[KeyCode[\"KeyW\"] = 53] = \"KeyW\";\n KeyCode[KeyCode[\"KeyX\"] = 54] = \"KeyX\";\n KeyCode[KeyCode[\"KeyY\"] = 55] = \"KeyY\";\n KeyCode[KeyCode[\"KeyZ\"] = 56] = \"KeyZ\";\n KeyCode[KeyCode[\"Meta\"] = 57] = \"Meta\";\n KeyCode[KeyCode[\"ContextMenu\"] = 58] = \"ContextMenu\";\n KeyCode[KeyCode[\"F1\"] = 59] = \"F1\";\n KeyCode[KeyCode[\"F2\"] = 60] = \"F2\";\n KeyCode[KeyCode[\"F3\"] = 61] = \"F3\";\n KeyCode[KeyCode[\"F4\"] = 62] = \"F4\";\n KeyCode[KeyCode[\"F5\"] = 63] = \"F5\";\n KeyCode[KeyCode[\"F6\"] = 64] = \"F6\";\n KeyCode[KeyCode[\"F7\"] = 65] = \"F7\";\n KeyCode[KeyCode[\"F8\"] = 66] = \"F8\";\n KeyCode[KeyCode[\"F9\"] = 67] = \"F9\";\n KeyCode[KeyCode[\"F10\"] = 68] = \"F10\";\n KeyCode[KeyCode[\"F11\"] = 69] = \"F11\";\n KeyCode[KeyCode[\"F12\"] = 70] = \"F12\";\n KeyCode[KeyCode[\"F13\"] = 71] = \"F13\";\n KeyCode[KeyCode[\"F14\"] = 72] = \"F14\";\n KeyCode[KeyCode[\"F15\"] = 73] = \"F15\";\n KeyCode[KeyCode[\"F16\"] = 74] = \"F16\";\n KeyCode[KeyCode[\"F17\"] = 75] = \"F17\";\n KeyCode[KeyCode[\"F18\"] = 76] = \"F18\";\n KeyCode[KeyCode[\"F19\"] = 77] = \"F19\";\n KeyCode[KeyCode[\"F20\"] = 78] = \"F20\";\n KeyCode[KeyCode[\"F21\"] = 79] = \"F21\";\n KeyCode[KeyCode[\"F22\"] = 80] = \"F22\";\n KeyCode[KeyCode[\"F23\"] = 81] = \"F23\";\n KeyCode[KeyCode[\"F24\"] = 82] = \"F24\";\n KeyCode[KeyCode[\"NumLock\"] = 83] = \"NumLock\";\n KeyCode[KeyCode[\"ScrollLock\"] = 84] = \"ScrollLock\";\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the ';:' key\n */\n KeyCode[KeyCode[\"Semicolon\"] = 85] = \"Semicolon\";\n /**\n * For any country/region, the '+' key\n * For the US standard keyboard, the '=+' key\n */\n KeyCode[KeyCode[\"Equal\"] = 86] = \"Equal\";\n /**\n * For any country/region, the ',' key\n * For the US standard keyboard, the ',<' key\n */\n KeyCode[KeyCode[\"Comma\"] = 87] = \"Comma\";\n /**\n * For any country/region, the '-' key\n * For the US standard keyboard, the '-_' key\n */\n KeyCode[KeyCode[\"Minus\"] = 88] = \"Minus\";\n /**\n * For any country/region, the '.' key\n * For the US standard keyboard, the '.>' key\n */\n KeyCode[KeyCode[\"Period\"] = 89] = \"Period\";\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the '/?' key\n */\n KeyCode[KeyCode[\"Slash\"] = 90] = \"Slash\";\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the '`~' key\n */\n KeyCode[KeyCode[\"Backquote\"] = 91] = \"Backquote\";\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the '[{' key\n */\n KeyCode[KeyCode[\"BracketLeft\"] = 92] = \"BracketLeft\";\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the '\\|' key\n */\n KeyCode[KeyCode[\"Backslash\"] = 93] = \"Backslash\";\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the ']}' key\n */\n KeyCode[KeyCode[\"BracketRight\"] = 94] = \"BracketRight\";\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n * For the US standard keyboard, the ''\"' key\n */\n KeyCode[KeyCode[\"Quote\"] = 95] = \"Quote\";\n /**\n * Used for miscellaneous characters; it can vary by keyboard.\n */\n KeyCode[KeyCode[\"OEM_8\"] = 96] = \"OEM_8\";\n /**\n * Either the angle bracket key or the backslash key on the RT 102-key keyboard.\n */\n KeyCode[KeyCode[\"IntlBackslash\"] = 97] = \"IntlBackslash\";\n KeyCode[KeyCode[\"Numpad0\"] = 98] = \"Numpad0\";\n KeyCode[KeyCode[\"Numpad1\"] = 99] = \"Numpad1\";\n KeyCode[KeyCode[\"Numpad2\"] = 100] = \"Numpad2\";\n KeyCode[KeyCode[\"Numpad3\"] = 101] = \"Numpad3\";\n KeyCode[KeyCode[\"Numpad4\"] = 102] = \"Numpad4\";\n KeyCode[KeyCode[\"Numpad5\"] = 103] = \"Numpad5\";\n KeyCode[KeyCode[\"Numpad6\"] = 104] = \"Numpad6\";\n KeyCode[KeyCode[\"Numpad7\"] = 105] = \"Numpad7\";\n KeyCode[KeyCode[\"Numpad8\"] = 106] = \"Numpad8\";\n KeyCode[KeyCode[\"Numpad9\"] = 107] = \"Numpad9\";\n KeyCode[KeyCode[\"NumpadMultiply\"] = 108] = \"NumpadMultiply\";\n KeyCode[KeyCode[\"NumpadAdd\"] = 109] = \"NumpadAdd\";\n KeyCode[KeyCode[\"NUMPAD_SEPARATOR\"] = 110] = \"NUMPAD_SEPARATOR\";\n KeyCode[KeyCode[\"NumpadSubtract\"] = 111] = \"NumpadSubtract\";\n KeyCode[KeyCode[\"NumpadDecimal\"] = 112] = \"NumpadDecimal\";\n KeyCode[KeyCode[\"NumpadDivide\"] = 113] = \"NumpadDivide\";\n /**\n * Cover all key codes when IME is processing input.\n */\n KeyCode[KeyCode[\"KEY_IN_COMPOSITION\"] = 114] = \"KEY_IN_COMPOSITION\";\n KeyCode[KeyCode[\"ABNT_C1\"] = 115] = \"ABNT_C1\";\n KeyCode[KeyCode[\"ABNT_C2\"] = 116] = \"ABNT_C2\";\n KeyCode[KeyCode[\"AudioVolumeMute\"] = 117] = \"AudioVolumeMute\";\n KeyCode[KeyCode[\"AudioVolumeUp\"] = 118] = \"AudioVolumeUp\";\n KeyCode[KeyCode[\"AudioVolumeDown\"] = 119] = \"AudioVolumeDown\";\n KeyCode[KeyCode[\"BrowserSearch\"] = 120] = \"BrowserSearch\";\n KeyCode[KeyCode[\"BrowserHome\"] = 121] = \"BrowserHome\";\n KeyCode[KeyCode[\"BrowserBack\"] = 122] = \"BrowserBack\";\n KeyCode[KeyCode[\"BrowserForward\"] = 123] = \"BrowserForward\";\n KeyCode[KeyCode[\"MediaTrackNext\"] = 124] = \"MediaTrackNext\";\n KeyCode[KeyCode[\"MediaTrackPrevious\"] = 125] = \"MediaTrackPrevious\";\n KeyCode[KeyCode[\"MediaStop\"] = 126] = \"MediaStop\";\n KeyCode[KeyCode[\"MediaPlayPause\"] = 127] = \"MediaPlayPause\";\n KeyCode[KeyCode[\"LaunchMediaPlayer\"] = 128] = \"LaunchMediaPlayer\";\n KeyCode[KeyCode[\"LaunchMail\"] = 129] = \"LaunchMail\";\n KeyCode[KeyCode[\"LaunchApp2\"] = 130] = \"LaunchApp2\";\n /**\n * VK_CLEAR, 0x0C, CLEAR key\n */\n KeyCode[KeyCode[\"Clear\"] = 131] = \"Clear\";\n /**\n * Placed last to cover the length of the enum.\n * Please do not depend on this value!\n */\n KeyCode[KeyCode[\"MAX_VALUE\"] = 132] = \"MAX_VALUE\";\n })(KeyCode || (KeyCode = {}));\n var MarkerSeverity;\n (function(MarkerSeverity) {\n MarkerSeverity[MarkerSeverity[\"Hint\"] = 1] = \"Hint\";\n MarkerSeverity[MarkerSeverity[\"Info\"] = 2] = \"Info\";\n MarkerSeverity[MarkerSeverity[\"Warning\"] = 4] = \"Warning\";\n MarkerSeverity[MarkerSeverity[\"Error\"] = 8] = \"Error\";\n })(MarkerSeverity || (MarkerSeverity = {}));\n var MarkerTag;\n (function(MarkerTag) {\n MarkerTag[MarkerTag[\"Unnecessary\"] = 1] = \"Unnecessary\";\n MarkerTag[MarkerTag[\"Deprecated\"] = 2] = \"Deprecated\";\n })(MarkerTag || (MarkerTag = {}));\n /**\n * Position in the minimap to render the decoration.\n */\n var MinimapPosition;\n (function(MinimapPosition) {\n MinimapPosition[MinimapPosition[\"Inline\"] = 1] = \"Inline\";\n MinimapPosition[MinimapPosition[\"Gutter\"] = 2] = \"Gutter\";\n })(MinimapPosition || (MinimapPosition = {}));\n /**\n * Section header style.\n */\n var MinimapSectionHeaderStyle;\n (function(MinimapSectionHeaderStyle) {\n MinimapSectionHeaderStyle[MinimapSectionHeaderStyle[\"Normal\"] = 1] = \"Normal\";\n MinimapSectionHeaderStyle[MinimapSectionHeaderStyle[\"Underlined\"] = 2] = \"Underlined\";\n })(MinimapSectionHeaderStyle || (MinimapSectionHeaderStyle = {}));\n /**\n * Type of hit element with the mouse in the editor.\n */\n var MouseTargetType;\n (function(MouseTargetType) {\n /**\n * Mouse is on top of an unknown element.\n */\n MouseTargetType[MouseTargetType[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n /**\n * Mouse is on top of the textarea used for input.\n */\n MouseTargetType[MouseTargetType[\"TEXTAREA\"] = 1] = \"TEXTAREA\";\n /**\n * Mouse is on top of the glyph margin\n */\n MouseTargetType[MouseTargetType[\"GUTTER_GLYPH_MARGIN\"] = 2] = \"GUTTER_GLYPH_MARGIN\";\n /**\n * Mouse is on top of the line numbers\n */\n MouseTargetType[MouseTargetType[\"GUTTER_LINE_NUMBERS\"] = 3] = \"GUTTER_LINE_NUMBERS\";\n /**\n * Mouse is on top of the line decorations\n */\n MouseTargetType[MouseTargetType[\"GUTTER_LINE_DECORATIONS\"] = 4] = \"GUTTER_LINE_DECORATIONS\";\n /**\n * Mouse is on top of the whitespace left in the gutter by a view zone.\n */\n MouseTargetType[MouseTargetType[\"GUTTER_VIEW_ZONE\"] = 5] = \"GUTTER_VIEW_ZONE\";\n /**\n * Mouse is on top of text in the content.\n */\n MouseTargetType[MouseTargetType[\"CONTENT_TEXT\"] = 6] = \"CONTENT_TEXT\";\n /**\n * Mouse is on top of empty space in the content (e.g. after line text or below last line)\n */\n MouseTargetType[MouseTargetType[\"CONTENT_EMPTY\"] = 7] = \"CONTENT_EMPTY\";\n /**\n * Mouse is on top of a view zone in the content.\n */\n MouseTargetType[MouseTargetType[\"CONTENT_VIEW_ZONE\"] = 8] = \"CONTENT_VIEW_ZONE\";\n /**\n * Mouse is on top of a content widget.\n */\n MouseTargetType[MouseTargetType[\"CONTENT_WIDGET\"] = 9] = \"CONTENT_WIDGET\";\n /**\n * Mouse is on top of the decorations overview ruler.\n */\n MouseTargetType[MouseTargetType[\"OVERVIEW_RULER\"] = 10] = \"OVERVIEW_RULER\";\n /**\n * Mouse is on top of a scrollbar.\n */\n MouseTargetType[MouseTargetType[\"SCROLLBAR\"] = 11] = \"SCROLLBAR\";\n /**\n * Mouse is on top of an overlay widget.\n */\n MouseTargetType[MouseTargetType[\"OVERLAY_WIDGET\"] = 12] = \"OVERLAY_WIDGET\";\n /**\n * Mouse is outside of the editor.\n */\n MouseTargetType[MouseTargetType[\"OUTSIDE_EDITOR\"] = 13] = \"OUTSIDE_EDITOR\";\n })(MouseTargetType || (MouseTargetType = {}));\n var NewSymbolNameTag;\n (function(NewSymbolNameTag) {\n NewSymbolNameTag[NewSymbolNameTag[\"AIGenerated\"] = 1] = \"AIGenerated\";\n })(NewSymbolNameTag || (NewSymbolNameTag = {}));\n var NewSymbolNameTriggerKind;\n (function(NewSymbolNameTriggerKind) {\n NewSymbolNameTriggerKind[NewSymbolNameTriggerKind[\"Invoke\"] = 0] = \"Invoke\";\n NewSymbolNameTriggerKind[NewSymbolNameTriggerKind[\"Automatic\"] = 1] = \"Automatic\";\n })(NewSymbolNameTriggerKind || (NewSymbolNameTriggerKind = {}));\n /**\n * A positioning preference for rendering overlay widgets.\n */\n var OverlayWidgetPositionPreference;\n (function(OverlayWidgetPositionPreference) {\n /**\n * Position the overlay widget in the top right corner\n */\n OverlayWidgetPositionPreference[OverlayWidgetPositionPreference[\"TOP_RIGHT_CORNER\"] = 0] = \"TOP_RIGHT_CORNER\";\n /**\n * Position the overlay widget in the bottom right corner\n */\n OverlayWidgetPositionPreference[OverlayWidgetPositionPreference[\"BOTTOM_RIGHT_CORNER\"] = 1] = \"BOTTOM_RIGHT_CORNER\";\n /**\n * Position the overlay widget in the top center\n */\n OverlayWidgetPositionPreference[OverlayWidgetPositionPreference[\"TOP_CENTER\"] = 2] = \"TOP_CENTER\";\n })(OverlayWidgetPositionPreference || (OverlayWidgetPositionPreference = {}));\n /**\n * Vertical Lane in the overview ruler of the editor.\n */\n var OverviewRulerLane$1;\n (function(OverviewRulerLane) {\n OverviewRulerLane[OverviewRulerLane[\"Left\"] = 1] = \"Left\";\n OverviewRulerLane[OverviewRulerLane[\"Center\"] = 2] = \"Center\";\n OverviewRulerLane[OverviewRulerLane[\"Right\"] = 4] = \"Right\";\n OverviewRulerLane[OverviewRulerLane[\"Full\"] = 7] = \"Full\";\n })(OverviewRulerLane$1 || (OverviewRulerLane$1 = {}));\n /**\n * How a partial acceptance was triggered.\n */\n var PartialAcceptTriggerKind;\n (function(PartialAcceptTriggerKind) {\n PartialAcceptTriggerKind[PartialAcceptTriggerKind[\"Word\"] = 0] = \"Word\";\n PartialAcceptTriggerKind[PartialAcceptTriggerKind[\"Line\"] = 1] = \"Line\";\n PartialAcceptTriggerKind[PartialAcceptTriggerKind[\"Suggest\"] = 2] = \"Suggest\";\n })(PartialAcceptTriggerKind || (PartialAcceptTriggerKind = {}));\n var PositionAffinity;\n (function(PositionAffinity) {\n /**\n * Prefers the left most position.\n */\n PositionAffinity[PositionAffinity[\"Left\"] = 0] = \"Left\";\n /**\n * Prefers the right most position.\n */\n PositionAffinity[PositionAffinity[\"Right\"] = 1] = \"Right\";\n /**\n * No preference.\n */\n PositionAffinity[PositionAffinity[\"None\"] = 2] = \"None\";\n /**\n * If the given position is on injected text, prefers the position left of it.\n */\n PositionAffinity[PositionAffinity[\"LeftOfInjectedText\"] = 3] = \"LeftOfInjectedText\";\n /**\n * If the given position is on injected text, prefers the position right of it.\n */\n PositionAffinity[PositionAffinity[\"RightOfInjectedText\"] = 4] = \"RightOfInjectedText\";\n })(PositionAffinity || (PositionAffinity = {}));\n var RenderLineNumbersType;\n (function(RenderLineNumbersType) {\n RenderLineNumbersType[RenderLineNumbersType[\"Off\"] = 0] = \"Off\";\n RenderLineNumbersType[RenderLineNumbersType[\"On\"] = 1] = \"On\";\n RenderLineNumbersType[RenderLineNumbersType[\"Relative\"] = 2] = \"Relative\";\n RenderLineNumbersType[RenderLineNumbersType[\"Interval\"] = 3] = \"Interval\";\n RenderLineNumbersType[RenderLineNumbersType[\"Custom\"] = 4] = \"Custom\";\n })(RenderLineNumbersType || (RenderLineNumbersType = {}));\n var RenderMinimap;\n (function(RenderMinimap) {\n RenderMinimap[RenderMinimap[\"None\"] = 0] = \"None\";\n RenderMinimap[RenderMinimap[\"Text\"] = 1] = \"Text\";\n RenderMinimap[RenderMinimap[\"Blocks\"] = 2] = \"Blocks\";\n })(RenderMinimap || (RenderMinimap = {}));\n var ScrollType;\n (function(ScrollType) {\n ScrollType[ScrollType[\"Smooth\"] = 0] = \"Smooth\";\n ScrollType[ScrollType[\"Immediate\"] = 1] = \"Immediate\";\n })(ScrollType || (ScrollType = {}));\n var ScrollbarVisibility;\n (function(ScrollbarVisibility) {\n ScrollbarVisibility[ScrollbarVisibility[\"Auto\"] = 1] = \"Auto\";\n ScrollbarVisibility[ScrollbarVisibility[\"Hidden\"] = 2] = \"Hidden\";\n ScrollbarVisibility[ScrollbarVisibility[\"Visible\"] = 3] = \"Visible\";\n })(ScrollbarVisibility || (ScrollbarVisibility = {}));\n /**\n * The direction of a selection.\n */\n var SelectionDirection;\n (function(SelectionDirection) {\n /**\n * The selection starts above where it ends.\n */\n SelectionDirection[SelectionDirection[\"LTR\"] = 0] = \"LTR\";\n /**\n * The selection starts below where it ends.\n */\n SelectionDirection[SelectionDirection[\"RTL\"] = 1] = \"RTL\";\n })(SelectionDirection || (SelectionDirection = {}));\n var ShowLightbulbIconMode;\n (function(ShowLightbulbIconMode) {\n ShowLightbulbIconMode[\"Off\"] = \"off\";\n ShowLightbulbIconMode[\"OnCode\"] = \"onCode\";\n ShowLightbulbIconMode[\"On\"] = \"on\";\n })(ShowLightbulbIconMode || (ShowLightbulbIconMode = {}));\n var SignatureHelpTriggerKind;\n (function(SignatureHelpTriggerKind) {\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"Invoke\"] = 1] = \"Invoke\";\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"TriggerCharacter\"] = 2] = \"TriggerCharacter\";\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"ContentChange\"] = 3] = \"ContentChange\";\n })(SignatureHelpTriggerKind || (SignatureHelpTriggerKind = {}));\n /**\n * A symbol kind.\n */\n var SymbolKind;\n (function(SymbolKind) {\n SymbolKind[SymbolKind[\"File\"] = 0] = \"File\";\n SymbolKind[SymbolKind[\"Module\"] = 1] = \"Module\";\n SymbolKind[SymbolKind[\"Namespace\"] = 2] = \"Namespace\";\n SymbolKind[SymbolKind[\"Package\"] = 3] = \"Package\";\n SymbolKind[SymbolKind[\"Class\"] = 4] = \"Class\";\n SymbolKind[SymbolKind[\"Method\"] = 5] = \"Method\";\n SymbolKind[SymbolKind[\"Property\"] = 6] = \"Property\";\n SymbolKind[SymbolKind[\"Field\"] = 7] = \"Field\";\n SymbolKind[SymbolKind[\"Constructor\"] = 8] = \"Constructor\";\n SymbolKind[SymbolKind[\"Enum\"] = 9] = \"Enum\";\n SymbolKind[SymbolKind[\"Interface\"] = 10] = \"Interface\";\n SymbolKind[SymbolKind[\"Function\"] = 11] = \"Function\";\n SymbolKind[SymbolKind[\"Variable\"] = 12] = \"Variable\";\n SymbolKind[SymbolKind[\"Constant\"] = 13] = \"Constant\";\n SymbolKind[SymbolKind[\"String\"] = 14] = \"String\";\n SymbolKind[SymbolKind[\"Number\"] = 15] = \"Number\";\n SymbolKind[SymbolKind[\"Boolean\"] = 16] = \"Boolean\";\n SymbolKind[SymbolKind[\"Array\"] = 17] = \"Array\";\n SymbolKind[SymbolKind[\"Object\"] = 18] = \"Object\";\n SymbolKind[SymbolKind[\"Key\"] = 19] = \"Key\";\n SymbolKind[SymbolKind[\"Null\"] = 20] = \"Null\";\n SymbolKind[SymbolKind[\"EnumMember\"] = 21] = \"EnumMember\";\n SymbolKind[SymbolKind[\"Struct\"] = 22] = \"Struct\";\n SymbolKind[SymbolKind[\"Event\"] = 23] = \"Event\";\n SymbolKind[SymbolKind[\"Operator\"] = 24] = \"Operator\";\n SymbolKind[SymbolKind[\"TypeParameter\"] = 25] = \"TypeParameter\";\n })(SymbolKind || (SymbolKind = {}));\n var SymbolTag;\n (function(SymbolTag) {\n SymbolTag[SymbolTag[\"Deprecated\"] = 1] = \"Deprecated\";\n })(SymbolTag || (SymbolTag = {}));\n /**\n * Text Direction for a decoration.\n */\n var TextDirection$1;\n (function(TextDirection) {\n TextDirection[TextDirection[\"LTR\"] = 0] = \"LTR\";\n TextDirection[TextDirection[\"RTL\"] = 1] = \"RTL\";\n })(TextDirection$1 || (TextDirection$1 = {}));\n /**\n * The kind of animation in which the editor's cursor should be rendered.\n */\n var TextEditorCursorBlinkingStyle;\n (function(TextEditorCursorBlinkingStyle) {\n /**\n * Hidden\n */\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Hidden\"] = 0] = \"Hidden\";\n /**\n * Blinking\n */\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Blink\"] = 1] = \"Blink\";\n /**\n * Blinking with smooth fading\n */\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Smooth\"] = 2] = \"Smooth\";\n /**\n * Blinking with prolonged filled state and smooth fading\n */\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Phase\"] = 3] = \"Phase\";\n /**\n * Expand collapse animation on the y axis\n */\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Expand\"] = 4] = \"Expand\";\n /**\n * No-Blinking\n */\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Solid\"] = 5] = \"Solid\";\n })(TextEditorCursorBlinkingStyle || (TextEditorCursorBlinkingStyle = {}));\n /**\n * The style in which the editor's cursor should be rendered.\n */\n var TextEditorCursorStyle;\n (function(TextEditorCursorStyle) {\n /**\n * As a vertical line (sitting between two characters).\n */\n TextEditorCursorStyle[TextEditorCursorStyle[\"Line\"] = 1] = \"Line\";\n /**\n * As a block (sitting on top of a character).\n */\n TextEditorCursorStyle[TextEditorCursorStyle[\"Block\"] = 2] = \"Block\";\n /**\n * As a horizontal line (sitting under a character).\n */\n TextEditorCursorStyle[TextEditorCursorStyle[\"Underline\"] = 3] = \"Underline\";\n /**\n * As a thin vertical line (sitting between two characters).\n */\n TextEditorCursorStyle[TextEditorCursorStyle[\"LineThin\"] = 4] = \"LineThin\";\n /**\n * As an outlined block (sitting on top of a character).\n */\n TextEditorCursorStyle[TextEditorCursorStyle[\"BlockOutline\"] = 5] = \"BlockOutline\";\n /**\n * As a thin horizontal line (sitting under a character).\n */\n TextEditorCursorStyle[TextEditorCursorStyle[\"UnderlineThin\"] = 6] = \"UnderlineThin\";\n })(TextEditorCursorStyle || (TextEditorCursorStyle = {}));\n /**\n * Describes the behavior of decorations when typing/editing near their edges.\n * Note: Please do not edit the values, as they very carefully match `DecorationRangeBehavior`\n */\n var TrackedRangeStickiness;\n (function(TrackedRangeStickiness) {\n TrackedRangeStickiness[TrackedRangeStickiness[\"AlwaysGrowsWhenTypingAtEdges\"] = 0] = \"AlwaysGrowsWhenTypingAtEdges\";\n TrackedRangeStickiness[TrackedRangeStickiness[\"NeverGrowsWhenTypingAtEdges\"] = 1] = \"NeverGrowsWhenTypingAtEdges\";\n TrackedRangeStickiness[TrackedRangeStickiness[\"GrowsOnlyWhenTypingBefore\"] = 2] = \"GrowsOnlyWhenTypingBefore\";\n TrackedRangeStickiness[TrackedRangeStickiness[\"GrowsOnlyWhenTypingAfter\"] = 3] = \"GrowsOnlyWhenTypingAfter\";\n })(TrackedRangeStickiness || (TrackedRangeStickiness = {}));\n /**\n * Describes how to indent wrapped lines.\n */\n var WrappingIndent;\n (function(WrappingIndent) {\n /**\n * No indentation => wrapped lines begin at column 1.\n */\n WrappingIndent[WrappingIndent[\"None\"] = 0] = \"None\";\n /**\n * Same => wrapped lines get the same indentation as the parent.\n */\n WrappingIndent[WrappingIndent[\"Same\"] = 1] = \"Same\";\n /**\n * Indent => wrapped lines get +1 indentation toward the parent.\n */\n WrappingIndent[WrappingIndent[\"Indent\"] = 2] = \"Indent\";\n /**\n * DeepIndent => wrapped lines get +2 indentation toward the parent.\n */\n WrappingIndent[WrappingIndent[\"DeepIndent\"] = 3] = \"DeepIndent\";\n })(WrappingIndent || (WrappingIndent = {}));\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/services/editorBaseApi.js\n var KeyMod = class {\n static {\n this.CtrlCmd = 2048;\n }\n static {\n this.Shift = 1024;\n }\n static {\n this.Alt = 512;\n }\n static {\n this.WinCtrl = 256;\n }\n static chord(firstPart, secondPart) {\n return KeyChord(firstPart, secondPart);\n }\n };\n function createMonacoBaseAPI() {\n return {\n editor: void 0,\n languages: void 0,\n CancellationTokenSource,\n Emitter,\n KeyCode,\n KeyMod,\n Position,\n Range,\n Selection,\n SelectionDirection,\n MarkerSeverity,\n MarkerTag,\n Uri: URI,\n Token\n };\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/map.js\n var _a;\n var _c;\n var ResourceMapEntry = class {\n constructor(uri, value) {\n this.uri = uri;\n this.value = value;\n }\n };\n function isEntries(arg) {\n return Array.isArray(arg);\n }\n (class ResourceMap {\n static {\n this.defaultToKey = (resource) => resource.toString();\n }\n constructor(arg, toKey) {\n this[_a] = \"ResourceMap\";\n if (arg instanceof ResourceMap) {\n this.map = new Map(arg.map);\n this.toKey = toKey ?? ResourceMap.defaultToKey;\n } else if (isEntries(arg)) {\n this.map = /* @__PURE__ */ new Map();\n this.toKey = toKey ?? ResourceMap.defaultToKey;\n for (const [resource, value] of arg) this.set(resource, value);\n } else {\n this.map = /* @__PURE__ */ new Map();\n this.toKey = arg ?? ResourceMap.defaultToKey;\n }\n }\n set(resource, value) {\n this.map.set(this.toKey(resource), new ResourceMapEntry(resource, value));\n return this;\n }\n get(resource) {\n return this.map.get(this.toKey(resource))?.value;\n }\n has(resource) {\n return this.map.has(this.toKey(resource));\n }\n get size() {\n return this.map.size;\n }\n clear() {\n this.map.clear();\n }\n delete(resource) {\n return this.map.delete(this.toKey(resource));\n }\n forEach(clb, thisArg) {\n if (typeof thisArg !== \"undefined\") clb = clb.bind(thisArg);\n for (const [_, entry] of this.map) clb(entry.value, entry.uri, this);\n }\n *values() {\n for (const entry of this.map.values()) yield entry.value;\n }\n *keys() {\n for (const entry of this.map.values()) yield entry.uri;\n }\n *entries() {\n for (const entry of this.map.values()) yield [entry.uri, entry.value];\n }\n *[(_a = Symbol.toStringTag, Symbol.iterator)]() {\n for (const [, entry] of this.map) yield [entry.uri, entry.value];\n }\n });\n var LinkedMap = class {\n constructor() {\n this[_c] = \"LinkedMap\";\n this._map = /* @__PURE__ */ new Map();\n this._head = void 0;\n this._tail = void 0;\n this._size = 0;\n this._state = 0;\n }\n clear() {\n this._map.clear();\n this._head = void 0;\n this._tail = void 0;\n this._size = 0;\n this._state++;\n }\n isEmpty() {\n return !this._head && !this._tail;\n }\n get size() {\n return this._size;\n }\n get first() {\n return this._head?.value;\n }\n get last() {\n return this._tail?.value;\n }\n has(key) {\n return this._map.has(key);\n }\n get(key, touch = 0) {\n const item = this._map.get(key);\n if (!item) return;\n if (touch !== 0) this.touch(item, touch);\n return item.value;\n }\n set(key, value, touch = 0) {\n let item = this._map.get(key);\n if (item) {\n item.value = value;\n if (touch !== 0) this.touch(item, touch);\n } else {\n item = {\n key,\n value,\n next: void 0,\n previous: void 0\n };\n switch (touch) {\n case 0:\n this.addItemLast(item);\n break;\n case 1:\n this.addItemFirst(item);\n break;\n case 2:\n this.addItemLast(item);\n break;\n default:\n this.addItemLast(item);\n break;\n }\n this._map.set(key, item);\n this._size++;\n }\n return this;\n }\n delete(key) {\n return !!this.remove(key);\n }\n remove(key) {\n const item = this._map.get(key);\n if (!item) return;\n this._map.delete(key);\n this.removeItem(item);\n this._size--;\n return item.value;\n }\n shift() {\n if (!this._head && !this._tail) return;\n if (!this._head || !this._tail) throw new Error(\"Invalid list\");\n const item = this._head;\n this._map.delete(item.key);\n this.removeItem(item);\n this._size--;\n return item.value;\n }\n forEach(callbackfn, thisArg) {\n const state = this._state;\n let current = this._head;\n while (current) {\n if (thisArg) callbackfn.bind(thisArg)(current.value, current.key, this);\n else callbackfn(current.value, current.key, this);\n if (this._state !== state) throw new Error(`LinkedMap got modified during iteration.`);\n current = current.next;\n }\n }\n keys() {\n const map = this;\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]() {\n return iterator;\n },\n next() {\n if (map._state !== state) throw new Error(`LinkedMap got modified during iteration.`);\n if (current) {\n const result = {\n value: current.key,\n done: false\n };\n current = current.next;\n return result;\n } else return {\n value: void 0,\n done: true\n };\n }\n };\n return iterator;\n }\n values() {\n const map = this;\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]() {\n return iterator;\n },\n next() {\n if (map._state !== state) throw new Error(`LinkedMap got modified during iteration.`);\n if (current) {\n const result = {\n value: current.value,\n done: false\n };\n current = current.next;\n return result;\n } else return {\n value: void 0,\n done: true\n };\n }\n };\n return iterator;\n }\n entries() {\n const map = this;\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]() {\n return iterator;\n },\n next() {\n if (map._state !== state) throw new Error(`LinkedMap got modified during iteration.`);\n if (current) {\n const result = {\n value: [current.key, current.value],\n done: false\n };\n current = current.next;\n return result;\n } else return {\n value: void 0,\n done: true\n };\n }\n };\n return iterator;\n }\n [(_c = Symbol.toStringTag, Symbol.iterator)]() {\n return this.entries();\n }\n trimOld(newSize) {\n if (newSize >= this.size) return;\n if (newSize === 0) {\n this.clear();\n return;\n }\n let current = this._head;\n let currentSize = this.size;\n while (current && currentSize > newSize) {\n this._map.delete(current.key);\n current = current.next;\n currentSize--;\n }\n this._head = current;\n this._size = currentSize;\n if (current) current.previous = void 0;\n this._state++;\n }\n trimNew(newSize) {\n if (newSize >= this.size) return;\n if (newSize === 0) {\n this.clear();\n return;\n }\n let current = this._tail;\n let currentSize = this.size;\n while (current && currentSize > newSize) {\n this._map.delete(current.key);\n current = current.previous;\n currentSize--;\n }\n this._tail = current;\n this._size = currentSize;\n if (current) current.next = void 0;\n this._state++;\n }\n addItemFirst(item) {\n if (!this._head && !this._tail) this._tail = item;\n else if (!this._head) throw new Error(\"Invalid list\");\n else {\n item.next = this._head;\n this._head.previous = item;\n }\n this._head = item;\n this._state++;\n }\n addItemLast(item) {\n if (!this._head && !this._tail) this._head = item;\n else if (!this._tail) throw new Error(\"Invalid list\");\n else {\n item.previous = this._tail;\n this._tail.next = item;\n }\n this._tail = item;\n this._state++;\n }\n removeItem(item) {\n if (item === this._head && item === this._tail) {\n this._head = void 0;\n this._tail = void 0;\n } else if (item === this._head) {\n if (!item.next) throw new Error(\"Invalid list\");\n item.next.previous = void 0;\n this._head = item.next;\n } else if (item === this._tail) {\n if (!item.previous) throw new Error(\"Invalid list\");\n item.previous.next = void 0;\n this._tail = item.previous;\n } else {\n const next = item.next;\n const previous = item.previous;\n if (!next || !previous) throw new Error(\"Invalid list\");\n next.previous = previous;\n previous.next = next;\n }\n item.next = void 0;\n item.previous = void 0;\n this._state++;\n }\n touch(item, touch) {\n if (!this._head || !this._tail) throw new Error(\"Invalid list\");\n if (touch !== 1 && touch !== 2) return;\n if (touch === 1) {\n if (item === this._head) return;\n const next = item.next;\n const previous = item.previous;\n if (item === this._tail) {\n previous.next = void 0;\n this._tail = previous;\n } else {\n next.previous = previous;\n previous.next = next;\n }\n item.previous = void 0;\n item.next = this._head;\n this._head.previous = item;\n this._head = item;\n this._state++;\n } else if (touch === 2) {\n if (item === this._tail) return;\n const next = item.next;\n const previous = item.previous;\n if (item === this._head) {\n next.previous = void 0;\n this._head = next;\n } else {\n next.previous = previous;\n previous.next = next;\n }\n item.next = void 0;\n item.previous = this._tail;\n this._tail.next = item;\n this._tail = item;\n this._state++;\n }\n }\n toJSON() {\n const data = [];\n this.forEach((value, key) => {\n data.push([key, value]);\n });\n return data;\n }\n fromJSON(data) {\n this.clear();\n for (const [key, value] of data) this.set(key, value);\n }\n };\n var Cache = class extends LinkedMap {\n constructor(limit, ratio = 1) {\n super();\n this._limit = limit;\n this._ratio = Math.min(Math.max(0, ratio), 1);\n }\n get limit() {\n return this._limit;\n }\n set limit(limit) {\n this._limit = limit;\n this.checkTrim();\n }\n get(key, touch = 2) {\n return super.get(key, touch);\n }\n peek(key) {\n return super.get(key, 0);\n }\n set(key, value) {\n super.set(key, value, 2);\n return this;\n }\n checkTrim() {\n if (this.size > this._limit) this.trim(Math.round(this._limit * this._ratio));\n }\n };\n var LRUCache = class extends Cache {\n constructor(limit, ratio = 1) {\n super(limit, ratio);\n }\n trim(newSize) {\n this.trimOld(newSize);\n }\n set(key, value) {\n super.set(key, value);\n this.checkTrim();\n return this;\n }\n };\n var SetMap = class {\n constructor() {\n this.map = /* @__PURE__ */ new Map();\n }\n add(key, value) {\n let values = this.map.get(key);\n if (!values) {\n values = /* @__PURE__ */ new Set();\n this.map.set(key, values);\n }\n values.add(value);\n }\n delete(key, value) {\n const values = this.map.get(key);\n if (!values) return;\n values.delete(value);\n if (values.size === 0) this.map.delete(key);\n }\n forEach(key, fn) {\n const values = this.map.get(key);\n if (!values) return;\n values.forEach(fn);\n }\n };\n new LRUCache(10);\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/model.js\n /**\n * Vertical Lane in the overview ruler of the editor.\n */\n var OverviewRulerLane;\n (function(OverviewRulerLane) {\n OverviewRulerLane[OverviewRulerLane[\"Left\"] = 1] = \"Left\";\n OverviewRulerLane[OverviewRulerLane[\"Center\"] = 2] = \"Center\";\n OverviewRulerLane[OverviewRulerLane[\"Right\"] = 4] = \"Right\";\n OverviewRulerLane[OverviewRulerLane[\"Full\"] = 7] = \"Full\";\n })(OverviewRulerLane || (OverviewRulerLane = {}));\n /**\n * Vertical Lane in the glyph margin of the editor.\n */\n var GlyphMarginLane;\n (function(GlyphMarginLane) {\n GlyphMarginLane[GlyphMarginLane[\"Left\"] = 1] = \"Left\";\n GlyphMarginLane[GlyphMarginLane[\"Center\"] = 2] = \"Center\";\n GlyphMarginLane[GlyphMarginLane[\"Right\"] = 3] = \"Right\";\n })(GlyphMarginLane || (GlyphMarginLane = {}));\n /**\n * Text Direction for a decoration.\n */\n var TextDirection;\n (function(TextDirection) {\n TextDirection[TextDirection[\"LTR\"] = 0] = \"LTR\";\n TextDirection[TextDirection[\"RTL\"] = 1] = \"RTL\";\n })(TextDirection || (TextDirection = {}));\n var InjectedTextCursorStops;\n (function(InjectedTextCursorStops) {\n InjectedTextCursorStops[InjectedTextCursorStops[\"Both\"] = 0] = \"Both\";\n InjectedTextCursorStops[InjectedTextCursorStops[\"Right\"] = 1] = \"Right\";\n InjectedTextCursorStops[InjectedTextCursorStops[\"Left\"] = 2] = \"Left\";\n InjectedTextCursorStops[InjectedTextCursorStops[\"None\"] = 3] = \"None\";\n })(InjectedTextCursorStops || (InjectedTextCursorStops = {}));\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/model/textModelSearch.js\n function isMultilineRegexSource(searchString) {\n if (!searchString || searchString.length === 0) return false;\n for (let i = 0, len = searchString.length; i < len; i++) {\n const chCode = searchString.charCodeAt(i);\n if (chCode === 10) return true;\n if (chCode === 92) {\n i++;\n if (i >= len) break;\n const nextChCode = searchString.charCodeAt(i);\n if (nextChCode === 110 || nextChCode === 114 || nextChCode === 87) return true;\n }\n }\n return false;\n }\n function leftIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength) {\n if (matchStartIndex === 0) return true;\n const charBefore = text.charCodeAt(matchStartIndex - 1);\n if (wordSeparators.get(charBefore) !== 0) return true;\n if (charBefore === 13 || charBefore === 10) return true;\n if (matchLength > 0) {\n const firstCharInMatch = text.charCodeAt(matchStartIndex);\n if (wordSeparators.get(firstCharInMatch) !== 0) return true;\n }\n return false;\n }\n function rightIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength) {\n if (matchStartIndex + matchLength === textLength) return true;\n const charAfter = text.charCodeAt(matchStartIndex + matchLength);\n if (wordSeparators.get(charAfter) !== 0) return true;\n if (charAfter === 13 || charAfter === 10) return true;\n if (matchLength > 0) {\n const lastCharInMatch = text.charCodeAt(matchStartIndex + matchLength - 1);\n if (wordSeparators.get(lastCharInMatch) !== 0) return true;\n }\n return false;\n }\n function isValidMatch(wordSeparators, text, textLength, matchStartIndex, matchLength) {\n return leftIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength) && rightIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength);\n }\n var Searcher = class {\n constructor(wordSeparators, searchRegex) {\n this._wordSeparators = wordSeparators;\n this._searchRegex = searchRegex;\n this._prevMatchStartIndex = -1;\n this._prevMatchLength = 0;\n }\n reset(lastIndex) {\n this._searchRegex.lastIndex = lastIndex;\n this._prevMatchStartIndex = -1;\n this._prevMatchLength = 0;\n }\n next(text) {\n const textLength = text.length;\n let m;\n do {\n if (this._prevMatchStartIndex + this._prevMatchLength === textLength) return null;\n m = this._searchRegex.exec(text);\n if (!m) return null;\n const matchStartIndex = m.index;\n const matchLength = m[0].length;\n if (matchStartIndex === this._prevMatchStartIndex && matchLength === this._prevMatchLength) {\n if (matchLength === 0) {\n if (getNextCodePoint(text, textLength, this._searchRegex.lastIndex) > 65535) this._searchRegex.lastIndex += 2;\n else this._searchRegex.lastIndex += 1;\n continue;\n }\n return null;\n }\n this._prevMatchStartIndex = matchStartIndex;\n this._prevMatchLength = matchLength;\n if (!this._wordSeparators || isValidMatch(this._wordSeparators, text, textLength, matchStartIndex, matchLength)) return m;\n } while (m);\n return null;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/core/wordHelper.js\n const USUAL_WORD_SEPARATORS = \"`~!@#$%^&*()-=+[{]}\\\\|;:'\\\",.<>/?\";\n /**\n * Create a word definition regular expression based on default word separators.\n * Optionally provide allowed separators that should be included in words.\n *\n * The default would look like this:\n * /(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)/g\n */\n function createWordRegExp(allowInWords = \"\") {\n let source = \"(-?\\\\d*\\\\.\\\\d\\\\w*)|([^\";\n for (const sep of USUAL_WORD_SEPARATORS) {\n if (allowInWords.indexOf(sep) >= 0) continue;\n source += \"\\\\\" + sep;\n }\n source += \"\\\\s]+)\";\n return new RegExp(source, \"g\");\n }\n const DEFAULT_WORD_REGEXP = createWordRegExp();\n function ensureValidWordDefinition(wordDefinition) {\n let result = DEFAULT_WORD_REGEXP;\n if (wordDefinition && wordDefinition instanceof RegExp) if (!wordDefinition.global) {\n let flags = \"g\";\n if (wordDefinition.ignoreCase) flags += \"i\";\n if (wordDefinition.multiline) flags += \"m\";\n if (wordDefinition.unicode) flags += \"u\";\n result = new RegExp(wordDefinition.source, flags);\n } else result = wordDefinition;\n result.lastIndex = 0;\n return result;\n }\n const _defaultConfig = new LinkedList();\n _defaultConfig.unshift({\n maxLen: 1e3,\n windowSize: 15,\n timeBudget: 150\n });\n function getWordAtText(column, wordDefinition, text, textOffset, config) {\n wordDefinition = ensureValidWordDefinition(wordDefinition);\n if (!config) config = Iterable.first(_defaultConfig);\n if (text.length > config.maxLen) {\n let start = column - config.maxLen / 2;\n if (start < 0) start = 0;\n else textOffset += start;\n text = text.substring(start, column + config.maxLen / 2);\n return getWordAtText(column, wordDefinition, text, textOffset, config);\n }\n const t1 = Date.now();\n const pos = column - 1 - textOffset;\n let prevRegexIndex = -1;\n let match = null;\n for (let i = 1;; i++) {\n if (Date.now() - t1 >= config.timeBudget) break;\n const regexIndex = pos - config.windowSize * i;\n wordDefinition.lastIndex = Math.max(0, regexIndex);\n const thisMatch = _findRegexMatchEnclosingPosition(wordDefinition, text, pos, prevRegexIndex);\n if (!thisMatch && match) break;\n match = thisMatch;\n if (regexIndex <= 0) break;\n prevRegexIndex = regexIndex;\n }\n if (match) {\n const result = {\n word: match[0],\n startColumn: textOffset + 1 + match.index,\n endColumn: textOffset + 1 + match.index + match[0].length\n };\n wordDefinition.lastIndex = 0;\n return result;\n }\n return null;\n }\n function _findRegexMatchEnclosingPosition(wordDefinition, text, pos, stopPos) {\n let match;\n while (match = wordDefinition.exec(text)) {\n const matchIndex = match.index || 0;\n if (matchIndex <= pos && wordDefinition.lastIndex >= pos) return match;\n else if (stopPos > 0 && matchIndex > stopPos) return null;\n }\n return null;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/services/unicodeTextModelHighlighter.js\n var UnicodeTextModelHighlighter = class {\n static computeUnicodeHighlights(model, options, range) {\n const startLine = range ? range.startLineNumber : 1;\n const endLine = range ? range.endLineNumber : model.getLineCount();\n const codePointHighlighter = new CodePointHighlighter(options);\n const candidates = codePointHighlighter.getCandidateCodePoints();\n let regex;\n if (candidates === \"allNonBasicAscii\") regex = /* @__PURE__ */ new RegExp(\"[^\\\\t\\\\n\\\\r\\\\x20-\\\\x7E]\", \"g\");\n else regex = new RegExp(`${buildRegExpCharClassExpr(Array.from(candidates))}`, \"g\");\n const searcher = new Searcher(null, regex);\n const ranges = [];\n let hasMore = false;\n let m;\n let ambiguousCharacterCount = 0;\n let invisibleCharacterCount = 0;\n let nonBasicAsciiCharacterCount = 0;\n forLoop: for (let lineNumber = startLine, lineCount = endLine; lineNumber <= lineCount; lineNumber++) {\n const lineContent = model.getLineContent(lineNumber);\n const lineLength = lineContent.length;\n searcher.reset(0);\n do {\n m = searcher.next(lineContent);\n if (m) {\n let startIndex = m.index;\n let endIndex = m.index + m[0].length;\n if (startIndex > 0) {\n if (isHighSurrogate(lineContent.charCodeAt(startIndex - 1))) startIndex--;\n }\n if (endIndex + 1 < lineLength) {\n if (isHighSurrogate(lineContent.charCodeAt(endIndex - 1))) endIndex++;\n }\n const str = lineContent.substring(startIndex, endIndex);\n let word = getWordAtText(startIndex + 1, DEFAULT_WORD_REGEXP, lineContent, 0);\n if (word && word.endColumn <= startIndex + 1) word = null;\n const highlightReason = codePointHighlighter.shouldHighlightNonBasicASCII(str, word ? word.word : null);\n if (highlightReason !== 0) {\n if (highlightReason === 3) ambiguousCharacterCount++;\n else if (highlightReason === 2) invisibleCharacterCount++;\n else if (highlightReason === 1) nonBasicAsciiCharacterCount++;\n else assertNever();\n if (ranges.length >= 1e3) {\n hasMore = true;\n break forLoop;\n }\n ranges.push(new Range(lineNumber, startIndex + 1, lineNumber, endIndex + 1));\n }\n }\n } while (m);\n }\n return {\n ranges,\n hasMore,\n ambiguousCharacterCount,\n invisibleCharacterCount,\n nonBasicAsciiCharacterCount\n };\n }\n static computeUnicodeHighlightReason(char, options) {\n const codePointHighlighter = new CodePointHighlighter(options);\n switch (codePointHighlighter.shouldHighlightNonBasicASCII(char, null)) {\n case 0: return null;\n case 2: return { kind: 1 };\n case 3: {\n const codePoint = char.codePointAt(0);\n const primaryConfusable = codePointHighlighter.ambiguousCharacters.getPrimaryConfusable(codePoint);\n const notAmbiguousInLocales = AmbiguousCharacters.getLocales().filter((l) => !AmbiguousCharacters.getInstance(/* @__PURE__ */ new Set([...options.allowedLocales, l])).isAmbiguous(codePoint));\n return {\n kind: 0,\n confusableWith: String.fromCodePoint(primaryConfusable),\n notAmbiguousInLocales\n };\n }\n case 1: return { kind: 2 };\n }\n }\n };\n function buildRegExpCharClassExpr(codePoints, flags) {\n return `[${escapeRegExpCharacters(codePoints.map((i) => String.fromCodePoint(i)).join(\"\"))}]`;\n }\n var CodePointHighlighter = class {\n constructor(options) {\n this.options = options;\n this.allowedCodePoints = new Set(options.allowedCodePoints);\n this.ambiguousCharacters = AmbiguousCharacters.getInstance(new Set(options.allowedLocales));\n }\n getCandidateCodePoints() {\n if (this.options.nonBasicASCII) return \"allNonBasicAscii\";\n const set = /* @__PURE__ */ new Set();\n if (this.options.invisibleCharacters) {\n for (const cp of InvisibleCharacters.codePoints) if (!isAllowedInvisibleCharacter(String.fromCodePoint(cp))) set.add(cp);\n }\n if (this.options.ambiguousCharacters) for (const cp of this.ambiguousCharacters.getConfusableCodePoints()) set.add(cp);\n for (const cp of this.allowedCodePoints) set.delete(cp);\n return set;\n }\n shouldHighlightNonBasicASCII(character, wordContext) {\n const codePoint = character.codePointAt(0);\n if (this.allowedCodePoints.has(codePoint)) return 0;\n if (this.options.nonBasicASCII) return 1;\n let hasBasicASCIICharacters = false;\n let hasNonConfusableNonBasicAsciiCharacter = false;\n if (wordContext) for (const char of wordContext) {\n const codePoint = char.codePointAt(0);\n const isBasicASCII$1 = isBasicASCII(char);\n hasBasicASCIICharacters = hasBasicASCIICharacters || isBasicASCII$1;\n if (!isBasicASCII$1 && !this.ambiguousCharacters.isAmbiguous(codePoint) && !InvisibleCharacters.isInvisibleCharacter(codePoint)) hasNonConfusableNonBasicAsciiCharacter = true;\n }\n if (!hasBasicASCIICharacters && hasNonConfusableNonBasicAsciiCharacter) return 0;\n if (this.options.invisibleCharacters) {\n if (!isAllowedInvisibleCharacter(character) && InvisibleCharacters.isInvisibleCharacter(codePoint)) return 2;\n }\n if (this.options.ambiguousCharacters) {\n if (this.ambiguousCharacters.isAmbiguous(codePoint)) return 3;\n }\n return 0;\n }\n };\n function isAllowedInvisibleCharacter(character) {\n return character === \" \" || character === \"\\n\" || character === \" \";\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/linesDiffComputer.js\n var LinesDiff = class {\n constructor(changes, moves, hitTimeout) {\n this.changes = changes;\n this.moves = moves;\n this.hitTimeout = hitTimeout;\n }\n };\n var MovedText = class {\n constructor(lineRangeMapping, changes) {\n this.lineRangeMapping = lineRangeMapping;\n this.changes = changes;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/arrays.js\n function equals(one, other, itemEquals = (a, b) => a === b) {\n if (one === other) return true;\n if (!one || !other) return false;\n if (one.length !== other.length) return false;\n for (let i = 0, len = one.length; i < len; i++) if (!itemEquals(one[i], other[i])) return false;\n return true;\n }\n /**\n * Splits the given items into a list of (non-empty) groups.\n * `shouldBeGrouped` is used to decide if two consecutive items should be in the same group.\n * The order of the items is preserved.\n */\n function* groupAdjacentBy(items, shouldBeGrouped) {\n let currentGroup;\n let last;\n for (const item of items) {\n if (last !== void 0 && shouldBeGrouped(last, item)) currentGroup.push(item);\n else {\n if (currentGroup) yield currentGroup;\n currentGroup = [item];\n }\n last = item;\n }\n if (currentGroup) yield currentGroup;\n }\n function forEachAdjacent(arr, f) {\n for (let i = 0; i <= arr.length; i++) f(i === 0 ? void 0 : arr[i - 1], i === arr.length ? void 0 : arr[i]);\n }\n function forEachWithNeighbors(arr, f) {\n for (let i = 0; i < arr.length; i++) f(i === 0 ? void 0 : arr[i - 1], arr[i], i + 1 === arr.length ? void 0 : arr[i + 1]);\n }\n function pushMany(arr, items) {\n for (const item of items) arr.push(item);\n }\n var CompareResult;\n (function(CompareResult) {\n function isLessThan(result) {\n return result < 0;\n }\n CompareResult.isLessThan = isLessThan;\n function isLessThanOrEqual(result) {\n return result <= 0;\n }\n CompareResult.isLessThanOrEqual = isLessThanOrEqual;\n function isGreaterThan(result) {\n return result > 0;\n }\n CompareResult.isGreaterThan = isGreaterThan;\n function isNeitherLessOrGreaterThan(result) {\n return result === 0;\n }\n CompareResult.isNeitherLessOrGreaterThan = isNeitherLessOrGreaterThan;\n CompareResult.greaterThan = 1;\n CompareResult.lessThan = -1;\n CompareResult.neitherLessOrGreaterThan = 0;\n })(CompareResult || (CompareResult = {}));\n function compareBy(selector, comparator) {\n return (a, b) => comparator(selector(a), selector(b));\n }\n /**\n * The natural order on numbers.\n */\n const numberComparator = (a, b) => a - b;\n function reverseOrder(comparator) {\n return (a, b) => -comparator(a, b);\n }\n (class CallbackIterable {\n static {\n this.empty = new CallbackIterable((_callback) => {});\n }\n constructor(iterate) {\n this.iterate = iterate;\n }\n toArray() {\n const result = [];\n this.iterate((item) => {\n result.push(item);\n return true;\n });\n return result;\n }\n filter(predicate) {\n return new CallbackIterable((cb) => this.iterate((item) => predicate(item) ? cb(item) : true));\n }\n map(mapFn) {\n return new CallbackIterable((cb) => this.iterate((item) => cb(mapFn(item))));\n }\n findLast(predicate) {\n let result;\n this.iterate((item) => {\n if (predicate(item)) result = item;\n return true;\n });\n return result;\n }\n findLastMaxBy(comparator) {\n let result;\n let first = true;\n this.iterate((item) => {\n if (first || CompareResult.isGreaterThan(comparator(item, result))) {\n first = false;\n result = item;\n }\n return true;\n });\n return result;\n }\n });\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/core/ranges/offsetRange.js\n /**\n * A range of offsets (0-based).\n */\n var OffsetRange = class OffsetRange {\n static fromTo(start, endExclusive) {\n return new OffsetRange(start, endExclusive);\n }\n static addRange(range, sortedRanges) {\n let i = 0;\n while (i < sortedRanges.length && sortedRanges[i].endExclusive < range.start) i++;\n let j = i;\n while (j < sortedRanges.length && sortedRanges[j].start <= range.endExclusive) j++;\n if (i === j) sortedRanges.splice(i, 0, range);\n else {\n const start = Math.min(range.start, sortedRanges[i].start);\n const end = Math.max(range.endExclusive, sortedRanges[j - 1].endExclusive);\n sortedRanges.splice(i, j - i, new OffsetRange(start, end));\n }\n }\n static tryCreate(start, endExclusive) {\n if (start > endExclusive) return;\n return new OffsetRange(start, endExclusive);\n }\n static ofLength(length) {\n return new OffsetRange(0, length);\n }\n static ofStartAndLength(start, length) {\n return new OffsetRange(start, start + length);\n }\n static emptyAt(offset) {\n return new OffsetRange(offset, offset);\n }\n constructor(start, endExclusive) {\n this.start = start;\n this.endExclusive = endExclusive;\n if (start > endExclusive) throw new BugIndicatingError(`Invalid range: ${this.toString()}`);\n }\n get isEmpty() {\n return this.start === this.endExclusive;\n }\n delta(offset) {\n return new OffsetRange(this.start + offset, this.endExclusive + offset);\n }\n deltaStart(offset) {\n return new OffsetRange(this.start + offset, this.endExclusive);\n }\n deltaEnd(offset) {\n return new OffsetRange(this.start, this.endExclusive + offset);\n }\n get length() {\n return this.endExclusive - this.start;\n }\n toString() {\n return `[${this.start}, ${this.endExclusive})`;\n }\n equals(other) {\n return this.start === other.start && this.endExclusive === other.endExclusive;\n }\n contains(offset) {\n return this.start <= offset && offset < this.endExclusive;\n }\n /**\n * for all numbers n: range1.contains(n) or range2.contains(n) => range1.join(range2).contains(n)\n * The joined range is the smallest range that contains both ranges.\n */\n join(other) {\n return new OffsetRange(Math.min(this.start, other.start), Math.max(this.endExclusive, other.endExclusive));\n }\n /**\n * for all numbers n: range1.contains(n) and range2.contains(n) <=> range1.intersect(range2).contains(n)\n *\n * The resulting range is empty if the ranges do not intersect, but touch.\n * If the ranges don't even touch, the result is undefined.\n */\n intersect(other) {\n const start = Math.max(this.start, other.start);\n const end = Math.min(this.endExclusive, other.endExclusive);\n if (start <= end) return new OffsetRange(start, end);\n }\n intersectionLength(range) {\n const start = Math.max(this.start, range.start);\n const end = Math.min(this.endExclusive, range.endExclusive);\n return Math.max(0, end - start);\n }\n intersects(other) {\n return Math.max(this.start, other.start) < Math.min(this.endExclusive, other.endExclusive);\n }\n intersectsOrTouches(other) {\n return Math.max(this.start, other.start) <= Math.min(this.endExclusive, other.endExclusive);\n }\n isBefore(other) {\n return this.endExclusive <= other.start;\n }\n isAfter(other) {\n return this.start >= other.endExclusive;\n }\n slice(arr) {\n return arr.slice(this.start, this.endExclusive);\n }\n substring(str) {\n return str.substring(this.start, this.endExclusive);\n }\n /**\n * Returns the given value if it is contained in this instance, otherwise the closest value that is contained.\n * The range must not be empty.\n */\n clip(value) {\n if (this.isEmpty) throw new BugIndicatingError(`Invalid clipping range: ${this.toString()}`);\n return Math.max(this.start, Math.min(this.endExclusive - 1, value));\n }\n /**\n * Returns `r := value + k * length` such that `r` is contained in this range.\n * The range must not be empty.\n *\n * E.g. `[5, 10).clipCyclic(10) === 5`, `[5, 10).clipCyclic(11) === 6` and `[5, 10).clipCyclic(4) === 9`.\n */\n clipCyclic(value) {\n if (this.isEmpty) throw new BugIndicatingError(`Invalid clipping range: ${this.toString()}`);\n if (value < this.start) return this.endExclusive - (this.start - value) % this.length;\n if (value >= this.endExclusive) return this.start + (value - this.start) % this.length;\n return value;\n }\n forEach(f) {\n for (let i = this.start; i < this.endExclusive; i++) f(i);\n }\n /**\n * this: [ 5, 10), range: [10, 15) => [5, 15)]\n * Throws if the ranges are not touching.\n */\n joinRightTouching(range) {\n if (this.endExclusive !== range.start) throw new BugIndicatingError(`Invalid join: ${this.toString()} and ${range.toString()}`);\n return new OffsetRange(this.start, range.endExclusive);\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/arraysFind.js\n /**\n * Finds the last item where predicate is true using binary search.\n * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`!\n *\n * @returns `undefined` if no item matches, otherwise the last item that matches the predicate.\n */\n function findLastMonotonous(array, predicate) {\n const idx = findLastIdxMonotonous(array, predicate);\n return idx === -1 ? void 0 : array[idx];\n }\n /**\n * Finds the last item where predicate is true using binary search.\n * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`!\n *\n * @returns `startIdx - 1` if predicate is false for all items, otherwise the index of the last item that matches the predicate.\n */\n function findLastIdxMonotonous(array, predicate, startIdx = 0, endIdxEx = array.length) {\n let i = startIdx;\n let j = endIdxEx;\n while (i < j) {\n const k = Math.floor((i + j) / 2);\n if (predicate(array[k])) i = k + 1;\n else j = k;\n }\n return i - 1;\n }\n /**\n * Finds the first item where predicate is true using binary search.\n * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[false, ..., false, true, ..., true]`!\n *\n * @returns `undefined` if no item matches, otherwise the first item that matches the predicate.\n */\n function findFirstMonotonous(array, predicate) {\n const idx = findFirstIdxMonotonousOrArrLen(array, predicate);\n return idx === array.length ? void 0 : array[idx];\n }\n /**\n * Finds the first item where predicate is true using binary search.\n * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[false, ..., false, true, ..., true]`!\n *\n * @returns `endIdxEx` if predicate is false for all items, otherwise the index of the first item that matches the predicate.\n */\n function findFirstIdxMonotonousOrArrLen(array, predicate, startIdx = 0, endIdxEx = array.length) {\n let i = startIdx;\n let j = endIdxEx;\n while (i < j) {\n const k = Math.floor((i + j) / 2);\n if (predicate(array[k])) j = k;\n else i = k + 1;\n }\n return i;\n }\n /**\n * Use this when\n * * You have a sorted array\n * * You query this array with a monotonous predicate to find the last item that has a certain property.\n * * You query this array multiple times with monotonous predicates that get weaker and weaker.\n */\n var MonotonousArray = class MonotonousArray {\n static {\n this.assertInvariants = false;\n }\n constructor(_array) {\n this._array = _array;\n this._findLastMonotonousLastIdx = 0;\n }\n /**\n * The predicate must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`!\n * For subsequent calls, current predicate must be weaker than (or equal to) the previous predicate, i.e. more entries must be `true`.\n */\n findLastMonotonous(predicate) {\n if (MonotonousArray.assertInvariants) {\n if (this._prevFindLastPredicate) {\n for (const item of this._array) if (this._prevFindLastPredicate(item) && !predicate(item)) throw new Error(\"MonotonousArray: current predicate must be weaker than (or equal to) the previous predicate.\");\n }\n this._prevFindLastPredicate = predicate;\n }\n const idx = findLastIdxMonotonous(this._array, predicate, this._findLastMonotonousLastIdx);\n this._findLastMonotonousLastIdx = idx + 1;\n return idx === -1 ? void 0 : this._array[idx];\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/core/ranges/lineRange.js\n /**\n * A range of lines (1-based).\n */\n var LineRange = class LineRange {\n static ofLength(startLineNumber, length) {\n return new LineRange(startLineNumber, startLineNumber + length);\n }\n static fromRange(range) {\n return new LineRange(range.startLineNumber, range.endLineNumber);\n }\n static fromRangeInclusive(range) {\n return new LineRange(range.startLineNumber, range.endLineNumber + 1);\n }\n static {\n this.compareByStart = compareBy((l) => l.startLineNumber, numberComparator);\n }\n /**\n * @param lineRanges An array of arrays of of sorted line ranges.\n */\n static joinMany(lineRanges) {\n if (lineRanges.length === 0) return [];\n let result = new LineRangeSet(lineRanges[0].slice());\n for (let i = 1; i < lineRanges.length; i++) result = result.getUnion(new LineRangeSet(lineRanges[i].slice()));\n return result.ranges;\n }\n static join(lineRanges) {\n if (lineRanges.length === 0) throw new BugIndicatingError(\"lineRanges cannot be empty\");\n let startLineNumber = lineRanges[0].startLineNumber;\n let endLineNumberExclusive = lineRanges[0].endLineNumberExclusive;\n for (let i = 1; i < lineRanges.length; i++) {\n startLineNumber = Math.min(startLineNumber, lineRanges[i].startLineNumber);\n endLineNumberExclusive = Math.max(endLineNumberExclusive, lineRanges[i].endLineNumberExclusive);\n }\n return new LineRange(startLineNumber, endLineNumberExclusive);\n }\n /**\n * @internal\n */\n static deserialize(lineRange) {\n return new LineRange(lineRange[0], lineRange[1]);\n }\n constructor(startLineNumber, endLineNumberExclusive) {\n if (startLineNumber > endLineNumberExclusive) throw new BugIndicatingError(`startLineNumber ${startLineNumber} cannot be after endLineNumberExclusive ${endLineNumberExclusive}`);\n this.startLineNumber = startLineNumber;\n this.endLineNumberExclusive = endLineNumberExclusive;\n }\n /**\n * Indicates if this line range contains the given line number.\n */\n contains(lineNumber) {\n return this.startLineNumber <= lineNumber && lineNumber < this.endLineNumberExclusive;\n }\n /**\n * Indicates if this line range is empty.\n */\n get isEmpty() {\n return this.startLineNumber === this.endLineNumberExclusive;\n }\n /**\n * Moves this line range by the given offset of line numbers.\n */\n delta(offset) {\n return new LineRange(this.startLineNumber + offset, this.endLineNumberExclusive + offset);\n }\n deltaLength(offset) {\n return new LineRange(this.startLineNumber, this.endLineNumberExclusive + offset);\n }\n /**\n * The number of lines this line range spans.\n */\n get length() {\n return this.endLineNumberExclusive - this.startLineNumber;\n }\n /**\n * Creates a line range that combines this and the given line range.\n */\n join(other) {\n return new LineRange(Math.min(this.startLineNumber, other.startLineNumber), Math.max(this.endLineNumberExclusive, other.endLineNumberExclusive));\n }\n toString() {\n return `[${this.startLineNumber},${this.endLineNumberExclusive})`;\n }\n /**\n * The resulting range is empty if the ranges do not intersect, but touch.\n * If the ranges don't even touch, the result is undefined.\n */\n intersect(other) {\n const startLineNumber = Math.max(this.startLineNumber, other.startLineNumber);\n const endLineNumberExclusive = Math.min(this.endLineNumberExclusive, other.endLineNumberExclusive);\n if (startLineNumber <= endLineNumberExclusive) return new LineRange(startLineNumber, endLineNumberExclusive);\n }\n intersectsStrict(other) {\n return this.startLineNumber < other.endLineNumberExclusive && other.startLineNumber < this.endLineNumberExclusive;\n }\n intersectsOrTouches(other) {\n return this.startLineNumber <= other.endLineNumberExclusive && other.startLineNumber <= this.endLineNumberExclusive;\n }\n equals(b) {\n return this.startLineNumber === b.startLineNumber && this.endLineNumberExclusive === b.endLineNumberExclusive;\n }\n toInclusiveRange() {\n if (this.isEmpty) return null;\n return new Range(this.startLineNumber, 1, this.endLineNumberExclusive - 1, Number.MAX_SAFE_INTEGER);\n }\n /**\n * @deprecated Using this function is discouraged because it might lead to bugs: The end position is not guaranteed to be a valid position!\n */\n toExclusiveRange() {\n return new Range(this.startLineNumber, 1, this.endLineNumberExclusive, 1);\n }\n mapToLineArray(f) {\n const result = [];\n for (let lineNumber = this.startLineNumber; lineNumber < this.endLineNumberExclusive; lineNumber++) result.push(f(lineNumber));\n return result;\n }\n forEach(f) {\n for (let lineNumber = this.startLineNumber; lineNumber < this.endLineNumberExclusive; lineNumber++) f(lineNumber);\n }\n /**\n * @internal\n */\n serialize() {\n return [this.startLineNumber, this.endLineNumberExclusive];\n }\n /**\n * Converts this 1-based line range to a 0-based offset range (subtracts 1!).\n * @internal\n */\n toOffsetRange() {\n return new OffsetRange(this.startLineNumber - 1, this.endLineNumberExclusive - 1);\n }\n addMargin(marginTop, marginBottom) {\n return new LineRange(this.startLineNumber - marginTop, this.endLineNumberExclusive + marginBottom);\n }\n };\n var LineRangeSet = class LineRangeSet {\n constructor(_normalizedRanges = []) {\n this._normalizedRanges = _normalizedRanges;\n }\n get ranges() {\n return this._normalizedRanges;\n }\n addRange(range) {\n if (range.length === 0) return;\n const joinRangeStartIdx = findFirstIdxMonotonousOrArrLen(this._normalizedRanges, (r) => r.endLineNumberExclusive >= range.startLineNumber);\n const joinRangeEndIdxExclusive = findLastIdxMonotonous(this._normalizedRanges, (r) => r.startLineNumber <= range.endLineNumberExclusive) + 1;\n if (joinRangeStartIdx === joinRangeEndIdxExclusive) this._normalizedRanges.splice(joinRangeStartIdx, 0, range);\n else if (joinRangeStartIdx === joinRangeEndIdxExclusive - 1) {\n const joinRange = this._normalizedRanges[joinRangeStartIdx];\n this._normalizedRanges[joinRangeStartIdx] = joinRange.join(range);\n } else {\n const joinRange = this._normalizedRanges[joinRangeStartIdx].join(this._normalizedRanges[joinRangeEndIdxExclusive - 1]).join(range);\n this._normalizedRanges.splice(joinRangeStartIdx, joinRangeEndIdxExclusive - joinRangeStartIdx, joinRange);\n }\n }\n contains(lineNumber) {\n const rangeThatStartsBeforeEnd = findLastMonotonous(this._normalizedRanges, (r) => r.startLineNumber <= lineNumber);\n return !!rangeThatStartsBeforeEnd && rangeThatStartsBeforeEnd.endLineNumberExclusive > lineNumber;\n }\n intersects(range) {\n const rangeThatStartsBeforeEnd = findLastMonotonous(this._normalizedRanges, (r) => r.startLineNumber < range.endLineNumberExclusive);\n return !!rangeThatStartsBeforeEnd && rangeThatStartsBeforeEnd.endLineNumberExclusive > range.startLineNumber;\n }\n getUnion(other) {\n if (this._normalizedRanges.length === 0) return other;\n if (other._normalizedRanges.length === 0) return this;\n const result = [];\n let i1 = 0;\n let i2 = 0;\n let current = null;\n while (i1 < this._normalizedRanges.length || i2 < other._normalizedRanges.length) {\n let next = null;\n if (i1 < this._normalizedRanges.length && i2 < other._normalizedRanges.length) {\n const lineRange1 = this._normalizedRanges[i1];\n const lineRange2 = other._normalizedRanges[i2];\n if (lineRange1.startLineNumber < lineRange2.startLineNumber) {\n next = lineRange1;\n i1++;\n } else {\n next = lineRange2;\n i2++;\n }\n } else if (i1 < this._normalizedRanges.length) {\n next = this._normalizedRanges[i1];\n i1++;\n } else {\n next = other._normalizedRanges[i2];\n i2++;\n }\n if (current === null) current = next;\n else if (current.endLineNumberExclusive >= next.startLineNumber) current = new LineRange(current.startLineNumber, Math.max(current.endLineNumberExclusive, next.endLineNumberExclusive));\n else {\n result.push(current);\n current = next;\n }\n }\n if (current !== null) result.push(current);\n return new LineRangeSet(result);\n }\n /**\n * Subtracts all ranges in this set from `range` and returns the result.\n */\n subtractFrom(range) {\n const joinRangeStartIdx = findFirstIdxMonotonousOrArrLen(this._normalizedRanges, (r) => r.endLineNumberExclusive >= range.startLineNumber);\n const joinRangeEndIdxExclusive = findLastIdxMonotonous(this._normalizedRanges, (r) => r.startLineNumber <= range.endLineNumberExclusive) + 1;\n if (joinRangeStartIdx === joinRangeEndIdxExclusive) return new LineRangeSet([range]);\n const result = [];\n let startLineNumber = range.startLineNumber;\n for (let i = joinRangeStartIdx; i < joinRangeEndIdxExclusive; i++) {\n const r = this._normalizedRanges[i];\n if (r.startLineNumber > startLineNumber) result.push(new LineRange(startLineNumber, r.startLineNumber));\n startLineNumber = r.endLineNumberExclusive;\n }\n if (startLineNumber < range.endLineNumberExclusive) result.push(new LineRange(startLineNumber, range.endLineNumberExclusive));\n return new LineRangeSet(result);\n }\n toString() {\n return this._normalizedRanges.map((r) => r.toString()).join(\", \");\n }\n getIntersection(other) {\n const result = [];\n let i1 = 0;\n let i2 = 0;\n while (i1 < this._normalizedRanges.length && i2 < other._normalizedRanges.length) {\n const r1 = this._normalizedRanges[i1];\n const r2 = other._normalizedRanges[i2];\n const i = r1.intersect(r2);\n if (i && !i.isEmpty) result.push(i);\n if (r1.endLineNumberExclusive < r2.endLineNumberExclusive) i1++;\n else i2++;\n }\n return new LineRangeSet(result);\n }\n getWithDelta(value) {\n return new LineRangeSet(this._normalizedRanges.map((r) => r.delta(value)));\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/core/text/textLength.js\n /**\n * Represents a non-negative length of text in terms of line and column count.\n */\n var TextLength = class TextLength {\n static {\n this.zero = new TextLength(0, 0);\n }\n static betweenPositions(position1, position2) {\n if (position1.lineNumber === position2.lineNumber) return new TextLength(0, position2.column - position1.column);\n else return new TextLength(position2.lineNumber - position1.lineNumber, position2.column - 1);\n }\n static fromPosition(pos) {\n return new TextLength(pos.lineNumber - 1, pos.column - 1);\n }\n static ofRange(range) {\n return TextLength.betweenPositions(range.getStartPosition(), range.getEndPosition());\n }\n static ofText(text) {\n let line = 0;\n let column = 0;\n for (const c of text) if (c === \"\\n\") {\n line++;\n column = 0;\n } else column++;\n return new TextLength(line, column);\n }\n constructor(lineCount, columnCount) {\n this.lineCount = lineCount;\n this.columnCount = columnCount;\n }\n isGreaterThanOrEqualTo(other) {\n if (this.lineCount !== other.lineCount) return this.lineCount > other.lineCount;\n return this.columnCount >= other.columnCount;\n }\n add(other) {\n if (other.lineCount === 0) return new TextLength(this.lineCount, this.columnCount + other.columnCount);\n else return new TextLength(this.lineCount + other.lineCount, other.columnCount);\n }\n createRange(startPosition) {\n if (this.lineCount === 0) return new Range(startPosition.lineNumber, startPosition.column, startPosition.lineNumber, startPosition.column + this.columnCount);\n else return new Range(startPosition.lineNumber, startPosition.column, startPosition.lineNumber + this.lineCount, this.columnCount + 1);\n }\n toRange() {\n return new Range(1, 1, this.lineCount + 1, this.columnCount + 1);\n }\n toLineRange() {\n return LineRange.ofLength(1, this.lineCount + 1);\n }\n addToPosition(position) {\n if (this.lineCount === 0) return new Position(position.lineNumber, position.column + this.columnCount);\n else return new Position(position.lineNumber + this.lineCount, this.columnCount + 1);\n }\n toString() {\n return `${this.lineCount},${this.columnCount}`;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/core/text/positionToOffsetImpl.js\n var PositionOffsetTransformerBase = class {\n getOffsetRange(range) {\n return new OffsetRange(this.getOffset(range.getStartPosition()), this.getOffset(range.getEndPosition()));\n }\n getRange(offsetRange) {\n return Range.fromPositions(this.getPosition(offsetRange.start), this.getPosition(offsetRange.endExclusive));\n }\n getStringReplacement(edit) {\n return new Deps.deps.StringReplacement(this.getOffsetRange(edit.range), edit.text);\n }\n getTextReplacement(edit) {\n return new Deps.deps.TextReplacement(this.getRange(edit.replaceRange), edit.newText);\n }\n getTextEdit(edit) {\n const edits = edit.replacements.map((e) => this.getTextReplacement(e));\n return new Deps.deps.TextEdit(edits);\n }\n };\n var Deps = class {\n static {\n this._deps = void 0;\n }\n static get deps() {\n if (!this._deps) throw new Error(\"Dependencies not set. Call _setDependencies first.\");\n return this._deps;\n }\n };\n var PositionOffsetTransformer = class extends PositionOffsetTransformerBase {\n constructor(text) {\n super();\n this.text = text;\n this.lineStartOffsetByLineIdx = [];\n this.lineEndOffsetByLineIdx = [];\n this.lineStartOffsetByLineIdx.push(0);\n for (let i = 0; i < text.length; i++) if (text.charAt(i) === \"\\n\") {\n this.lineStartOffsetByLineIdx.push(i + 1);\n if (i > 0 && text.charAt(i - 1) === \"\\r\") this.lineEndOffsetByLineIdx.push(i - 1);\n else this.lineEndOffsetByLineIdx.push(i);\n }\n this.lineEndOffsetByLineIdx.push(text.length);\n }\n getOffset(position) {\n const valPos = this._validatePosition(position);\n return this.lineStartOffsetByLineIdx[valPos.lineNumber - 1] + valPos.column - 1;\n }\n _validatePosition(position) {\n if (position.lineNumber < 1) return new Position(1, 1);\n const lineCount = this.textLength.lineCount + 1;\n if (position.lineNumber > lineCount) return new Position(lineCount, this.getLineLength(lineCount) + 1);\n if (position.column < 1) return new Position(position.lineNumber, 1);\n const lineLength = this.getLineLength(position.lineNumber);\n if (position.column - 1 > lineLength) return new Position(position.lineNumber, lineLength + 1);\n return position;\n }\n getPosition(offset) {\n const idx = findLastIdxMonotonous(this.lineStartOffsetByLineIdx, (i) => i <= offset);\n return new Position(idx + 1, offset - this.lineStartOffsetByLineIdx[idx] + 1);\n }\n get textLength() {\n const lineIdx = this.lineStartOffsetByLineIdx.length - 1;\n return new Deps.deps.TextLength(lineIdx, this.text.length - this.lineStartOffsetByLineIdx[lineIdx]);\n }\n getLineLength(lineNumber) {\n return this.lineEndOffsetByLineIdx[lineNumber - 1] - this.lineStartOffsetByLineIdx[lineNumber - 1];\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/core/text/abstractText.js\n var AbstractText = class {\n constructor() {\n this._transformer = void 0;\n }\n get endPositionExclusive() {\n return this.length.addToPosition(new Position(1, 1));\n }\n get lineRange() {\n return this.length.toLineRange();\n }\n getValue() {\n return this.getValueOfRange(this.length.toRange());\n }\n getValueOfOffsetRange(range) {\n return this.getValueOfRange(this.getTransformer().getRange(range));\n }\n getLineLength(lineNumber) {\n return this.getValueOfRange(new Range(lineNumber, 1, lineNumber, Number.MAX_SAFE_INTEGER)).length;\n }\n getTransformer() {\n if (!this._transformer) this._transformer = new PositionOffsetTransformer(this.getValue());\n return this._transformer;\n }\n getLineAt(lineNumber) {\n return this.getValueOfRange(new Range(lineNumber, 1, lineNumber, Number.MAX_SAFE_INTEGER));\n }\n };\n var LineBasedText = class extends AbstractText {\n constructor(_getLineContent, _lineCount) {\n assert(_lineCount >= 1);\n super();\n this._getLineContent = _getLineContent;\n this._lineCount = _lineCount;\n }\n getValueOfRange(range) {\n if (range.startLineNumber === range.endLineNumber) return this._getLineContent(range.startLineNumber).substring(range.startColumn - 1, range.endColumn - 1);\n let result = this._getLineContent(range.startLineNumber).substring(range.startColumn - 1);\n for (let i = range.startLineNumber + 1; i < range.endLineNumber; i++) result += \"\\n\" + this._getLineContent(i);\n result += \"\\n\" + this._getLineContent(range.endLineNumber).substring(0, range.endColumn - 1);\n return result;\n }\n getLineLength(lineNumber) {\n return this._getLineContent(lineNumber).length;\n }\n get length() {\n const lastLine = this._getLineContent(this._lineCount);\n return new TextLength(this._lineCount - 1, lastLine.length);\n }\n };\n var ArrayText = class extends LineBasedText {\n constructor(lines) {\n super((lineNumber) => lines[lineNumber - 1], lines.length);\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/core/edits/textEdit.js\n var TextReplacement = class TextReplacement {\n static joinReplacements(replacements, initialValue) {\n if (replacements.length === 0) throw new BugIndicatingError();\n if (replacements.length === 1) return replacements[0];\n const startPos = replacements[0].range.getStartPosition();\n const endPos = replacements[replacements.length - 1].range.getEndPosition();\n let newText = \"\";\n for (let i = 0; i < replacements.length; i++) {\n const curEdit = replacements[i];\n newText += curEdit.text;\n if (i < replacements.length - 1) {\n const nextEdit = replacements[i + 1];\n const gapRange = Range.fromPositions(curEdit.range.getEndPosition(), nextEdit.range.getStartPosition());\n const gapText = initialValue.getValueOfRange(gapRange);\n newText += gapText;\n }\n }\n return new TextReplacement(Range.fromPositions(startPos, endPos), newText);\n }\n static fromStringReplacement(replacement, initialState) {\n return new TextReplacement(initialState.getTransformer().getRange(replacement.replaceRange), replacement.newText);\n }\n static delete(range) {\n return new TextReplacement(range, \"\");\n }\n constructor(range, text) {\n this.range = range;\n this.text = text;\n }\n get isEmpty() {\n return this.range.isEmpty() && this.text.length === 0;\n }\n static equals(first, second) {\n return first.range.equalsRange(second.range) && first.text === second.text;\n }\n equals(other) {\n return TextReplacement.equals(this, other);\n }\n removeCommonPrefixAndSuffix(text) {\n return this.removeCommonPrefix(text).removeCommonSuffix(text);\n }\n removeCommonPrefix(text) {\n const normalizedOriginalText = text.getValueOfRange(this.range).replaceAll(\"\\r\\n\", \"\\n\");\n const normalizedModifiedText = this.text.replaceAll(\"\\r\\n\", \"\\n\");\n const commonPrefixLen = commonPrefixLength(normalizedOriginalText, normalizedModifiedText);\n const start = TextLength.ofText(normalizedOriginalText.substring(0, commonPrefixLen)).addToPosition(this.range.getStartPosition());\n const newText = normalizedModifiedText.substring(commonPrefixLen);\n const range = Range.fromPositions(start, this.range.getEndPosition());\n return new TextReplacement(range, newText);\n }\n removeCommonSuffix(text) {\n const normalizedOriginalText = text.getValueOfRange(this.range).replaceAll(\"\\r\\n\", \"\\n\");\n const normalizedModifiedText = this.text.replaceAll(\"\\r\\n\", \"\\n\");\n const commonSuffixLen = commonSuffixLength(normalizedOriginalText, normalizedModifiedText);\n const end = TextLength.ofText(normalizedOriginalText.substring(0, normalizedOriginalText.length - commonSuffixLen)).addToPosition(this.range.getStartPosition());\n const newText = normalizedModifiedText.substring(0, normalizedModifiedText.length - commonSuffixLen);\n const range = Range.fromPositions(this.range.getStartPosition(), end);\n return new TextReplacement(range, newText);\n }\n toString() {\n const start = this.range.getStartPosition();\n const end = this.range.getEndPosition();\n return `(${start.lineNumber},${start.column} -> ${end.lineNumber},${end.column}): \"${this.text}\"`;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/rangeMapping.js\n /**\n * Maps a line range in the original text model to a line range in the modified text model.\n */\n var LineRangeMapping = class LineRangeMapping {\n static inverse(mapping, originalLineCount, modifiedLineCount) {\n const result = [];\n let lastOriginalEndLineNumber = 1;\n let lastModifiedEndLineNumber = 1;\n for (const m of mapping) {\n const r = new LineRangeMapping(new LineRange(lastOriginalEndLineNumber, m.original.startLineNumber), new LineRange(lastModifiedEndLineNumber, m.modified.startLineNumber));\n if (!r.modified.isEmpty) result.push(r);\n lastOriginalEndLineNumber = m.original.endLineNumberExclusive;\n lastModifiedEndLineNumber = m.modified.endLineNumberExclusive;\n }\n const r = new LineRangeMapping(new LineRange(lastOriginalEndLineNumber, originalLineCount + 1), new LineRange(lastModifiedEndLineNumber, modifiedLineCount + 1));\n if (!r.modified.isEmpty) result.push(r);\n return result;\n }\n static clip(mapping, originalRange, modifiedRange) {\n const result = [];\n for (const m of mapping) {\n const original = m.original.intersect(originalRange);\n const modified = m.modified.intersect(modifiedRange);\n if (original && !original.isEmpty && modified && !modified.isEmpty) result.push(new LineRangeMapping(original, modified));\n }\n return result;\n }\n constructor(originalRange, modifiedRange) {\n this.original = originalRange;\n this.modified = modifiedRange;\n }\n toString() {\n return `{${this.original.toString()}->${this.modified.toString()}}`;\n }\n flip() {\n return new LineRangeMapping(this.modified, this.original);\n }\n join(other) {\n return new LineRangeMapping(this.original.join(other.original), this.modified.join(other.modified));\n }\n /**\n * This method assumes that the LineRangeMapping describes a valid diff!\n * I.e. if one range is empty, the other range cannot be the entire document.\n * It avoids various problems when the line range points to non-existing line-numbers.\n */\n toRangeMapping() {\n const origInclusiveRange = this.original.toInclusiveRange();\n const modInclusiveRange = this.modified.toInclusiveRange();\n if (origInclusiveRange && modInclusiveRange) return new RangeMapping(origInclusiveRange, modInclusiveRange);\n else if (this.original.startLineNumber === 1 || this.modified.startLineNumber === 1) {\n if (!(this.modified.startLineNumber === 1 && this.original.startLineNumber === 1)) throw new BugIndicatingError(\"not a valid diff\");\n return new RangeMapping(new Range(this.original.startLineNumber, 1, this.original.endLineNumberExclusive, 1), new Range(this.modified.startLineNumber, 1, this.modified.endLineNumberExclusive, 1));\n } else return new RangeMapping(new Range(this.original.startLineNumber - 1, Number.MAX_SAFE_INTEGER, this.original.endLineNumberExclusive - 1, Number.MAX_SAFE_INTEGER), new Range(this.modified.startLineNumber - 1, Number.MAX_SAFE_INTEGER, this.modified.endLineNumberExclusive - 1, Number.MAX_SAFE_INTEGER));\n }\n /**\n * This method assumes that the LineRangeMapping describes a valid diff!\n * I.e. if one range is empty, the other range cannot be the entire document.\n * It avoids various problems when the line range points to non-existing line-numbers.\n */\n toRangeMapping2(original, modified) {\n if (isValidLineNumber(this.original.endLineNumberExclusive, original) && isValidLineNumber(this.modified.endLineNumberExclusive, modified)) return new RangeMapping(new Range(this.original.startLineNumber, 1, this.original.endLineNumberExclusive, 1), new Range(this.modified.startLineNumber, 1, this.modified.endLineNumberExclusive, 1));\n if (!this.original.isEmpty && !this.modified.isEmpty) return new RangeMapping(Range.fromPositions(new Position(this.original.startLineNumber, 1), normalizePosition(new Position(this.original.endLineNumberExclusive - 1, Number.MAX_SAFE_INTEGER), original)), Range.fromPositions(new Position(this.modified.startLineNumber, 1), normalizePosition(new Position(this.modified.endLineNumberExclusive - 1, Number.MAX_SAFE_INTEGER), modified)));\n if (this.original.startLineNumber > 1 && this.modified.startLineNumber > 1) return new RangeMapping(Range.fromPositions(normalizePosition(new Position(this.original.startLineNumber - 1, Number.MAX_SAFE_INTEGER), original), normalizePosition(new Position(this.original.endLineNumberExclusive - 1, Number.MAX_SAFE_INTEGER), original)), Range.fromPositions(normalizePosition(new Position(this.modified.startLineNumber - 1, Number.MAX_SAFE_INTEGER), modified), normalizePosition(new Position(this.modified.endLineNumberExclusive - 1, Number.MAX_SAFE_INTEGER), modified)));\n throw new BugIndicatingError();\n }\n };\n function normalizePosition(position, content) {\n if (position.lineNumber < 1) return new Position(1, 1);\n if (position.lineNumber > content.length) return new Position(content.length, content[content.length - 1].length + 1);\n const line = content[position.lineNumber - 1];\n if (position.column > line.length + 1) return new Position(position.lineNumber, line.length + 1);\n return position;\n }\n function isValidLineNumber(lineNumber, lines) {\n return lineNumber >= 1 && lineNumber <= lines.length;\n }\n /**\n * Maps a line range in the original text model to a line range in the modified text model.\n * Also contains inner range mappings.\n */\n var DetailedLineRangeMapping = class DetailedLineRangeMapping extends LineRangeMapping {\n static fromRangeMappings(rangeMappings) {\n const originalRange = LineRange.join(rangeMappings.map((r) => LineRange.fromRangeInclusive(r.originalRange)));\n const modifiedRange = LineRange.join(rangeMappings.map((r) => LineRange.fromRangeInclusive(r.modifiedRange)));\n return new DetailedLineRangeMapping(originalRange, modifiedRange, rangeMappings);\n }\n constructor(originalRange, modifiedRange, innerChanges) {\n super(originalRange, modifiedRange);\n this.innerChanges = innerChanges;\n }\n flip() {\n return new DetailedLineRangeMapping(this.modified, this.original, this.innerChanges?.map((c) => c.flip()));\n }\n withInnerChangesFromLineRanges() {\n return new DetailedLineRangeMapping(this.original, this.modified, [this.toRangeMapping()]);\n }\n };\n /**\n * Maps a range in the original text model to a range in the modified text model.\n */\n var RangeMapping = class RangeMapping {\n static fromEdit(edit) {\n const newRanges = edit.getNewRanges();\n return edit.replacements.map((e, idx) => new RangeMapping(e.range, newRanges[idx]));\n }\n static assertSorted(rangeMappings) {\n for (let i = 1; i < rangeMappings.length; i++) {\n const previous = rangeMappings[i - 1];\n const current = rangeMappings[i];\n if (!(previous.originalRange.getEndPosition().isBeforeOrEqual(current.originalRange.getStartPosition()) && previous.modifiedRange.getEndPosition().isBeforeOrEqual(current.modifiedRange.getStartPosition()))) throw new BugIndicatingError(\"Range mappings must be sorted\");\n }\n }\n constructor(originalRange, modifiedRange) {\n this.originalRange = originalRange;\n this.modifiedRange = modifiedRange;\n }\n toString() {\n return `{${this.originalRange.toString()}->${this.modifiedRange.toString()}}`;\n }\n flip() {\n return new RangeMapping(this.modifiedRange, this.originalRange);\n }\n /**\n * Creates a single text edit that describes the change from the original to the modified text.\n */\n toTextEdit(modified) {\n const newText = modified.getValueOfRange(this.modifiedRange);\n return new TextReplacement(this.originalRange, newText);\n }\n };\n function lineRangeMappingFromRangeMappings(alignments, originalLines, modifiedLines, dontAssertStartLine = false) {\n const changes = [];\n for (const g of groupAdjacentBy(alignments.map((a) => getLineRangeMapping(a, originalLines, modifiedLines)), (a1, a2) => a1.original.intersectsOrTouches(a2.original) || a1.modified.intersectsOrTouches(a2.modified))) {\n const first = g[0];\n const last = g[g.length - 1];\n changes.push(new DetailedLineRangeMapping(first.original.join(last.original), first.modified.join(last.modified), g.map((a) => a.innerChanges[0])));\n }\n assertFn(() => {\n if (!dontAssertStartLine && changes.length > 0) {\n if (changes[0].modified.startLineNumber !== changes[0].original.startLineNumber) return false;\n if (modifiedLines.length.lineCount - changes[changes.length - 1].modified.endLineNumberExclusive !== originalLines.length.lineCount - changes[changes.length - 1].original.endLineNumberExclusive) return false;\n }\n return checkAdjacentItems(changes, (m1, m2) => m2.original.startLineNumber - m1.original.endLineNumberExclusive === m2.modified.startLineNumber - m1.modified.endLineNumberExclusive && m1.original.endLineNumberExclusive < m2.original.startLineNumber && m1.modified.endLineNumberExclusive < m2.modified.startLineNumber);\n });\n return changes;\n }\n function getLineRangeMapping(rangeMapping, originalLines, modifiedLines) {\n let lineStartDelta = 0;\n let lineEndDelta = 0;\n if (rangeMapping.modifiedRange.endColumn === 1 && rangeMapping.originalRange.endColumn === 1 && rangeMapping.originalRange.startLineNumber + lineStartDelta <= rangeMapping.originalRange.endLineNumber && rangeMapping.modifiedRange.startLineNumber + lineStartDelta <= rangeMapping.modifiedRange.endLineNumber) lineEndDelta = -1;\n if (rangeMapping.modifiedRange.startColumn - 1 >= modifiedLines.getLineLength(rangeMapping.modifiedRange.startLineNumber) && rangeMapping.originalRange.startColumn - 1 >= originalLines.getLineLength(rangeMapping.originalRange.startLineNumber) && rangeMapping.originalRange.startLineNumber <= rangeMapping.originalRange.endLineNumber + lineEndDelta && rangeMapping.modifiedRange.startLineNumber <= rangeMapping.modifiedRange.endLineNumber + lineEndDelta) lineStartDelta = 1;\n return new DetailedLineRangeMapping(new LineRange(rangeMapping.originalRange.startLineNumber + lineStartDelta, rangeMapping.originalRange.endLineNumber + 1 + lineEndDelta), new LineRange(rangeMapping.modifiedRange.startLineNumber + lineStartDelta, rangeMapping.modifiedRange.endLineNumber + 1 + lineEndDelta), [rangeMapping]);\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/legacyLinesDiffComputer.js\n const MINIMUM_MATCHING_CHARACTER_LENGTH = 3;\n var LegacyLinesDiffComputer = class {\n computeDiff(originalLines, modifiedLines, options) {\n const result = new DiffComputer(originalLines, modifiedLines, {\n maxComputationTime: options.maxComputationTimeMs,\n shouldIgnoreTrimWhitespace: options.ignoreTrimWhitespace,\n shouldComputeCharChanges: true,\n shouldMakePrettyDiff: true,\n shouldPostProcessCharChanges: true\n }).computeDiff();\n const changes = [];\n let lastChange = null;\n for (const c of result.changes) {\n let originalRange;\n if (c.originalEndLineNumber === 0) originalRange = new LineRange(c.originalStartLineNumber + 1, c.originalStartLineNumber + 1);\n else originalRange = new LineRange(c.originalStartLineNumber, c.originalEndLineNumber + 1);\n let modifiedRange;\n if (c.modifiedEndLineNumber === 0) modifiedRange = new LineRange(c.modifiedStartLineNumber + 1, c.modifiedStartLineNumber + 1);\n else modifiedRange = new LineRange(c.modifiedStartLineNumber, c.modifiedEndLineNumber + 1);\n let change = new DetailedLineRangeMapping(originalRange, modifiedRange, c.charChanges?.map((c) => new RangeMapping(new Range(c.originalStartLineNumber, c.originalStartColumn, c.originalEndLineNumber, c.originalEndColumn), new Range(c.modifiedStartLineNumber, c.modifiedStartColumn, c.modifiedEndLineNumber, c.modifiedEndColumn))));\n if (lastChange) {\n if (lastChange.modified.endLineNumberExclusive === change.modified.startLineNumber || lastChange.original.endLineNumberExclusive === change.original.startLineNumber) {\n change = new DetailedLineRangeMapping(lastChange.original.join(change.original), lastChange.modified.join(change.modified), lastChange.innerChanges && change.innerChanges ? lastChange.innerChanges.concat(change.innerChanges) : void 0);\n changes.pop();\n }\n }\n changes.push(change);\n lastChange = change;\n }\n assertFn(() => {\n return checkAdjacentItems(changes, (m1, m2) => m2.original.startLineNumber - m1.original.endLineNumberExclusive === m2.modified.startLineNumber - m1.modified.endLineNumberExclusive && m1.original.endLineNumberExclusive < m2.original.startLineNumber && m1.modified.endLineNumberExclusive < m2.modified.startLineNumber);\n });\n return new LinesDiff(changes, [], result.quitEarly);\n }\n };\n function computeDiff(originalSequence, modifiedSequence, continueProcessingPredicate, pretty) {\n return new LcsDiff(originalSequence, modifiedSequence, continueProcessingPredicate).ComputeDiff(pretty);\n }\n var LineSequence$1 = class {\n constructor(lines) {\n const startColumns = [];\n const endColumns = [];\n for (let i = 0, length = lines.length; i < length; i++) {\n startColumns[i] = getFirstNonBlankColumn(lines[i], 1);\n endColumns[i] = getLastNonBlankColumn(lines[i], 1);\n }\n this.lines = lines;\n this._startColumns = startColumns;\n this._endColumns = endColumns;\n }\n getElements() {\n const elements = [];\n for (let i = 0, len = this.lines.length; i < len; i++) elements[i] = this.lines[i].substring(this._startColumns[i] - 1, this._endColumns[i] - 1);\n return elements;\n }\n getStrictElement(index) {\n return this.lines[index];\n }\n getStartLineNumber(i) {\n return i + 1;\n }\n getEndLineNumber(i) {\n return i + 1;\n }\n createCharSequence(shouldIgnoreTrimWhitespace, startIndex, endIndex) {\n const charCodes = [];\n const lineNumbers = [];\n const columns = [];\n let len = 0;\n for (let index = startIndex; index <= endIndex; index++) {\n const lineContent = this.lines[index];\n const startColumn = shouldIgnoreTrimWhitespace ? this._startColumns[index] : 1;\n const endColumn = shouldIgnoreTrimWhitespace ? this._endColumns[index] : lineContent.length + 1;\n for (let col = startColumn; col < endColumn; col++) {\n charCodes[len] = lineContent.charCodeAt(col - 1);\n lineNumbers[len] = index + 1;\n columns[len] = col;\n len++;\n }\n if (!shouldIgnoreTrimWhitespace && index < endIndex) {\n charCodes[len] = 10;\n lineNumbers[len] = index + 1;\n columns[len] = lineContent.length + 1;\n len++;\n }\n }\n return new CharSequence(charCodes, lineNumbers, columns);\n }\n };\n var CharSequence = class {\n constructor(charCodes, lineNumbers, columns) {\n this._charCodes = charCodes;\n this._lineNumbers = lineNumbers;\n this._columns = columns;\n }\n toString() {\n return \"[\" + this._charCodes.map((s, idx) => (s === 10 ? \"\\\\n\" : String.fromCharCode(s)) + `-(${this._lineNumbers[idx]},${this._columns[idx]})`).join(\", \") + \"]\";\n }\n _assertIndex(index, arr) {\n if (index < 0 || index >= arr.length) throw new Error(`Illegal index`);\n }\n getElements() {\n return this._charCodes;\n }\n getStartLineNumber(i) {\n if (i > 0 && i === this._lineNumbers.length) return this.getEndLineNumber(i - 1);\n this._assertIndex(i, this._lineNumbers);\n return this._lineNumbers[i];\n }\n getEndLineNumber(i) {\n if (i === -1) return this.getStartLineNumber(i + 1);\n this._assertIndex(i, this._lineNumbers);\n if (this._charCodes[i] === 10) return this._lineNumbers[i] + 1;\n return this._lineNumbers[i];\n }\n getStartColumn(i) {\n if (i > 0 && i === this._columns.length) return this.getEndColumn(i - 1);\n this._assertIndex(i, this._columns);\n return this._columns[i];\n }\n getEndColumn(i) {\n if (i === -1) return this.getStartColumn(i + 1);\n this._assertIndex(i, this._columns);\n if (this._charCodes[i] === 10) return 1;\n return this._columns[i] + 1;\n }\n };\n var CharChange = class CharChange {\n constructor(originalStartLineNumber, originalStartColumn, originalEndLineNumber, originalEndColumn, modifiedStartLineNumber, modifiedStartColumn, modifiedEndLineNumber, modifiedEndColumn) {\n this.originalStartLineNumber = originalStartLineNumber;\n this.originalStartColumn = originalStartColumn;\n this.originalEndLineNumber = originalEndLineNumber;\n this.originalEndColumn = originalEndColumn;\n this.modifiedStartLineNumber = modifiedStartLineNumber;\n this.modifiedStartColumn = modifiedStartColumn;\n this.modifiedEndLineNumber = modifiedEndLineNumber;\n this.modifiedEndColumn = modifiedEndColumn;\n }\n static createFromDiffChange(diffChange, originalCharSequence, modifiedCharSequence) {\n const originalStartLineNumber = originalCharSequence.getStartLineNumber(diffChange.originalStart);\n const originalStartColumn = originalCharSequence.getStartColumn(diffChange.originalStart);\n const originalEndLineNumber = originalCharSequence.getEndLineNumber(diffChange.originalStart + diffChange.originalLength - 1);\n const originalEndColumn = originalCharSequence.getEndColumn(diffChange.originalStart + diffChange.originalLength - 1);\n const modifiedStartLineNumber = modifiedCharSequence.getStartLineNumber(diffChange.modifiedStart);\n const modifiedStartColumn = modifiedCharSequence.getStartColumn(diffChange.modifiedStart);\n const modifiedEndLineNumber = modifiedCharSequence.getEndLineNumber(diffChange.modifiedStart + diffChange.modifiedLength - 1);\n const modifiedEndColumn = modifiedCharSequence.getEndColumn(diffChange.modifiedStart + diffChange.modifiedLength - 1);\n return new CharChange(originalStartLineNumber, originalStartColumn, originalEndLineNumber, originalEndColumn, modifiedStartLineNumber, modifiedStartColumn, modifiedEndLineNumber, modifiedEndColumn);\n }\n };\n function postProcessCharChanges(rawChanges) {\n if (rawChanges.length <= 1) return rawChanges;\n const result = [rawChanges[0]];\n let prevChange = result[0];\n for (let i = 1, len = rawChanges.length; i < len; i++) {\n const currChange = rawChanges[i];\n const originalMatchingLength = currChange.originalStart - (prevChange.originalStart + prevChange.originalLength);\n const modifiedMatchingLength = currChange.modifiedStart - (prevChange.modifiedStart + prevChange.modifiedLength);\n if (Math.min(originalMatchingLength, modifiedMatchingLength) < MINIMUM_MATCHING_CHARACTER_LENGTH) {\n prevChange.originalLength = currChange.originalStart + currChange.originalLength - prevChange.originalStart;\n prevChange.modifiedLength = currChange.modifiedStart + currChange.modifiedLength - prevChange.modifiedStart;\n } else {\n result.push(currChange);\n prevChange = currChange;\n }\n }\n return result;\n }\n var LineChange = class LineChange {\n constructor(originalStartLineNumber, originalEndLineNumber, modifiedStartLineNumber, modifiedEndLineNumber, charChanges) {\n this.originalStartLineNumber = originalStartLineNumber;\n this.originalEndLineNumber = originalEndLineNumber;\n this.modifiedStartLineNumber = modifiedStartLineNumber;\n this.modifiedEndLineNumber = modifiedEndLineNumber;\n this.charChanges = charChanges;\n }\n static createFromDiffResult(shouldIgnoreTrimWhitespace, diffChange, originalLineSequence, modifiedLineSequence, continueCharDiff, shouldComputeCharChanges, shouldPostProcessCharChanges) {\n let originalStartLineNumber;\n let originalEndLineNumber;\n let modifiedStartLineNumber;\n let modifiedEndLineNumber;\n let charChanges = void 0;\n if (diffChange.originalLength === 0) {\n originalStartLineNumber = originalLineSequence.getStartLineNumber(diffChange.originalStart) - 1;\n originalEndLineNumber = 0;\n } else {\n originalStartLineNumber = originalLineSequence.getStartLineNumber(diffChange.originalStart);\n originalEndLineNumber = originalLineSequence.getEndLineNumber(diffChange.originalStart + diffChange.originalLength - 1);\n }\n if (diffChange.modifiedLength === 0) {\n modifiedStartLineNumber = modifiedLineSequence.getStartLineNumber(diffChange.modifiedStart) - 1;\n modifiedEndLineNumber = 0;\n } else {\n modifiedStartLineNumber = modifiedLineSequence.getStartLineNumber(diffChange.modifiedStart);\n modifiedEndLineNumber = modifiedLineSequence.getEndLineNumber(diffChange.modifiedStart + diffChange.modifiedLength - 1);\n }\n if (shouldComputeCharChanges && diffChange.originalLength > 0 && diffChange.originalLength < 20 && diffChange.modifiedLength > 0 && diffChange.modifiedLength < 20 && continueCharDiff()) {\n const originalCharSequence = originalLineSequence.createCharSequence(shouldIgnoreTrimWhitespace, diffChange.originalStart, diffChange.originalStart + diffChange.originalLength - 1);\n const modifiedCharSequence = modifiedLineSequence.createCharSequence(shouldIgnoreTrimWhitespace, diffChange.modifiedStart, diffChange.modifiedStart + diffChange.modifiedLength - 1);\n if (originalCharSequence.getElements().length > 0 && modifiedCharSequence.getElements().length > 0) {\n let rawChanges = computeDiff(originalCharSequence, modifiedCharSequence, continueCharDiff, true).changes;\n if (shouldPostProcessCharChanges) rawChanges = postProcessCharChanges(rawChanges);\n charChanges = [];\n for (let i = 0, length = rawChanges.length; i < length; i++) charChanges.push(CharChange.createFromDiffChange(rawChanges[i], originalCharSequence, modifiedCharSequence));\n }\n }\n return new LineChange(originalStartLineNumber, originalEndLineNumber, modifiedStartLineNumber, modifiedEndLineNumber, charChanges);\n }\n };\n var DiffComputer = class {\n constructor(originalLines, modifiedLines, opts) {\n this.shouldComputeCharChanges = opts.shouldComputeCharChanges;\n this.shouldPostProcessCharChanges = opts.shouldPostProcessCharChanges;\n this.shouldIgnoreTrimWhitespace = opts.shouldIgnoreTrimWhitespace;\n this.shouldMakePrettyDiff = opts.shouldMakePrettyDiff;\n this.originalLines = originalLines;\n this.modifiedLines = modifiedLines;\n this.original = new LineSequence$1(originalLines);\n this.modified = new LineSequence$1(modifiedLines);\n this.continueLineDiff = createContinueProcessingPredicate(opts.maxComputationTime);\n this.continueCharDiff = createContinueProcessingPredicate(opts.maxComputationTime === 0 ? 0 : Math.min(opts.maxComputationTime, 5e3));\n }\n computeDiff() {\n if (this.original.lines.length === 1 && this.original.lines[0].length === 0) {\n if (this.modified.lines.length === 1 && this.modified.lines[0].length === 0) return {\n quitEarly: false,\n changes: []\n };\n return {\n quitEarly: false,\n changes: [{\n originalStartLineNumber: 1,\n originalEndLineNumber: 1,\n modifiedStartLineNumber: 1,\n modifiedEndLineNumber: this.modified.lines.length,\n charChanges: void 0\n }]\n };\n }\n if (this.modified.lines.length === 1 && this.modified.lines[0].length === 0) return {\n quitEarly: false,\n changes: [{\n originalStartLineNumber: 1,\n originalEndLineNumber: this.original.lines.length,\n modifiedStartLineNumber: 1,\n modifiedEndLineNumber: 1,\n charChanges: void 0\n }]\n };\n const diffResult = computeDiff(this.original, this.modified, this.continueLineDiff, this.shouldMakePrettyDiff);\n const rawChanges = diffResult.changes;\n const quitEarly = diffResult.quitEarly;\n if (this.shouldIgnoreTrimWhitespace) {\n const lineChanges = [];\n for (let i = 0, length = rawChanges.length; i < length; i++) lineChanges.push(LineChange.createFromDiffResult(this.shouldIgnoreTrimWhitespace, rawChanges[i], this.original, this.modified, this.continueCharDiff, this.shouldComputeCharChanges, this.shouldPostProcessCharChanges));\n return {\n quitEarly,\n changes: lineChanges\n };\n }\n const result = [];\n let originalLineIndex = 0;\n let modifiedLineIndex = 0;\n for (let i = -1, len = rawChanges.length; i < len; i++) {\n const nextChange = i + 1 < len ? rawChanges[i + 1] : null;\n const originalStop = nextChange ? nextChange.originalStart : this.originalLines.length;\n const modifiedStop = nextChange ? nextChange.modifiedStart : this.modifiedLines.length;\n while (originalLineIndex < originalStop && modifiedLineIndex < modifiedStop) {\n const originalLine = this.originalLines[originalLineIndex];\n const modifiedLine = this.modifiedLines[modifiedLineIndex];\n if (originalLine !== modifiedLine) {\n {\n let originalStartColumn = getFirstNonBlankColumn(originalLine, 1);\n let modifiedStartColumn = getFirstNonBlankColumn(modifiedLine, 1);\n while (originalStartColumn > 1 && modifiedStartColumn > 1) {\n if (originalLine.charCodeAt(originalStartColumn - 2) !== modifiedLine.charCodeAt(modifiedStartColumn - 2)) break;\n originalStartColumn--;\n modifiedStartColumn--;\n }\n if (originalStartColumn > 1 || modifiedStartColumn > 1) this._pushTrimWhitespaceCharChange(result, originalLineIndex + 1, 1, originalStartColumn, modifiedLineIndex + 1, 1, modifiedStartColumn);\n }\n {\n let originalEndColumn = getLastNonBlankColumn(originalLine, 1);\n let modifiedEndColumn = getLastNonBlankColumn(modifiedLine, 1);\n const originalMaxColumn = originalLine.length + 1;\n const modifiedMaxColumn = modifiedLine.length + 1;\n while (originalEndColumn < originalMaxColumn && modifiedEndColumn < modifiedMaxColumn) {\n if (originalLine.charCodeAt(originalEndColumn - 1) !== originalLine.charCodeAt(modifiedEndColumn - 1)) break;\n originalEndColumn++;\n modifiedEndColumn++;\n }\n if (originalEndColumn < originalMaxColumn || modifiedEndColumn < modifiedMaxColumn) this._pushTrimWhitespaceCharChange(result, originalLineIndex + 1, originalEndColumn, originalMaxColumn, modifiedLineIndex + 1, modifiedEndColumn, modifiedMaxColumn);\n }\n }\n originalLineIndex++;\n modifiedLineIndex++;\n }\n if (nextChange) {\n result.push(LineChange.createFromDiffResult(this.shouldIgnoreTrimWhitespace, nextChange, this.original, this.modified, this.continueCharDiff, this.shouldComputeCharChanges, this.shouldPostProcessCharChanges));\n originalLineIndex += nextChange.originalLength;\n modifiedLineIndex += nextChange.modifiedLength;\n }\n }\n return {\n quitEarly,\n changes: result\n };\n }\n _pushTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn) {\n if (this._mergeTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn)) return;\n let charChanges = void 0;\n if (this.shouldComputeCharChanges) charChanges = [new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn)];\n result.push(new LineChange(originalLineNumber, originalLineNumber, modifiedLineNumber, modifiedLineNumber, charChanges));\n }\n _mergeTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn) {\n const len = result.length;\n if (len === 0) return false;\n const prevChange = result[len - 1];\n if (prevChange.originalEndLineNumber === 0 || prevChange.modifiedEndLineNumber === 0) return false;\n if (prevChange.originalEndLineNumber === originalLineNumber && prevChange.modifiedEndLineNumber === modifiedLineNumber) {\n if (this.shouldComputeCharChanges && prevChange.charChanges) prevChange.charChanges.push(new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn));\n return true;\n }\n if (prevChange.originalEndLineNumber + 1 === originalLineNumber && prevChange.modifiedEndLineNumber + 1 === modifiedLineNumber) {\n prevChange.originalEndLineNumber = originalLineNumber;\n prevChange.modifiedEndLineNumber = modifiedLineNumber;\n if (this.shouldComputeCharChanges && prevChange.charChanges) prevChange.charChanges.push(new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn));\n return true;\n }\n return false;\n }\n };\n function getFirstNonBlankColumn(txt, defaultValue) {\n const r = firstNonWhitespaceIndex(txt);\n if (r === -1) return defaultValue;\n return r + 1;\n }\n function getLastNonBlankColumn(txt, defaultValue) {\n const r = lastNonWhitespaceIndex(txt);\n if (r === -1) return defaultValue;\n return r + 2;\n }\n function createContinueProcessingPredicate(maximumRuntime) {\n if (maximumRuntime === 0) return () => true;\n const startTime = Date.now();\n return () => {\n return Date.now() - startTime < maximumRuntime;\n };\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/defaultLinesDiffComputer/algorithms/diffAlgorithm.js\n var DiffAlgorithmResult = class DiffAlgorithmResult {\n static trivial(seq1, seq2) {\n return new DiffAlgorithmResult([new SequenceDiff(OffsetRange.ofLength(seq1.length), OffsetRange.ofLength(seq2.length))], false);\n }\n static trivialTimedOut(seq1, seq2) {\n return new DiffAlgorithmResult([new SequenceDiff(OffsetRange.ofLength(seq1.length), OffsetRange.ofLength(seq2.length))], true);\n }\n constructor(diffs, hitTimeout) {\n this.diffs = diffs;\n this.hitTimeout = hitTimeout;\n }\n };\n var SequenceDiff = class SequenceDiff {\n static invert(sequenceDiffs, doc1Length) {\n const result = [];\n forEachAdjacent(sequenceDiffs, (a, b) => {\n result.push(SequenceDiff.fromOffsetPairs(a ? a.getEndExclusives() : OffsetPair.zero, b ? b.getStarts() : new OffsetPair(doc1Length, (a ? a.seq2Range.endExclusive - a.seq1Range.endExclusive : 0) + doc1Length)));\n });\n return result;\n }\n static fromOffsetPairs(start, endExclusive) {\n return new SequenceDiff(new OffsetRange(start.offset1, endExclusive.offset1), new OffsetRange(start.offset2, endExclusive.offset2));\n }\n static assertSorted(sequenceDiffs) {\n let last = void 0;\n for (const cur of sequenceDiffs) {\n if (last) {\n if (!(last.seq1Range.endExclusive <= cur.seq1Range.start && last.seq2Range.endExclusive <= cur.seq2Range.start)) throw new BugIndicatingError(\"Sequence diffs must be sorted\");\n }\n last = cur;\n }\n }\n constructor(seq1Range, seq2Range) {\n this.seq1Range = seq1Range;\n this.seq2Range = seq2Range;\n }\n swap() {\n return new SequenceDiff(this.seq2Range, this.seq1Range);\n }\n toString() {\n return `${this.seq1Range} <-> ${this.seq2Range}`;\n }\n join(other) {\n return new SequenceDiff(this.seq1Range.join(other.seq1Range), this.seq2Range.join(other.seq2Range));\n }\n delta(offset) {\n if (offset === 0) return this;\n return new SequenceDiff(this.seq1Range.delta(offset), this.seq2Range.delta(offset));\n }\n deltaStart(offset) {\n if (offset === 0) return this;\n return new SequenceDiff(this.seq1Range.deltaStart(offset), this.seq2Range.deltaStart(offset));\n }\n deltaEnd(offset) {\n if (offset === 0) return this;\n return new SequenceDiff(this.seq1Range.deltaEnd(offset), this.seq2Range.deltaEnd(offset));\n }\n intersect(other) {\n const i1 = this.seq1Range.intersect(other.seq1Range);\n const i2 = this.seq2Range.intersect(other.seq2Range);\n if (!i1 || !i2) return;\n return new SequenceDiff(i1, i2);\n }\n getStarts() {\n return new OffsetPair(this.seq1Range.start, this.seq2Range.start);\n }\n getEndExclusives() {\n return new OffsetPair(this.seq1Range.endExclusive, this.seq2Range.endExclusive);\n }\n };\n var OffsetPair = class OffsetPair {\n static {\n this.zero = new OffsetPair(0, 0);\n }\n static {\n this.max = new OffsetPair(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);\n }\n constructor(offset1, offset2) {\n this.offset1 = offset1;\n this.offset2 = offset2;\n }\n toString() {\n return `${this.offset1} <-> ${this.offset2}`;\n }\n delta(offset) {\n if (offset === 0) return this;\n return new OffsetPair(this.offset1 + offset, this.offset2 + offset);\n }\n equals(other) {\n return this.offset1 === other.offset1 && this.offset2 === other.offset2;\n }\n };\n var InfiniteTimeout = class InfiniteTimeout {\n static {\n this.instance = new InfiniteTimeout();\n }\n isValid() {\n return true;\n }\n };\n var DateTimeout = class {\n constructor(timeout) {\n this.timeout = timeout;\n this.startTime = Date.now();\n this.valid = true;\n if (timeout <= 0) throw new BugIndicatingError(\"timeout must be positive\");\n }\n isValid() {\n if (!(Date.now() - this.startTime < this.timeout) && this.valid) this.valid = false;\n return this.valid;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/defaultLinesDiffComputer/utils.js\n var Array2D = class {\n constructor(width, height) {\n this.width = width;\n this.height = height;\n this.array = [];\n this.array = new Array(width * height);\n }\n get(x, y) {\n return this.array[x + y * this.width];\n }\n set(x, y, value) {\n this.array[x + y * this.width] = value;\n }\n };\n function isSpace(charCode) {\n return charCode === 32 || charCode === 9;\n }\n var LineRangeFragment = class LineRangeFragment {\n static {\n this.chrKeys = /* @__PURE__ */ new Map();\n }\n static getKey(chr) {\n let key = this.chrKeys.get(chr);\n if (key === void 0) {\n key = this.chrKeys.size;\n this.chrKeys.set(chr, key);\n }\n return key;\n }\n constructor(range, lines, source) {\n this.range = range;\n this.lines = lines;\n this.source = source;\n this.histogram = [];\n let counter = 0;\n for (let i = range.startLineNumber - 1; i < range.endLineNumberExclusive - 1; i++) {\n const line = lines[i];\n for (let j = 0; j < line.length; j++) {\n counter++;\n const chr = line[j];\n const key = LineRangeFragment.getKey(chr);\n this.histogram[key] = (this.histogram[key] || 0) + 1;\n }\n counter++;\n const key = LineRangeFragment.getKey(\"\\n\");\n this.histogram[key] = (this.histogram[key] || 0) + 1;\n }\n this.totalCount = counter;\n }\n computeSimilarity(other) {\n let sumDifferences = 0;\n const maxLength = Math.max(this.histogram.length, other.histogram.length);\n for (let i = 0; i < maxLength; i++) sumDifferences += Math.abs((this.histogram[i] ?? 0) - (other.histogram[i] ?? 0));\n return 1 - sumDifferences / (this.totalCount + other.totalCount);\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/defaultLinesDiffComputer/algorithms/dynamicProgrammingDiffing.js\n /**\n * A O(MN) diffing algorithm that supports a score function.\n * The algorithm can be improved by processing the 2d array diagonally.\n */\n var DynamicProgrammingDiffing = class {\n compute(sequence1, sequence2, timeout = InfiniteTimeout.instance, equalityScore) {\n if (sequence1.length === 0 || sequence2.length === 0) return DiffAlgorithmResult.trivial(sequence1, sequence2);\n /**\n * lcsLengths.get(i, j): Length of the longest common subsequence of sequence1.substring(0, i + 1) and sequence2.substring(0, j + 1).\n */\n const lcsLengths = new Array2D(sequence1.length, sequence2.length);\n const directions = new Array2D(sequence1.length, sequence2.length);\n const lengths = new Array2D(sequence1.length, sequence2.length);\n for (let s1 = 0; s1 < sequence1.length; s1++) for (let s2 = 0; s2 < sequence2.length; s2++) {\n if (!timeout.isValid()) return DiffAlgorithmResult.trivialTimedOut(sequence1, sequence2);\n const horizontalLen = s1 === 0 ? 0 : lcsLengths.get(s1 - 1, s2);\n const verticalLen = s2 === 0 ? 0 : lcsLengths.get(s1, s2 - 1);\n let extendedSeqScore;\n if (sequence1.getElement(s1) === sequence2.getElement(s2)) {\n if (s1 === 0 || s2 === 0) extendedSeqScore = 0;\n else extendedSeqScore = lcsLengths.get(s1 - 1, s2 - 1);\n if (s1 > 0 && s2 > 0 && directions.get(s1 - 1, s2 - 1) === 3) extendedSeqScore += lengths.get(s1 - 1, s2 - 1);\n extendedSeqScore += equalityScore ? equalityScore(s1, s2) : 1;\n } else extendedSeqScore = -1;\n const newValue = Math.max(horizontalLen, verticalLen, extendedSeqScore);\n if (newValue === extendedSeqScore) {\n const prevLen = s1 > 0 && s2 > 0 ? lengths.get(s1 - 1, s2 - 1) : 0;\n lengths.set(s1, s2, prevLen + 1);\n directions.set(s1, s2, 3);\n } else if (newValue === horizontalLen) {\n lengths.set(s1, s2, 0);\n directions.set(s1, s2, 1);\n } else if (newValue === verticalLen) {\n lengths.set(s1, s2, 0);\n directions.set(s1, s2, 2);\n }\n lcsLengths.set(s1, s2, newValue);\n }\n const result = [];\n let lastAligningPosS1 = sequence1.length;\n let lastAligningPosS2 = sequence2.length;\n function reportDecreasingAligningPositions(s1, s2) {\n if (s1 + 1 !== lastAligningPosS1 || s2 + 1 !== lastAligningPosS2) result.push(new SequenceDiff(new OffsetRange(s1 + 1, lastAligningPosS1), new OffsetRange(s2 + 1, lastAligningPosS2)));\n lastAligningPosS1 = s1;\n lastAligningPosS2 = s2;\n }\n let s1 = sequence1.length - 1;\n let s2 = sequence2.length - 1;\n while (s1 >= 0 && s2 >= 0) if (directions.get(s1, s2) === 3) {\n reportDecreasingAligningPositions(s1, s2);\n s1--;\n s2--;\n } else if (directions.get(s1, s2) === 1) s1--;\n else s2--;\n reportDecreasingAligningPositions(-1, -1);\n result.reverse();\n return new DiffAlgorithmResult(result, false);\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/defaultLinesDiffComputer/algorithms/myersDiffAlgorithm.js\n /**\n * An O(ND) diff algorithm that has a quadratic space worst-case complexity.\n */\n var MyersDiffAlgorithm = class {\n compute(seq1, seq2, timeout = InfiniteTimeout.instance) {\n if (seq1.length === 0 || seq2.length === 0) return DiffAlgorithmResult.trivial(seq1, seq2);\n const seqX = seq1;\n const seqY = seq2;\n function getXAfterSnake(x, y) {\n while (x < seqX.length && y < seqY.length && seqX.getElement(x) === seqY.getElement(y)) {\n x++;\n y++;\n }\n return x;\n }\n let d = 0;\n const V = new FastInt32Array();\n V.set(0, getXAfterSnake(0, 0));\n const paths = new FastArrayNegativeIndices();\n paths.set(0, V.get(0) === 0 ? null : new SnakePath(null, 0, 0, V.get(0)));\n let k = 0;\n loop: while (true) {\n d++;\n if (!timeout.isValid()) return DiffAlgorithmResult.trivialTimedOut(seqX, seqY);\n const lowerBound = -Math.min(d, seqY.length + d % 2);\n const upperBound = Math.min(d, seqX.length + d % 2);\n for (k = lowerBound; k <= upperBound; k += 2) {\n const maxXofDLineTop = k === upperBound ? -1 : V.get(k + 1);\n const maxXofDLineLeft = k === lowerBound ? -1 : V.get(k - 1) + 1;\n const x = Math.min(Math.max(maxXofDLineTop, maxXofDLineLeft), seqX.length);\n const y = x - k;\n if (x > seqX.length || y > seqY.length) continue;\n const newMaxX = getXAfterSnake(x, y);\n V.set(k, newMaxX);\n const lastPath = x === maxXofDLineTop ? paths.get(k + 1) : paths.get(k - 1);\n paths.set(k, newMaxX !== x ? new SnakePath(lastPath, x, y, newMaxX - x) : lastPath);\n if (V.get(k) === seqX.length && V.get(k) - k === seqY.length) break loop;\n }\n }\n let path = paths.get(k);\n const result = [];\n let lastAligningPosS1 = seqX.length;\n let lastAligningPosS2 = seqY.length;\n while (true) {\n const endX = path ? path.x + path.length : 0;\n const endY = path ? path.y + path.length : 0;\n if (endX !== lastAligningPosS1 || endY !== lastAligningPosS2) result.push(new SequenceDiff(new OffsetRange(endX, lastAligningPosS1), new OffsetRange(endY, lastAligningPosS2)));\n if (!path) break;\n lastAligningPosS1 = path.x;\n lastAligningPosS2 = path.y;\n path = path.prev;\n }\n result.reverse();\n return new DiffAlgorithmResult(result, false);\n }\n };\n var SnakePath = class {\n constructor(prev, x, y, length) {\n this.prev = prev;\n this.x = x;\n this.y = y;\n this.length = length;\n }\n };\n /**\n * An array that supports fast negative indices.\n */\n var FastInt32Array = class {\n constructor() {\n this.positiveArr = /* @__PURE__ */ new Int32Array(10);\n this.negativeArr = /* @__PURE__ */ new Int32Array(10);\n }\n get(idx) {\n if (idx < 0) {\n idx = -idx - 1;\n return this.negativeArr[idx];\n } else return this.positiveArr[idx];\n }\n set(idx, value) {\n if (idx < 0) {\n idx = -idx - 1;\n if (idx >= this.negativeArr.length) {\n const arr = this.negativeArr;\n this.negativeArr = new Int32Array(arr.length * 2);\n this.negativeArr.set(arr);\n }\n this.negativeArr[idx] = value;\n } else {\n if (idx >= this.positiveArr.length) {\n const arr = this.positiveArr;\n this.positiveArr = new Int32Array(arr.length * 2);\n this.positiveArr.set(arr);\n }\n this.positiveArr[idx] = value;\n }\n }\n };\n /**\n * An array that supports fast negative indices.\n */\n var FastArrayNegativeIndices = class {\n constructor() {\n this.positiveArr = [];\n this.negativeArr = [];\n }\n get(idx) {\n if (idx < 0) {\n idx = -idx - 1;\n return this.negativeArr[idx];\n } else return this.positiveArr[idx];\n }\n set(idx, value) {\n if (idx < 0) {\n idx = -idx - 1;\n this.negativeArr[idx] = value;\n } else this.positiveArr[idx] = value;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/defaultLinesDiffComputer/linesSliceCharSequence.js\n var LinesSliceCharSequence = class {\n constructor(lines, range, considerWhitespaceChanges) {\n this.lines = lines;\n this.range = range;\n this.considerWhitespaceChanges = considerWhitespaceChanges;\n this.elements = [];\n this.firstElementOffsetByLineIdx = [];\n this.lineStartOffsets = [];\n this.trimmedWsLengthsByLineIdx = [];\n this.firstElementOffsetByLineIdx.push(0);\n for (let lineNumber = this.range.startLineNumber; lineNumber <= this.range.endLineNumber; lineNumber++) {\n let line = lines[lineNumber - 1];\n let lineStartOffset = 0;\n if (lineNumber === this.range.startLineNumber && this.range.startColumn > 1) {\n lineStartOffset = this.range.startColumn - 1;\n line = line.substring(lineStartOffset);\n }\n this.lineStartOffsets.push(lineStartOffset);\n let trimmedWsLength = 0;\n if (!considerWhitespaceChanges) {\n const trimmedStartLine = line.trimStart();\n trimmedWsLength = line.length - trimmedStartLine.length;\n line = trimmedStartLine.trimEnd();\n }\n this.trimmedWsLengthsByLineIdx.push(trimmedWsLength);\n const lineLength = lineNumber === this.range.endLineNumber ? Math.min(this.range.endColumn - 1 - lineStartOffset - trimmedWsLength, line.length) : line.length;\n for (let i = 0; i < lineLength; i++) this.elements.push(line.charCodeAt(i));\n if (lineNumber < this.range.endLineNumber) {\n this.elements.push(\"\\n\".charCodeAt(0));\n this.firstElementOffsetByLineIdx.push(this.elements.length);\n }\n }\n }\n toString() {\n return `Slice: \"${this.text}\"`;\n }\n get text() {\n return this.getText(new OffsetRange(0, this.length));\n }\n getText(range) {\n return this.elements.slice(range.start, range.endExclusive).map((e) => String.fromCharCode(e)).join(\"\");\n }\n getElement(offset) {\n return this.elements[offset];\n }\n get length() {\n return this.elements.length;\n }\n getBoundaryScore(length) {\n const prevCategory = getCategory(length > 0 ? this.elements[length - 1] : -1);\n const nextCategory = getCategory(length < this.elements.length ? this.elements[length] : -1);\n if (prevCategory === 7 && nextCategory === 8) return 0;\n if (prevCategory === 8) return 150;\n let score = 0;\n if (prevCategory !== nextCategory) {\n score += 10;\n if (prevCategory === 0 && nextCategory === 1) score += 1;\n }\n score += getCategoryBoundaryScore(prevCategory);\n score += getCategoryBoundaryScore(nextCategory);\n return score;\n }\n translateOffset(offset, preference = \"right\") {\n const i = findLastIdxMonotonous(this.firstElementOffsetByLineIdx, (value) => value <= offset);\n const lineOffset = offset - this.firstElementOffsetByLineIdx[i];\n return new Position(this.range.startLineNumber + i, 1 + this.lineStartOffsets[i] + lineOffset + (lineOffset === 0 && preference === \"left\" ? 0 : this.trimmedWsLengthsByLineIdx[i]));\n }\n translateRange(range) {\n const pos1 = this.translateOffset(range.start, \"right\");\n const pos2 = this.translateOffset(range.endExclusive, \"left\");\n if (pos2.isBefore(pos1)) return Range.fromPositions(pos2, pos2);\n return Range.fromPositions(pos1, pos2);\n }\n /**\n * Finds the word that contains the character at the given offset\n */\n findWordContaining(offset) {\n if (offset < 0 || offset >= this.elements.length) return;\n if (!isWordChar(this.elements[offset])) return;\n let start = offset;\n while (start > 0 && isWordChar(this.elements[start - 1])) start--;\n let end = offset;\n while (end < this.elements.length && isWordChar(this.elements[end])) end++;\n return new OffsetRange(start, end);\n }\n /** fooBar has the two sub-words foo and bar */\n findSubWordContaining(offset) {\n if (offset < 0 || offset >= this.elements.length) return;\n if (!isWordChar(this.elements[offset])) return;\n let start = offset;\n while (start > 0 && isWordChar(this.elements[start - 1]) && !isUpperCase(this.elements[start])) start--;\n let end = offset;\n while (end < this.elements.length && isWordChar(this.elements[end]) && !isUpperCase(this.elements[end])) end++;\n return new OffsetRange(start, end);\n }\n countLinesIn(range) {\n return this.translateOffset(range.endExclusive).lineNumber - this.translateOffset(range.start).lineNumber;\n }\n isStronglyEqual(offset1, offset2) {\n return this.elements[offset1] === this.elements[offset2];\n }\n extendToFullLines(range) {\n return new OffsetRange(findLastMonotonous(this.firstElementOffsetByLineIdx, (x) => x <= range.start) ?? 0, findFirstMonotonous(this.firstElementOffsetByLineIdx, (x) => range.endExclusive <= x) ?? this.elements.length);\n }\n };\n function isWordChar(charCode) {\n return charCode >= 97 && charCode <= 122 || charCode >= 65 && charCode <= 90 || charCode >= 48 && charCode <= 57;\n }\n function isUpperCase(charCode) {\n return charCode >= 65 && charCode <= 90;\n }\n const score = {\n [0]: 0,\n [1]: 0,\n [2]: 0,\n [3]: 10,\n [4]: 2,\n [5]: 30,\n [6]: 3,\n [7]: 10,\n [8]: 10\n };\n function getCategoryBoundaryScore(category) {\n return score[category];\n }\n function getCategory(charCode) {\n if (charCode === 10) return 8;\n else if (charCode === 13) return 7;\n else if (isSpace(charCode)) return 6;\n else if (charCode >= 97 && charCode <= 122) return 0;\n else if (charCode >= 65 && charCode <= 90) return 1;\n else if (charCode >= 48 && charCode <= 57) return 2;\n else if (charCode === -1) return 3;\n else if (charCode === 44 || charCode === 59) return 5;\n else return 4;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/defaultLinesDiffComputer/computeMovedLines.js\n function computeMovedLines(changes, originalLines, modifiedLines, hashedOriginalLines, hashedModifiedLines, timeout) {\n let { moves, excludedChanges } = computeMovesFromSimpleDeletionsToSimpleInsertions(changes, originalLines, modifiedLines, timeout);\n if (!timeout.isValid()) return [];\n const unchangedMoves = computeUnchangedMoves(changes.filter((c) => !excludedChanges.has(c)), hashedOriginalLines, hashedModifiedLines, originalLines, modifiedLines, timeout);\n pushMany(moves, unchangedMoves);\n moves = joinCloseConsecutiveMoves(moves);\n moves = moves.filter((current) => {\n const lines = current.original.toOffsetRange().slice(originalLines).map((l) => l.trim());\n return lines.join(\"\\n\").length >= 15 && countWhere(lines, (l) => l.length >= 2) >= 2;\n });\n moves = removeMovesInSameDiff(changes, moves);\n return moves;\n }\n function countWhere(arr, predicate) {\n let count = 0;\n for (const t of arr) if (predicate(t)) count++;\n return count;\n }\n function computeMovesFromSimpleDeletionsToSimpleInsertions(changes, originalLines, modifiedLines, timeout) {\n const moves = [];\n const deletions = changes.filter((c) => c.modified.isEmpty && c.original.length >= 3).map((d) => new LineRangeFragment(d.original, originalLines, d));\n const insertions = new Set(changes.filter((c) => c.original.isEmpty && c.modified.length >= 3).map((d) => new LineRangeFragment(d.modified, modifiedLines, d)));\n const excludedChanges = /* @__PURE__ */ new Set();\n for (const deletion of deletions) {\n let highestSimilarity = -1;\n let best;\n for (const insertion of insertions) {\n const similarity = deletion.computeSimilarity(insertion);\n if (similarity > highestSimilarity) {\n highestSimilarity = similarity;\n best = insertion;\n }\n }\n if (highestSimilarity > .9 && best) {\n insertions.delete(best);\n moves.push(new LineRangeMapping(deletion.range, best.range));\n excludedChanges.add(deletion.source);\n excludedChanges.add(best.source);\n }\n if (!timeout.isValid()) return {\n moves,\n excludedChanges\n };\n }\n return {\n moves,\n excludedChanges\n };\n }\n function computeUnchangedMoves(changes, hashedOriginalLines, hashedModifiedLines, originalLines, modifiedLines, timeout) {\n const moves = [];\n const original3LineHashes = new SetMap();\n for (const change of changes) for (let i = change.original.startLineNumber; i < change.original.endLineNumberExclusive - 2; i++) {\n const key = `${hashedOriginalLines[i - 1]}:${hashedOriginalLines[i + 1 - 1]}:${hashedOriginalLines[i + 2 - 1]}`;\n original3LineHashes.add(key, { range: new LineRange(i, i + 3) });\n }\n const possibleMappings = [];\n changes.sort(compareBy((c) => c.modified.startLineNumber, numberComparator));\n for (const change of changes) {\n let lastMappings = [];\n for (let i = change.modified.startLineNumber; i < change.modified.endLineNumberExclusive - 2; i++) {\n const key = `${hashedModifiedLines[i - 1]}:${hashedModifiedLines[i + 1 - 1]}:${hashedModifiedLines[i + 2 - 1]}`;\n const currentModifiedRange = new LineRange(i, i + 3);\n const nextMappings = [];\n original3LineHashes.forEach(key, ({ range }) => {\n for (const lastMapping of lastMappings) if (lastMapping.originalLineRange.endLineNumberExclusive + 1 === range.endLineNumberExclusive && lastMapping.modifiedLineRange.endLineNumberExclusive + 1 === currentModifiedRange.endLineNumberExclusive) {\n lastMapping.originalLineRange = new LineRange(lastMapping.originalLineRange.startLineNumber, range.endLineNumberExclusive);\n lastMapping.modifiedLineRange = new LineRange(lastMapping.modifiedLineRange.startLineNumber, currentModifiedRange.endLineNumberExclusive);\n nextMappings.push(lastMapping);\n return;\n }\n const mapping = {\n modifiedLineRange: currentModifiedRange,\n originalLineRange: range\n };\n possibleMappings.push(mapping);\n nextMappings.push(mapping);\n });\n lastMappings = nextMappings;\n }\n if (!timeout.isValid()) return [];\n }\n possibleMappings.sort(reverseOrder(compareBy((m) => m.modifiedLineRange.length, numberComparator)));\n const modifiedSet = new LineRangeSet();\n const originalSet = new LineRangeSet();\n for (const mapping of possibleMappings) {\n const diffOrigToMod = mapping.modifiedLineRange.startLineNumber - mapping.originalLineRange.startLineNumber;\n const modifiedSections = modifiedSet.subtractFrom(mapping.modifiedLineRange);\n const originalTranslatedSections = originalSet.subtractFrom(mapping.originalLineRange).getWithDelta(diffOrigToMod);\n const modifiedIntersectedSections = modifiedSections.getIntersection(originalTranslatedSections);\n for (const s of modifiedIntersectedSections.ranges) {\n if (s.length < 3) continue;\n const modifiedLineRange = s;\n const originalLineRange = s.delta(-diffOrigToMod);\n moves.push(new LineRangeMapping(originalLineRange, modifiedLineRange));\n modifiedSet.addRange(modifiedLineRange);\n originalSet.addRange(originalLineRange);\n }\n }\n moves.sort(compareBy((m) => m.original.startLineNumber, numberComparator));\n const monotonousChanges = new MonotonousArray(changes);\n for (let i = 0; i < moves.length; i++) {\n const move = moves[i];\n const firstTouchingChangeOrig = monotonousChanges.findLastMonotonous((c) => c.original.startLineNumber <= move.original.startLineNumber);\n const firstTouchingChangeMod = findLastMonotonous(changes, (c) => c.modified.startLineNumber <= move.modified.startLineNumber);\n const linesAbove = Math.max(move.original.startLineNumber - firstTouchingChangeOrig.original.startLineNumber, move.modified.startLineNumber - firstTouchingChangeMod.modified.startLineNumber);\n const lastTouchingChangeOrig = monotonousChanges.findLastMonotonous((c) => c.original.startLineNumber < move.original.endLineNumberExclusive);\n const lastTouchingChangeMod = findLastMonotonous(changes, (c) => c.modified.startLineNumber < move.modified.endLineNumberExclusive);\n const linesBelow = Math.max(lastTouchingChangeOrig.original.endLineNumberExclusive - move.original.endLineNumberExclusive, lastTouchingChangeMod.modified.endLineNumberExclusive - move.modified.endLineNumberExclusive);\n let extendToTop;\n for (extendToTop = 0; extendToTop < linesAbove; extendToTop++) {\n const origLine = move.original.startLineNumber - extendToTop - 1;\n const modLine = move.modified.startLineNumber - extendToTop - 1;\n if (origLine > originalLines.length || modLine > modifiedLines.length) break;\n if (modifiedSet.contains(modLine) || originalSet.contains(origLine)) break;\n if (!areLinesSimilar(originalLines[origLine - 1], modifiedLines[modLine - 1], timeout)) break;\n }\n if (extendToTop > 0) {\n originalSet.addRange(new LineRange(move.original.startLineNumber - extendToTop, move.original.startLineNumber));\n modifiedSet.addRange(new LineRange(move.modified.startLineNumber - extendToTop, move.modified.startLineNumber));\n }\n let extendToBottom;\n for (extendToBottom = 0; extendToBottom < linesBelow; extendToBottom++) {\n const origLine = move.original.endLineNumberExclusive + extendToBottom;\n const modLine = move.modified.endLineNumberExclusive + extendToBottom;\n if (origLine > originalLines.length || modLine > modifiedLines.length) break;\n if (modifiedSet.contains(modLine) || originalSet.contains(origLine)) break;\n if (!areLinesSimilar(originalLines[origLine - 1], modifiedLines[modLine - 1], timeout)) break;\n }\n if (extendToBottom > 0) {\n originalSet.addRange(new LineRange(move.original.endLineNumberExclusive, move.original.endLineNumberExclusive + extendToBottom));\n modifiedSet.addRange(new LineRange(move.modified.endLineNumberExclusive, move.modified.endLineNumberExclusive + extendToBottom));\n }\n if (extendToTop > 0 || extendToBottom > 0) moves[i] = new LineRangeMapping(new LineRange(move.original.startLineNumber - extendToTop, move.original.endLineNumberExclusive + extendToBottom), new LineRange(move.modified.startLineNumber - extendToTop, move.modified.endLineNumberExclusive + extendToBottom));\n }\n return moves;\n }\n function areLinesSimilar(line1, line2, timeout) {\n if (line1.trim() === line2.trim()) return true;\n if (line1.length > 300 && line2.length > 300) return false;\n const result = new MyersDiffAlgorithm().compute(new LinesSliceCharSequence([line1], new Range(1, 1, 1, line1.length), false), new LinesSliceCharSequence([line2], new Range(1, 1, 1, line2.length), false), timeout);\n let commonNonSpaceCharCount = 0;\n const inverted = SequenceDiff.invert(result.diffs, line1.length);\n for (const seq of inverted) seq.seq1Range.forEach((idx) => {\n if (!isSpace(line1.charCodeAt(idx))) commonNonSpaceCharCount++;\n });\n function countNonWsChars(str) {\n let count = 0;\n for (let i = 0; i < line1.length; i++) if (!isSpace(str.charCodeAt(i))) count++;\n return count;\n }\n const longerLineLength = countNonWsChars(line1.length > line2.length ? line1 : line2);\n return commonNonSpaceCharCount / longerLineLength > .6 && longerLineLength > 10;\n }\n function joinCloseConsecutiveMoves(moves) {\n if (moves.length === 0) return moves;\n moves.sort(compareBy((m) => m.original.startLineNumber, numberComparator));\n const result = [moves[0]];\n for (let i = 1; i < moves.length; i++) {\n const last = result[result.length - 1];\n const current = moves[i];\n const originalDist = current.original.startLineNumber - last.original.endLineNumberExclusive;\n const modifiedDist = current.modified.startLineNumber - last.modified.endLineNumberExclusive;\n if (originalDist >= 0 && modifiedDist >= 0 && originalDist + modifiedDist <= 2) {\n result[result.length - 1] = last.join(current);\n continue;\n }\n result.push(current);\n }\n return result;\n }\n function removeMovesInSameDiff(changes, moves) {\n const changesMonotonous = new MonotonousArray(changes);\n moves = moves.filter((m) => {\n return (changesMonotonous.findLastMonotonous((c) => c.original.startLineNumber < m.original.endLineNumberExclusive) || new LineRangeMapping(new LineRange(1, 1), new LineRange(1, 1))) !== findLastMonotonous(changes, (c) => c.modified.startLineNumber < m.modified.endLineNumberExclusive);\n });\n return moves;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/defaultLinesDiffComputer/heuristicSequenceOptimizations.js\n function optimizeSequenceDiffs(sequence1, sequence2, sequenceDiffs) {\n let result = sequenceDiffs;\n result = joinSequenceDiffsByShifting(sequence1, sequence2, result);\n result = joinSequenceDiffsByShifting(sequence1, sequence2, result);\n result = shiftSequenceDiffs(sequence1, sequence2, result);\n return result;\n }\n /**\n * This function fixes issues like this:\n * ```\n * import { Baz, Bar } from \"foo\";\n * ```\n * <->\n * ```\n * import { Baz, Bar, Foo } from \"foo\";\n * ```\n * Computed diff: [ {Add \",\" after Bar}, {Add \"Foo \" after space} }\n * Improved diff: [{Add \", Foo\" after Bar}]\n */\n function joinSequenceDiffsByShifting(sequence1, sequence2, sequenceDiffs) {\n if (sequenceDiffs.length === 0) return sequenceDiffs;\n const result = [];\n result.push(sequenceDiffs[0]);\n for (let i = 1; i < sequenceDiffs.length; i++) {\n const prevResult = result[result.length - 1];\n let cur = sequenceDiffs[i];\n if (cur.seq1Range.isEmpty || cur.seq2Range.isEmpty) {\n const length = cur.seq1Range.start - prevResult.seq1Range.endExclusive;\n let d;\n for (d = 1; d <= length; d++) if (sequence1.getElement(cur.seq1Range.start - d) !== sequence1.getElement(cur.seq1Range.endExclusive - d) || sequence2.getElement(cur.seq2Range.start - d) !== sequence2.getElement(cur.seq2Range.endExclusive - d)) break;\n d--;\n if (d === length) {\n result[result.length - 1] = new SequenceDiff(new OffsetRange(prevResult.seq1Range.start, cur.seq1Range.endExclusive - length), new OffsetRange(prevResult.seq2Range.start, cur.seq2Range.endExclusive - length));\n continue;\n }\n cur = cur.delta(-d);\n }\n result.push(cur);\n }\n const result2 = [];\n for (let i = 0; i < result.length - 1; i++) {\n const nextResult = result[i + 1];\n let cur = result[i];\n if (cur.seq1Range.isEmpty || cur.seq2Range.isEmpty) {\n const length = nextResult.seq1Range.start - cur.seq1Range.endExclusive;\n let d;\n for (d = 0; d < length; d++) if (!sequence1.isStronglyEqual(cur.seq1Range.start + d, cur.seq1Range.endExclusive + d) || !sequence2.isStronglyEqual(cur.seq2Range.start + d, cur.seq2Range.endExclusive + d)) break;\n if (d === length) {\n result[i + 1] = new SequenceDiff(new OffsetRange(cur.seq1Range.start + length, nextResult.seq1Range.endExclusive), new OffsetRange(cur.seq2Range.start + length, nextResult.seq2Range.endExclusive));\n continue;\n }\n if (d > 0) cur = cur.delta(d);\n }\n result2.push(cur);\n }\n if (result.length > 0) result2.push(result[result.length - 1]);\n return result2;\n }\n function shiftSequenceDiffs(sequence1, sequence2, sequenceDiffs) {\n if (!sequence1.getBoundaryScore || !sequence2.getBoundaryScore) return sequenceDiffs;\n for (let i = 0; i < sequenceDiffs.length; i++) {\n const prevDiff = i > 0 ? sequenceDiffs[i - 1] : void 0;\n const diff = sequenceDiffs[i];\n const nextDiff = i + 1 < sequenceDiffs.length ? sequenceDiffs[i + 1] : void 0;\n const seq1ValidRange = new OffsetRange(prevDiff ? prevDiff.seq1Range.endExclusive + 1 : 0, nextDiff ? nextDiff.seq1Range.start - 1 : sequence1.length);\n const seq2ValidRange = new OffsetRange(prevDiff ? prevDiff.seq2Range.endExclusive + 1 : 0, nextDiff ? nextDiff.seq2Range.start - 1 : sequence2.length);\n if (diff.seq1Range.isEmpty) sequenceDiffs[i] = shiftDiffToBetterPosition(diff, sequence1, sequence2, seq1ValidRange, seq2ValidRange);\n else if (diff.seq2Range.isEmpty) sequenceDiffs[i] = shiftDiffToBetterPosition(diff.swap(), sequence2, sequence1, seq2ValidRange, seq1ValidRange).swap();\n }\n return sequenceDiffs;\n }\n function shiftDiffToBetterPosition(diff, sequence1, sequence2, seq1ValidRange, seq2ValidRange) {\n const maxShiftLimit = 100;\n let deltaBefore = 1;\n while (diff.seq1Range.start - deltaBefore >= seq1ValidRange.start && diff.seq2Range.start - deltaBefore >= seq2ValidRange.start && sequence2.isStronglyEqual(diff.seq2Range.start - deltaBefore, diff.seq2Range.endExclusive - deltaBefore) && deltaBefore < maxShiftLimit) deltaBefore++;\n deltaBefore--;\n let deltaAfter = 0;\n while (diff.seq1Range.start + deltaAfter < seq1ValidRange.endExclusive && diff.seq2Range.endExclusive + deltaAfter < seq2ValidRange.endExclusive && sequence2.isStronglyEqual(diff.seq2Range.start + deltaAfter, diff.seq2Range.endExclusive + deltaAfter) && deltaAfter < maxShiftLimit) deltaAfter++;\n if (deltaBefore === 0 && deltaAfter === 0) return diff;\n let bestDelta = 0;\n let bestScore = -1;\n for (let delta = -deltaBefore; delta <= deltaAfter; delta++) {\n const seq2OffsetStart = diff.seq2Range.start + delta;\n const seq2OffsetEndExclusive = diff.seq2Range.endExclusive + delta;\n const seq1Offset = diff.seq1Range.start + delta;\n const score = sequence1.getBoundaryScore(seq1Offset) + sequence2.getBoundaryScore(seq2OffsetStart) + sequence2.getBoundaryScore(seq2OffsetEndExclusive);\n if (score > bestScore) {\n bestScore = score;\n bestDelta = delta;\n }\n }\n return diff.delta(bestDelta);\n }\n function removeShortMatches(sequence1, sequence2, sequenceDiffs) {\n const result = [];\n for (const s of sequenceDiffs) {\n const last = result[result.length - 1];\n if (!last) {\n result.push(s);\n continue;\n }\n if (s.seq1Range.start - last.seq1Range.endExclusive <= 2 || s.seq2Range.start - last.seq2Range.endExclusive <= 2) result[result.length - 1] = new SequenceDiff(last.seq1Range.join(s.seq1Range), last.seq2Range.join(s.seq2Range));\n else result.push(s);\n }\n return result;\n }\n function extendDiffsToEntireWordIfAppropriate(sequence1, sequence2, sequenceDiffs, findParent, force = false) {\n const equalMappings = SequenceDiff.invert(sequenceDiffs, sequence1.length);\n const additional = [];\n let lastPoint = new OffsetPair(0, 0);\n function scanWord(pair, equalMapping) {\n if (pair.offset1 < lastPoint.offset1 || pair.offset2 < lastPoint.offset2) return;\n const w1 = findParent(sequence1, pair.offset1);\n const w2 = findParent(sequence2, pair.offset2);\n if (!w1 || !w2) return;\n let w = new SequenceDiff(w1, w2);\n const equalPart = w.intersect(equalMapping);\n let equalChars1 = equalPart.seq1Range.length;\n let equalChars2 = equalPart.seq2Range.length;\n while (equalMappings.length > 0) {\n const next = equalMappings[0];\n if (!(next.seq1Range.intersects(w.seq1Range) || next.seq2Range.intersects(w.seq2Range))) break;\n const v = new SequenceDiff(findParent(sequence1, next.seq1Range.start), findParent(sequence2, next.seq2Range.start));\n const equalPart = v.intersect(next);\n equalChars1 += equalPart.seq1Range.length;\n equalChars2 += equalPart.seq2Range.length;\n w = w.join(v);\n if (w.seq1Range.endExclusive >= next.seq1Range.endExclusive) equalMappings.shift();\n else break;\n }\n if (force && equalChars1 + equalChars2 < w.seq1Range.length + w.seq2Range.length || equalChars1 + equalChars2 < (w.seq1Range.length + w.seq2Range.length) * 2 / 3) additional.push(w);\n lastPoint = w.getEndExclusives();\n }\n while (equalMappings.length > 0) {\n const next = equalMappings.shift();\n if (next.seq1Range.isEmpty) continue;\n scanWord(next.getStarts(), next);\n scanWord(next.getEndExclusives().delta(-1), next);\n }\n return mergeSequenceDiffs(sequenceDiffs, additional);\n }\n function mergeSequenceDiffs(sequenceDiffs1, sequenceDiffs2) {\n const result = [];\n while (sequenceDiffs1.length > 0 || sequenceDiffs2.length > 0) {\n const sd1 = sequenceDiffs1[0];\n const sd2 = sequenceDiffs2[0];\n let next;\n if (sd1 && (!sd2 || sd1.seq1Range.start < sd2.seq1Range.start)) next = sequenceDiffs1.shift();\n else next = sequenceDiffs2.shift();\n if (result.length > 0 && result[result.length - 1].seq1Range.endExclusive >= next.seq1Range.start) result[result.length - 1] = result[result.length - 1].join(next);\n else result.push(next);\n }\n return result;\n }\n function removeVeryShortMatchingLinesBetweenDiffs(sequence1, _sequence2, sequenceDiffs) {\n let diffs = sequenceDiffs;\n if (diffs.length === 0) return diffs;\n let counter = 0;\n let shouldRepeat;\n do {\n shouldRepeat = false;\n const result = [diffs[0]];\n for (let i = 1; i < diffs.length; i++) {\n const cur = diffs[i];\n const lastResult = result[result.length - 1];\n function shouldJoinDiffs(before, after) {\n const unchangedRange = new OffsetRange(lastResult.seq1Range.endExclusive, cur.seq1Range.start);\n if (sequence1.getText(unchangedRange).replace(/\\s/g, \"\").length <= 4 && (before.seq1Range.length + before.seq2Range.length > 5 || after.seq1Range.length + after.seq2Range.length > 5)) return true;\n return false;\n }\n if (shouldJoinDiffs(lastResult, cur)) {\n shouldRepeat = true;\n result[result.length - 1] = result[result.length - 1].join(cur);\n } else result.push(cur);\n }\n diffs = result;\n } while (counter++ < 10 && shouldRepeat);\n return diffs;\n }\n function removeVeryShortMatchingTextBetweenLongDiffs(sequence1, sequence2, sequenceDiffs) {\n let diffs = sequenceDiffs;\n if (diffs.length === 0) return diffs;\n let counter = 0;\n let shouldRepeat;\n do {\n shouldRepeat = false;\n const result = [diffs[0]];\n for (let i = 1; i < diffs.length; i++) {\n const cur = diffs[i];\n const lastResult = result[result.length - 1];\n function shouldJoinDiffs(before, after) {\n const unchangedRange = new OffsetRange(lastResult.seq1Range.endExclusive, cur.seq1Range.start);\n if (sequence1.countLinesIn(unchangedRange) > 5 || unchangedRange.length > 500) return false;\n const unchangedText = sequence1.getText(unchangedRange).trim();\n if (unchangedText.length > 20 || unchangedText.split(/\\r\\n|\\r|\\n/).length > 1) return false;\n const beforeLineCount1 = sequence1.countLinesIn(before.seq1Range);\n const beforeSeq1Length = before.seq1Range.length;\n const beforeLineCount2 = sequence2.countLinesIn(before.seq2Range);\n const beforeSeq2Length = before.seq2Range.length;\n const afterLineCount1 = sequence1.countLinesIn(after.seq1Range);\n const afterSeq1Length = after.seq1Range.length;\n const afterLineCount2 = sequence2.countLinesIn(after.seq2Range);\n const afterSeq2Length = after.seq2Range.length;\n const max = 130;\n function cap(v) {\n return Math.min(v, max);\n }\n if (Math.pow(Math.pow(cap(beforeLineCount1 * 40 + beforeSeq1Length), 1.5) + Math.pow(cap(beforeLineCount2 * 40 + beforeSeq2Length), 1.5), 1.5) + Math.pow(Math.pow(cap(afterLineCount1 * 40 + afterSeq1Length), 1.5) + Math.pow(cap(afterLineCount2 * 40 + afterSeq2Length), 1.5), 1.5) > (max ** 1.5) ** 1.5 * 1.3) return true;\n return false;\n }\n if (shouldJoinDiffs(lastResult, cur)) {\n shouldRepeat = true;\n result[result.length - 1] = result[result.length - 1].join(cur);\n } else result.push(cur);\n }\n diffs = result;\n } while (counter++ < 10 && shouldRepeat);\n const newDiffs = [];\n forEachWithNeighbors(diffs, (prev, cur, next) => {\n let newDiff = cur;\n function shouldMarkAsChanged(text) {\n return text.length > 0 && text.trim().length <= 3 && cur.seq1Range.length + cur.seq2Range.length > 100;\n }\n const fullRange1 = sequence1.extendToFullLines(cur.seq1Range);\n const prefix = sequence1.getText(new OffsetRange(fullRange1.start, cur.seq1Range.start));\n if (shouldMarkAsChanged(prefix)) newDiff = newDiff.deltaStart(-prefix.length);\n const suffix = sequence1.getText(new OffsetRange(cur.seq1Range.endExclusive, fullRange1.endExclusive));\n if (shouldMarkAsChanged(suffix)) newDiff = newDiff.deltaEnd(suffix.length);\n const availableSpace = SequenceDiff.fromOffsetPairs(prev ? prev.getEndExclusives() : OffsetPair.zero, next ? next.getStarts() : OffsetPair.max);\n const result = newDiff.intersect(availableSpace);\n if (newDiffs.length > 0 && result.getStarts().equals(newDiffs[newDiffs.length - 1].getEndExclusives())) newDiffs[newDiffs.length - 1] = newDiffs[newDiffs.length - 1].join(result);\n else newDiffs.push(result);\n });\n return newDiffs;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/defaultLinesDiffComputer/lineSequence.js\n var LineSequence = class {\n constructor(trimmedHash, lines) {\n this.trimmedHash = trimmedHash;\n this.lines = lines;\n }\n getElement(offset) {\n return this.trimmedHash[offset];\n }\n get length() {\n return this.trimmedHash.length;\n }\n getBoundaryScore(length) {\n return 1e3 - ((length === 0 ? 0 : getIndentation(this.lines[length - 1])) + (length === this.lines.length ? 0 : getIndentation(this.lines[length])));\n }\n getText(range) {\n return this.lines.slice(range.start, range.endExclusive).join(\"\\n\");\n }\n isStronglyEqual(offset1, offset2) {\n return this.lines[offset1] === this.lines[offset2];\n }\n };\n function getIndentation(str) {\n let i = 0;\n while (i < str.length && (str.charCodeAt(i) === 32 || str.charCodeAt(i) === 9)) i++;\n return i;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/defaultLinesDiffComputer/defaultLinesDiffComputer.js\n var DefaultLinesDiffComputer = class {\n constructor() {\n this.dynamicProgrammingDiffing = new DynamicProgrammingDiffing();\n this.myersDiffingAlgorithm = new MyersDiffAlgorithm();\n }\n computeDiff(originalLines, modifiedLines, options) {\n if (originalLines.length <= 1 && equals(originalLines, modifiedLines, (a, b) => a === b)) return new LinesDiff([], [], false);\n if (originalLines.length === 1 && originalLines[0].length === 0 || modifiedLines.length === 1 && modifiedLines[0].length === 0) return new LinesDiff([new DetailedLineRangeMapping(new LineRange(1, originalLines.length + 1), new LineRange(1, modifiedLines.length + 1), [new RangeMapping(new Range(1, 1, originalLines.length, originalLines[originalLines.length - 1].length + 1), new Range(1, 1, modifiedLines.length, modifiedLines[modifiedLines.length - 1].length + 1))])], [], false);\n const timeout = options.maxComputationTimeMs === 0 ? InfiniteTimeout.instance : new DateTimeout(options.maxComputationTimeMs);\n const considerWhitespaceChanges = !options.ignoreTrimWhitespace;\n const perfectHashes = /* @__PURE__ */ new Map();\n function getOrCreateHash(text) {\n let hash = perfectHashes.get(text);\n if (hash === void 0) {\n hash = perfectHashes.size;\n perfectHashes.set(text, hash);\n }\n return hash;\n }\n const originalLinesHashes = originalLines.map((l) => getOrCreateHash(l.trim()));\n const modifiedLinesHashes = modifiedLines.map((l) => getOrCreateHash(l.trim()));\n const sequence1 = new LineSequence(originalLinesHashes, originalLines);\n const sequence2 = new LineSequence(modifiedLinesHashes, modifiedLines);\n const lineAlignmentResult = (() => {\n if (sequence1.length + sequence2.length < 1700) return this.dynamicProgrammingDiffing.compute(sequence1, sequence2, timeout, (offset1, offset2) => originalLines[offset1] === modifiedLines[offset2] ? modifiedLines[offset2].length === 0 ? .1 : 1 + Math.log(1 + modifiedLines[offset2].length) : .99);\n return this.myersDiffingAlgorithm.compute(sequence1, sequence2, timeout);\n })();\n let lineAlignments = lineAlignmentResult.diffs;\n let hitTimeout = lineAlignmentResult.hitTimeout;\n lineAlignments = optimizeSequenceDiffs(sequence1, sequence2, lineAlignments);\n lineAlignments = removeVeryShortMatchingLinesBetweenDiffs(sequence1, sequence2, lineAlignments);\n const alignments = [];\n const scanForWhitespaceChanges = (equalLinesCount) => {\n if (!considerWhitespaceChanges) return;\n for (let i = 0; i < equalLinesCount; i++) {\n const seq1Offset = seq1LastStart + i;\n const seq2Offset = seq2LastStart + i;\n if (originalLines[seq1Offset] !== modifiedLines[seq2Offset]) {\n const characterDiffs = this.refineDiff(originalLines, modifiedLines, new SequenceDiff(new OffsetRange(seq1Offset, seq1Offset + 1), new OffsetRange(seq2Offset, seq2Offset + 1)), timeout, considerWhitespaceChanges, options);\n for (const a of characterDiffs.mappings) alignments.push(a);\n if (characterDiffs.hitTimeout) hitTimeout = true;\n }\n }\n };\n let seq1LastStart = 0;\n let seq2LastStart = 0;\n for (const diff of lineAlignments) {\n assertFn(() => diff.seq1Range.start - seq1LastStart === diff.seq2Range.start - seq2LastStart);\n scanForWhitespaceChanges(diff.seq1Range.start - seq1LastStart);\n seq1LastStart = diff.seq1Range.endExclusive;\n seq2LastStart = diff.seq2Range.endExclusive;\n const characterDiffs = this.refineDiff(originalLines, modifiedLines, diff, timeout, considerWhitespaceChanges, options);\n if (characterDiffs.hitTimeout) hitTimeout = true;\n for (const a of characterDiffs.mappings) alignments.push(a);\n }\n scanForWhitespaceChanges(originalLines.length - seq1LastStart);\n const changes = lineRangeMappingFromRangeMappings(alignments, new ArrayText(originalLines), new ArrayText(modifiedLines));\n let moves = [];\n if (options.computeMoves) moves = this.computeMoves(changes, originalLines, modifiedLines, originalLinesHashes, modifiedLinesHashes, timeout, considerWhitespaceChanges, options);\n assertFn(() => {\n function validatePosition(pos, lines) {\n if (pos.lineNumber < 1 || pos.lineNumber > lines.length) return false;\n const line = lines[pos.lineNumber - 1];\n if (pos.column < 1 || pos.column > line.length + 1) return false;\n return true;\n }\n function validateRange(range, lines) {\n if (range.startLineNumber < 1 || range.startLineNumber > lines.length + 1) return false;\n if (range.endLineNumberExclusive < 1 || range.endLineNumberExclusive > lines.length + 1) return false;\n return true;\n }\n for (const c of changes) {\n if (!c.innerChanges) return false;\n for (const ic of c.innerChanges) if (!(validatePosition(ic.modifiedRange.getStartPosition(), modifiedLines) && validatePosition(ic.modifiedRange.getEndPosition(), modifiedLines) && validatePosition(ic.originalRange.getStartPosition(), originalLines) && validatePosition(ic.originalRange.getEndPosition(), originalLines))) return false;\n if (!validateRange(c.modified, modifiedLines) || !validateRange(c.original, originalLines)) return false;\n }\n return true;\n });\n return new LinesDiff(changes, moves, hitTimeout);\n }\n computeMoves(changes, originalLines, modifiedLines, hashedOriginalLines, hashedModifiedLines, timeout, considerWhitespaceChanges, options) {\n return computeMovedLines(changes, originalLines, modifiedLines, hashedOriginalLines, hashedModifiedLines, timeout).map((m) => {\n return new MovedText(m, lineRangeMappingFromRangeMappings(this.refineDiff(originalLines, modifiedLines, new SequenceDiff(m.original.toOffsetRange(), m.modified.toOffsetRange()), timeout, considerWhitespaceChanges, options).mappings, new ArrayText(originalLines), new ArrayText(modifiedLines), true));\n });\n }\n refineDiff(originalLines, modifiedLines, diff, timeout, considerWhitespaceChanges, options) {\n const rangeMapping = toLineRangeMapping(diff).toRangeMapping2(originalLines, modifiedLines);\n const slice1 = new LinesSliceCharSequence(originalLines, rangeMapping.originalRange, considerWhitespaceChanges);\n const slice2 = new LinesSliceCharSequence(modifiedLines, rangeMapping.modifiedRange, considerWhitespaceChanges);\n const diffResult = slice1.length + slice2.length < 500 ? this.dynamicProgrammingDiffing.compute(slice1, slice2, timeout) : this.myersDiffingAlgorithm.compute(slice1, slice2, timeout);\n let diffs = diffResult.diffs;\n diffs = optimizeSequenceDiffs(slice1, slice2, diffs);\n diffs = extendDiffsToEntireWordIfAppropriate(slice1, slice2, diffs, (seq, idx) => seq.findWordContaining(idx));\n if (options.extendToSubwords) diffs = extendDiffsToEntireWordIfAppropriate(slice1, slice2, diffs, (seq, idx) => seq.findSubWordContaining(idx), true);\n diffs = removeShortMatches(slice1, slice2, diffs);\n diffs = removeVeryShortMatchingTextBetweenLongDiffs(slice1, slice2, diffs);\n return {\n mappings: diffs.map((d) => new RangeMapping(slice1.translateRange(d.seq1Range), slice2.translateRange(d.seq2Range))),\n hitTimeout: diffResult.hitTimeout\n };\n }\n };\n function toLineRangeMapping(sequenceDiff) {\n return new LineRangeMapping(new LineRange(sequenceDiff.seq1Range.start + 1, sequenceDiff.seq1Range.endExclusive + 1), new LineRange(sequenceDiff.seq2Range.start + 1, sequenceDiff.seq2Range.endExclusive + 1));\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/diff/linesDiffComputers.js\n const linesDiffComputers = {\n getLegacy: () => new LegacyLinesDiffComputer(),\n getDefault: () => new DefaultLinesDiffComputer()\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/base/common/color.js\n function roundFloat(number, decimalPoints) {\n const decimal = Math.pow(10, decimalPoints);\n return Math.round(number * decimal) / decimal;\n }\n var RGBA = class {\n constructor(r, g, b, a = 1) {\n this._rgbaBrand = void 0;\n this.r = Math.min(255, Math.max(0, r)) | 0;\n this.g = Math.min(255, Math.max(0, g)) | 0;\n this.b = Math.min(255, Math.max(0, b)) | 0;\n this.a = roundFloat(Math.max(Math.min(1, a), 0), 3);\n }\n static equals(a, b) {\n return a.r === b.r && a.g === b.g && a.b === b.b && a.a === b.a;\n }\n };\n var HSLA = class HSLA {\n constructor(h, s, l, a) {\n this._hslaBrand = void 0;\n this.h = Math.max(Math.min(360, h), 0) | 0;\n this.s = roundFloat(Math.max(Math.min(1, s), 0), 3);\n this.l = roundFloat(Math.max(Math.min(1, l), 0), 3);\n this.a = roundFloat(Math.max(Math.min(1, a), 0), 3);\n }\n static equals(a, b) {\n return a.h === b.h && a.s === b.s && a.l === b.l && a.a === b.a;\n }\n /**\n * Converts an RGB color value to HSL. Conversion formula\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\n * Assumes r, g, and b are contained in the set [0, 255] and\n * returns h in the set [0, 360], s, and l in the set [0, 1].\n */\n static fromRGBA(rgba) {\n const r = rgba.r / 255;\n const g = rgba.g / 255;\n const b = rgba.b / 255;\n const a = rgba.a;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0;\n let s = 0;\n const l = (min + max) / 2;\n const chroma = max - min;\n if (chroma > 0) {\n s = Math.min(l <= .5 ? chroma / (2 * l) : chroma / (2 - 2 * l), 1);\n switch (max) {\n case r:\n h = (g - b) / chroma + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / chroma + 2;\n break;\n case b:\n h = (r - g) / chroma + 4;\n break;\n }\n h *= 60;\n h = Math.round(h);\n }\n return new HSLA(h, s, l, a);\n }\n static _hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n /**\n * Converts an HSL color value to RGB. Conversion formula\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\n * Assumes h in the set [0, 360] s, and l are contained in the set [0, 1] and\n * returns r, g, and b in the set [0, 255].\n */\n static toRGBA(hsla) {\n const h = hsla.h / 360;\n const { s, l, a } = hsla;\n let r, g, b;\n if (s === 0) r = g = b = l;\n else {\n const q = l < .5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n r = HSLA._hue2rgb(p, q, h + 1 / 3);\n g = HSLA._hue2rgb(p, q, h);\n b = HSLA._hue2rgb(p, q, h - 1 / 3);\n }\n return new RGBA(Math.round(r * 255), Math.round(g * 255), Math.round(b * 255), a);\n }\n };\n var HSVA = class HSVA {\n constructor(h, s, v, a) {\n this._hsvaBrand = void 0;\n this.h = Math.max(Math.min(360, h), 0) | 0;\n this.s = roundFloat(Math.max(Math.min(1, s), 0), 3);\n this.v = roundFloat(Math.max(Math.min(1, v), 0), 3);\n this.a = roundFloat(Math.max(Math.min(1, a), 0), 3);\n }\n static equals(a, b) {\n return a.h === b.h && a.s === b.s && a.v === b.v && a.a === b.a;\n }\n static fromRGBA(rgba) {\n const r = rgba.r / 255;\n const g = rgba.g / 255;\n const b = rgba.b / 255;\n const cmax = Math.max(r, g, b);\n const delta = cmax - Math.min(r, g, b);\n const s = cmax === 0 ? 0 : delta / cmax;\n let m;\n if (delta === 0) m = 0;\n else if (cmax === r) m = ((g - b) / delta % 6 + 6) % 6;\n else if (cmax === g) m = (b - r) / delta + 2;\n else m = (r - g) / delta + 4;\n return new HSVA(Math.round(m * 60), s, cmax, rgba.a);\n }\n static toRGBA(hsva) {\n const { h, s, v, a } = hsva;\n const c = v * s;\n const x = c * (1 - Math.abs(h / 60 % 2 - 1));\n const m = v - c;\n let [r, g, b] = [\n 0,\n 0,\n 0\n ];\n if (h < 60) {\n r = c;\n g = x;\n } else if (h < 120) {\n r = x;\n g = c;\n } else if (h < 180) {\n g = c;\n b = x;\n } else if (h < 240) {\n g = x;\n b = c;\n } else if (h < 300) {\n r = x;\n b = c;\n } else if (h <= 360) {\n r = c;\n b = x;\n }\n r = Math.round((r + m) * 255);\n g = Math.round((g + m) * 255);\n b = Math.round((b + m) * 255);\n return new RGBA(r, g, b, a);\n }\n };\n var Color = class Color {\n static fromHex(hex) {\n return Color.Format.CSS.parseHex(hex) || Color.red;\n }\n static equals(a, b) {\n if (!a && !b) return true;\n if (!a || !b) return false;\n return a.equals(b);\n }\n get hsla() {\n if (this._hsla) return this._hsla;\n else return HSLA.fromRGBA(this.rgba);\n }\n get hsva() {\n if (this._hsva) return this._hsva;\n return HSVA.fromRGBA(this.rgba);\n }\n constructor(arg) {\n if (!arg) throw new Error(\"Color needs a value\");\n else if (arg instanceof RGBA) this.rgba = arg;\n else if (arg instanceof HSLA) {\n this._hsla = arg;\n this.rgba = HSLA.toRGBA(arg);\n } else if (arg instanceof HSVA) {\n this._hsva = arg;\n this.rgba = HSVA.toRGBA(arg);\n } else throw new Error(\"Invalid color ctor argument\");\n }\n equals(other) {\n return !!other && RGBA.equals(this.rgba, other.rgba) && HSLA.equals(this.hsla, other.hsla) && HSVA.equals(this.hsva, other.hsva);\n }\n /**\n * http://www.w3.org/TR/WCAG20/#relativeluminancedef\n * Returns the number in the set [0, 1]. O => Darkest Black. 1 => Lightest white.\n */\n getRelativeLuminance() {\n const R = Color._relativeLuminanceForComponent(this.rgba.r);\n const G = Color._relativeLuminanceForComponent(this.rgba.g);\n const B = Color._relativeLuminanceForComponent(this.rgba.b);\n return roundFloat(.2126 * R + .7152 * G + .0722 * B, 4);\n }\n static _relativeLuminanceForComponent(color) {\n const c = color / 255;\n return c <= .03928 ? c / 12.92 : Math.pow((c + .055) / 1.055, 2.4);\n }\n /**\n * http://24ways.org/2010/calculating-color-contrast\n * Return 'true' if lighter color otherwise 'false'\n */\n isLighter() {\n return (this.rgba.r * 299 + this.rgba.g * 587 + this.rgba.b * 114) / 1e3 >= 128;\n }\n isLighterThan(another) {\n return this.getRelativeLuminance() > another.getRelativeLuminance();\n }\n isDarkerThan(another) {\n return this.getRelativeLuminance() < another.getRelativeLuminance();\n }\n lighten(factor) {\n return new Color(new HSLA(this.hsla.h, this.hsla.s, this.hsla.l + this.hsla.l * factor, this.hsla.a));\n }\n darken(factor) {\n return new Color(new HSLA(this.hsla.h, this.hsla.s, this.hsla.l - this.hsla.l * factor, this.hsla.a));\n }\n transparent(factor) {\n const { r, g, b, a } = this.rgba;\n return new Color(new RGBA(r, g, b, a * factor));\n }\n isTransparent() {\n return this.rgba.a === 0;\n }\n isOpaque() {\n return this.rgba.a === 1;\n }\n opposite() {\n return new Color(new RGBA(255 - this.rgba.r, 255 - this.rgba.g, 255 - this.rgba.b, this.rgba.a));\n }\n /**\n * Mixes the current color with the provided color based on the given factor.\n * @param color The color to mix with\n * @param factor The factor of mixing (0 means this color, 1 means the input color, 0.5 means equal mix)\n * @returns A new color representing the mix\n */\n mix(color, factor = .5) {\n const normalize = Math.min(Math.max(factor, 0), 1);\n const thisRGBA = this.rgba;\n const otherRGBA = color.rgba;\n const r = thisRGBA.r + (otherRGBA.r - thisRGBA.r) * normalize;\n const g = thisRGBA.g + (otherRGBA.g - thisRGBA.g) * normalize;\n const b = thisRGBA.b + (otherRGBA.b - thisRGBA.b) * normalize;\n const a = thisRGBA.a + (otherRGBA.a - thisRGBA.a) * normalize;\n return new Color(new RGBA(r, g, b, a));\n }\n makeOpaque(opaqueBackground) {\n if (this.isOpaque() || opaqueBackground.rgba.a !== 1) return this;\n const { r, g, b, a } = this.rgba;\n return new Color(new RGBA(opaqueBackground.rgba.r - a * (opaqueBackground.rgba.r - r), opaqueBackground.rgba.g - a * (opaqueBackground.rgba.g - g), opaqueBackground.rgba.b - a * (opaqueBackground.rgba.b - b), 1));\n }\n toString() {\n if (!this._toString) this._toString = Color.Format.CSS.format(this);\n return this._toString;\n }\n toNumber32Bit() {\n if (!this._toNumber32Bit) this._toNumber32Bit = (this.rgba.r << 24 | this.rgba.g << 16 | this.rgba.b << 8 | this.rgba.a * 255 << 0) >>> 0;\n return this._toNumber32Bit;\n }\n static getLighterColor(of, relative, factor) {\n if (of.isLighterThan(relative)) return of;\n factor = factor ? factor : .5;\n const lum1 = of.getRelativeLuminance();\n const lum2 = relative.getRelativeLuminance();\n factor = factor * (lum2 - lum1) / lum2;\n return of.lighten(factor);\n }\n static getDarkerColor(of, relative, factor) {\n if (of.isDarkerThan(relative)) return of;\n factor = factor ? factor : .5;\n const lum1 = of.getRelativeLuminance();\n const lum2 = relative.getRelativeLuminance();\n factor = factor * (lum1 - lum2) / lum1;\n return of.darken(factor);\n }\n static {\n this.white = new Color(new RGBA(255, 255, 255, 1));\n }\n static {\n this.black = new Color(new RGBA(0, 0, 0, 1));\n }\n static {\n this.red = new Color(new RGBA(255, 0, 0, 1));\n }\n static {\n this.blue = new Color(new RGBA(0, 0, 255, 1));\n }\n static {\n this.green = new Color(new RGBA(0, 255, 0, 1));\n }\n static {\n this.cyan = new Color(new RGBA(0, 255, 255, 1));\n }\n static {\n this.lightgrey = new Color(new RGBA(211, 211, 211, 1));\n }\n static {\n this.transparent = new Color(new RGBA(0, 0, 0, 0));\n }\n };\n (function(Color) {\n (function(Format) {\n (function(CSS) {\n function formatRGB(color) {\n if (color.rgba.a === 1) return `rgb(${color.rgba.r}, ${color.rgba.g}, ${color.rgba.b})`;\n return Color.Format.CSS.formatRGBA(color);\n }\n CSS.formatRGB = formatRGB;\n function formatRGBA(color) {\n return `rgba(${color.rgba.r}, ${color.rgba.g}, ${color.rgba.b}, ${+color.rgba.a.toFixed(2)})`;\n }\n CSS.formatRGBA = formatRGBA;\n function formatHSL(color) {\n if (color.hsla.a === 1) return `hsl(${color.hsla.h}, ${Math.round(color.hsla.s * 100)}%, ${Math.round(color.hsla.l * 100)}%)`;\n return Color.Format.CSS.formatHSLA(color);\n }\n CSS.formatHSL = formatHSL;\n function formatHSLA(color) {\n return `hsla(${color.hsla.h}, ${Math.round(color.hsla.s * 100)}%, ${Math.round(color.hsla.l * 100)}%, ${color.hsla.a.toFixed(2)})`;\n }\n CSS.formatHSLA = formatHSLA;\n function _toTwoDigitHex(n) {\n const r = n.toString(16);\n return r.length !== 2 ? \"0\" + r : r;\n }\n /**\n * Formats the color as #RRGGBB\n */\n function formatHex(color) {\n return `#${_toTwoDigitHex(color.rgba.r)}${_toTwoDigitHex(color.rgba.g)}${_toTwoDigitHex(color.rgba.b)}`;\n }\n CSS.formatHex = formatHex;\n /**\n * Formats the color as #RRGGBBAA\n * If 'compact' is set, colors without transparancy will be printed as #RRGGBB\n */\n function formatHexA(color, compact = false) {\n if (compact && color.rgba.a === 1) return Color.Format.CSS.formatHex(color);\n return `#${_toTwoDigitHex(color.rgba.r)}${_toTwoDigitHex(color.rgba.g)}${_toTwoDigitHex(color.rgba.b)}${_toTwoDigitHex(Math.round(color.rgba.a * 255))}`;\n }\n CSS.formatHexA = formatHexA;\n /**\n * The default format will use HEX if opaque and RGBA otherwise.\n */\n function format(color) {\n if (color.isOpaque()) return Color.Format.CSS.formatHex(color);\n return Color.Format.CSS.formatRGBA(color);\n }\n CSS.format = format;\n /**\n * Parse a CSS color and return a {@link Color}.\n * @param css The CSS color to parse.\n * @see https://drafts.csswg.org/css-color/#typedef-color\n */\n function parse(css) {\n if (css === \"transparent\") return Color.transparent;\n if (css.startsWith(\"#\")) return parseHex(css);\n if (css.startsWith(\"rgba(\")) {\n const color = css.match(/rgba\\((?<r>(?:\\+|-)?\\d+), *(?<g>(?:\\+|-)?\\d+), *(?<b>(?:\\+|-)?\\d+), *(?<a>(?:\\+|-)?\\d+(\\.\\d+)?)\\)/);\n if (!color) throw new Error(\"Invalid color format \" + css);\n return new Color(new RGBA(parseInt(color.groups?.r ?? \"0\"), parseInt(color.groups?.g ?? \"0\"), parseInt(color.groups?.b ?? \"0\"), parseFloat(color.groups?.a ?? \"0\")));\n }\n if (css.startsWith(\"rgb(\")) {\n const color = css.match(/rgb\\((?<r>(?:\\+|-)?\\d+), *(?<g>(?:\\+|-)?\\d+), *(?<b>(?:\\+|-)?\\d+)\\)/);\n if (!color) throw new Error(\"Invalid color format \" + css);\n return new Color(new RGBA(parseInt(color.groups?.r ?? \"0\"), parseInt(color.groups?.g ?? \"0\"), parseInt(color.groups?.b ?? \"0\")));\n }\n return parseNamedKeyword(css);\n }\n CSS.parse = parse;\n function parseNamedKeyword(css) {\n switch (css) {\n case \"aliceblue\": return new Color(new RGBA(240, 248, 255, 1));\n case \"antiquewhite\": return new Color(new RGBA(250, 235, 215, 1));\n case \"aqua\": return new Color(new RGBA(0, 255, 255, 1));\n case \"aquamarine\": return new Color(new RGBA(127, 255, 212, 1));\n case \"azure\": return new Color(new RGBA(240, 255, 255, 1));\n case \"beige\": return new Color(new RGBA(245, 245, 220, 1));\n case \"bisque\": return new Color(new RGBA(255, 228, 196, 1));\n case \"black\": return new Color(new RGBA(0, 0, 0, 1));\n case \"blanchedalmond\": return new Color(new RGBA(255, 235, 205, 1));\n case \"blue\": return new Color(new RGBA(0, 0, 255, 1));\n case \"blueviolet\": return new Color(new RGBA(138, 43, 226, 1));\n case \"brown\": return new Color(new RGBA(165, 42, 42, 1));\n case \"burlywood\": return new Color(new RGBA(222, 184, 135, 1));\n case \"cadetblue\": return new Color(new RGBA(95, 158, 160, 1));\n case \"chartreuse\": return new Color(new RGBA(127, 255, 0, 1));\n case \"chocolate\": return new Color(new RGBA(210, 105, 30, 1));\n case \"coral\": return new Color(new RGBA(255, 127, 80, 1));\n case \"cornflowerblue\": return new Color(new RGBA(100, 149, 237, 1));\n case \"cornsilk\": return new Color(new RGBA(255, 248, 220, 1));\n case \"crimson\": return new Color(new RGBA(220, 20, 60, 1));\n case \"cyan\": return new Color(new RGBA(0, 255, 255, 1));\n case \"darkblue\": return new Color(new RGBA(0, 0, 139, 1));\n case \"darkcyan\": return new Color(new RGBA(0, 139, 139, 1));\n case \"darkgoldenrod\": return new Color(new RGBA(184, 134, 11, 1));\n case \"darkgray\": return new Color(new RGBA(169, 169, 169, 1));\n case \"darkgreen\": return new Color(new RGBA(0, 100, 0, 1));\n case \"darkgrey\": return new Color(new RGBA(169, 169, 169, 1));\n case \"darkkhaki\": return new Color(new RGBA(189, 183, 107, 1));\n case \"darkmagenta\": return new Color(new RGBA(139, 0, 139, 1));\n case \"darkolivegreen\": return new Color(new RGBA(85, 107, 47, 1));\n case \"darkorange\": return new Color(new RGBA(255, 140, 0, 1));\n case \"darkorchid\": return new Color(new RGBA(153, 50, 204, 1));\n case \"darkred\": return new Color(new RGBA(139, 0, 0, 1));\n case \"darksalmon\": return new Color(new RGBA(233, 150, 122, 1));\n case \"darkseagreen\": return new Color(new RGBA(143, 188, 143, 1));\n case \"darkslateblue\": return new Color(new RGBA(72, 61, 139, 1));\n case \"darkslategray\": return new Color(new RGBA(47, 79, 79, 1));\n case \"darkslategrey\": return new Color(new RGBA(47, 79, 79, 1));\n case \"darkturquoise\": return new Color(new RGBA(0, 206, 209, 1));\n case \"darkviolet\": return new Color(new RGBA(148, 0, 211, 1));\n case \"deeppink\": return new Color(new RGBA(255, 20, 147, 1));\n case \"deepskyblue\": return new Color(new RGBA(0, 191, 255, 1));\n case \"dimgray\": return new Color(new RGBA(105, 105, 105, 1));\n case \"dimgrey\": return new Color(new RGBA(105, 105, 105, 1));\n case \"dodgerblue\": return new Color(new RGBA(30, 144, 255, 1));\n case \"firebrick\": return new Color(new RGBA(178, 34, 34, 1));\n case \"floralwhite\": return new Color(new RGBA(255, 250, 240, 1));\n case \"forestgreen\": return new Color(new RGBA(34, 139, 34, 1));\n case \"fuchsia\": return new Color(new RGBA(255, 0, 255, 1));\n case \"gainsboro\": return new Color(new RGBA(220, 220, 220, 1));\n case \"ghostwhite\": return new Color(new RGBA(248, 248, 255, 1));\n case \"gold\": return new Color(new RGBA(255, 215, 0, 1));\n case \"goldenrod\": return new Color(new RGBA(218, 165, 32, 1));\n case \"gray\": return new Color(new RGBA(128, 128, 128, 1));\n case \"green\": return new Color(new RGBA(0, 128, 0, 1));\n case \"greenyellow\": return new Color(new RGBA(173, 255, 47, 1));\n case \"grey\": return new Color(new RGBA(128, 128, 128, 1));\n case \"honeydew\": return new Color(new RGBA(240, 255, 240, 1));\n case \"hotpink\": return new Color(new RGBA(255, 105, 180, 1));\n case \"indianred\": return new Color(new RGBA(205, 92, 92, 1));\n case \"indigo\": return new Color(new RGBA(75, 0, 130, 1));\n case \"ivory\": return new Color(new RGBA(255, 255, 240, 1));\n case \"khaki\": return new Color(new RGBA(240, 230, 140, 1));\n case \"lavender\": return new Color(new RGBA(230, 230, 250, 1));\n case \"lavenderblush\": return new Color(new RGBA(255, 240, 245, 1));\n case \"lawngreen\": return new Color(new RGBA(124, 252, 0, 1));\n case \"lemonchiffon\": return new Color(new RGBA(255, 250, 205, 1));\n case \"lightblue\": return new Color(new RGBA(173, 216, 230, 1));\n case \"lightcoral\": return new Color(new RGBA(240, 128, 128, 1));\n case \"lightcyan\": return new Color(new RGBA(224, 255, 255, 1));\n case \"lightgoldenrodyellow\": return new Color(new RGBA(250, 250, 210, 1));\n case \"lightgray\": return new Color(new RGBA(211, 211, 211, 1));\n case \"lightgreen\": return new Color(new RGBA(144, 238, 144, 1));\n case \"lightgrey\": return new Color(new RGBA(211, 211, 211, 1));\n case \"lightpink\": return new Color(new RGBA(255, 182, 193, 1));\n case \"lightsalmon\": return new Color(new RGBA(255, 160, 122, 1));\n case \"lightseagreen\": return new Color(new RGBA(32, 178, 170, 1));\n case \"lightskyblue\": return new Color(new RGBA(135, 206, 250, 1));\n case \"lightslategray\": return new Color(new RGBA(119, 136, 153, 1));\n case \"lightslategrey\": return new Color(new RGBA(119, 136, 153, 1));\n case \"lightsteelblue\": return new Color(new RGBA(176, 196, 222, 1));\n case \"lightyellow\": return new Color(new RGBA(255, 255, 224, 1));\n case \"lime\": return new Color(new RGBA(0, 255, 0, 1));\n case \"limegreen\": return new Color(new RGBA(50, 205, 50, 1));\n case \"linen\": return new Color(new RGBA(250, 240, 230, 1));\n case \"magenta\": return new Color(new RGBA(255, 0, 255, 1));\n case \"maroon\": return new Color(new RGBA(128, 0, 0, 1));\n case \"mediumaquamarine\": return new Color(new RGBA(102, 205, 170, 1));\n case \"mediumblue\": return new Color(new RGBA(0, 0, 205, 1));\n case \"mediumorchid\": return new Color(new RGBA(186, 85, 211, 1));\n case \"mediumpurple\": return new Color(new RGBA(147, 112, 219, 1));\n case \"mediumseagreen\": return new Color(new RGBA(60, 179, 113, 1));\n case \"mediumslateblue\": return new Color(new RGBA(123, 104, 238, 1));\n case \"mediumspringgreen\": return new Color(new RGBA(0, 250, 154, 1));\n case \"mediumturquoise\": return new Color(new RGBA(72, 209, 204, 1));\n case \"mediumvioletred\": return new Color(new RGBA(199, 21, 133, 1));\n case \"midnightblue\": return new Color(new RGBA(25, 25, 112, 1));\n case \"mintcream\": return new Color(new RGBA(245, 255, 250, 1));\n case \"mistyrose\": return new Color(new RGBA(255, 228, 225, 1));\n case \"moccasin\": return new Color(new RGBA(255, 228, 181, 1));\n case \"navajowhite\": return new Color(new RGBA(255, 222, 173, 1));\n case \"navy\": return new Color(new RGBA(0, 0, 128, 1));\n case \"oldlace\": return new Color(new RGBA(253, 245, 230, 1));\n case \"olive\": return new Color(new RGBA(128, 128, 0, 1));\n case \"olivedrab\": return new Color(new RGBA(107, 142, 35, 1));\n case \"orange\": return new Color(new RGBA(255, 165, 0, 1));\n case \"orangered\": return new Color(new RGBA(255, 69, 0, 1));\n case \"orchid\": return new Color(new RGBA(218, 112, 214, 1));\n case \"palegoldenrod\": return new Color(new RGBA(238, 232, 170, 1));\n case \"palegreen\": return new Color(new RGBA(152, 251, 152, 1));\n case \"paleturquoise\": return new Color(new RGBA(175, 238, 238, 1));\n case \"palevioletred\": return new Color(new RGBA(219, 112, 147, 1));\n case \"papayawhip\": return new Color(new RGBA(255, 239, 213, 1));\n case \"peachpuff\": return new Color(new RGBA(255, 218, 185, 1));\n case \"peru\": return new Color(new RGBA(205, 133, 63, 1));\n case \"pink\": return new Color(new RGBA(255, 192, 203, 1));\n case \"plum\": return new Color(new RGBA(221, 160, 221, 1));\n case \"powderblue\": return new Color(new RGBA(176, 224, 230, 1));\n case \"purple\": return new Color(new RGBA(128, 0, 128, 1));\n case \"rebeccapurple\": return new Color(new RGBA(102, 51, 153, 1));\n case \"red\": return new Color(new RGBA(255, 0, 0, 1));\n case \"rosybrown\": return new Color(new RGBA(188, 143, 143, 1));\n case \"royalblue\": return new Color(new RGBA(65, 105, 225, 1));\n case \"saddlebrown\": return new Color(new RGBA(139, 69, 19, 1));\n case \"salmon\": return new Color(new RGBA(250, 128, 114, 1));\n case \"sandybrown\": return new Color(new RGBA(244, 164, 96, 1));\n case \"seagreen\": return new Color(new RGBA(46, 139, 87, 1));\n case \"seashell\": return new Color(new RGBA(255, 245, 238, 1));\n case \"sienna\": return new Color(new RGBA(160, 82, 45, 1));\n case \"silver\": return new Color(new RGBA(192, 192, 192, 1));\n case \"skyblue\": return new Color(new RGBA(135, 206, 235, 1));\n case \"slateblue\": return new Color(new RGBA(106, 90, 205, 1));\n case \"slategray\": return new Color(new RGBA(112, 128, 144, 1));\n case \"slategrey\": return new Color(new RGBA(112, 128, 144, 1));\n case \"snow\": return new Color(new RGBA(255, 250, 250, 1));\n case \"springgreen\": return new Color(new RGBA(0, 255, 127, 1));\n case \"steelblue\": return new Color(new RGBA(70, 130, 180, 1));\n case \"tan\": return new Color(new RGBA(210, 180, 140, 1));\n case \"teal\": return new Color(new RGBA(0, 128, 128, 1));\n case \"thistle\": return new Color(new RGBA(216, 191, 216, 1));\n case \"tomato\": return new Color(new RGBA(255, 99, 71, 1));\n case \"turquoise\": return new Color(new RGBA(64, 224, 208, 1));\n case \"violet\": return new Color(new RGBA(238, 130, 238, 1));\n case \"wheat\": return new Color(new RGBA(245, 222, 179, 1));\n case \"white\": return new Color(new RGBA(255, 255, 255, 1));\n case \"whitesmoke\": return new Color(new RGBA(245, 245, 245, 1));\n case \"yellow\": return new Color(new RGBA(255, 255, 0, 1));\n case \"yellowgreen\": return new Color(new RGBA(154, 205, 50, 1));\n default: return null;\n }\n }\n /**\n * Converts an Hex color value to a Color.\n * returns r, g, and b are contained in the set [0, 255]\n * @param hex string (#RGB, #RGBA, #RRGGBB or #RRGGBBAA).\n */\n function parseHex(hex) {\n const length = hex.length;\n if (length === 0) return null;\n if (hex.charCodeAt(0) !== 35) return null;\n if (length === 7) return new Color(new RGBA(16 * _parseHexDigit(hex.charCodeAt(1)) + _parseHexDigit(hex.charCodeAt(2)), 16 * _parseHexDigit(hex.charCodeAt(3)) + _parseHexDigit(hex.charCodeAt(4)), 16 * _parseHexDigit(hex.charCodeAt(5)) + _parseHexDigit(hex.charCodeAt(6)), 1));\n if (length === 9) return new Color(new RGBA(16 * _parseHexDigit(hex.charCodeAt(1)) + _parseHexDigit(hex.charCodeAt(2)), 16 * _parseHexDigit(hex.charCodeAt(3)) + _parseHexDigit(hex.charCodeAt(4)), 16 * _parseHexDigit(hex.charCodeAt(5)) + _parseHexDigit(hex.charCodeAt(6)), (16 * _parseHexDigit(hex.charCodeAt(7)) + _parseHexDigit(hex.charCodeAt(8))) / 255));\n if (length === 4) {\n const r = _parseHexDigit(hex.charCodeAt(1));\n const g = _parseHexDigit(hex.charCodeAt(2));\n const b = _parseHexDigit(hex.charCodeAt(3));\n return new Color(new RGBA(16 * r + r, 16 * g + g, 16 * b + b));\n }\n if (length === 5) {\n const r = _parseHexDigit(hex.charCodeAt(1));\n const g = _parseHexDigit(hex.charCodeAt(2));\n const b = _parseHexDigit(hex.charCodeAt(3));\n const a = _parseHexDigit(hex.charCodeAt(4));\n return new Color(new RGBA(16 * r + r, 16 * g + g, 16 * b + b, (16 * a + a) / 255));\n }\n return null;\n }\n CSS.parseHex = parseHex;\n function _parseHexDigit(charCode) {\n switch (charCode) {\n case 48: return 0;\n case 49: return 1;\n case 50: return 2;\n case 51: return 3;\n case 52: return 4;\n case 53: return 5;\n case 54: return 6;\n case 55: return 7;\n case 56: return 8;\n case 57: return 9;\n case 97: return 10;\n case 65: return 10;\n case 98: return 11;\n case 66: return 11;\n case 99: return 12;\n case 67: return 12;\n case 100: return 13;\n case 68: return 13;\n case 101: return 14;\n case 69: return 14;\n case 102: return 15;\n case 70: return 15;\n }\n return 0;\n }\n })(Format.CSS || (Format.CSS = {}));\n })(Color.Format || (Color.Format = {}));\n })(Color || (Color = {}));\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/languages/defaultDocumentColorsComputer.js\n function _parseCaptureGroups(captureGroups) {\n const values = [];\n for (const captureGroup of captureGroups) {\n const parsedNumber = Number(captureGroup);\n if (parsedNumber || parsedNumber === 0 && captureGroup.replace(/\\s/g, \"\") !== \"\") values.push(parsedNumber);\n }\n return values;\n }\n function _toIColor(r, g, b, a) {\n return {\n red: r / 255,\n blue: b / 255,\n green: g / 255,\n alpha: a\n };\n }\n function _findRange(model, match) {\n const index = match.index;\n const length = match[0].length;\n if (index === void 0) return;\n const startPosition = model.positionAt(index);\n return {\n startLineNumber: startPosition.lineNumber,\n startColumn: startPosition.column,\n endLineNumber: startPosition.lineNumber,\n endColumn: startPosition.column + length\n };\n }\n function _findHexColorInformation(range, hexValue) {\n if (!range) return;\n const parsedHexColor = Color.Format.CSS.parseHex(hexValue);\n if (!parsedHexColor) return;\n return {\n range,\n color: _toIColor(parsedHexColor.rgba.r, parsedHexColor.rgba.g, parsedHexColor.rgba.b, parsedHexColor.rgba.a)\n };\n }\n function _findRGBColorInformation(range, matches, isAlpha) {\n if (!range || matches.length !== 1) return;\n const parsedRegex = _parseCaptureGroups(matches[0].values());\n return {\n range,\n color: _toIColor(parsedRegex[0], parsedRegex[1], parsedRegex[2], isAlpha ? parsedRegex[3] : 1)\n };\n }\n function _findHSLColorInformation(range, matches, isAlpha) {\n if (!range || matches.length !== 1) return;\n const parsedRegex = _parseCaptureGroups(matches[0].values());\n const colorEquivalent = new Color(new HSLA(parsedRegex[0], parsedRegex[1] / 100, parsedRegex[2] / 100, isAlpha ? parsedRegex[3] : 1));\n return {\n range,\n color: _toIColor(colorEquivalent.rgba.r, colorEquivalent.rgba.g, colorEquivalent.rgba.b, colorEquivalent.rgba.a)\n };\n }\n function _findMatches(model, regex) {\n if (typeof model === \"string\") return [...model.matchAll(regex)];\n else return model.findMatches(regex);\n }\n function computeColors(model) {\n const result = [];\n const initialValidationMatches = _findMatches(model, /\\b(rgb|rgba|hsl|hsla)(\\([0-9\\s,.\\%]*\\))|^(#)([A-Fa-f0-9]{3})\\b|^(#)([A-Fa-f0-9]{4})\\b|^(#)([A-Fa-f0-9]{6})\\b|^(#)([A-Fa-f0-9]{8})\\b|(?<=['\"\\s])(#)([A-Fa-f0-9]{3})\\b|(?<=['\"\\s])(#)([A-Fa-f0-9]{4})\\b|(?<=['\"\\s])(#)([A-Fa-f0-9]{6})\\b|(?<=['\"\\s])(#)([A-Fa-f0-9]{8})\\b/gm);\n if (initialValidationMatches.length > 0) for (const initialMatch of initialValidationMatches) {\n const initialCaptureGroups = initialMatch.filter((captureGroup) => captureGroup !== void 0);\n const colorScheme = initialCaptureGroups[1];\n const colorParameters = initialCaptureGroups[2];\n if (!colorParameters) continue;\n let colorInformation;\n if (colorScheme === \"rgb\") colorInformation = _findRGBColorInformation(_findRange(model, initialMatch), _findMatches(colorParameters, /^\\(\\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\\s*,\\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\\s*,\\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\\s*\\)$/gm), false);\n else if (colorScheme === \"rgba\") colorInformation = _findRGBColorInformation(_findRange(model, initialMatch), _findMatches(colorParameters, /^\\(\\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\\s*,\\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\\s*,\\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\\s*,\\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\\s*\\)$/gm), true);\n else if (colorScheme === \"hsl\") colorInformation = _findHSLColorInformation(_findRange(model, initialMatch), _findMatches(colorParameters, /^\\(\\s*((?:360(?:\\.0+)?|(?:36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])(?:\\.\\d+)?))\\s*[\\s,]\\s*(100|\\d{1,2}[.]\\d*|\\d{1,2})%\\s*[\\s,]\\s*(100|\\d{1,2}[.]\\d*|\\d{1,2})%\\s*\\)$/gm), false);\n else if (colorScheme === \"hsla\") colorInformation = _findHSLColorInformation(_findRange(model, initialMatch), _findMatches(colorParameters, /^\\(\\s*((?:360(?:\\.0+)?|(?:36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])(?:\\.\\d+)?))\\s*[\\s,]\\s*(100|\\d{1,2}[.]\\d*|\\d{1,2})%\\s*[\\s,]\\s*(100|\\d{1,2}[.]\\d*|\\d{1,2})%\\s*[\\s,]\\s*(0[.][0-9]+|[.][0-9]+|[01][.]0*|[01])\\s*\\)$/gm), true);\n else if (colorScheme === \"#\") colorInformation = _findHexColorInformation(_findRange(model, initialMatch), colorScheme + colorParameters);\n if (colorInformation) result.push(colorInformation);\n }\n return result;\n }\n /**\n * Returns an array of all default document colors in the provided document\n */\n function computeDefaultDocumentColors(model) {\n if (!model || typeof model.getValue !== \"function\" || typeof model.positionAt !== \"function\") return [];\n return computeColors(model);\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/services/findSectionHeaders.js\n const trimDashesRegex = /^-+|-+$/g;\n const CHUNK_SIZE = 100;\n const MAX_SECTION_LINES = 5;\n /**\n * Find section headers in the model.\n *\n * @param model the text model to search in\n * @param options options to search with\n * @returns an array of section headers\n */\n function findSectionHeaders(model, options) {\n let headers = [];\n if (options.findRegionSectionHeaders && options.foldingRules?.markers) {\n const regionHeaders = collectRegionHeaders(model, options);\n headers = headers.concat(regionHeaders);\n }\n if (options.findMarkSectionHeaders) {\n const markHeaders = collectMarkHeaders(model, options);\n headers = headers.concat(markHeaders);\n }\n return headers;\n }\n function collectRegionHeaders(model, options) {\n const regionHeaders = [];\n const endLineNumber = model.getLineCount();\n for (let lineNumber = 1; lineNumber <= endLineNumber; lineNumber++) {\n const lineContent = model.getLineContent(lineNumber);\n const match = lineContent.match(options.foldingRules.markers.start);\n if (match) {\n const range = {\n startLineNumber: lineNumber,\n startColumn: match[0].length + 1,\n endLineNumber: lineNumber,\n endColumn: lineContent.length + 1\n };\n if (range.endColumn > range.startColumn) {\n const sectionHeader = {\n range,\n ...getHeaderText(lineContent.substring(match[0].length)),\n shouldBeInComments: false\n };\n if (sectionHeader.text || sectionHeader.hasSeparatorLine) regionHeaders.push(sectionHeader);\n }\n }\n }\n return regionHeaders;\n }\n function collectMarkHeaders(model, options) {\n const markHeaders = [];\n const endLineNumber = model.getLineCount();\n if (!options.markSectionHeaderRegex || options.markSectionHeaderRegex.trim() === \"\") return markHeaders;\n const multiline = isMultilineRegexSource(options.markSectionHeaderRegex);\n const regex = new RegExp(options.markSectionHeaderRegex, `gdm${multiline ? \"s\" : \"\"}`);\n if (regExpLeadsToEndlessLoop(regex)) return markHeaders;\n for (let startLine = 1; startLine <= endLineNumber; startLine += CHUNK_SIZE - MAX_SECTION_LINES) {\n const endLine = Math.min(startLine + CHUNK_SIZE - 1, endLineNumber);\n const lines = [];\n for (let i = startLine; i <= endLine; i++) lines.push(model.getLineContent(i));\n const text = lines.join(\"\\n\");\n regex.lastIndex = 0;\n let match;\n while ((match = regex.exec(text)) !== null) {\n const precedingText = text.substring(0, match.index);\n const lineOffset = (precedingText.match(/\\n/g) || []).length;\n const lineNumber = startLine + lineOffset;\n const matchLines = match[0].split(\"\\n\");\n const matchHeight = matchLines.length;\n const matchEndLine = lineNumber + matchHeight - 1;\n const lineStartIndex = precedingText.lastIndexOf(\"\\n\") + 1;\n const startColumn = match.index - lineStartIndex + 1;\n const lastMatchLine = matchLines[matchLines.length - 1];\n const sectionHeader = {\n range: {\n startLineNumber: lineNumber,\n startColumn,\n endLineNumber: matchEndLine,\n endColumn: matchHeight === 1 ? startColumn + match[0].length : lastMatchLine.length + 1\n },\n text: (match.groups ?? {})[\"label\"] ?? \"\",\n hasSeparatorLine: ((match.groups ?? {})[\"separator\"] ?? \"\") !== \"\",\n shouldBeInComments: true\n };\n if (sectionHeader.text || sectionHeader.hasSeparatorLine) {\n if (markHeaders.length === 0 || markHeaders[markHeaders.length - 1].range.endLineNumber < sectionHeader.range.startLineNumber) markHeaders.push(sectionHeader);\n }\n regex.lastIndex = match.index + match[0].length;\n }\n }\n return markHeaders;\n }\n function getHeaderText(text) {\n text = text.trim();\n const hasSeparatorLine = text.startsWith(\"-\");\n text = text.replace(trimDashesRegex, \"\");\n return {\n text,\n hasSeparatorLine\n };\n }\n (function() {\n const safeGlobal = globalThis;\n if (typeof safeGlobal.requestIdleCallback !== \"function\" || typeof safeGlobal.cancelIdleCallback !== \"function\");\n })();\n /**\n * Creates a promise whose resolution or rejection can be controlled imperatively.\n */\n var DeferredPromise = class {\n get isRejected() {\n return this.outcome?.outcome === 1;\n }\n get isSettled() {\n return !!this.outcome;\n }\n constructor() {\n this.p = new Promise((c, e) => {\n this.completeCallback = c;\n this.errorCallback = e;\n });\n }\n complete(value) {\n if (this.isSettled) return Promise.resolve();\n return new Promise((resolve) => {\n this.completeCallback(value);\n this.outcome = {\n outcome: 0,\n value\n };\n resolve();\n });\n }\n error(err) {\n if (this.isSettled) return Promise.resolve();\n return new Promise((resolve) => {\n this.errorCallback(err);\n this.outcome = {\n outcome: 1,\n value: err\n };\n resolve();\n });\n }\n cancel() {\n return this.error(new CancellationError());\n }\n };\n var Promises;\n (function(Promises) {\n /**\n * A drop-in replacement for `Promise.all` with the only difference\n * that the method awaits every promise to either fulfill or reject.\n *\n * Similar to `Promise.all`, only the first error will be returned\n * if any.\n */\n async function settled(promises) {\n let firstError = void 0;\n const result = await Promise.all(promises.map((promise) => promise.then((value) => value, (error) => {\n if (!firstError) firstError = error;\n })));\n if (typeof firstError !== \"undefined\") throw firstError;\n return result;\n }\n Promises.settled = settled;\n /**\n * A helper to create a new `Promise<T>` with a body that is a promise\n * itself. By default, an error that raises from the async body will\n * end up as a unhandled rejection, so this utility properly awaits the\n * body and rejects the promise as a normal promise does without async\n * body.\n *\n * This method should only be used in rare cases where otherwise `async`\n * cannot be used (e.g. when callbacks are involved that require this).\n */\n function withAsyncBody(bodyFn) {\n return new Promise(async (resolve, reject) => {\n try {\n await bodyFn(resolve, reject);\n } catch (error) {\n reject(error);\n }\n });\n }\n Promises.withAsyncBody = withAsyncBody;\n })(Promises || (Promises = {}));\n var ProducerConsumer = class {\n constructor() {\n this._unsatisfiedConsumers = [];\n this._unconsumedValues = [];\n }\n get hasFinalValue() {\n return !!this._finalValue;\n }\n produce(value) {\n this._ensureNoFinalValue();\n if (this._unsatisfiedConsumers.length > 0) {\n const deferred = this._unsatisfiedConsumers.shift();\n this._resolveOrRejectDeferred(deferred, value);\n } else this._unconsumedValues.push(value);\n }\n produceFinal(value) {\n this._ensureNoFinalValue();\n this._finalValue = value;\n for (const deferred of this._unsatisfiedConsumers) this._resolveOrRejectDeferred(deferred, value);\n this._unsatisfiedConsumers.length = 0;\n }\n _ensureNoFinalValue() {\n if (this._finalValue) throw new BugIndicatingError(\"ProducerConsumer: cannot produce after final value has been set\");\n }\n _resolveOrRejectDeferred(deferred, value) {\n if (value.ok) deferred.complete(value.value);\n else deferred.error(value.error);\n }\n consume() {\n if (this._unconsumedValues.length > 0 || this._finalValue) {\n const value = this._unconsumedValues.length > 0 ? this._unconsumedValues.shift() : this._finalValue;\n if (value.ok) return Promise.resolve(value.value);\n else return Promise.reject(value.error);\n } else {\n const deferred = new DeferredPromise();\n this._unsatisfiedConsumers.push(deferred);\n return deferred.p;\n }\n }\n };\n (class AsyncIterableProducer {\n constructor(executor, _onReturn) {\n this._onReturn = _onReturn;\n this._producerConsumer = new ProducerConsumer();\n this._iterator = {\n next: () => this._producerConsumer.consume(),\n return: () => {\n this._onReturn?.();\n return Promise.resolve({\n done: true,\n value: void 0\n });\n },\n throw: async (e) => {\n this._finishError(e);\n return {\n done: true,\n value: void 0\n };\n }\n };\n queueMicrotask(async () => {\n const p = executor({\n emitOne: (value) => this._producerConsumer.produce({\n ok: true,\n value: {\n done: false,\n value\n }\n }),\n emitMany: (values) => {\n for (const value of values) this._producerConsumer.produce({\n ok: true,\n value: {\n done: false,\n value\n }\n });\n },\n reject: (error) => this._finishError(error)\n });\n if (!this._producerConsumer.hasFinalValue) try {\n await p;\n this._finishOk();\n } catch (error) {\n this._finishError(error);\n }\n });\n }\n static fromArray(items) {\n return new AsyncIterableProducer((writer) => {\n writer.emitMany(items);\n });\n }\n static fromPromise(promise) {\n return new AsyncIterableProducer(async (emitter) => {\n emitter.emitMany(await promise);\n });\n }\n static fromPromisesResolveOrder(promises) {\n return new AsyncIterableProducer(async (emitter) => {\n await Promise.all(promises.map(async (p) => emitter.emitOne(await p)));\n });\n }\n static merge(iterables) {\n return new AsyncIterableProducer(async (emitter) => {\n await Promise.all(iterables.map(async (iterable) => {\n for await (const item of iterable) emitter.emitOne(item);\n }));\n });\n }\n static {\n this.EMPTY = AsyncIterableProducer.fromArray([]);\n }\n static map(iterable, mapFn) {\n return new AsyncIterableProducer(async (emitter) => {\n for await (const item of iterable) emitter.emitOne(mapFn(item));\n });\n }\n map(mapFn) {\n return AsyncIterableProducer.map(this, mapFn);\n }\n static coalesce(iterable) {\n return AsyncIterableProducer.filter(iterable, (item) => !!item);\n }\n coalesce() {\n return AsyncIterableProducer.coalesce(this);\n }\n static filter(iterable, filterFn) {\n return new AsyncIterableProducer(async (emitter) => {\n for await (const item of iterable) if (filterFn(item)) emitter.emitOne(item);\n });\n }\n filter(filterFn) {\n return AsyncIterableProducer.filter(this, filterFn);\n }\n _finishOk() {\n if (!this._producerConsumer.hasFinalValue) this._producerConsumer.produceFinal({\n ok: true,\n value: {\n done: true,\n value: void 0\n }\n });\n }\n _finishError(error) {\n if (!this._producerConsumer.hasFinalValue) this._producerConsumer.produceFinal({\n ok: false,\n error\n });\n }\n [Symbol.asyncIterator]() {\n return this._iterator;\n }\n });\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/model/prefixSumComputer.js\n var PrefixSumComputer = class {\n constructor(values) {\n this.values = values;\n this.prefixSum = new Uint32Array(values.length);\n this.prefixSumValidIndex = /* @__PURE__ */ new Int32Array(1);\n this.prefixSumValidIndex[0] = -1;\n }\n insertValues(insertIndex, insertValues) {\n insertIndex = toUint32(insertIndex);\n const oldValues = this.values;\n const oldPrefixSum = this.prefixSum;\n const insertValuesLen = insertValues.length;\n if (insertValuesLen === 0) return false;\n this.values = new Uint32Array(oldValues.length + insertValuesLen);\n this.values.set(oldValues.subarray(0, insertIndex), 0);\n this.values.set(oldValues.subarray(insertIndex), insertIndex + insertValuesLen);\n this.values.set(insertValues, insertIndex);\n if (insertIndex - 1 < this.prefixSumValidIndex[0]) this.prefixSumValidIndex[0] = insertIndex - 1;\n this.prefixSum = new Uint32Array(this.values.length);\n if (this.prefixSumValidIndex[0] >= 0) this.prefixSum.set(oldPrefixSum.subarray(0, this.prefixSumValidIndex[0] + 1));\n return true;\n }\n setValue(index, value) {\n index = toUint32(index);\n value = toUint32(value);\n if (this.values[index] === value) return false;\n this.values[index] = value;\n if (index - 1 < this.prefixSumValidIndex[0]) this.prefixSumValidIndex[0] = index - 1;\n return true;\n }\n removeValues(startIndex, count) {\n startIndex = toUint32(startIndex);\n count = toUint32(count);\n const oldValues = this.values;\n const oldPrefixSum = this.prefixSum;\n if (startIndex >= oldValues.length) return false;\n const maxCount = oldValues.length - startIndex;\n if (count >= maxCount) count = maxCount;\n if (count === 0) return false;\n this.values = new Uint32Array(oldValues.length - count);\n this.values.set(oldValues.subarray(0, startIndex), 0);\n this.values.set(oldValues.subarray(startIndex + count), startIndex);\n this.prefixSum = new Uint32Array(this.values.length);\n if (startIndex - 1 < this.prefixSumValidIndex[0]) this.prefixSumValidIndex[0] = startIndex - 1;\n if (this.prefixSumValidIndex[0] >= 0) this.prefixSum.set(oldPrefixSum.subarray(0, this.prefixSumValidIndex[0] + 1));\n return true;\n }\n getTotalSum() {\n if (this.values.length === 0) return 0;\n return this._getPrefixSum(this.values.length - 1);\n }\n /**\n * Returns the sum of the first `index + 1` many items.\n * @returns `SUM(0 <= j <= index, values[j])`.\n */\n getPrefixSum(index) {\n if (index < 0) return 0;\n index = toUint32(index);\n return this._getPrefixSum(index);\n }\n _getPrefixSum(index) {\n if (index <= this.prefixSumValidIndex[0]) return this.prefixSum[index];\n let startIndex = this.prefixSumValidIndex[0] + 1;\n if (startIndex === 0) {\n this.prefixSum[0] = this.values[0];\n startIndex++;\n }\n if (index >= this.values.length) index = this.values.length - 1;\n for (let i = startIndex; i <= index; i++) this.prefixSum[i] = this.prefixSum[i - 1] + this.values[i];\n this.prefixSumValidIndex[0] = Math.max(this.prefixSumValidIndex[0], index);\n return this.prefixSum[index];\n }\n getIndexOf(sum) {\n sum = Math.floor(sum);\n this.getTotalSum();\n let low = 0;\n let high = this.values.length - 1;\n let mid = 0;\n let midStop = 0;\n let midStart = 0;\n while (low <= high) {\n mid = low + (high - low) / 2 | 0;\n midStop = this.prefixSum[mid];\n midStart = midStop - this.values[mid];\n if (sum < midStart) high = mid - 1;\n else if (sum >= midStop) low = mid + 1;\n else break;\n }\n return new PrefixSumIndexOfResult(mid, sum - midStart);\n }\n };\n var PrefixSumIndexOfResult = class {\n constructor(index, remainder) {\n this.index = index;\n this.remainder = remainder;\n this._prefixSumIndexOfResultBrand = void 0;\n this.index = index;\n this.remainder = remainder;\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/model/mirrorTextModel.js\n var MirrorTextModel = class {\n constructor(uri, lines, eol, versionId) {\n this._uri = uri;\n this._lines = lines;\n this._eol = eol;\n this._versionId = versionId;\n this._lineStarts = null;\n this._cachedTextValue = null;\n }\n dispose() {\n this._lines.length = 0;\n }\n get version() {\n return this._versionId;\n }\n getText() {\n if (this._cachedTextValue === null) this._cachedTextValue = this._lines.join(this._eol);\n return this._cachedTextValue;\n }\n onEvents(e) {\n if (e.eol && e.eol !== this._eol) {\n this._eol = e.eol;\n this._lineStarts = null;\n }\n const changes = e.changes;\n for (const change of changes) {\n this._acceptDeleteRange(change.range);\n this._acceptInsertText(new Position(change.range.startLineNumber, change.range.startColumn), change.text);\n }\n this._versionId = e.versionId;\n this._cachedTextValue = null;\n }\n _ensureLineStarts() {\n if (!this._lineStarts) {\n const eolLength = this._eol.length;\n const linesLength = this._lines.length;\n const lineStartValues = new Uint32Array(linesLength);\n for (let i = 0; i < linesLength; i++) lineStartValues[i] = this._lines[i].length + eolLength;\n this._lineStarts = new PrefixSumComputer(lineStartValues);\n }\n }\n /**\n * All changes to a line's text go through this method\n */\n _setLineText(lineIndex, newValue) {\n this._lines[lineIndex] = newValue;\n if (this._lineStarts) this._lineStarts.setValue(lineIndex, this._lines[lineIndex].length + this._eol.length);\n }\n _acceptDeleteRange(range) {\n if (range.startLineNumber === range.endLineNumber) {\n if (range.startColumn === range.endColumn) return;\n this._setLineText(range.startLineNumber - 1, this._lines[range.startLineNumber - 1].substring(0, range.startColumn - 1) + this._lines[range.startLineNumber - 1].substring(range.endColumn - 1));\n return;\n }\n this._setLineText(range.startLineNumber - 1, this._lines[range.startLineNumber - 1].substring(0, range.startColumn - 1) + this._lines[range.endLineNumber - 1].substring(range.endColumn - 1));\n this._lines.splice(range.startLineNumber, range.endLineNumber - range.startLineNumber);\n if (this._lineStarts) this._lineStarts.removeValues(range.startLineNumber, range.endLineNumber - range.startLineNumber);\n }\n _acceptInsertText(position, insertText) {\n if (insertText.length === 0) return;\n const insertLines = splitLines(insertText);\n if (insertLines.length === 1) {\n this._setLineText(position.lineNumber - 1, this._lines[position.lineNumber - 1].substring(0, position.column - 1) + insertLines[0] + this._lines[position.lineNumber - 1].substring(position.column - 1));\n return;\n }\n insertLines[insertLines.length - 1] += this._lines[position.lineNumber - 1].substring(position.column - 1);\n this._setLineText(position.lineNumber - 1, this._lines[position.lineNumber - 1].substring(0, position.column - 1) + insertLines[0]);\n const newLengths = new Uint32Array(insertLines.length - 1);\n for (let i = 1; i < insertLines.length; i++) {\n this._lines.splice(position.lineNumber + i - 1, 0, insertLines[i]);\n newLengths[i - 1] = insertLines[i].length + this._eol.length;\n }\n if (this._lineStarts) this._lineStarts.insertValues(position.lineNumber, newLengths);\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/services/textModelSync/textModelSync.impl.js\n var WorkerTextModelSyncServer = class {\n constructor() {\n this._models = Object.create(null);\n }\n getModel(uri) {\n return this._models[uri];\n }\n getModels() {\n const all = [];\n Object.keys(this._models).forEach((key) => all.push(this._models[key]));\n return all;\n }\n $acceptNewModel(data) {\n this._models[data.url] = new MirrorModel(URI.parse(data.url), data.lines, data.EOL, data.versionId);\n }\n $acceptModelChanged(uri, e) {\n if (!this._models[uri]) return;\n this._models[uri].onEvents(e);\n }\n $acceptRemovedModel(uri) {\n if (!this._models[uri]) return;\n delete this._models[uri];\n }\n };\n var MirrorModel = class extends MirrorTextModel {\n get uri() {\n return this._uri;\n }\n get eol() {\n return this._eol;\n }\n getValue() {\n return this.getText();\n }\n findMatches(regex) {\n const matches = [];\n for (let i = 0; i < this._lines.length; i++) {\n const line = this._lines[i];\n const offsetToAdd = this.offsetAt(new Position(i + 1, 1));\n const iteratorOverMatches = line.matchAll(regex);\n for (const match of iteratorOverMatches) {\n if (match.index || match.index === 0) match.index = match.index + offsetToAdd;\n matches.push(match);\n }\n }\n return matches;\n }\n getLinesContent() {\n return this._lines.slice(0);\n }\n getLineCount() {\n return this._lines.length;\n }\n getLineContent(lineNumber) {\n return this._lines[lineNumber - 1];\n }\n getWordAtPosition(position, wordDefinition) {\n const wordAtText = getWordAtText(position.column, ensureValidWordDefinition(wordDefinition), this._lines[position.lineNumber - 1], 0);\n if (wordAtText) return new Range(position.lineNumber, wordAtText.startColumn, position.lineNumber, wordAtText.endColumn);\n return null;\n }\n words(wordDefinition) {\n const lines = this._lines;\n const wordenize = this._wordenize.bind(this);\n let lineNumber = 0;\n let lineText = \"\";\n let wordRangesIdx = 0;\n let wordRanges = [];\n return { *[Symbol.iterator]() {\n while (true) if (wordRangesIdx < wordRanges.length) {\n const value = lineText.substring(wordRanges[wordRangesIdx].start, wordRanges[wordRangesIdx].end);\n wordRangesIdx += 1;\n yield value;\n } else if (lineNumber < lines.length) {\n lineText = lines[lineNumber];\n wordRanges = wordenize(lineText, wordDefinition);\n wordRangesIdx = 0;\n lineNumber += 1;\n } else break;\n } };\n }\n getLineWords(lineNumber, wordDefinition) {\n const content = this._lines[lineNumber - 1];\n const ranges = this._wordenize(content, wordDefinition);\n const words = [];\n for (const range of ranges) words.push({\n word: content.substring(range.start, range.end),\n startColumn: range.start + 1,\n endColumn: range.end + 1\n });\n return words;\n }\n _wordenize(content, wordDefinition) {\n const result = [];\n let match;\n wordDefinition.lastIndex = 0;\n while (match = wordDefinition.exec(content)) {\n if (match[0].length === 0) break;\n result.push({\n start: match.index,\n end: match.index + match[0].length\n });\n }\n return result;\n }\n getValueInRange(range) {\n range = this._validateRange(range);\n if (range.startLineNumber === range.endLineNumber) return this._lines[range.startLineNumber - 1].substring(range.startColumn - 1, range.endColumn - 1);\n const lineEnding = this._eol;\n const startLineIndex = range.startLineNumber - 1;\n const endLineIndex = range.endLineNumber - 1;\n const resultLines = [];\n resultLines.push(this._lines[startLineIndex].substring(range.startColumn - 1));\n for (let i = startLineIndex + 1; i < endLineIndex; i++) resultLines.push(this._lines[i]);\n resultLines.push(this._lines[endLineIndex].substring(0, range.endColumn - 1));\n return resultLines.join(lineEnding);\n }\n offsetAt(position) {\n position = this._validatePosition(position);\n this._ensureLineStarts();\n return this._lineStarts.getPrefixSum(position.lineNumber - 2) + (position.column - 1);\n }\n positionAt(offset) {\n offset = Math.floor(offset);\n offset = Math.max(0, offset);\n this._ensureLineStarts();\n const out = this._lineStarts.getIndexOf(offset);\n const lineLength = this._lines[out.index].length;\n return {\n lineNumber: 1 + out.index,\n column: 1 + Math.min(out.remainder, lineLength)\n };\n }\n _validateRange(range) {\n const start = this._validatePosition({\n lineNumber: range.startLineNumber,\n column: range.startColumn\n });\n const end = this._validatePosition({\n lineNumber: range.endLineNumber,\n column: range.endColumn\n });\n if (start.lineNumber !== range.startLineNumber || start.column !== range.startColumn || end.lineNumber !== range.endLineNumber || end.column !== range.endColumn) return {\n startLineNumber: start.lineNumber,\n startColumn: start.column,\n endLineNumber: end.lineNumber,\n endColumn: end.column\n };\n return range;\n }\n _validatePosition(position) {\n if (!Position.isIPosition(position)) throw new Error(\"bad position\");\n let { lineNumber, column } = position;\n let hasChanged = false;\n if (lineNumber < 1) {\n lineNumber = 1;\n column = 1;\n hasChanged = true;\n } else if (lineNumber > this._lines.length) {\n lineNumber = this._lines.length;\n column = this._lines[lineNumber - 1].length + 1;\n hasChanged = true;\n } else {\n const maxCharacter = this._lines[lineNumber - 1].length + 1;\n if (column < 1) {\n column = 1;\n hasChanged = true;\n } else if (column > maxCharacter) {\n column = maxCharacter;\n hasChanged = true;\n }\n }\n if (!hasChanged) return position;\n else return {\n lineNumber,\n column\n };\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/services/editorWebWorker.js\n /**\n * @internal\n */\n var EditorWorker = class EditorWorker {\n constructor(_foreignModule = null) {\n this._foreignModule = _foreignModule;\n this._requestHandlerBrand = void 0;\n this._workerTextModelSyncServer = new WorkerTextModelSyncServer();\n }\n dispose() {}\n async $ping() {\n return \"pong\";\n }\n _getModel(uri) {\n return this._workerTextModelSyncServer.getModel(uri);\n }\n getModels() {\n return this._workerTextModelSyncServer.getModels();\n }\n $acceptNewModel(data) {\n this._workerTextModelSyncServer.$acceptNewModel(data);\n }\n $acceptModelChanged(uri, e) {\n this._workerTextModelSyncServer.$acceptModelChanged(uri, e);\n }\n $acceptRemovedModel(uri) {\n this._workerTextModelSyncServer.$acceptRemovedModel(uri);\n }\n async $computeUnicodeHighlights(url, options, range) {\n const model = this._getModel(url);\n if (!model) return {\n ranges: [],\n hasMore: false,\n ambiguousCharacterCount: 0,\n invisibleCharacterCount: 0,\n nonBasicAsciiCharacterCount: 0\n };\n return UnicodeTextModelHighlighter.computeUnicodeHighlights(model, options, range);\n }\n async $findSectionHeaders(url, options) {\n const model = this._getModel(url);\n if (!model) return [];\n return findSectionHeaders(model, options);\n }\n async $computeDiff(originalUrl, modifiedUrl, options, algorithm) {\n const original = this._getModel(originalUrl);\n const modified = this._getModel(modifiedUrl);\n if (!original || !modified) return null;\n return EditorWorker.computeDiff(original, modified, options, algorithm);\n }\n static computeDiff(originalTextModel, modifiedTextModel, options, algorithm) {\n const diffAlgorithm = algorithm === \"advanced\" ? linesDiffComputers.getDefault() : linesDiffComputers.getLegacy();\n const originalLines = originalTextModel.getLinesContent();\n const modifiedLines = modifiedTextModel.getLinesContent();\n const result = diffAlgorithm.computeDiff(originalLines, modifiedLines, options);\n const identical = result.changes.length > 0 ? false : this._modelsAreIdentical(originalTextModel, modifiedTextModel);\n function getLineChanges(changes) {\n return changes.map((m) => [\n m.original.startLineNumber,\n m.original.endLineNumberExclusive,\n m.modified.startLineNumber,\n m.modified.endLineNumberExclusive,\n m.innerChanges?.map((m) => [\n m.originalRange.startLineNumber,\n m.originalRange.startColumn,\n m.originalRange.endLineNumber,\n m.originalRange.endColumn,\n m.modifiedRange.startLineNumber,\n m.modifiedRange.startColumn,\n m.modifiedRange.endLineNumber,\n m.modifiedRange.endColumn\n ])\n ]);\n }\n return {\n identical,\n quitEarly: result.hitTimeout,\n changes: getLineChanges(result.changes),\n moves: result.moves.map((m) => [\n m.lineRangeMapping.original.startLineNumber,\n m.lineRangeMapping.original.endLineNumberExclusive,\n m.lineRangeMapping.modified.startLineNumber,\n m.lineRangeMapping.modified.endLineNumberExclusive,\n getLineChanges(m.changes)\n ])\n };\n }\n static _modelsAreIdentical(original, modified) {\n const originalLineCount = original.getLineCount();\n if (originalLineCount !== modified.getLineCount()) return false;\n for (let line = 1; line <= originalLineCount; line++) if (original.getLineContent(line) !== modified.getLineContent(line)) return false;\n return true;\n }\n static {\n this._diffLimit = 1e5;\n }\n async $computeMoreMinimalEdits(modelUrl, edits, pretty) {\n const model = this._getModel(modelUrl);\n if (!model) return edits;\n const result = [];\n let lastEol = void 0;\n edits = edits.slice(0).sort((a, b) => {\n if (a.range && b.range) return Range.compareRangesUsingStarts(a.range, b.range);\n return (a.range ? 0 : 1) - (b.range ? 0 : 1);\n });\n let writeIndex = 0;\n for (let readIndex = 1; readIndex < edits.length; readIndex++) if (Range.getEndPosition(edits[writeIndex].range).equals(Range.getStartPosition(edits[readIndex].range))) {\n edits[writeIndex].range = Range.fromPositions(Range.getStartPosition(edits[writeIndex].range), Range.getEndPosition(edits[readIndex].range));\n edits[writeIndex].text += edits[readIndex].text;\n } else {\n writeIndex++;\n edits[writeIndex] = edits[readIndex];\n }\n edits.length = writeIndex + 1;\n for (let { range, text, eol } of edits) {\n if (typeof eol === \"number\") lastEol = eol;\n if (Range.isEmpty(range) && !text) continue;\n const original = model.getValueInRange(range);\n text = text.replace(/\\r\\n|\\n|\\r/g, model.eol);\n if (original === text) continue;\n if (Math.max(text.length, original.length) > EditorWorker._diffLimit) {\n result.push({\n range,\n text\n });\n continue;\n }\n const changes = stringDiff(original, text, pretty);\n const editOffset = model.offsetAt(Range.lift(range).getStartPosition());\n for (const change of changes) {\n const start = model.positionAt(editOffset + change.originalStart);\n const end = model.positionAt(editOffset + change.originalStart + change.originalLength);\n const newEdit = {\n text: text.substr(change.modifiedStart, change.modifiedLength),\n range: {\n startLineNumber: start.lineNumber,\n startColumn: start.column,\n endLineNumber: end.lineNumber,\n endColumn: end.column\n }\n };\n if (model.getValueInRange(newEdit.range) !== newEdit.text) result.push(newEdit);\n }\n }\n if (typeof lastEol === \"number\") result.push({\n eol: lastEol,\n text: \"\",\n range: {\n startLineNumber: 0,\n startColumn: 0,\n endLineNumber: 0,\n endColumn: 0\n }\n });\n return result;\n }\n async $computeLinks(modelUrl) {\n const model = this._getModel(modelUrl);\n if (!model) return null;\n return computeLinks(model);\n }\n async $computeDefaultDocumentColors(modelUrl) {\n const model = this._getModel(modelUrl);\n if (!model) return null;\n return computeDefaultDocumentColors(model);\n }\n static {\n this._suggestionsLimit = 1e4;\n }\n async $textualSuggest(modelUrls, leadingWord, wordDef, wordDefFlags) {\n const sw = new StopWatch();\n const wordDefRegExp = new RegExp(wordDef, wordDefFlags);\n const seen = /* @__PURE__ */ new Set();\n outer: for (const url of modelUrls) {\n const model = this._getModel(url);\n if (!model) continue;\n for (const word of model.words(wordDefRegExp)) {\n if (word === leadingWord || !isNaN(Number(word))) continue;\n seen.add(word);\n if (seen.size > EditorWorker._suggestionsLimit) break outer;\n }\n }\n return {\n words: Array.from(seen),\n duration: sw.elapsed()\n };\n }\n async $computeWordRanges(modelUrl, range, wordDef, wordDefFlags) {\n const model = this._getModel(modelUrl);\n if (!model) return Object.create(null);\n const wordDefRegExp = new RegExp(wordDef, wordDefFlags);\n const result = Object.create(null);\n for (let line = range.startLineNumber; line < range.endLineNumber; line++) {\n const words = model.getLineWords(line, wordDefRegExp);\n for (const word of words) {\n if (!isNaN(Number(word.word))) continue;\n let array = result[word.word];\n if (!array) {\n array = [];\n result[word.word] = array;\n }\n array.push({\n startLineNumber: line,\n startColumn: word.startColumn,\n endLineNumber: line,\n endColumn: word.endColumn\n });\n }\n }\n return result;\n }\n async $navigateValueSet(modelUrl, range, up, wordDef, wordDefFlags) {\n const model = this._getModel(modelUrl);\n if (!model) return null;\n const wordDefRegExp = new RegExp(wordDef, wordDefFlags);\n if (range.startColumn === range.endColumn) range = {\n startLineNumber: range.startLineNumber,\n startColumn: range.startColumn,\n endLineNumber: range.endLineNumber,\n endColumn: range.endColumn + 1\n };\n const selectionText = model.getValueInRange(range);\n const wordRange = model.getWordAtPosition({\n lineNumber: range.startLineNumber,\n column: range.startColumn\n }, wordDefRegExp);\n if (!wordRange) return null;\n const word = model.getValueInRange(wordRange);\n return BasicInplaceReplace.INSTANCE.navigateValueSet(range, selectionText, wordRange, word, up);\n }\n $fmr(method, args) {\n if (!this._foreignModule || typeof this._foreignModule[method] !== \"function\") return Promise.reject(/* @__PURE__ */ new Error(\"Missing requestHandler or method: \" + method));\n try {\n return Promise.resolve(this._foreignModule[method].apply(this._foreignModule, args));\n } catch (e) {\n return Promise.reject(e);\n }\n }\n };\n if (typeof importScripts === \"function\") globalThis.monaco = createMonacoBaseAPI();\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/common/services/editorWorkerHost.js\n var EditorWorkerHost = class EditorWorkerHost {\n static {\n this.CHANNEL_NAME = \"editorWorkerHost\";\n }\n static getChannel(workerServer) {\n return workerServer.getChannel(EditorWorkerHost.CHANNEL_NAME);\n }\n static setChannel(workerClient, obj) {\n workerClient.setChannel(EditorWorkerHost.CHANNEL_NAME, obj);\n }\n };\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/editor.worker.start.js\n /**\n * Used by `monaco-editor` to hook up web worker rpc.\n * @skipMangle\n * @internal\n */\n function start(createClient) {\n let client;\n const webWorkerServer = initialize((workerServer) => {\n const editorWorkerHost = EditorWorkerHost.getChannel(workerServer);\n client = createClient({\n host: new Proxy({}, { get(target, prop, receiver) {\n if (prop === \"then\") return;\n if (typeof prop !== \"string\") throw new Error(`Not supported`);\n return (...args) => {\n return editorWorkerHost.$fhr(prop, args);\n };\n } }),\n getMirrorModels: () => {\n return webWorkerServer.requestHandler.getModels();\n }\n });\n return new EditorWorker(client);\n });\n return client;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/common/initialize.js\n let initialized = false;\n function isWorkerInitialized() {\n return initialized;\n }\n //#endregion\n //#region ../../node_modules/.pnpm/monaco-editor@0.55.1_patch_hash=4ff367d15dba642fa0ee85c07218d6c7ee602de735f6d2f26dc8695ed3187656/node_modules/monaco-editor/esm/vs/editor/editor.worker.js\n self.onmessage = () => {\n if (!isWorkerInitialized()) start(() => {\n return {};\n });\n };\n //#endregion\n})();\n\n//# sourceMappingURL=editor.worker-ynKJXNbh.js.map";
|
|
3
3
|
var blob = typeof self !== "undefined" && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", jsContent], { type: "text/javascript;charset=utf-8" });
|
|
4
4
|
function WorkerWrapper(options) {
|
|
5
5
|
let objURL;
|
|
@@ -18,4 +18,4 @@ function WorkerWrapper(options) {
|
|
|
18
18
|
//#endregion
|
|
19
19
|
export { WorkerWrapper as default };
|
|
20
20
|
|
|
21
|
-
//# sourceMappingURL=editor.worker-
|
|
21
|
+
//# sourceMappingURL=editor.worker-DtlMnW0e.js.map
|