{"version":3,"file":"pdf.mjs","mappings":"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","sources":["webpack://pdf.js/node_modules/core-js/internals/a-callable.js","webpack://pdf.js/node_modules/core-js/internals/a-possible-prototype.js","webpack://pdf.js/node_modules/core-js/internals/a-set.js","webpack://pdf.js/node_modules/core-js/internals/an-instance.js","webpack://pdf.js/node_modules/core-js/internals/an-object.js","webpack://pdf.js/node_modules/core-js/internals/array-buffer-basic-detection.js","webpack://pdf.js/node_modules/core-js/internals/array-buffer-byte-length.js","webpack://pdf.js/node_modules/core-js/internals/array-buffer-is-detached.js","webpack://pdf.js/node_modules/core-js/internals/array-buffer-transfer.js","webpack://pdf.js/node_modules/core-js/internals/array-buffer-view-core.js","webpack://pdf.js/node_modules/core-js/internals/array-from-constructor-and-list.js","webpack://pdf.js/node_modules/core-js/internals/array-includes.js","webpack://pdf.js/node_modules/core-js/internals/array-iteration-from-last.js","webpack://pdf.js/node_modules/core-js/internals/array-set-length.js","webpack://pdf.js/node_modules/core-js/internals/array-to-reversed.js","webpack://pdf.js/node_modules/core-js/internals/array-with.js","webpack://pdf.js/node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://pdf.js/node_modules/core-js/internals/classof-raw.js","webpack://pdf.js/node_modules/core-js/internals/classof.js","webpack://pdf.js/node_modules/core-js/internals/copy-constructor-properties.js","webpack://pdf.js/node_modules/core-js/internals/correct-prototype-getter.js","webpack://pdf.js/node_modules/core-js/internals/create-iter-result-object.js","webpack://pdf.js/node_modules/core-js/internals/create-non-enumerable-property.js","webpack://pdf.js/node_modules/core-js/internals/create-property-descriptor.js","webpack://pdf.js/node_modules/core-js/internals/create-property.js","webpack://pdf.js/node_modules/core-js/internals/define-built-in-accessor.js","webpack://pdf.js/node_modules/core-js/internals/define-built-in.js","webpack://pdf.js/node_modules/core-js/internals/define-built-ins.js","webpack://pdf.js/node_modules/core-js/internals/define-global-property.js","webpack://pdf.js/node_modules/core-js/internals/descriptors.js","webpack://pdf.js/node_modules/core-js/internals/detach-transferable.js","webpack://pdf.js/node_modules/core-js/internals/document-all.js","webpack://pdf.js/node_modules/core-js/internals/document-create-element.js","webpack://pdf.js/node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack://pdf.js/node_modules/core-js/internals/dom-exception-constants.js","webpack://pdf.js/node_modules/core-js/internals/engine-is-browser.js","webpack://pdf.js/node_modules/core-js/internals/engine-is-deno.js","webpack://pdf.js/node_modules/core-js/internals/engine-is-node.js","webpack://pdf.js/node_modules/core-js/internals/engine-user-agent.js","webpack://pdf.js/node_modules/core-js/internals/engine-v8-version.js","webpack://pdf.js/node_modules/core-js/internals/enum-bug-keys.js","webpack://pdf.js/node_modules/core-js/internals/error-stack-clear.js","webpack://pdf.js/node_modules/core-js/internals/error-stack-install.js","webpack://pdf.js/node_modules/core-js/internals/error-stack-installable.js","webpack://pdf.js/node_modules/core-js/internals/export.js","webpack://pdf.js/node_modules/core-js/internals/fails.js","webpack://pdf.js/node_modules/core-js/internals/function-apply.js","webpack://pdf.js/node_modules/core-js/internals/function-bind-context.js","webpack://pdf.js/node_modules/core-js/internals/function-bind-native.js","webpack://pdf.js/node_modules/core-js/internals/function-call.js","webpack://pdf.js/node_modules/core-js/internals/function-name.js","webpack://pdf.js/node_modules/core-js/internals/function-uncurry-this-accessor.js","webpack://pdf.js/node_modules/core-js/internals/function-uncurry-this-clause.js","webpack://pdf.js/node_modules/core-js/internals/function-uncurry-this.js","webpack://pdf.js/node_modules/core-js/internals/get-built-in.js","webpack://pdf.js/node_modules/core-js/internals/get-iterator-direct.js","webpack://pdf.js/node_modules/core-js/internals/get-iterator-flattenable.js","webpack://pdf.js/node_modules/core-js/internals/get-iterator-method.js","webpack://pdf.js/node_modules/core-js/internals/get-iterator.js","webpack://pdf.js/node_modules/core-js/internals/get-method.js","webpack://pdf.js/node_modules/core-js/internals/get-set-record.js","webpack://pdf.js/node_modules/core-js/internals/global.js","webpack://pdf.js/node_modules/core-js/internals/has-own-property.js","webpack://pdf.js/node_modules/core-js/internals/hidden-keys.js","webpack://pdf.js/node_modules/core-js/internals/html.js","webpack://pdf.js/node_modules/core-js/internals/ie8-dom-define.js","webpack://pdf.js/node_modules/core-js/internals/indexed-object.js","webpack://pdf.js/node_modules/core-js/internals/inherit-if-required.js","webpack://pdf.js/node_modules/core-js/internals/inspect-source.js","webpack://pdf.js/node_modules/core-js/internals/install-error-cause.js","webpack://pdf.js/node_modules/core-js/internals/internal-state.js","webpack://pdf.js/node_modules/core-js/internals/is-array-iterator-method.js","webpack://pdf.js/node_modules/core-js/internals/is-array.js","webpack://pdf.js/node_modules/core-js/internals/is-big-int-array.js","webpack://pdf.js/node_modules/core-js/internals/is-callable.js","webpack://pdf.js/node_modules/core-js/internals/is-forced.js","webpack://pdf.js/node_modules/core-js/internals/is-null-or-undefined.js","webpack://pdf.js/node_modules/core-js/internals/is-object.js","webpack://pdf.js/node_modules/core-js/internals/is-pure.js","webpack://pdf.js/node_modules/core-js/internals/is-symbol.js","webpack://pdf.js/node_modules/core-js/internals/iterate-simple.js","webpack://pdf.js/node_modules/core-js/internals/iterate.js","webpack://pdf.js/node_modules/core-js/internals/iterator-close.js","webpack://pdf.js/node_modules/core-js/internals/iterator-create-proxy.js","webpack://pdf.js/node_modules/core-js/internals/iterator-map.js","webpack://pdf.js/node_modules/core-js/internals/iterators-core.js","webpack://pdf.js/node_modules/core-js/internals/iterators.js","webpack://pdf.js/node_modules/core-js/internals/length-of-array-like.js","webpack://pdf.js/node_modules/core-js/internals/make-built-in.js","webpack://pdf.js/node_modules/core-js/internals/math-trunc.js","webpack://pdf.js/node_modules/core-js/internals/normalize-string-argument.js","webpack://pdf.js/node_modules/core-js/internals/object-create.js","webpack://pdf.js/node_modules/core-js/internals/object-define-properties.js","webpack://pdf.js/node_modules/core-js/internals/object-define-property.js","webpack://pdf.js/node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://pdf.js/node_modules/core-js/internals/object-get-own-property-names.js","webpack://pdf.js/node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://pdf.js/node_modules/core-js/internals/object-get-prototype-of.js","webpack://pdf.js/node_modules/core-js/internals/object-is-prototype-of.js","webpack://pdf.js/node_modules/core-js/internals/object-keys-internal.js","webpack://pdf.js/node_modules/core-js/internals/object-keys.js","webpack://pdf.js/node_modules/core-js/internals/object-property-is-enumerable.js","webpack://pdf.js/node_modules/core-js/internals/object-set-prototype-of.js","webpack://pdf.js/node_modules/core-js/internals/ordinary-to-primitive.js","webpack://pdf.js/node_modules/core-js/internals/own-keys.js","webpack://pdf.js/node_modules/core-js/internals/parse-json-string.js","webpack://pdf.js/node_modules/core-js/internals/proxy-accessor.js","webpack://pdf.js/node_modules/core-js/internals/require-object-coercible.js","webpack://pdf.js/node_modules/core-js/internals/set-clone.js","webpack://pdf.js/node_modules/core-js/internals/set-difference.js","webpack://pdf.js/node_modules/core-js/internals/set-helpers.js","webpack://pdf.js/node_modules/core-js/internals/set-intersection.js","webpack://pdf.js/node_modules/core-js/internals/set-is-disjoint-from.js","webpack://pdf.js/node_modules/core-js/internals/set-is-subset-of.js","webpack://pdf.js/node_modules/core-js/internals/set-is-superset-of.js","webpack://pdf.js/node_modules/core-js/internals/set-iterate.js","webpack://pdf.js/node_modules/core-js/internals/set-method-accept-set-like.js","webpack://pdf.js/node_modules/core-js/internals/set-size.js","webpack://pdf.js/node_modules/core-js/internals/set-symmetric-difference.js","webpack://pdf.js/node_modules/core-js/internals/set-union.js","webpack://pdf.js/node_modules/core-js/internals/shared-key.js","webpack://pdf.js/node_modules/core-js/internals/shared-store.js","webpack://pdf.js/node_modules/core-js/internals/shared.js","webpack://pdf.js/node_modules/core-js/internals/structured-clone-proper-transfer.js","webpack://pdf.js/node_modules/core-js/internals/symbol-constructor-detection.js","webpack://pdf.js/node_modules/core-js/internals/to-absolute-index.js","webpack://pdf.js/node_modules/core-js/internals/to-big-int.js","webpack://pdf.js/node_modules/core-js/internals/to-index.js","webpack://pdf.js/node_modules/core-js/internals/to-indexed-object.js","webpack://pdf.js/node_modules/core-js/internals/to-integer-or-infinity.js","webpack://pdf.js/node_modules/core-js/internals/to-length.js","webpack://pdf.js/node_modules/core-js/internals/to-object.js","webpack://pdf.js/node_modules/core-js/internals/to-offset.js","webpack://pdf.js/node_modules/core-js/internals/to-positive-integer.js","webpack://pdf.js/node_modules/core-js/internals/to-primitive.js","webpack://pdf.js/node_modules/core-js/internals/to-property-key.js","webpack://pdf.js/node_modules/core-js/internals/to-string-tag-support.js","webpack://pdf.js/node_modules/core-js/internals/to-string.js","webpack://pdf.js/node_modules/core-js/internals/try-node-require.js","webpack://pdf.js/node_modules/core-js/internals/try-to-string.js","webpack://pdf.js/node_modules/core-js/internals/uid.js","webpack://pdf.js/node_modules/core-js/internals/use-symbol-as-uid.js","webpack://pdf.js/node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://pdf.js/node_modules/core-js/internals/validate-arguments-length.js","webpack://pdf.js/node_modules/core-js/internals/weak-map-basic-detection.js","webpack://pdf.js/node_modules/core-js/internals/well-known-symbol.js","webpack://pdf.js/node_modules/core-js/internals/wrap-error-constructor-with-cause.js","webpack://pdf.js/node_modules/core-js/modules/es.array.push.js","webpack://pdf.js/node_modules/core-js/modules/es.error.cause.js","webpack://pdf.js/node_modules/core-js/modules/es.typed-array.find-last-index.js","webpack://pdf.js/node_modules/core-js/modules/es.typed-array.find-last.js","webpack://pdf.js/node_modules/core-js/modules/es.typed-array.set.js","webpack://pdf.js/node_modules/core-js/modules/es.typed-array.to-reversed.js","webpack://pdf.js/node_modules/core-js/modules/es.typed-array.to-sorted.js","webpack://pdf.js/node_modules/core-js/modules/es.typed-array.with.js","webpack://pdf.js/node_modules/core-js/modules/esnext.array-buffer.detached.js","webpack://pdf.js/node_modules/core-js/modules/esnext.array-buffer.transfer-to-fixed-length.js","webpack://pdf.js/node_modules/core-js/modules/esnext.array-buffer.transfer.js","webpack://pdf.js/node_modules/core-js/modules/esnext.iterator.constructor.js","webpack://pdf.js/node_modules/core-js/modules/esnext.iterator.every.js","webpack://pdf.js/node_modules/core-js/modules/esnext.iterator.filter.js","webpack://pdf.js/node_modules/core-js/modules/esnext.iterator.flat-map.js","webpack://pdf.js/node_modules/core-js/modules/esnext.iterator.map.js","webpack://pdf.js/node_modules/core-js/modules/esnext.iterator.some.js","webpack://pdf.js/node_modules/core-js/modules/esnext.json.parse.js","webpack://pdf.js/node_modules/core-js/modules/esnext.set.difference.v2.js","webpack://pdf.js/node_modules/core-js/modules/esnext.set.intersection.v2.js","webpack://pdf.js/node_modules/core-js/modules/esnext.set.is-disjoint-from.v2.js","webpack://pdf.js/node_modules/core-js/modules/esnext.set.is-subset-of.v2.js","webpack://pdf.js/node_modules/core-js/modules/esnext.set.is-superset-of.v2.js","webpack://pdf.js/node_modules/core-js/modules/esnext.set.symmetric-difference.v2.js","webpack://pdf.js/node_modules/core-js/modules/esnext.set.union.v2.js","webpack://pdf.js/node_modules/core-js/modules/web.dom-exception.stack.js","webpack://pdf.js/node_modules/core-js/modules/web.url-search-params.delete.js","webpack://pdf.js/node_modules/core-js/modules/web.url-search-params.has.js","webpack://pdf.js/node_modules/core-js/modules/web.url-search-params.size.js","webpack://pdf.js/src/shared/scripting_utils.js","webpack://pdf.js/src/display/annotation_layer.js","webpack://pdf.js/src/display/annotation_storage.js","webpack://pdf.js/src/display/api.js","webpack://pdf.js/src/display/base_factory.js","webpack://pdf.js/src/display/pattern_helper.js","webpack://pdf.js/src/shared/image_utils.js","webpack://pdf.js/src/display/canvas.js","webpack://pdf.js/src/display/display_utils.js","webpack://pdf.js/src/display/editor/freetext.js","webpack://pdf.js/src/display/editor/ink.js","webpack://pdf.js/src/display/editor/stamp.js","webpack://pdf.js/src/display/editor/annotation_editor_layer.js","webpack://pdf.js/src/display/editor/editor.js","webpack://pdf.js/src/display/editor/tools.js","webpack://pdf.js/src/display/fetch_stream.js","webpack://pdf.js/src/display/font_loader.js","webpack://pdf.js/src/display/metadata.js","webpack://pdf.js/src/display/network.js","webpack://pdf.js/src/display/content_disposition.js","webpack://pdf.js/src/display/network_utils.js","webpack://pdf.js/src/display/node_stream.js","webpack://pdf.js/src/display/node_utils.js","webpack://pdf.js/src/display/optional_content_config.js","webpack://pdf.js/src/display/text_layer.js","webpack://pdf.js/src/display/transport_stream.js","webpack://pdf.js/src/display/worker_options.js","webpack://pdf.js/src/display/xfa_layer.js","webpack://pdf.js/src/display/xfa_text.js","webpack://pdf.js/src/pdf.js","webpack://pdf.js/src/shared/message_handler.js","webpack://pdf.js/src/shared/murmurhash3.js","webpack://pdf.js/src/shared/util.js","webpack://pdf.js/webpack/bootstrap","webpack://pdf.js/webpack/runtime/async module","webpack://pdf.js/webpack/runtime/define property getters","webpack://pdf.js/webpack/runtime/hasOwnProperty shorthand","webpack://pdf.js/webpack/before-startup","webpack://pdf.js/webpack/startup","webpack://pdf.js/webpack/after-startup"],"sourcesContent":["'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n  if (typeof argument == 'object' || isCallable(argument)) return argument;\n  throw new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","'use strict';\nvar has = require('../internals/set-helpers').has;\n\n// Perform ? RequireInternalSlot(M, [[SetData]])\nmodule.exports = function (it) {\n  has(it);\n  return it;\n};\n","'use strict';\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n  if (isPrototypeOf(Prototype, it)) return it;\n  throw new $TypeError('Incorrect invocation');\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\n// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","'use strict';\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar classof = require('../internals/classof-raw');\n\nvar $TypeError = TypeError;\n\n// Includes\n// - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).\n// - If IsSharedArrayBuffer(O) is true, throw a TypeError exception.\nmodule.exports = uncurryThisAccessor(ArrayBuffer.prototype, 'byteLength', 'get') || function (O) {\n  if (classof(O) !== 'ArrayBuffer') throw new $TypeError('ArrayBuffer expected');\n  return O.byteLength;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar arrayBufferByteLength = require('../internals/array-buffer-byte-length');\n\nvar slice = uncurryThis(ArrayBuffer.prototype.slice);\n\nmodule.exports = function (O) {\n  if (arrayBufferByteLength(O) !== 0) return false;\n  try {\n    slice(O, 0, 0);\n    return false;\n  } catch (error) {\n    return true;\n  }\n};\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar toIndex = require('../internals/to-index');\nvar isDetached = require('../internals/array-buffer-is-detached');\nvar arrayBufferByteLength = require('../internals/array-buffer-byte-length');\nvar detachTransferable = require('../internals/detach-transferable');\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');\n\nvar structuredClone = global.structuredClone;\nvar ArrayBuffer = global.ArrayBuffer;\nvar DataView = global.DataView;\nvar TypeError = global.TypeError;\nvar min = Math.min;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataViewPrototype = DataView.prototype;\nvar slice = uncurryThis(ArrayBufferPrototype.slice);\nvar isResizable = uncurryThisAccessor(ArrayBufferPrototype, 'resizable', 'get');\nvar maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, 'maxByteLength', 'get');\nvar getInt8 = uncurryThis(DataViewPrototype.getInt8);\nvar setInt8 = uncurryThis(DataViewPrototype.setInt8);\n\nmodule.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) {\n  var byteLength = arrayBufferByteLength(arrayBuffer);\n  var newByteLength = newLength === undefined ? byteLength : toIndex(newLength);\n  var fixedLength = !isResizable || !isResizable(arrayBuffer);\n  var newBuffer;\n  if (isDetached(arrayBuffer)) throw new TypeError('ArrayBuffer is detached');\n  if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n    arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] });\n    if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;\n  }\n  if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {\n    newBuffer = slice(arrayBuffer, 0, newByteLength);\n  } else {\n    var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined;\n    newBuffer = new ArrayBuffer(newByteLength, options);\n    var a = new DataView(arrayBuffer);\n    var b = new DataView(newBuffer);\n    var copyLength = min(newByteLength, byteLength);\n    for (var i = 0; i < copyLength; i++) setInt8(b, i, getInt8(a, i));\n  }\n  if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);\n  return newBuffer;\n};\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n  Int8Array: 1,\n  Uint8Array: 1,\n  Uint8ClampedArray: 1,\n  Int16Array: 2,\n  Uint16Array: 2,\n  Int32Array: 4,\n  Uint32Array: 4,\n  Float32Array: 4,\n  Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n  BigInt64Array: 8,\n  BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return klass === 'DataView'\n    || hasOwn(TypedArrayConstructorsList, klass)\n    || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n  var proto = getPrototypeOf(it);\n  if (!isObject(proto)) return;\n  var state = getInternalState(proto);\n  return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return hasOwn(TypedArrayConstructorsList, klass)\n    || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n  if (isTypedArray(it)) return it;\n  throw new TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n  if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n  throw new TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n  if (!DESCRIPTORS) return;\n  if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n    var TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n      delete TypedArrayConstructor.prototype[KEY];\n    } catch (error) {\n      // old WebKit bug - some methods are non-configurable\n      try {\n        TypedArrayConstructor.prototype[KEY] = property;\n      } catch (error2) { /* empty */ }\n    }\n  }\n  if (!TypedArrayPrototype[KEY] || forced) {\n    defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n      : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n  }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n  var ARRAY, TypedArrayConstructor;\n  if (!DESCRIPTORS) return;\n  if (setPrototypeOf) {\n    if (forced) for (ARRAY in TypedArrayConstructorsList) {\n      TypedArrayConstructor = global[ARRAY];\n      if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n        delete TypedArrayConstructor[KEY];\n      } catch (error) { /* empty */ }\n    }\n    if (!TypedArray[KEY] || forced) {\n      // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n      try {\n        return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n      } catch (error) { /* empty */ }\n    } else return;\n  }\n  for (ARRAY in TypedArrayConstructorsList) {\n    TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n      defineBuiltIn(TypedArrayConstructor, KEY, property);\n    }\n  }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n  Constructor = global[NAME];\n  Prototype = Constructor && Constructor.prototype;\n  if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n  else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n  Constructor = global[NAME];\n  Prototype = Constructor && Constructor.prototype;\n  if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n  // eslint-disable-next-line no-shadow -- safe\n  TypedArray = function TypedArray() {\n    throw new TypeError('Incorrect invocation');\n  };\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n  }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n  TypedArrayPrototype = TypedArray.prototype;\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n  }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n  setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n  TYPED_ARRAY_TAG_REQUIRED = true;\n  defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n    configurable: true,\n    get: function () {\n      return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n    }\n  });\n  for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n    createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n  }\n}\n\nmodule.exports = {\n  NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n  TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n  aTypedArray: aTypedArray,\n  aTypedArrayConstructor: aTypedArrayConstructor,\n  exportTypedArrayMethod: exportTypedArrayMethod,\n  exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n  getTypedArrayConstructor: getTypedArrayConstructor,\n  isView: isView,\n  isTypedArray: isTypedArray,\n  TypedArray: TypedArray,\n  TypedArrayPrototype: TypedArrayPrototype\n};\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nmodule.exports = function (Constructor, list) {\n  var index = 0;\n  var length = lengthOfArrayLike(list);\n  var result = new Constructor(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = lengthOfArrayLike(O);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el !== el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value !== value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ findLast, findLastIndex }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_FIND_LAST_INDEX = TYPE === 1;\n  return function ($this, callbackfn, that) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var boundFunction = bind(callbackfn, that);\n    var index = lengthOfArrayLike(self);\n    var value, result;\n    while (index-- > 0) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (result) switch (TYPE) {\n        case 0: return value; // findLast\n        case 1: return index; // findLastIndex\n      }\n    }\n    return IS_FIND_LAST_INDEX ? -1 : undefined;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.findLast` method\n  // https://github.com/tc39/proposal-array-find-from-last\n  findLast: createMethod(0),\n  // `Array.prototype.findLastIndex` method\n  // https://github.com/tc39/proposal-array-find-from-last\n  findLastIndex: createMethod(1)\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n  // makes no sense without proper strict mode support\n  if (this !== undefined) return true;\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).length = 1;\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n  if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n    throw new $TypeError('Cannot set read only .length');\n  } return O.length = length;\n} : function (O, length) {\n  return O.length = length;\n};\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toReversed\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toReversed\nmodule.exports = function (O, C) {\n  var len = lengthOfArrayLike(O);\n  var A = new C(len);\n  var k = 0;\n  for (; k < len; k++) A[k] = O[len - k - 1];\n  return A;\n};\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with\nmodule.exports = function (O, C, index, value) {\n  var len = lengthOfArrayLike(O);\n  var relativeIndex = toIntegerOrInfinity(index);\n  var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;\n  if (actualIndex >= len || actualIndex < 0) throw new $RangeError('Incorrect index');\n  var A = new C(len);\n  var k = 0;\n  for (; k < len; k++) A[k] = k === actualIndex ? value : O[k];\n  return A;\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  } catch (error) {\n    iteratorClose(iterator, 'throw', error);\n  }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n  return { value: value, done: done };\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","'use strict';\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPropertyKey(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n","'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n  return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n  if (!options) options = {};\n  var simple = options.enumerable;\n  var name = options.name !== undefined ? options.name : key;\n  if (isCallable(value)) makeBuiltIn(value, name, options);\n  if (options.global) {\n    if (simple) O[key] = value;\n    else defineGlobalProperty(key, value);\n  } else {\n    try {\n      if (!options.unsafe) delete O[key];\n      else if (O[key]) simple = true;\n    } catch (error) { /* empty */ }\n    if (simple) O[key] = value;\n    else definePropertyModule.f(O, key, {\n      value: value,\n      enumerable: false,\n      configurable: !options.nonConfigurable,\n      writable: !options.nonWritable\n    });\n  } return O;\n};\n","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n  for (var key in src) defineBuiltIn(target, key, src[key], options);\n  return target;\n};\n","'use strict';\nvar global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(global, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar tryNodeRequire = require('../internals/try-node-require');\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');\n\nvar structuredClone = global.structuredClone;\nvar $ArrayBuffer = global.ArrayBuffer;\nvar $MessageChannel = global.MessageChannel;\nvar detach = false;\nvar WorkerThreads, channel, buffer, $detach;\n\nif (PROPER_STRUCTURED_CLONE_TRANSFER) {\n  detach = function (transferable) {\n    structuredClone(transferable, { transfer: [transferable] });\n  };\n} else if ($ArrayBuffer) try {\n  if (!$MessageChannel) {\n    WorkerThreads = tryNodeRequire('worker_threads');\n    if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel;\n  }\n\n  if ($MessageChannel) {\n    channel = new $MessageChannel();\n    buffer = new $ArrayBuffer(2);\n\n    $detach = function (transferable) {\n      channel.port1.postMessage(null, [transferable]);\n    };\n\n    if (buffer.byteLength === 2) {\n      $detach(buffer);\n      if (buffer.byteLength === 0) detach = $detach;\n    }\n  }\n} catch (error) { /* empty */ }\n\nmodule.exports = detach;\n","'use strict';\nvar documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n  all: documentAll,\n  IS_HTMLDDA: IS_HTMLDDA\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n  if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n  return it;\n};\n","'use strict';\nmodule.exports = {\n  IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\n  DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\n  HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\n  WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\n  InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\n  NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\n  NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\n  NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\n  NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\n  InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\n  InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\n  SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\n  InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\n  NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\n  InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\n  ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\n  TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\n  SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\n  NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\n  AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\n  URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\n  QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\n  TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\n  InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\n  DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\n};\n","'use strict';\nvar IS_DENO = require('../internals/engine-is-deno');\nvar IS_NODE = require('../internals/engine-is-node');\n\nmodule.exports = !IS_DENO && !IS_NODE\n  && typeof window == 'object'\n  && typeof document == 'object';\n","'use strict';\n/* global Deno -- Deno case */\nmodule.exports = typeof Deno == 'object' && Deno && typeof Deno.version == 'object';\n","'use strict';\nvar global = require('../internals/global');\nvar classof = require('../internals/classof-raw');\n\nmodule.exports = classof(global.process) === 'process';\n","'use strict';\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","'use strict';\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nmodule.exports = version;\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n  if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n    while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n  } return stack;\n};\n","'use strict';\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\n\n// non-standard V8\nvar captureStackTrace = Error.captureStackTrace;\n\nmodule.exports = function (error, C, stack, dropEntries) {\n  if (ERROR_STACK_INSTALLABLE) {\n    if (captureStackTrace) captureStackTrace(error, C);\n    else createNonEnumerableProperty(error, 'stack', clearErrorStack(stack, dropEntries));\n  }\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = !fails(function () {\n  var error = new Error('a');\n  if (!('stack' in error)) return true;\n  // eslint-disable-next-line es/no-object-defineproperty -- safe\n  Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n  return error.stack !== 7;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target         - name of the target object\n  options.global         - target is the global object\n  options.stat           - export as static methods of target\n  options.proto          - export as prototype methods of target\n  options.real           - real prototype method for the `pure` version\n  options.forced         - export even if the native feature is available\n  options.bind           - bind methods to the target, required for the `pure` version\n  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\n  options.sham           - add a flag to not completely full polyfills\n  options.enumerable     - export as enumerable property\n  options.dontCallGetSet - prevent calling a getter on target\n  options.name           - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global;\n  } else if (STATIC) {\n    target = global[TARGET] || defineGlobalProperty(TARGET, {});\n  } else {\n    target = (global[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.dontCallGetSet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty == typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    defineBuiltIn(target, key, sourceProperty, options);\n  }\n};\n","'use strict';\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n  return call.apply(apply, arguments);\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n  aCallable(fn);\n  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-function-prototype-bind -- safe\n  var test = (function () { /* empty */ }).bind();\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n  try {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n  } catch (error) { /* empty */ }\n};\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n  // Nashorn bug:\n  //   https://github.com/zloirock/core-js/issues/1128\n  //   https://github.com/zloirock/core-js/issues/1130\n  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n  return function () {\n    return call.apply(fn, arguments);\n  };\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n  return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","'use strict';\n// `GetIteratorDirect(obj)` abstract operation\n// https://tc39.es/proposal-iterator-helpers/#sec-getiteratordirect\nmodule.exports = function (obj) {\n  return {\n    iterator: obj,\n    next: obj.next,\n    done: false\n  };\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (obj, stringHandling) {\n  if (!stringHandling || typeof obj !== 'string') anObject(obj);\n  var method = getIteratorMethod(obj);\n  return getIteratorDirect(anObject(method !== undefined ? call(method, obj) : obj));\n};\n","'use strict';\nvar classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n    || getMethod(it, '@@iterator')\n    || Iterators[classof(it)];\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n  var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n  throw new $TypeError(tryToString(argument) + ' is not iterable');\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar call = require('../internals/function-call');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\nvar INVALID_SIZE = 'Invalid size';\nvar $RangeError = RangeError;\nvar $TypeError = TypeError;\nvar max = Math.max;\n\nvar SetRecord = function (set, size, has, keys) {\n  this.set = set;\n  this.size = size;\n  this.has = has;\n  this.keys = keys;\n};\n\nSetRecord.prototype = {\n  getIterator: function () {\n    return getIteratorDirect(anObject(call(this.keys, this.set)));\n  },\n  includes: function (it) {\n    return call(this.has, this.set, it);\n  }\n};\n\n// `GetSetRecord` abstract operation\n// https://tc39.es/proposal-set-methods/#sec-getsetrecord\nmodule.exports = function (obj) {\n  anObject(obj);\n  var numSize = +obj.size;\n  // NOTE: If size is undefined, then numSize will be NaN\n  // eslint-disable-next-line no-self-compare -- NaN check\n  if (numSize !== numSize) throw new $TypeError(INVALID_SIZE);\n  var intSize = toIntegerOrInfinity(numSize);\n  if (intSize < 0) throw new $RangeError(INVALID_SIZE);\n  return new SetRecord(\n    obj,\n    max(intSize, 0),\n    aCallable(obj.has),\n    aCallable(obj.keys)\n  );\n};\n","'use strict';\nvar check = function (it) {\n  return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || this || Function('return this')();\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a !== 7;\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n  var NewTarget, NewTargetPrototype;\n  if (\n    // it can work only with native `setPrototypeOf`\n    setPrototypeOf &&\n    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n    isCallable(NewTarget = dummy.constructor) &&\n    NewTarget !== Wrapper &&\n    isObject(NewTargetPrototype = NewTarget.prototype) &&\n    NewTargetPrototype !== Wrapper.prototype\n  ) setPrototypeOf($this, NewTargetPrototype);\n  return $this;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n  if (isObject(options) && 'cause' in options) {\n    createNonEnumerableProperty(O, 'cause', options.cause);\n  }\n};\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  /* eslint-disable no-self-assign -- prototype methods protection */\n  store.get = store.get;\n  store.has = store.has;\n  store.set = store.set;\n  /* eslint-enable no-self-assign -- prototype methods protection */\n  set = function (it, metadata) {\n    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    store.set(it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return store.get(it) || {};\n  };\n  has = function (it) {\n    return store.has(it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n  return classof(argument) === 'Array';\n};\n","'use strict';\nvar classof = require('../internals/classof');\n\nmodule.exports = function (it) {\n  var klass = classof(it);\n  return klass === 'BigInt64Array' || klass === 'BigUint64Array';\n};\n","'use strict';\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n  return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n  return typeof argument == 'function';\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value === POLYFILL ? true\n    : value === NATIVE ? false\n    : isCallable(detection) ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n  return it === null || it === undefined;\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nmodule.exports = false;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn('Symbol');\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar call = require('../internals/function-call');\n\nmodule.exports = function (record, fn, ITERATOR_INSTEAD_OF_RECORD) {\n  var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;\n  var next = record.next;\n  var step, result;\n  while (!(step = call(next, iterator)).done) {\n    result = fn(step.value);\n    if (result !== undefined) return result;\n  }\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n  this.stopped = stopped;\n  this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n  var that = options && options.that;\n  var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n  var IS_RECORD = !!(options && options.IS_RECORD);\n  var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n  var INTERRUPTED = !!(options && options.INTERRUPTED);\n  var fn = bind(unboundFunction, that);\n  var iterator, iterFn, index, length, result, next, step;\n\n  var stop = function (condition) {\n    if (iterator) iteratorClose(iterator, 'normal', condition);\n    return new Result(true, condition);\n  };\n\n  var callFn = function (value) {\n    if (AS_ENTRIES) {\n      anObject(value);\n      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n    } return INTERRUPTED ? fn(value, stop) : fn(value);\n  };\n\n  if (IS_RECORD) {\n    iterator = iterable.iterator;\n  } else if (IS_ITERATOR) {\n    iterator = iterable;\n  } else {\n    iterFn = getIteratorMethod(iterable);\n    if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\n    // optimisation for array iterators\n    if (isArrayIteratorMethod(iterFn)) {\n      for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n        result = callFn(iterable[index]);\n        if (result && isPrototypeOf(ResultPrototype, result)) return result;\n      } return new Result(false);\n    }\n    iterator = getIterator(iterable, iterFn);\n  }\n\n  next = IS_RECORD ? iterable.next : iterator.next;\n  while (!(step = call(next, iterator)).done) {\n    try {\n      result = callFn(step.value);\n    } catch (error) {\n      iteratorClose(iterator, 'throw', error);\n    }\n    if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n  } return new Result(false);\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n  var innerResult, innerError;\n  anObject(iterator);\n  try {\n    innerResult = getMethod(iterator, 'return');\n    if (!innerResult) {\n      if (kind === 'throw') throw value;\n      return value;\n    }\n    innerResult = call(innerResult, iterator);\n  } catch (error) {\n    innerError = true;\n    innerResult = error;\n  }\n  if (kind === 'throw') throw value;\n  if (innerError) throw innerResult;\n  anObject(innerResult);\n  return value;\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar InternalStateModule = require('../internals/internal-state');\nvar getMethod = require('../internals/get-method');\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ITERATOR_HELPER = 'IteratorHelper';\nvar WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator';\nvar setInternalState = InternalStateModule.set;\n\nvar createIteratorProxyPrototype = function (IS_ITERATOR) {\n  var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER);\n\n  return defineBuiltIns(create(IteratorPrototype), {\n    next: function next() {\n      var state = getInternalState(this);\n      // for simplification:\n      //   for `%WrapForValidIteratorPrototype%.next` our `nextHandler` returns `IterResultObject`\n      //   for `%IteratorHelperPrototype%.next` - just a value\n      if (IS_ITERATOR) return state.nextHandler();\n      try {\n        var result = state.done ? undefined : state.nextHandler();\n        return createIterResultObject(result, state.done);\n      } catch (error) {\n        state.done = true;\n        throw error;\n      }\n    },\n    'return': function () {\n      var state = getInternalState(this);\n      var iterator = state.iterator;\n      state.done = true;\n      if (IS_ITERATOR) {\n        var returnMethod = getMethod(iterator, 'return');\n        return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);\n      }\n      if (state.inner) try {\n        iteratorClose(state.inner.iterator, 'normal');\n      } catch (error) {\n        return iteratorClose(iterator, 'throw', error);\n      }\n      iteratorClose(iterator, 'normal');\n      return createIterResultObject(undefined, true);\n    }\n  });\n};\n\nvar WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);\nvar IteratorHelperPrototype = createIteratorProxyPrototype(false);\n\ncreateNonEnumerableProperty(IteratorHelperPrototype, TO_STRING_TAG, 'Iterator Helper');\n\nmodule.exports = function (nextHandler, IS_ITERATOR) {\n  var IteratorProxy = function Iterator(record, state) {\n    if (state) {\n      state.iterator = record.iterator;\n      state.next = record.next;\n    } else state = record;\n    state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;\n    state.nextHandler = nextHandler;\n    state.counter = 0;\n    state.done = false;\n    setInternalState(this, state);\n  };\n\n  IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;\n\n  return IteratorProxy;\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\n\nvar IteratorProxy = createIteratorProxy(function () {\n  var iterator = this.iterator;\n  var result = anObject(call(this.next, iterator));\n  var done = this.done = !!result.done;\n  if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);\n});\n\n// `Iterator.prototype.map` method\n// https://github.com/tc39/proposal-iterator-helpers\nmodule.exports = function map(mapper) {\n  anObject(this);\n  aCallable(mapper);\n  return new IteratorProxy(getIteratorDirect(this), {\n    mapper: mapper\n  });\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n  var test = {};\n  // FF44- legacy iterators case\n  return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n  defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n    return this;\n  });\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n  return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n    name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\)/, '$1') + ']';\n  }\n  if (options && options.getter) name = 'get ' + name;\n  if (options && options.setter) name = 'set ' + name;\n  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n    else value.name = name;\n  }\n  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n    defineProperty(value, 'length', { value: options.arity });\n  }\n  try {\n    if (options && hasOwn(options, 'constructor') && options.constructor) {\n      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n    // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n    } else if (value.prototype) value.prototype = undefined;\n  } catch (error) { /* empty */ }\n  var state = enforceInternalState(value);\n  if (!hasOwn(state, 'source')) {\n    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n  } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n  var n = +x;\n  return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n  return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n","'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  activeXDocument = null; // avoid memory leak\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    activeXDocument = new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = typeof document != 'undefined'\n    ? document.domain && activeXDocument\n      ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n      : NullProtoObjectViaIFrame()\n    : NullProtoObjectViaActiveX(activeXDocument); // WSH\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var props = toIndexedObject(Properties);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n  return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n    var current = $getOwnPropertyDescriptor(O, P);\n    if (current && current[WRITABLE]) {\n      O[P] = Attributes.value;\n      Attributes = {\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n        writable: false\n      };\n    }\n  } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n  var object = toObject(O);\n  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n  var constructor = object.constructor;\n  if (isCallable(constructor) && object instanceof constructor) {\n    return constructor.prototype;\n  } return object instanceof $Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || push(result, key);\n  }\n  return result;\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n    setter(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\n\nvar $SyntaxError = SyntaxError;\nvar $parseInt = parseInt;\nvar fromCharCode = String.fromCharCode;\nvar at = uncurryThis(''.charAt);\nvar slice = uncurryThis(''.slice);\nvar exec = uncurryThis(/./.exec);\n\nvar codePoints = {\n  '\\\\\"': '\"',\n  '\\\\\\\\': '\\\\',\n  '\\\\/': '/',\n  '\\\\b': '\\b',\n  '\\\\f': '\\f',\n  '\\\\n': '\\n',\n  '\\\\r': '\\r',\n  '\\\\t': '\\t'\n};\n\nvar IS_4_HEX_DIGITS = /^[\\da-f]{4}$/i;\n// eslint-disable-next-line regexp/no-control-character -- safe\nvar IS_C0_CONTROL_CODE = /^[\\u0000-\\u001F]$/;\n\nmodule.exports = function (source, i) {\n  var unterminated = true;\n  var value = '';\n  while (i < source.length) {\n    var chr = at(source, i);\n    if (chr === '\\\\') {\n      var twoChars = slice(source, i, i + 2);\n      if (hasOwn(codePoints, twoChars)) {\n        value += codePoints[twoChars];\n        i += 2;\n      } else if (twoChars === '\\\\u') {\n        i += 2;\n        var fourHexDigits = slice(source, i, i + 4);\n        if (!exec(IS_4_HEX_DIGITS, fourHexDigits)) throw new $SyntaxError('Bad Unicode escape at: ' + i);\n        value += fromCharCode($parseInt(fourHexDigits, 16));\n        i += 4;\n      } else throw new $SyntaxError('Unknown escape sequence: \"' + twoChars + '\"');\n    } else if (chr === '\"') {\n      unterminated = false;\n      i++;\n      break;\n    } else {\n      if (exec(IS_C0_CONTROL_CODE, chr)) throw new $SyntaxError('Bad control character in string literal at: ' + i);\n      value += chr;\n      i++;\n    }\n  }\n  if (unterminated) throw new $SyntaxError('Unterminated string at: ' + i);\n  return { value: value, end: i };\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (Target, Source, key) {\n  key in Target || defineProperty(Target, key, {\n    configurable: true,\n    get: function () { return Source[key]; },\n    set: function (it) { Source[key] = it; }\n  });\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n  return it;\n};\n","'use strict';\nvar SetHelpers = require('../internals/set-helpers');\nvar iterate = require('../internals/set-iterate');\n\nvar Set = SetHelpers.Set;\nvar add = SetHelpers.add;\n\nmodule.exports = function (set) {\n  var result = new Set();\n  iterate(set, function (it) {\n    add(result, it);\n  });\n  return result;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar clone = require('../internals/set-clone');\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSet = require('../internals/set-iterate');\nvar iterateSimple = require('../internals/iterate-simple');\n\nvar has = SetHelpers.has;\nvar remove = SetHelpers.remove;\n\n// `Set.prototype.difference` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function difference(other) {\n  var O = aSet(this);\n  var otherRec = getSetRecord(other);\n  var result = clone(O);\n  if (size(O) <= otherRec.size) iterateSet(O, function (e) {\n    if (otherRec.includes(e)) remove(result, e);\n  });\n  else iterateSimple(otherRec.getIterator(), function (e) {\n    if (has(O, e)) remove(result, e);\n  });\n  return result;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\n// eslint-disable-next-line es/no-set -- safe\nvar SetPrototype = Set.prototype;\n\nmodule.exports = {\n  // eslint-disable-next-line es/no-set -- safe\n  Set: Set,\n  add: uncurryThis(SetPrototype.add),\n  has: uncurryThis(SetPrototype.has),\n  remove: uncurryThis(SetPrototype['delete']),\n  proto: SetPrototype\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSet = require('../internals/set-iterate');\nvar iterateSimple = require('../internals/iterate-simple');\n\nvar Set = SetHelpers.Set;\nvar add = SetHelpers.add;\nvar has = SetHelpers.has;\n\n// `Set.prototype.intersection` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function intersection(other) {\n  var O = aSet(this);\n  var otherRec = getSetRecord(other);\n  var result = new Set();\n\n  if (size(O) > otherRec.size) {\n    iterateSimple(otherRec.getIterator(), function (e) {\n      if (has(O, e)) add(result, e);\n    });\n  } else {\n    iterateSet(O, function (e) {\n      if (otherRec.includes(e)) add(result, e);\n    });\n  }\n\n  return result;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar has = require('../internals/set-helpers').has;\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSet = require('../internals/set-iterate');\nvar iterateSimple = require('../internals/iterate-simple');\nvar iteratorClose = require('../internals/iterator-close');\n\n// `Set.prototype.isDisjointFrom` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isDisjointFrom\nmodule.exports = function isDisjointFrom(other) {\n  var O = aSet(this);\n  var otherRec = getSetRecord(other);\n  if (size(O) <= otherRec.size) return iterateSet(O, function (e) {\n    if (otherRec.includes(e)) return false;\n  }, true) !== false;\n  var iterator = otherRec.getIterator();\n  return iterateSimple(iterator, function (e) {\n    if (has(O, e)) return iteratorClose(iterator, 'normal', false);\n  }) !== false;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar size = require('../internals/set-size');\nvar iterate = require('../internals/set-iterate');\nvar getSetRecord = require('../internals/get-set-record');\n\n// `Set.prototype.isSubsetOf` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSubsetOf\nmodule.exports = function isSubsetOf(other) {\n  var O = aSet(this);\n  var otherRec = getSetRecord(other);\n  if (size(O) > otherRec.size) return false;\n  return iterate(O, function (e) {\n    if (!otherRec.includes(e)) return false;\n  }, true) !== false;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar has = require('../internals/set-helpers').has;\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSimple = require('../internals/iterate-simple');\nvar iteratorClose = require('../internals/iterator-close');\n\n// `Set.prototype.isSupersetOf` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSupersetOf\nmodule.exports = function isSupersetOf(other) {\n  var O = aSet(this);\n  var otherRec = getSetRecord(other);\n  if (size(O) < otherRec.size) return false;\n  var iterator = otherRec.getIterator();\n  return iterateSimple(iterator, function (e) {\n    if (!has(O, e)) return iteratorClose(iterator, 'normal', false);\n  }) !== false;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar iterateSimple = require('../internals/iterate-simple');\nvar SetHelpers = require('../internals/set-helpers');\n\nvar Set = SetHelpers.Set;\nvar SetPrototype = SetHelpers.proto;\nvar forEach = uncurryThis(SetPrototype.forEach);\nvar keys = uncurryThis(SetPrototype.keys);\nvar next = keys(new Set()).next;\n\nmodule.exports = function (set, fn, interruptible) {\n  return interruptible ? iterateSimple({ iterator: keys(set), next: next }, fn) : forEach(set, fn);\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nvar createSetLike = function (size) {\n  return {\n    size: size,\n    has: function () {\n      return false;\n    },\n    keys: function () {\n      return {\n        next: function () {\n          return { done: true };\n        }\n      };\n    }\n  };\n};\n\nmodule.exports = function (name) {\n  var Set = getBuiltIn('Set');\n  try {\n    new Set()[name](createSetLike(0));\n    try {\n      // late spec change, early WebKit ~ Safari 17.0 beta implementation does not pass it\n      // https://github.com/tc39/proposal-set-methods/pull/88\n      new Set()[name](createSetLike(-1));\n      return false;\n    } catch (error2) {\n      return true;\n    }\n  } catch (error) {\n    return false;\n  }\n};\n","'use strict';\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar SetHelpers = require('../internals/set-helpers');\n\nmodule.exports = uncurryThisAccessor(SetHelpers.proto, 'size', 'get') || function (set) {\n  return set.size;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar clone = require('../internals/set-clone');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSimple = require('../internals/iterate-simple');\n\nvar add = SetHelpers.add;\nvar has = SetHelpers.has;\nvar remove = SetHelpers.remove;\n\n// `Set.prototype.symmetricDifference` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function symmetricDifference(other) {\n  var O = aSet(this);\n  var keysIter = getSetRecord(other).getIterator();\n  var result = clone(O);\n  iterateSimple(keysIter, function (e) {\n    if (has(O, e)) remove(result, e);\n    else add(result, e);\n  });\n  return result;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar add = require('../internals/set-helpers').add;\nvar clone = require('../internals/set-clone');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSimple = require('../internals/iterate-simple');\n\n// `Set.prototype.union` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function union(other) {\n  var O = aSet(this);\n  var keysIter = getSetRecord(other).getIterator();\n  var result = clone(O);\n  iterateSimple(keysIter, function (it) {\n    add(result, it);\n  });\n  return result;\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.33.2',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.33.2/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar V8 = require('../internals/engine-v8-version');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_DENO = require('../internals/engine-is-deno');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar structuredClone = global.structuredClone;\n\nmodule.exports = !!structuredClone && !fails(function () {\n  // prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\n  // https://github.com/zloirock/core-js/issues/679\n  if ((IS_DENO && V8 > 92) || (IS_NODE && V8 > 94) || (IS_BROWSER && V8 > 97)) return false;\n  var buffer = new ArrayBuffer(8);\n  var clone = structuredClone(buffer, { transfer: [buffer] });\n  return buffer.byteLength !== 0 || clone.byteLength !== 8;\n});\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol('symbol detection');\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n  // of course, fail.\n  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toIntegerOrInfinity(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\n\nvar $TypeError = TypeError;\n\n// `ToBigInt` abstract operation\n// https://tc39.es/ecma262/#sec-tobigint\nmodule.exports = function (argument) {\n  var prim = toPrimitive(argument, 'number');\n  if (typeof prim == 'number') throw new $TypeError(\"Can't convert number to bigint\");\n  // eslint-disable-next-line es/no-bigint -- safe\n  return BigInt(prim);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\n\nvar $RangeError = RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n  if (it === undefined) return 0;\n  var number = toIntegerOrInfinity(it);\n  var length = toLength(number);\n  if (number !== length) throw new $RangeError('Wrong length or index');\n  return length;\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar toPositiveInteger = require('../internals/to-positive-integer');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it, BYTES) {\n  var offset = toPositiveInteger(it);\n  if (offset % BYTES) throw new $RangeError('Wrong offset');\n  return offset;\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n  var result = toIntegerOrInfinity(it);\n  if (result < 0) throw new $RangeError(\"The argument can't be less than 0\");\n  return result;\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call(exoticToPrim, input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw new $TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n  if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n  return $String(argument);\n};\n","'use strict';\nvar IS_NODE = require('../internals/engine-is-node');\n\nmodule.exports = function (name) {\n  try {\n    // eslint-disable-next-line no-new-func -- safe\n    if (IS_NODE) return Function('return require(\"' + name + '\")')();\n  } catch (error) { /* empty */ }\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n  try {\n    return $String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype !== 42;\n});\n","'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n  if (passed < required) throw new $TypeError('Not enough arguments');\n  return passed;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name)) {\n    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n      ? Symbol[name]\n      : createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar proxyAccessor = require('../internals/proxy-accessor');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar installErrorCause = require('../internals/install-error-cause');\nvar installErrorStack = require('../internals/error-stack-install');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nmodule.exports = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) {\n  var STACK_TRACE_LIMIT = 'stackTraceLimit';\n  var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1;\n  var path = FULL_NAME.split('.');\n  var ERROR_NAME = path[path.length - 1];\n  var OriginalError = getBuiltIn.apply(null, path);\n\n  if (!OriginalError) return;\n\n  var OriginalErrorPrototype = OriginalError.prototype;\n\n  // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006\n  if (!IS_PURE && hasOwn(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause;\n\n  if (!FORCED) return OriginalError;\n\n  var BaseError = getBuiltIn('Error');\n\n  var WrappedError = wrapper(function (a, b) {\n    var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined);\n    var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError();\n    if (message !== undefined) createNonEnumerableProperty(result, 'message', message);\n    installErrorStack(result, WrappedError, result.stack, 2);\n    if (this && isPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError);\n    if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]);\n    return result;\n  });\n\n  WrappedError.prototype = OriginalErrorPrototype;\n\n  if (ERROR_NAME !== 'Error') {\n    if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError);\n    else copyConstructorProperties(WrappedError, BaseError, { name: true });\n  } else if (DESCRIPTORS && STACK_TRACE_LIMIT in OriginalError) {\n    proxyAccessor(WrappedError, OriginalError, STACK_TRACE_LIMIT);\n    proxyAccessor(WrappedError, OriginalError, 'prepareStackTrace');\n  }\n\n  copyConstructorProperties(WrappedError, OriginalError);\n\n  if (!IS_PURE) try {\n    // Safari 13- bug: WebAssembly errors does not have a proper `.name`\n    if (OriginalErrorPrototype.name !== ERROR_NAME) {\n      createNonEnumerableProperty(OriginalErrorPrototype, 'name', ERROR_NAME);\n    }\n    OriginalErrorPrototype.constructor = WrappedError;\n  } catch (error) { /* empty */ }\n\n  return WrappedError;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n  return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 and Safari <= 15.4, FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).push();\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  push: function push(item) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var argCount = arguments.length;\n    doesNotExceedSafeInteger(len + argCount);\n    for (var i = 0; i < argCount; i++) {\n      O[len] = arguments[i];\n      len++;\n    }\n    setArrayLength(O, len);\n    return len;\n  }\n});\n","'use strict';\n/* eslint-disable no-unused-vars -- required for functions `.length` */\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar wrapErrorConstructorWithCause = require('../internals/wrap-error-constructor-with-cause');\n\nvar WEB_ASSEMBLY = 'WebAssembly';\nvar WebAssembly = global[WEB_ASSEMBLY];\n\n// eslint-disable-next-line es/no-error-cause -- feature detection\nvar FORCED = new Error('e', { cause: 7 }).cause !== 7;\n\nvar exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n  var O = {};\n  O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED);\n  $({ global: true, constructor: true, arity: 1, forced: FORCED }, O);\n};\n\nvar exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n  if (WebAssembly && WebAssembly[ERROR_NAME]) {\n    var O = {};\n    O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED);\n    $({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED }, O);\n  }\n};\n\n// https://tc39.es/ecma262/#sec-nativeerror\nexportGlobalErrorCauseWrapper('Error', function (init) {\n  return function Error(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('EvalError', function (init) {\n  return function EvalError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('RangeError', function (init) {\n  return function RangeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('ReferenceError', function (init) {\n  return function ReferenceError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('SyntaxError', function (init) {\n  return function SyntaxError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('TypeError', function (init) {\n  return function TypeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('URIError', function (init) {\n  return function URIError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('CompileError', function (init) {\n  return function CompileError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('LinkError', function (init) {\n  return function LinkError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) {\n  return function RuntimeError(message) { return apply(init, this, arguments); };\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findLastIndex = require('../internals/array-iteration-from-last').findLastIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLastIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlastindex\nexportTypedArrayMethod('findLastIndex', function findLastIndex(predicate /* , thisArg */) {\n  return $findLastIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findLast = require('../internals/array-iteration-from-last').findLast;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLast` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlast\nexportTypedArrayMethod('findLast', function findLast(predicate /* , thisArg */) {\n  return $findLast(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toOffset = require('../internals/to-offset');\nvar toIndexedObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS = !fails(function () {\n  // eslint-disable-next-line es/no-typed-arrays -- required for testing\n  var array = new Uint8ClampedArray(2);\n  call($set, array, { length: 1, 0: 3 }, 1);\n  return array[1] !== 3;\n});\n\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\n  var array = new Int8Array(2);\n  array.set(1);\n  array.set('2', 1);\n  return array[0] !== 0 || array[1] !== 2;\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n  aTypedArray(this);\n  var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n  var src = toIndexedObject(arrayLike);\n  if (WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\n  var length = this.length;\n  var len = lengthOfArrayLike(src);\n  var index = 0;\n  if (len + offset > length) throw new RangeError('Wrong length');\n  while (index < len) this[offset + index] = src[index++];\n}, !WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\n","'use strict';\nvar arrayToReversed = require('../internals/array-to-reversed');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\n\n// `%TypedArray%.prototype.toReversed` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.toreversed\nexportTypedArrayMethod('toReversed', function toReversed() {\n  return arrayToReversed(aTypedArray(this), getTypedArrayConstructor(this));\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar sort = uncurryThis(ArrayBufferViewCore.TypedArrayPrototype.sort);\n\n// `%TypedArray%.prototype.toSorted` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tosorted\nexportTypedArrayMethod('toSorted', function toSorted(compareFn) {\n  if (compareFn !== undefined) aCallable(compareFn);\n  var O = aTypedArray(this);\n  var A = arrayFromConstructorAndList(getTypedArrayConstructor(O), O);\n  return sort(A, compareFn);\n});\n","'use strict';\nvar arrayWith = require('../internals/array-with');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar isBigIntArray = require('../internals/is-big-int-array');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toBigInt = require('../internals/to-big-int');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar PROPER_ORDER = !!function () {\n  try {\n    // eslint-disable-next-line no-throw-literal, es/no-typed-arrays, es/no-array-prototype-with -- required for testing\n    new Int8Array(1)['with'](2, { valueOf: function () { throw 8; } });\n  } catch (error) {\n    // some early implementations, like WebKit, does not follow the final semantic\n    // https://github.com/tc39/proposal-change-array-by-copy/pull/86\n    return error === 8;\n  }\n}();\n\n// `%TypedArray%.prototype.with` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.with\nexportTypedArrayMethod('with', { 'with': function (index, value) {\n  var O = aTypedArray(this);\n  var relativeIndex = toIntegerOrInfinity(index);\n  var actualValue = isBigIntArray(O) ? toBigInt(value) : +value;\n  return arrayWith(O, getTypedArrayConstructor(O), relativeIndex, actualValue);\n} }['with'], !PROPER_ORDER);\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isDetached = require('../internals/array-buffer-is-detached');\n\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\n\nif (DESCRIPTORS && !('detached' in ArrayBufferPrototype)) {\n  defineBuiltInAccessor(ArrayBufferPrototype, 'detached', {\n    configurable: true,\n    get: function detached() {\n      return isDetached(this);\n    }\n  });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $transfer = require('../internals/array-buffer-transfer');\n\n// `ArrayBuffer.prototype.transferToFixedLength` method\n// https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfertofixedlength\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n  transferToFixedLength: function transferToFixedLength() {\n    return $transfer(this, arguments.length ? arguments[0] : undefined, false);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $transfer = require('../internals/array-buffer-transfer');\n\n// `ArrayBuffer.prototype.transfer` method\n// https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfer\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n  transfer: function transfer() {\n    return $transfer(this, arguments.length ? arguments[0] : undefined, true);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar IS_PURE = require('../internals/is-pure');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nvar $TypeError = TypeError;\nvar NativeIterator = global.Iterator;\n\n// FF56- have non-standard global helper `Iterator`\nvar FORCED = IS_PURE\n  || !isCallable(NativeIterator)\n  || NativeIterator.prototype !== IteratorPrototype\n  // FF44- non-standard `Iterator` passes previous tests\n  || !fails(function () { NativeIterator({}); });\n\nvar IteratorConstructor = function Iterator() {\n  anInstance(this, IteratorPrototype);\n  if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError('Abstract class Iterator not directly constructable');\n};\n\nif (!hasOwn(IteratorPrototype, TO_STRING_TAG)) {\n  createNonEnumerableProperty(IteratorPrototype, TO_STRING_TAG, 'Iterator');\n}\n\nif (FORCED || !hasOwn(IteratorPrototype, 'constructor') || IteratorPrototype.constructor === Object) {\n  createNonEnumerableProperty(IteratorPrototype, 'constructor', IteratorConstructor);\n}\n\nIteratorConstructor.prototype = IteratorPrototype;\n\n// `Iterator` constructor\n// https://github.com/tc39/proposal-iterator-helpers\n$({ global: true, constructor: true, forced: FORCED }, {\n  Iterator: IteratorConstructor\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\n// `Iterator.prototype.every` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true }, {\n  every: function every(predicate) {\n    anObject(this);\n    aCallable(predicate);\n    var record = getIteratorDirect(this);\n    var counter = 0;\n    return !iterate(record, function (value, stop) {\n      if (!predicate(value, counter++)) return stop();\n    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar IS_PURE = require('../internals/is-pure');\n\nvar IteratorProxy = createIteratorProxy(function () {\n  var iterator = this.iterator;\n  var predicate = this.predicate;\n  var next = this.next;\n  var result, done, value;\n  while (true) {\n    result = anObject(call(next, iterator));\n    done = this.done = !!result.done;\n    if (done) return;\n    value = result.value;\n    if (callWithSafeIterationClosing(iterator, predicate, [value, this.counter++], true)) return value;\n  }\n});\n\n// `Iterator.prototype.filter` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n  filter: function filter(predicate) {\n    anObject(this);\n    aCallable(predicate);\n    return new IteratorProxy(getIteratorDirect(this), {\n      predicate: predicate\n    });\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar getIteratorFlattenable = require('../internals/get-iterator-flattenable');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar iteratorClose = require('../internals/iterator-close');\nvar IS_PURE = require('../internals/is-pure');\n\nvar IteratorProxy = createIteratorProxy(function () {\n  var iterator = this.iterator;\n  var mapper = this.mapper;\n  var result, inner;\n\n  while (true) {\n    if (inner = this.inner) try {\n      result = anObject(call(inner.next, inner.iterator));\n      if (!result.done) return result.value;\n      this.inner = null;\n    } catch (error) { iteratorClose(iterator, 'throw', error); }\n\n    result = anObject(call(this.next, iterator));\n\n    if (this.done = !!result.done) return;\n\n    try {\n      this.inner = getIteratorFlattenable(mapper(result.value, this.counter++), false);\n    } catch (error) { iteratorClose(iterator, 'throw', error); }\n  }\n});\n\n// `Iterator.prototype.flatMap` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n  flatMap: function flatMap(mapper) {\n    anObject(this);\n    aCallable(mapper);\n    return new IteratorProxy(getIteratorDirect(this), {\n      mapper: mapper,\n      inner: null\n    });\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar map = require('../internals/iterator-map');\nvar IS_PURE = require('../internals/is-pure');\n\n// `Iterator.prototype.map` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n  map: map\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\n// `Iterator.prototype.some` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true }, {\n  some: function some(predicate) {\n    anObject(this);\n    aCallable(predicate);\n    var record = getIteratorDirect(this);\n    var counter = 0;\n    return iterate(record, function (value, stop) {\n      if (predicate(value, counter++)) return stop();\n    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar fails = require('../internals/fails');\nvar parseJSONString = require('../internals/parse-json-string');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nvar JSON = global.JSON;\nvar Number = global.Number;\nvar SyntaxError = global.SyntaxError;\nvar nativeParse = JSON && JSON.parse;\nvar enumerableOwnProperties = getBuiltIn('Object', 'keys');\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar at = uncurryThis(''.charAt);\nvar slice = uncurryThis(''.slice);\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis([].push);\n\nvar IS_DIGIT = /^\\d$/;\nvar IS_NON_ZERO_DIGIT = /^[1-9]$/;\nvar IS_NUMBER_START = /^(?:-|\\d)$/;\nvar IS_WHITESPACE = /^[\\t\\n\\r ]$/;\n\nvar PRIMITIVE = 0;\nvar OBJECT = 1;\n\nvar $parse = function (source, reviver) {\n  source = toString(source);\n  var context = new Context(source, 0, '');\n  var root = context.parse();\n  var value = root.value;\n  var endIndex = context.skip(IS_WHITESPACE, root.end);\n  if (endIndex < source.length) {\n    throw new SyntaxError('Unexpected extra character: \"' + at(source, endIndex) + '\" after the parsed data at: ' + endIndex);\n  }\n  return isCallable(reviver) ? internalize({ '': value }, '', reviver, root) : value;\n};\n\nvar internalize = function (holder, name, reviver, node) {\n  var val = holder[name];\n  var unmodified = node && val === node.value;\n  var context = unmodified && typeof node.source == 'string' ? { source: node.source } : {};\n  var elementRecordsLen, keys, len, i, P;\n  if (isObject(val)) {\n    var nodeIsArray = isArray(val);\n    var nodes = unmodified ? node.nodes : nodeIsArray ? [] : {};\n    if (nodeIsArray) {\n      elementRecordsLen = nodes.length;\n      len = lengthOfArrayLike(val);\n      for (i = 0; i < len; i++) {\n        internalizeProperty(val, i, internalize(val, '' + i, reviver, i < elementRecordsLen ? nodes[i] : undefined));\n      }\n    } else {\n      keys = enumerableOwnProperties(val);\n      len = lengthOfArrayLike(keys);\n      for (i = 0; i < len; i++) {\n        P = keys[i];\n        internalizeProperty(val, P, internalize(val, P, reviver, hasOwn(nodes, P) ? nodes[P] : undefined));\n      }\n    }\n  }\n  return call(reviver, holder, name, val, context);\n};\n\nvar internalizeProperty = function (object, key, value) {\n  if (DESCRIPTORS) {\n    var descriptor = getOwnPropertyDescriptor(object, key);\n    if (descriptor && !descriptor.configurable) return;\n  }\n  if (value === undefined) delete object[key];\n  else createProperty(object, key, value);\n};\n\nvar Node = function (value, end, source, nodes) {\n  this.value = value;\n  this.end = end;\n  this.source = source;\n  this.nodes = nodes;\n};\n\nvar Context = function (source, index) {\n  this.source = source;\n  this.index = index;\n};\n\n// https://www.json.org/json-en.html\nContext.prototype = {\n  fork: function (nextIndex) {\n    return new Context(this.source, nextIndex);\n  },\n  parse: function () {\n    var source = this.source;\n    var i = this.skip(IS_WHITESPACE, this.index);\n    var fork = this.fork(i);\n    var chr = at(source, i);\n    if (exec(IS_NUMBER_START, chr)) return fork.number();\n    switch (chr) {\n      case '{':\n        return fork.object();\n      case '[':\n        return fork.array();\n      case '\"':\n        return fork.string();\n      case 't':\n        return fork.keyword(true);\n      case 'f':\n        return fork.keyword(false);\n      case 'n':\n        return fork.keyword(null);\n    } throw new SyntaxError('Unexpected character: \"' + chr + '\" at: ' + i);\n  },\n  node: function (type, value, start, end, nodes) {\n    return new Node(value, end, type ? null : slice(this.source, start, end), nodes);\n  },\n  object: function () {\n    var source = this.source;\n    var i = this.index + 1;\n    var expectKeypair = false;\n    var object = {};\n    var nodes = {};\n    while (i < source.length) {\n      i = this.until(['\"', '}'], i);\n      if (at(source, i) === '}' && !expectKeypair) {\n        i++;\n        break;\n      }\n      // Parsing the key\n      var result = this.fork(i).string();\n      var key = result.value;\n      i = result.end;\n      i = this.until([':'], i) + 1;\n      // Parsing value\n      i = this.skip(IS_WHITESPACE, i);\n      result = this.fork(i).parse();\n      createProperty(nodes, key, result);\n      createProperty(object, key, result.value);\n      i = this.until([',', '}'], result.end);\n      var chr = at(source, i);\n      if (chr === ',') {\n        expectKeypair = true;\n        i++;\n      } else if (chr === '}') {\n        i++;\n        break;\n      }\n    }\n    return this.node(OBJECT, object, this.index, i, nodes);\n  },\n  array: function () {\n    var source = this.source;\n    var i = this.index + 1;\n    var expectElement = false;\n    var array = [];\n    var nodes = [];\n    while (i < source.length) {\n      i = this.skip(IS_WHITESPACE, i);\n      if (at(source, i) === ']' && !expectElement) {\n        i++;\n        break;\n      }\n      var result = this.fork(i).parse();\n      push(nodes, result);\n      push(array, result.value);\n      i = this.until([',', ']'], result.end);\n      if (at(source, i) === ',') {\n        expectElement = true;\n        i++;\n      } else if (at(source, i) === ']') {\n        i++;\n        break;\n      }\n    }\n    return this.node(OBJECT, array, this.index, i, nodes);\n  },\n  string: function () {\n    var index = this.index;\n    var parsed = parseJSONString(this.source, this.index + 1);\n    return this.node(PRIMITIVE, parsed.value, index, parsed.end);\n  },\n  number: function () {\n    var source = this.source;\n    var startIndex = this.index;\n    var i = startIndex;\n    if (at(source, i) === '-') i++;\n    if (at(source, i) === '0') i++;\n    else if (exec(IS_NON_ZERO_DIGIT, at(source, i))) i = this.skip(IS_DIGIT, ++i);\n    else throw new SyntaxError('Failed to parse number at: ' + i);\n    if (at(source, i) === '.') i = this.skip(IS_DIGIT, ++i);\n    if (at(source, i) === 'e' || at(source, i) === 'E') {\n      i++;\n      if (at(source, i) === '+' || at(source, i) === '-') i++;\n      var exponentStartIndex = i;\n      i = this.skip(IS_DIGIT, i);\n      if (exponentStartIndex === i) throw new SyntaxError(\"Failed to parse number's exponent value at: \" + i);\n    }\n    return this.node(PRIMITIVE, Number(slice(source, startIndex, i)), startIndex, i);\n  },\n  keyword: function (value) {\n    var keyword = '' + value;\n    var index = this.index;\n    var endIndex = index + keyword.length;\n    if (slice(this.source, index, endIndex) !== keyword) throw new SyntaxError('Failed to parse value at: ' + index);\n    return this.node(PRIMITIVE, value, index, endIndex);\n  },\n  skip: function (regex, i) {\n    var source = this.source;\n    for (; i < source.length; i++) if (!exec(regex, at(source, i))) break;\n    return i;\n  },\n  until: function (array, i) {\n    i = this.skip(IS_WHITESPACE, i);\n    var chr = at(this.source, i);\n    for (var j = 0; j < array.length; j++) if (array[j] === chr) return i;\n    throw new SyntaxError('Unexpected character: \"' + chr + '\" at: ' + i);\n  }\n};\n\nvar NO_SOURCE_SUPPORT = fails(function () {\n  var unsafeInt = '9007199254740993';\n  var source;\n  nativeParse(unsafeInt, function (key, value, context) {\n    source = context.source;\n  });\n  return source !== unsafeInt;\n});\n\nvar PROPER_BASE_PARSE = NATIVE_SYMBOL && !fails(function () {\n  // Safari 9 bug\n  return 1 / nativeParse('-0 \\t') !== -Infinity;\n});\n\n// `JSON.parse` method\n// https://tc39.es/ecma262/#sec-json.parse\n// https://github.com/tc39/proposal-json-parse-with-source\n$({ target: 'JSON', stat: true, forced: NO_SOURCE_SUPPORT }, {\n  parse: function parse(text, reviver) {\n    return PROPER_BASE_PARSE && !isCallable(reviver) ? nativeParse(text) : $parse(text, reviver);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar difference = require('../internals/set-difference');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.difference` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('difference') }, {\n  difference: difference\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar intersection = require('../internals/set-intersection');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\nvar INCORRECT = !setMethodAcceptSetLike('intersection') || fails(function () {\n  // eslint-disable-next-line es/no-array-from, es/no-set -- testing\n  return Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2]))) !== '3,2';\n});\n\n// `Set.prototype.intersection` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n  intersection: intersection\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isDisjointFrom = require('../internals/set-is-disjoint-from');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.isDisjointFrom` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('isDisjointFrom') }, {\n  isDisjointFrom: isDisjointFrom\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isSubsetOf = require('../internals/set-is-subset-of');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.isSubsetOf` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('isSubsetOf') }, {\n  isSubsetOf: isSubsetOf\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isSupersetOf = require('../internals/set-is-superset-of');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.isSupersetOf` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('isSupersetOf') }, {\n  isSupersetOf: isSupersetOf\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar symmetricDifference = require('../internals/set-symmetric-difference');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.symmetricDifference` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('symmetricDifference') }, {\n  symmetricDifference: symmetricDifference\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar union = require('../internals/set-union');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.union` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('union') }, {\n  union: union\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar anInstance = require('../internals/an-instance');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar DOMExceptionConstants = require('../internals/dom-exception-constants');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar DOM_EXCEPTION = 'DOMException';\nvar Error = getBuiltIn('Error');\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION);\n\nvar $DOMException = function DOMException() {\n  anInstance(this, DOMExceptionPrototype);\n  var argumentsLength = arguments.length;\n  var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\n  var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\n  var that = new NativeDOMException(message, name);\n  var error = new Error(message);\n  error.name = DOM_EXCEPTION;\n  defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n  inheritIfRequired(that, this, $DOMException);\n  return that;\n};\n\nvar DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\n\nvar ERROR_HAS_STACK = 'stack' in new Error(DOM_EXCEPTION);\nvar DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(global, DOM_EXCEPTION);\n\n// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\n// https://github.com/Jarred-Sumner/bun/issues/399\nvar BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\n\nvar FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\n\n// `DOMException` constructor patch for `.stack` where it's required\n// https://webidl.spec.whatwg.org/#es-DOMException-specialness\n$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic\n  DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n});\n\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n\nif (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\n  if (!IS_PURE) {\n    defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\n  }\n\n  for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n    var constant = DOMExceptionConstants[key];\n    var constantName = constant.s;\n    if (!hasOwn(PolyfilledDOMException, constantName)) {\n      defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\n    }\n  }\n}\n","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar append = uncurryThis(URLSearchParamsPrototype.append);\nvar $delete = uncurryThis(URLSearchParamsPrototype['delete']);\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\nvar push = uncurryThis([].push);\nvar params = new $URLSearchParams('a=1&a=2&b=3');\n\nparams['delete']('a', 1);\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nparams['delete']('b', undefined);\n\nif (params + '' !== 'a=2') {\n  defineBuiltIn(URLSearchParamsPrototype, 'delete', function (name /* , value */) {\n    var length = arguments.length;\n    var $value = length < 2 ? undefined : arguments[1];\n    if (length && $value === undefined) return $delete(this, name);\n    var entries = [];\n    forEach(this, function (v, k) { // also validates `this`\n      push(entries, { key: k, value: v });\n    });\n    validateArgumentsLength(length, 1);\n    var key = toString(name);\n    var value = toString($value);\n    var index = 0;\n    var dindex = 0;\n    var found = false;\n    var entriesLength = entries.length;\n    var entry;\n    while (index < entriesLength) {\n      entry = entries[index++];\n      if (found || entry.key === key) {\n        found = true;\n        $delete(this, entry.key);\n      } else dindex++;\n    }\n    while (dindex < entriesLength) {\n      entry = entries[dindex++];\n      if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value);\n    }\n  }, { enumerable: true, unsafe: true });\n}\n","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar getAll = uncurryThis(URLSearchParamsPrototype.getAll);\nvar $has = uncurryThis(URLSearchParamsPrototype.has);\nvar params = new $URLSearchParams('a=1');\n\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nif (params.has('a', 2) || !params.has('a', undefined)) {\n  defineBuiltIn(URLSearchParamsPrototype, 'has', function has(name /* , value */) {\n    var length = arguments.length;\n    var $value = length < 2 ? undefined : arguments[1];\n    if (length && $value === undefined) return $has(this, name);\n    var values = getAll(this, name); // also validates `this`\n    validateArgumentsLength(length, 1);\n    var value = toString($value);\n    var index = 0;\n    while (index < values.length) {\n      if (values[index++] === value) return true;\n    } return false;\n  }, { enumerable: true, unsafe: true });\n}\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\n\nvar URLSearchParamsPrototype = URLSearchParams.prototype;\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\n\n// `URLSearchParams.prototype.size` getter\n// https://github.com/whatwg/url/pull/734\nif (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {\n  defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n    get: function size() {\n      var count = 0;\n      forEach(this, function () { count++; });\n      return count;\n    },\n    configurable: true,\n    enumerable: true\n  });\n}\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * PLEASE NOTE: This file is currently imported in both the `../display/` and\n *              `../scripting_api/` folders, hence be EXTREMELY careful about\n *              introducing any dependencies here since that can lead to an\n *              unexpected/unnecessary size increase of the *built* files.\n */\n\nfunction makeColorComp(n) {\n  return Math.floor(Math.max(0, Math.min(1, n)) * 255)\n    .toString(16)\n    .padStart(2, \"0\");\n}\n\nfunction scaleAndClamp(x) {\n  return Math.max(0, Math.min(255, 255 * x));\n}\n\n// PDF specifications section 10.3\nclass ColorConverters {\n  static CMYK_G([c, y, m, k]) {\n    return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n  }\n\n  static G_CMYK([g]) {\n    return [\"CMYK\", 0, 0, 0, 1 - g];\n  }\n\n  static G_RGB([g]) {\n    return [\"RGB\", g, g, g];\n  }\n\n  static G_rgb([g]) {\n    g = scaleAndClamp(g);\n    return [g, g, g];\n  }\n\n  static G_HTML([g]) {\n    const G = makeColorComp(g);\n    return `#${G}${G}${G}`;\n  }\n\n  static RGB_G([r, g, b]) {\n    return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n  }\n\n  static RGB_rgb(color) {\n    return color.map(scaleAndClamp);\n  }\n\n  static RGB_HTML(color) {\n    return `#${color.map(makeColorComp).join(\"\")}`;\n  }\n\n  static T_HTML() {\n    return \"#00000000\";\n  }\n\n  static T_rgb() {\n    return [null];\n  }\n\n  static CMYK_RGB([c, y, m, k]) {\n    return [\n      \"RGB\",\n      1 - Math.min(1, c + k),\n      1 - Math.min(1, m + k),\n      1 - Math.min(1, y + k),\n    ];\n  }\n\n  static CMYK_rgb([c, y, m, k]) {\n    return [\n      scaleAndClamp(1 - Math.min(1, c + k)),\n      scaleAndClamp(1 - Math.min(1, m + k)),\n      scaleAndClamp(1 - Math.min(1, y + k)),\n    ];\n  }\n\n  static CMYK_HTML(components) {\n    const rgb = this.CMYK_RGB(components).slice(1);\n    return this.RGB_HTML(rgb);\n  }\n\n  static RGB_CMYK([r, g, b]) {\n    const c = 1 - r;\n    const m = 1 - g;\n    const y = 1 - b;\n    const k = Math.min(c, m, y);\n    return [\"CMYK\", c, m, y, k];\n  }\n}\n\nexport { ColorConverters };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../web/text_accessibility.js\").TextAccessibilityManager} TextAccessibilityManager */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../web/interfaces\").IDownloadManager} IDownloadManager */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport {\n  AnnotationBorderStyleType,\n  AnnotationEditorType,\n  AnnotationPrefix,\n  AnnotationType,\n  FeatureTest,\n  LINE_FACTOR,\n  shadow,\n  unreachable,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  DOMSVGFactory,\n  getFilenameFromUrl,\n  PDFDateString,\n  setLayerDimensions,\n} from \"./display_utils.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { ColorConverters } from \"../shared/scripting_utils.js\";\nimport { XfaLayer } from \"./xfa_layer.js\";\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\n\nfunction getRectDims(rect) {\n  return {\n    width: rect[2] - rect[0],\n    height: rect[3] - rect[1],\n  };\n}\n\n/**\n * @typedef {Object} AnnotationElementParameters\n * @property {Object} data\n * @property {HTMLDivElement} layer\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} [downloadManager]\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n *   for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {Object} svgFactory\n * @property {boolean} [enableScripting]\n * @property {boolean} [hasJSActions]\n * @property {Object} [fieldObjects]\n */\n\nclass AnnotationElementFactory {\n  /**\n   * @param {AnnotationElementParameters} parameters\n   * @returns {AnnotationElement}\n   */\n  static create(parameters) {\n    const subtype = parameters.data.annotationType;\n\n    switch (subtype) {\n      case AnnotationType.LINK:\n        return new LinkAnnotationElement(parameters);\n\n      case AnnotationType.TEXT:\n        return new TextAnnotationElement(parameters);\n\n      case AnnotationType.WIDGET:\n        const fieldType = parameters.data.fieldType;\n\n        switch (fieldType) {\n          case \"Tx\":\n            return new TextWidgetAnnotationElement(parameters);\n          case \"Btn\":\n            if (parameters.data.radioButton) {\n              return new RadioButtonWidgetAnnotationElement(parameters);\n            } else if (parameters.data.checkBox) {\n              return new CheckboxWidgetAnnotationElement(parameters);\n            }\n            return new PushButtonWidgetAnnotationElement(parameters);\n          case \"Ch\":\n            return new ChoiceWidgetAnnotationElement(parameters);\n          case \"Sig\":\n            return new SignatureWidgetAnnotationElement(parameters);\n        }\n        return new WidgetAnnotationElement(parameters);\n\n      case AnnotationType.POPUP:\n        return new PopupAnnotationElement(parameters);\n\n      case AnnotationType.FREETEXT:\n        return new FreeTextAnnotationElement(parameters);\n\n      case AnnotationType.LINE:\n        return new LineAnnotationElement(parameters);\n\n      case AnnotationType.SQUARE:\n        return new SquareAnnotationElement(parameters);\n\n      case AnnotationType.CIRCLE:\n        return new CircleAnnotationElement(parameters);\n\n      case AnnotationType.POLYLINE:\n        return new PolylineAnnotationElement(parameters);\n\n      case AnnotationType.CARET:\n        return new CaretAnnotationElement(parameters);\n\n      case AnnotationType.INK:\n        return new InkAnnotationElement(parameters);\n\n      case AnnotationType.POLYGON:\n        return new PolygonAnnotationElement(parameters);\n\n      case AnnotationType.HIGHLIGHT:\n        return new HighlightAnnotationElement(parameters);\n\n      case AnnotationType.UNDERLINE:\n        return new UnderlineAnnotationElement(parameters);\n\n      case AnnotationType.SQUIGGLY:\n        return new SquigglyAnnotationElement(parameters);\n\n      case AnnotationType.STRIKEOUT:\n        return new StrikeOutAnnotationElement(parameters);\n\n      case AnnotationType.STAMP:\n        return new StampAnnotationElement(parameters);\n\n      case AnnotationType.FILEATTACHMENT:\n        return new FileAttachmentAnnotationElement(parameters);\n\n      default:\n        return new AnnotationElement(parameters);\n    }\n  }\n}\n\nclass AnnotationElement {\n  #hasBorder = false;\n\n  constructor(\n    parameters,\n    {\n      isRenderable = false,\n      ignoreBorder = false,\n      createQuadrilaterals = false,\n    } = {}\n  ) {\n    this.isRenderable = isRenderable;\n    this.data = parameters.data;\n    this.layer = parameters.layer;\n    this.linkService = parameters.linkService;\n    this.downloadManager = parameters.downloadManager;\n    this.imageResourcesPath = parameters.imageResourcesPath;\n    this.renderForms = parameters.renderForms;\n    this.svgFactory = parameters.svgFactory;\n    this.annotationStorage = parameters.annotationStorage;\n    this.enableScripting = parameters.enableScripting;\n    this.hasJSActions = parameters.hasJSActions;\n    this._fieldObjects = parameters.fieldObjects;\n    this.parent = parameters.parent;\n\n    if (isRenderable) {\n      this.container = this._createContainer(ignoreBorder);\n    }\n    if (createQuadrilaterals) {\n      this._createQuadrilaterals();\n    }\n  }\n\n  static _hasPopupData({ titleObj, contentsObj, richText }) {\n    return !!(titleObj?.str || contentsObj?.str || richText?.str);\n  }\n\n  get hasPopupData() {\n    return AnnotationElement._hasPopupData(this.data);\n  }\n\n  /**\n   * Create an empty container for the annotation's HTML element.\n   *\n   * @private\n   * @param {boolean} ignoreBorder\n   * @memberof AnnotationElement\n   * @returns {HTMLElement} A section element.\n   */\n  _createContainer(ignoreBorder) {\n    const {\n      data,\n      parent: { page, viewport },\n    } = this;\n\n    const container = document.createElement(\"section\");\n    container.setAttribute(\"data-annotation-id\", data.id);\n    if (!(this instanceof WidgetAnnotationElement)) {\n      container.tabIndex = DEFAULT_TAB_INDEX;\n    }\n\n    // The accessibility manager will move the annotation in the DOM in\n    // order to match the visual ordering.\n    // But if an annotation is above an other one, then we must draw it\n    // after the other one whatever the order is in the DOM, hence the\n    // use of the z-index.\n    container.style.zIndex = this.parent.zIndex++;\n\n    if (this.data.popupRef) {\n      container.setAttribute(\"aria-haspopup\", \"dialog\");\n    }\n\n    if (data.noRotate) {\n      container.classList.add(\"norotate\");\n    }\n\n    const { pageWidth, pageHeight, pageX, pageY } = viewport.rawDims;\n\n    if (!data.rect || this instanceof PopupAnnotationElement) {\n      const { rotation } = data;\n      if (!data.hasOwnCanvas && rotation !== 0) {\n        this.setRotation(rotation, container);\n      }\n      return container;\n    }\n\n    const { width, height } = getRectDims(data.rect);\n\n    // Do *not* modify `data.rect`, since that will corrupt the annotation\n    // position on subsequent calls to `_createContainer` (see issue 6804).\n    const rect = Util.normalizeRect([\n      data.rect[0],\n      page.view[3] - data.rect[1] + page.view[1],\n      data.rect[2],\n      page.view[3] - data.rect[3] + page.view[1],\n    ]);\n\n    if (!ignoreBorder && data.borderStyle.width > 0) {\n      container.style.borderWidth = `${data.borderStyle.width}px`;\n\n      const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n      const verticalRadius = data.borderStyle.verticalCornerRadius;\n      if (horizontalRadius > 0 || verticalRadius > 0) {\n        const radius = `calc(${horizontalRadius}px * var(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`;\n        container.style.borderRadius = radius;\n      } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n        const radius = `calc(${width}px * var(--scale-factor)) / calc(${height}px * var(--scale-factor))`;\n        container.style.borderRadius = radius;\n      }\n\n      switch (data.borderStyle.style) {\n        case AnnotationBorderStyleType.SOLID:\n          container.style.borderStyle = \"solid\";\n          break;\n\n        case AnnotationBorderStyleType.DASHED:\n          container.style.borderStyle = \"dashed\";\n          break;\n\n        case AnnotationBorderStyleType.BEVELED:\n          warn(\"Unimplemented border style: beveled\");\n          break;\n\n        case AnnotationBorderStyleType.INSET:\n          warn(\"Unimplemented border style: inset\");\n          break;\n\n        case AnnotationBorderStyleType.UNDERLINE:\n          container.style.borderBottomStyle = \"solid\";\n          break;\n\n        default:\n          break;\n      }\n\n      const borderColor = data.borderColor || null;\n      if (borderColor) {\n        this.#hasBorder = true;\n        container.style.borderColor = Util.makeHexColor(\n          borderColor[0] | 0,\n          borderColor[1] | 0,\n          borderColor[2] | 0\n        );\n      } else {\n        // Transparent (invisible) border, so do not draw it at all.\n        container.style.borderWidth = 0;\n      }\n    }\n\n    container.style.left = `${(100 * (rect[0] - pageX)) / pageWidth}%`;\n    container.style.top = `${(100 * (rect[1] - pageY)) / pageHeight}%`;\n\n    const { rotation } = data;\n    if (data.hasOwnCanvas || rotation === 0) {\n      container.style.width = `${(100 * width) / pageWidth}%`;\n      container.style.height = `${(100 * height) / pageHeight}%`;\n    } else {\n      this.setRotation(rotation, container);\n    }\n\n    return container;\n  }\n\n  setRotation(angle, container = this.container) {\n    if (!this.data.rect) {\n      return;\n    }\n    const { pageWidth, pageHeight } = this.parent.viewport.rawDims;\n    const { width, height } = getRectDims(this.data.rect);\n\n    let elementWidth, elementHeight;\n    if (angle % 180 === 0) {\n      elementWidth = (100 * width) / pageWidth;\n      elementHeight = (100 * height) / pageHeight;\n    } else {\n      elementWidth = (100 * height) / pageWidth;\n      elementHeight = (100 * width) / pageHeight;\n    }\n\n    container.style.width = `${elementWidth}%`;\n    container.style.height = `${elementHeight}%`;\n\n    container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n  }\n\n  get _commonActions() {\n    const setColor = (jsName, styleName, event) => {\n      const color = event.detail[jsName];\n      const colorType = color[0];\n      const colorArray = color.slice(1);\n      event.target.style[styleName] =\n        ColorConverters[`${colorType}_HTML`](colorArray);\n      this.annotationStorage.setValue(this.data.id, {\n        [styleName]: ColorConverters[`${colorType}_rgb`](colorArray),\n      });\n    };\n\n    return shadow(this, \"_commonActions\", {\n      display: event => {\n        const { display } = event.detail;\n        // See scripting/constants.js for the values of `Display`.\n        // 0 = visible, 1 = hidden, 2 = noPrint and 3 = noView.\n        const hidden = display % 2 === 1;\n        this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n        this.annotationStorage.setValue(this.data.id, {\n          noView: hidden,\n          noPrint: display === 1 || display === 2,\n        });\n      },\n      print: event => {\n        this.annotationStorage.setValue(this.data.id, {\n          noPrint: !event.detail.print,\n        });\n      },\n      hidden: event => {\n        const { hidden } = event.detail;\n        this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n        this.annotationStorage.setValue(this.data.id, {\n          noPrint: hidden,\n          noView: hidden,\n        });\n      },\n      focus: event => {\n        setTimeout(() => event.target.focus({ preventScroll: false }), 0);\n      },\n      userName: event => {\n        // tooltip\n        event.target.title = event.detail.userName;\n      },\n      readonly: event => {\n        event.target.disabled = event.detail.readonly;\n      },\n      required: event => {\n        this._setRequired(event.target, event.detail.required);\n      },\n      bgColor: event => {\n        setColor(\"bgColor\", \"backgroundColor\", event);\n      },\n      fillColor: event => {\n        setColor(\"fillColor\", \"backgroundColor\", event);\n      },\n      fgColor: event => {\n        setColor(\"fgColor\", \"color\", event);\n      },\n      textColor: event => {\n        setColor(\"textColor\", \"color\", event);\n      },\n      borderColor: event => {\n        setColor(\"borderColor\", \"borderColor\", event);\n      },\n      strokeColor: event => {\n        setColor(\"strokeColor\", \"borderColor\", event);\n      },\n      rotation: event => {\n        const angle = event.detail.rotation;\n        this.setRotation(angle);\n        this.annotationStorage.setValue(this.data.id, {\n          rotation: angle,\n        });\n      },\n    });\n  }\n\n  _dispatchEventFromSandbox(actions, jsEvent) {\n    const commonActions = this._commonActions;\n    for (const name of Object.keys(jsEvent.detail)) {\n      const action = actions[name] || commonActions[name];\n      action?.(jsEvent);\n    }\n  }\n\n  _setDefaultPropertiesFromJS(element) {\n    if (!this.enableScripting) {\n      return;\n    }\n\n    // Some properties may have been updated thanks to JS.\n    const storedData = this.annotationStorage.getRawValue(this.data.id);\n    if (!storedData) {\n      return;\n    }\n\n    const commonActions = this._commonActions;\n    for (const [actionName, detail] of Object.entries(storedData)) {\n      const action = commonActions[actionName];\n      if (action) {\n        const eventProxy = {\n          detail: {\n            [actionName]: detail,\n          },\n          target: element,\n        };\n        action(eventProxy);\n        // The action has been consumed: no need to keep it.\n        delete storedData[actionName];\n      }\n    }\n  }\n\n  /**\n   * Create quadrilaterals from the annotation's quadpoints.\n   *\n   * @private\n   * @memberof AnnotationElement\n   */\n  _createQuadrilaterals() {\n    if (!this.container) {\n      return;\n    }\n    const { quadPoints } = this.data;\n    if (!quadPoints) {\n      return;\n    }\n\n    const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect;\n\n    if (quadPoints.length === 1) {\n      const [, { x: trX, y: trY }, { x: blX, y: blY }] = quadPoints[0];\n      if (\n        rectTrX === trX &&\n        rectTrY === trY &&\n        rectBlX === blX &&\n        rectBlY === blY\n      ) {\n        // The quadpoints cover the whole annotation rectangle, so no need to\n        // create a quadrilateral.\n        return;\n      }\n    }\n\n    const { style } = this.container;\n    let svgBuffer;\n    if (this.#hasBorder) {\n      const { borderColor, borderWidth } = style;\n      style.borderWidth = 0;\n      svgBuffer = [\n        \"url('data:image/svg+xml;utf8,\",\n        `<svg xmlns=\"http://www.w3.org/2000/svg\"`,\n        ` preserveAspectRatio=\"none\" viewBox=\"0 0 1 1\">`,\n        `<g fill=\"transparent\" stroke=\"${borderColor}\" stroke-width=\"${borderWidth}\">`,\n      ];\n      this.container.classList.add(\"hasBorder\");\n    }\n\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n      this.container.classList.add(\"hasClipPath\");\n    }\n\n    const width = rectTrX - rectBlX;\n    const height = rectTrY - rectBlY;\n\n    const { svgFactory } = this;\n    const svg = svgFactory.createElement(\"svg\");\n    svg.classList.add(\"quadrilateralsContainer\");\n    svg.setAttribute(\"width\", 0);\n    svg.setAttribute(\"height\", 0);\n    const defs = svgFactory.createElement(\"defs\");\n    svg.append(defs);\n    const clipPath = svgFactory.createElement(\"clipPath\");\n    const id = `clippath_${this.data.id}`;\n    clipPath.setAttribute(\"id\", id);\n    clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n    defs.append(clipPath);\n\n    for (const [, { x: trX, y: trY }, { x: blX, y: blY }] of quadPoints) {\n      const rect = svgFactory.createElement(\"rect\");\n      const x = (blX - rectBlX) / width;\n      const y = (rectTrY - trY) / height;\n      const rectWidth = (trX - blX) / width;\n      const rectHeight = (trY - blY) / height;\n      rect.setAttribute(\"x\", x);\n      rect.setAttribute(\"y\", y);\n      rect.setAttribute(\"width\", rectWidth);\n      rect.setAttribute(\"height\", rectHeight);\n      clipPath.append(rect);\n      svgBuffer?.push(\n        `<rect vector-effect=\"non-scaling-stroke\" x=\"${x}\" y=\"${y}\" width=\"${rectWidth}\" height=\"${rectHeight}\"/>`\n      );\n    }\n\n    if (this.#hasBorder) {\n      svgBuffer.push(`</g></svg>')`);\n      style.backgroundImage = svgBuffer.join(\"\");\n    }\n\n    this.container.append(svg);\n    this.container.style.clipPath = `url(#${id})`;\n  }\n\n  /**\n   * Create a popup for the annotation's HTML element. This is used for\n   * annotations that do not have a Popup entry in the dictionary, but\n   * are of a type that works with popups (such as Highlight annotations).\n   *\n   * @private\n   * @memberof AnnotationElement\n   */\n  _createPopup() {\n    const { container, data } = this;\n    container.setAttribute(\"aria-haspopup\", \"dialog\");\n\n    const popup = new PopupAnnotationElement({\n      data: {\n        color: data.color,\n        titleObj: data.titleObj,\n        modificationDate: data.modificationDate,\n        contentsObj: data.contentsObj,\n        richText: data.richText,\n        parentRect: data.rect,\n        borderStyle: 0,\n        id: `popup_${data.id}`,\n        rotation: data.rotation,\n      },\n      parent: this.parent,\n      elements: [this],\n    });\n    this.parent.div.append(popup.render());\n  }\n\n  /**\n   * Render the annotation's HTML element(s).\n   *\n   * @public\n   * @memberof AnnotationElement\n   */\n  render() {\n    unreachable(\"Abstract method `AnnotationElement.render` called\");\n  }\n\n  /**\n   * @private\n   * @returns {Array}\n   */\n  _getElementsByName(name, skipId = null) {\n    const fields = [];\n\n    if (this._fieldObjects) {\n      const fieldObj = this._fieldObjects[name];\n      if (fieldObj) {\n        for (const { page, id, exportValues } of fieldObj) {\n          if (page === -1) {\n            continue;\n          }\n          if (id === skipId) {\n            continue;\n          }\n          const exportValue =\n            typeof exportValues === \"string\" ? exportValues : null;\n\n          const domElement = document.querySelector(\n            `[data-element-id=\"${id}\"]`\n          );\n          if (domElement && !GetElementsByNameSet.has(domElement)) {\n            warn(`_getElementsByName - element not allowed: ${id}`);\n            continue;\n          }\n          fields.push({ id, exportValue, domElement });\n        }\n      }\n      return fields;\n    }\n    // Fallback to a regular DOM lookup, to ensure that the standalone\n    // viewer components won't break.\n    for (const domElement of document.getElementsByName(name)) {\n      const { exportValue } = domElement;\n      const id = domElement.getAttribute(\"data-element-id\");\n      if (id === skipId) {\n        continue;\n      }\n      if (!GetElementsByNameSet.has(domElement)) {\n        continue;\n      }\n      fields.push({ id, exportValue, domElement });\n    }\n    return fields;\n  }\n\n  show() {\n    if (this.container) {\n      this.container.hidden = false;\n    }\n    this.popup?.maybeShow();\n  }\n\n  hide() {\n    if (this.container) {\n      this.container.hidden = true;\n    }\n    this.popup?.forceHide();\n  }\n\n  /**\n   * Get the HTML element(s) which can trigger a popup when clicked or hovered.\n   *\n   * @public\n   * @memberof AnnotationElement\n   * @returns {Array<HTMLElement>|HTMLElement} An array of elements or an\n   *          element.\n   */\n  getElementsToTriggerPopup() {\n    return this.container;\n  }\n\n  addHighlightArea() {\n    const triggers = this.getElementsToTriggerPopup();\n    if (Array.isArray(triggers)) {\n      for (const element of triggers) {\n        element.classList.add(\"highlightArea\");\n      }\n    } else {\n      triggers.classList.add(\"highlightArea\");\n    }\n  }\n\n  get _isEditable() {\n    return false;\n  }\n\n  _editOnDoubleClick() {\n    if (!this._isEditable) {\n      return;\n    }\n    const {\n      annotationEditorType: mode,\n      data: { id: editId },\n    } = this;\n    this.container.addEventListener(\"dblclick\", () => {\n      this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n        source: this,\n        mode,\n        editId,\n      });\n    });\n  }\n}\n\nclass LinkAnnotationElement extends AnnotationElement {\n  constructor(parameters, options = null) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: !!options?.ignoreBorder,\n      createQuadrilaterals: true,\n    });\n    this.isTooltipOnly = parameters.data.isTooltipOnly;\n  }\n\n  render() {\n    const { data, linkService } = this;\n    const link = document.createElement(\"a\");\n    link.setAttribute(\"data-element-id\", data.id);\n    let isBound = false;\n\n    if (data.url) {\n      linkService.addLinkAttributes(link, data.url, data.newWindow);\n      isBound = true;\n    } else if (data.action) {\n      this._bindNamedAction(link, data.action);\n      isBound = true;\n    } else if (data.attachment) {\n      this.#bindAttachment(link, data.attachment, data.attachmentDest);\n      isBound = true;\n    } else if (data.setOCGState) {\n      this.#bindSetOCGState(link, data.setOCGState);\n      isBound = true;\n    } else if (data.dest) {\n      this._bindLink(link, data.dest);\n      isBound = true;\n    } else {\n      if (\n        data.actions &&\n        (data.actions.Action ||\n          data.actions[\"Mouse Up\"] ||\n          data.actions[\"Mouse Down\"]) &&\n        this.enableScripting &&\n        this.hasJSActions\n      ) {\n        this._bindJSAction(link, data);\n        isBound = true;\n      }\n\n      if (data.resetForm) {\n        this._bindResetFormAction(link, data.resetForm);\n        isBound = true;\n      } else if (this.isTooltipOnly && !isBound) {\n        this._bindLink(link, \"\");\n        isBound = true;\n      }\n    }\n\n    this.container.classList.add(\"linkAnnotation\");\n    if (isBound) {\n      this.container.append(link);\n    }\n\n    return this.container;\n  }\n\n  #setInternalLink() {\n    this.container.setAttribute(\"data-internal-link\", \"\");\n  }\n\n  /**\n   * Bind internal links to the link element.\n   *\n   * @private\n   * @param {Object} link\n   * @param {Object} destination\n   * @memberof LinkAnnotationElement\n   */\n  _bindLink(link, destination) {\n    link.href = this.linkService.getDestinationHash(destination);\n    link.onclick = () => {\n      if (destination) {\n        this.linkService.goToDestination(destination);\n      }\n      return false;\n    };\n    if (destination || destination === /* isTooltipOnly = */ \"\") {\n      this.#setInternalLink();\n    }\n  }\n\n  /**\n   * Bind named actions to the link element.\n   *\n   * @private\n   * @param {Object} link\n   * @param {Object} action\n   * @memberof LinkAnnotationElement\n   */\n  _bindNamedAction(link, action) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    link.onclick = () => {\n      this.linkService.executeNamedAction(action);\n      return false;\n    };\n    this.#setInternalLink();\n  }\n\n  /**\n   * Bind attachments to the link element.\n   * @param {Object} link\n   * @param {Object} attachment\n   * @param {str} [dest]\n   */\n  #bindAttachment(link, attachment, dest = null) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    link.onclick = () => {\n      this.downloadManager?.openOrDownloadData(\n        attachment.content,\n        attachment.filename,\n        dest\n      );\n      return false;\n    };\n    this.#setInternalLink();\n  }\n\n  /**\n   * Bind SetOCGState actions to the link element.\n   * @param {Object} link\n   * @param {Object} action\n   */\n  #bindSetOCGState(link, action) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    link.onclick = () => {\n      this.linkService.executeSetOCGState(action);\n      return false;\n    };\n    this.#setInternalLink();\n  }\n\n  /**\n   * Bind JS actions to the link element.\n   *\n   * @private\n   * @param {Object} link\n   * @param {Object} data\n   * @memberof LinkAnnotationElement\n   */\n  _bindJSAction(link, data) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    const map = new Map([\n      [\"Action\", \"onclick\"],\n      [\"Mouse Up\", \"onmouseup\"],\n      [\"Mouse Down\", \"onmousedown\"],\n    ]);\n    for (const name of Object.keys(data.actions)) {\n      const jsName = map.get(name);\n      if (!jsName) {\n        continue;\n      }\n      link[jsName] = () => {\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: data.id,\n            name,\n          },\n        });\n        return false;\n      };\n    }\n\n    if (!link.onclick) {\n      link.onclick = () => false;\n    }\n    this.#setInternalLink();\n  }\n\n  _bindResetFormAction(link, resetForm) {\n    const otherClickAction = link.onclick;\n    if (!otherClickAction) {\n      link.href = this.linkService.getAnchorUrl(\"\");\n    }\n    this.#setInternalLink();\n\n    if (!this._fieldObjects) {\n      warn(\n        `_bindResetFormAction - \"resetForm\" action not supported, ` +\n          \"ensure that the `fieldObjects` parameter is provided.\"\n      );\n      if (!otherClickAction) {\n        link.onclick = () => false;\n      }\n      return;\n    }\n\n    link.onclick = () => {\n      otherClickAction?.();\n\n      const {\n        fields: resetFormFields,\n        refs: resetFormRefs,\n        include,\n      } = resetForm;\n\n      const allFields = [];\n      if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n        const fieldIds = new Set(resetFormRefs);\n        for (const fieldName of resetFormFields) {\n          const fields = this._fieldObjects[fieldName] || [];\n          for (const { id } of fields) {\n            fieldIds.add(id);\n          }\n        }\n        for (const fields of Object.values(this._fieldObjects)) {\n          for (const field of fields) {\n            if (fieldIds.has(field.id) === include) {\n              allFields.push(field);\n            }\n          }\n        }\n      } else {\n        for (const fields of Object.values(this._fieldObjects)) {\n          allFields.push(...fields);\n        }\n      }\n\n      const storage = this.annotationStorage;\n      const allIds = [];\n      for (const field of allFields) {\n        const { id } = field;\n        allIds.push(id);\n        switch (field.type) {\n          case \"text\": {\n            const value = field.defaultValue || \"\";\n            storage.setValue(id, { value });\n            break;\n          }\n          case \"checkbox\":\n          case \"radiobutton\": {\n            const value = field.defaultValue === field.exportValues;\n            storage.setValue(id, { value });\n            break;\n          }\n          case \"combobox\":\n          case \"listbox\": {\n            const value = field.defaultValue || \"\";\n            storage.setValue(id, { value });\n            break;\n          }\n          default:\n            continue;\n        }\n\n        const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n        if (!domElement) {\n          continue;\n        } else if (!GetElementsByNameSet.has(domElement)) {\n          warn(`_bindResetFormAction - element not allowed: ${id}`);\n          continue;\n        }\n        domElement.dispatchEvent(new Event(\"resetform\"));\n      }\n\n      if (this.enableScripting) {\n        // Update the values in the sandbox.\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: \"app\",\n            ids: allIds,\n            name: \"ResetForm\",\n          },\n        });\n      }\n\n      return false;\n    };\n  }\n}\n\nclass TextAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: true });\n  }\n\n  render() {\n    this.container.classList.add(\"textAnnotation\");\n\n    const image = document.createElement(\"img\");\n    image.src =\n      this.imageResourcesPath +\n      \"annotation-\" +\n      this.data.name.toLowerCase() +\n      \".svg\";\n    image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n    image.setAttribute(\n      \"data-l10n-args\",\n      JSON.stringify({ type: this.data.name })\n    );\n\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    this.container.append(image);\n    return this.container;\n  }\n}\n\nclass WidgetAnnotationElement extends AnnotationElement {\n  render() {\n    // Show only the container for unsupported field types.\n    if (this.data.alternativeText) {\n      this.container.title = this.data.alternativeText;\n    }\n\n    return this.container;\n  }\n\n  showElementAndHideCanvas(element) {\n    if (this.data.hasOwnCanvas) {\n      if (element.previousSibling?.nodeName === \"CANVAS\") {\n        element.previousSibling.hidden = true;\n      }\n      element.hidden = false;\n    }\n  }\n\n  _getKeyModifier(event) {\n    return FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n  }\n\n  _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n    if (baseName.includes(\"mouse\")) {\n      // Mouse events\n      element.addEventListener(baseName, event => {\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: this.data.id,\n            name: eventName,\n            value: valueGetter(event),\n            shift: event.shiftKey,\n            modifier: this._getKeyModifier(event),\n          },\n        });\n      });\n    } else {\n      // Non-mouse events\n      element.addEventListener(baseName, event => {\n        if (baseName === \"blur\") {\n          if (!elementData.focused || !event.relatedTarget) {\n            return;\n          }\n          elementData.focused = false;\n        } else if (baseName === \"focus\") {\n          if (elementData.focused) {\n            return;\n          }\n          elementData.focused = true;\n        }\n\n        if (!valueGetter) {\n          return;\n        }\n\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: this.data.id,\n            name: eventName,\n            value: valueGetter(event),\n          },\n        });\n      });\n    }\n  }\n\n  _setEventListeners(element, elementData, names, getter) {\n    for (const [baseName, eventName] of names) {\n      if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n        if (eventName === \"Focus\" || eventName === \"Blur\") {\n          elementData ||= { focused: false };\n        }\n        this._setEventListener(\n          element,\n          elementData,\n          baseName,\n          eventName,\n          getter\n        );\n        if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n          // Ensure that elementData will have the correct value.\n          this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n        } else if (eventName === \"Blur\" && !this.data.actions?.Focus) {\n          this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n        }\n      }\n    }\n  }\n\n  _setBackgroundColor(element) {\n    const color = this.data.backgroundColor || null;\n    element.style.backgroundColor =\n      color === null\n        ? \"transparent\"\n        : Util.makeHexColor(color[0], color[1], color[2]);\n  }\n\n  /**\n   * Apply text styles to the text in the element.\n   *\n   * @private\n   * @param {HTMLDivElement} element\n   * @memberof TextWidgetAnnotationElement\n   */\n  _setTextStyle(element) {\n    const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n    const { fontColor } = this.data.defaultAppearanceData;\n    const fontSize =\n      this.data.defaultAppearanceData.fontSize || DEFAULT_FONT_SIZE;\n\n    const style = element.style;\n\n    // TODO: If the font-size is zero, calculate it based on the height and\n    //       width of the element.\n    // Not setting `style.fontSize` will use the default font-size for now.\n\n    // We don't use the font, as specified in the PDF document, for the <input>\n    // element. Hence using the original `fontSize` could look bad, which is why\n    // it's instead based on the field height.\n    // If the height is \"big\" then it could lead to a too big font size\n    // so in this case use the one we've in the pdf (hence the min).\n    let computedFontSize;\n    const BORDER_SIZE = 2;\n    const roundToOneDecimal = x => Math.round(10 * x) / 10;\n    if (this.data.multiLine) {\n      const height = Math.abs(\n        this.data.rect[3] - this.data.rect[1] - BORDER_SIZE\n      );\n      const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n      const lineHeight = height / numberOfLines;\n      computedFontSize = Math.min(\n        fontSize,\n        roundToOneDecimal(lineHeight / LINE_FACTOR)\n      );\n    } else {\n      const height = Math.abs(\n        this.data.rect[3] - this.data.rect[1] - BORDER_SIZE\n      );\n      computedFontSize = Math.min(\n        fontSize,\n        roundToOneDecimal(height / LINE_FACTOR)\n      );\n    }\n    style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;\n\n    style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n\n    if (this.data.textAlignment !== null) {\n      style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n    }\n  }\n\n  _setRequired(element, isRequired) {\n    if (isRequired) {\n      element.setAttribute(\"required\", true);\n    } else {\n      element.removeAttribute(\"required\");\n    }\n    element.setAttribute(\"aria-required\", isRequired);\n  }\n}\n\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    const isRenderable =\n      parameters.renderForms ||\n      parameters.data.hasOwnCanvas ||\n      (!parameters.data.hasAppearance && !!parameters.data.fieldValue);\n    super(parameters, { isRenderable });\n  }\n\n  setPropertyOnSiblings(base, key, value, keyInStorage) {\n    const storage = this.annotationStorage;\n    for (const element of this._getElementsByName(\n      base.name,\n      /* skipId = */ base.id\n    )) {\n      if (element.domElement) {\n        element.domElement[key] = value;\n      }\n      storage.setValue(element.id, { [keyInStorage]: value });\n    }\n  }\n\n  render() {\n    const storage = this.annotationStorage;\n    const id = this.data.id;\n\n    this.container.classList.add(\"textWidgetAnnotation\");\n\n    let element = null;\n    if (this.renderForms) {\n      // NOTE: We cannot set the values using `element.value` below, since it\n      //       prevents the AnnotationLayer rasterizer in `test/driver.js`\n      //       from parsing the elements correctly for the reference tests.\n      const storedData = storage.getValue(id, {\n        value: this.data.fieldValue,\n      });\n      let textContent = storedData.value || \"\";\n      const maxLen = storage.getValue(id, {\n        charLimit: this.data.maxLen,\n      }).charLimit;\n      if (maxLen && textContent.length > maxLen) {\n        textContent = textContent.slice(0, maxLen);\n      }\n\n      let fieldFormattedValues =\n        storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n      if (fieldFormattedValues && this.data.comb) {\n        fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n      }\n\n      const elementData = {\n        userValue: textContent,\n        formattedValue: fieldFormattedValues,\n        lastCommittedValue: null,\n        commitKey: 1,\n        focused: false,\n      };\n\n      if (this.data.multiLine) {\n        element = document.createElement(\"textarea\");\n        element.textContent = fieldFormattedValues ?? textContent;\n        if (this.data.doNotScroll) {\n          element.style.overflowY = \"hidden\";\n        }\n      } else {\n        element = document.createElement(\"input\");\n        element.type = \"text\";\n        element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n        if (this.data.doNotScroll) {\n          element.style.overflowX = \"hidden\";\n        }\n      }\n      if (this.data.hasOwnCanvas) {\n        element.hidden = true;\n      }\n      GetElementsByNameSet.add(element);\n      element.setAttribute(\"data-element-id\", id);\n\n      element.disabled = this.data.readOnly;\n      element.name = this.data.fieldName;\n      element.tabIndex = DEFAULT_TAB_INDEX;\n\n      this._setRequired(element, this.data.required);\n\n      if (maxLen) {\n        element.maxLength = maxLen;\n      }\n\n      element.addEventListener(\"input\", event => {\n        storage.setValue(id, { value: event.target.value });\n        this.setPropertyOnSiblings(\n          element,\n          \"value\",\n          event.target.value,\n          \"value\"\n        );\n        elementData.formattedValue = null;\n      });\n\n      element.addEventListener(\"resetform\", event => {\n        const defaultValue = this.data.defaultFieldValue ?? \"\";\n        element.value = elementData.userValue = defaultValue;\n        elementData.formattedValue = null;\n      });\n\n      let blurListener = event => {\n        const { formattedValue } = elementData;\n        if (formattedValue !== null && formattedValue !== undefined) {\n          event.target.value = formattedValue;\n        }\n        // Reset the cursor position to the start of the field (issue 12359).\n        event.target.scrollLeft = 0;\n      };\n\n      if (this.enableScripting && this.hasJSActions) {\n        element.addEventListener(\"focus\", event => {\n          if (elementData.focused) {\n            return;\n          }\n          const { target } = event;\n          if (elementData.userValue) {\n            target.value = elementData.userValue;\n          }\n          elementData.lastCommittedValue = target.value;\n          elementData.commitKey = 1;\n          elementData.focused = true;\n        });\n\n        element.addEventListener(\"updatefromsandbox\", jsEvent => {\n          this.showElementAndHideCanvas(jsEvent.target);\n          const actions = {\n            value(event) {\n              elementData.userValue = event.detail.value ?? \"\";\n              storage.setValue(id, { value: elementData.userValue.toString() });\n              event.target.value = elementData.userValue;\n            },\n            formattedValue(event) {\n              const { formattedValue } = event.detail;\n              elementData.formattedValue = formattedValue;\n              if (\n                formattedValue !== null &&\n                formattedValue !== undefined &&\n                event.target !== document.activeElement\n              ) {\n                // Input hasn't the focus so display formatted string\n                event.target.value = formattedValue;\n              }\n              storage.setValue(id, {\n                formattedValue,\n              });\n            },\n            selRange(event) {\n              event.target.setSelectionRange(...event.detail.selRange);\n            },\n            charLimit: event => {\n              const { charLimit } = event.detail;\n              const { target } = event;\n              if (charLimit === 0) {\n                target.removeAttribute(\"maxLength\");\n                return;\n              }\n\n              target.setAttribute(\"maxLength\", charLimit);\n              let value = elementData.userValue;\n              if (!value || value.length <= charLimit) {\n                return;\n              }\n              value = value.slice(0, charLimit);\n              target.value = elementData.userValue = value;\n              storage.setValue(id, { value });\n\n              this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n                source: this,\n                detail: {\n                  id,\n                  name: \"Keystroke\",\n                  value,\n                  willCommit: true,\n                  commitKey: 1,\n                  selStart: target.selectionStart,\n                  selEnd: target.selectionEnd,\n                },\n              });\n            },\n          };\n          this._dispatchEventFromSandbox(actions, jsEvent);\n        });\n\n        // Even if the field hasn't any actions\n        // leaving it can still trigger some actions with Calculate\n        element.addEventListener(\"keydown\", event => {\n          elementData.commitKey = 1;\n          // If the key is one of Escape, Enter then the data are committed.\n          // If we've a Tab then data will be committed on blur.\n          let commitKey = -1;\n          if (event.key === \"Escape\") {\n            commitKey = 0;\n          } else if (event.key === \"Enter\" && !this.data.multiLine) {\n            // When we've a multiline field, \"Enter\" key is a key as the other\n            // hence we don't commit the data (Acrobat behaves the same way)\n            // (see issue #15627).\n            commitKey = 2;\n          } else if (event.key === \"Tab\") {\n            elementData.commitKey = 3;\n          }\n          if (commitKey === -1) {\n            return;\n          }\n          const { value } = event.target;\n          if (elementData.lastCommittedValue === value) {\n            return;\n          }\n          elementData.lastCommittedValue = value;\n          // Save the entered value\n          elementData.userValue = value;\n          this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n            source: this,\n            detail: {\n              id,\n              name: \"Keystroke\",\n              value,\n              willCommit: true,\n              commitKey,\n              selStart: event.target.selectionStart,\n              selEnd: event.target.selectionEnd,\n            },\n          });\n        });\n        const _blurListener = blurListener;\n        blurListener = null;\n        element.addEventListener(\"blur\", event => {\n          if (!elementData.focused || !event.relatedTarget) {\n            return;\n          }\n          elementData.focused = false;\n          const { value } = event.target;\n          elementData.userValue = value;\n          if (elementData.lastCommittedValue !== value) {\n            this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n              source: this,\n              detail: {\n                id,\n                name: \"Keystroke\",\n                value,\n                willCommit: true,\n                commitKey: elementData.commitKey,\n                selStart: event.target.selectionStart,\n                selEnd: event.target.selectionEnd,\n              },\n            });\n          }\n          _blurListener(event);\n        });\n\n        if (this.data.actions?.Keystroke) {\n          element.addEventListener(\"beforeinput\", event => {\n            elementData.lastCommittedValue = null;\n            const { data, target } = event;\n            const { value, selectionStart, selectionEnd } = target;\n\n            let selStart = selectionStart,\n              selEnd = selectionEnd;\n\n            switch (event.inputType) {\n              // https://rawgit.com/w3c/input-events/v1/index.html#interface-InputEvent-Attributes\n              case \"deleteWordBackward\": {\n                const match = value\n                  .substring(0, selectionStart)\n                  .match(/\\w*[^\\w]*$/);\n                if (match) {\n                  selStart -= match[0].length;\n                }\n                break;\n              }\n              case \"deleteWordForward\": {\n                const match = value\n                  .substring(selectionStart)\n                  .match(/^[^\\w]*\\w*/);\n                if (match) {\n                  selEnd += match[0].length;\n                }\n                break;\n              }\n              case \"deleteContentBackward\":\n                if (selectionStart === selectionEnd) {\n                  selStart -= 1;\n                }\n                break;\n              case \"deleteContentForward\":\n                if (selectionStart === selectionEnd) {\n                  selEnd += 1;\n                }\n                break;\n            }\n\n            // We handle the event ourselves.\n            event.preventDefault();\n            this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n              source: this,\n              detail: {\n                id,\n                name: \"Keystroke\",\n                value,\n                change: data || \"\",\n                willCommit: false,\n                selStart,\n                selEnd,\n              },\n            });\n          });\n        }\n\n        this._setEventListeners(\n          element,\n          elementData,\n          [\n            [\"focus\", \"Focus\"],\n            [\"blur\", \"Blur\"],\n            [\"mousedown\", \"Mouse Down\"],\n            [\"mouseenter\", \"Mouse Enter\"],\n            [\"mouseleave\", \"Mouse Exit\"],\n            [\"mouseup\", \"Mouse Up\"],\n          ],\n          event => event.target.value\n        );\n      }\n\n      if (blurListener) {\n        element.addEventListener(\"blur\", blurListener);\n      }\n\n      if (this.data.comb) {\n        const fieldWidth = this.data.rect[2] - this.data.rect[0];\n        const combWidth = fieldWidth / maxLen;\n\n        element.classList.add(\"comb\");\n        element.style.letterSpacing = `calc(${combWidth}px * var(--scale-factor) - 1ch)`;\n      }\n    } else {\n      element = document.createElement(\"div\");\n      element.textContent = this.data.fieldValue;\n      element.style.verticalAlign = \"middle\";\n      element.style.display = \"table-cell\";\n\n      if (this.data.hasOwnCanvas) {\n        element.hidden = true;\n      }\n    }\n\n    this._setTextStyle(element);\n    this._setBackgroundColor(element);\n    this._setDefaultPropertiesFromJS(element);\n\n    this.container.append(element);\n    return this.container;\n  }\n}\n\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: !!parameters.data.hasOwnCanvas });\n  }\n}\n\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: parameters.renderForms });\n  }\n\n  render() {\n    const storage = this.annotationStorage;\n    const data = this.data;\n    const id = data.id;\n    let value = storage.getValue(id, {\n      value: data.exportValue === data.fieldValue,\n    }).value;\n    if (typeof value === \"string\") {\n      // The value has been changed through js and set in annotationStorage.\n      value = value !== \"Off\";\n      storage.setValue(id, { value });\n    }\n\n    this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n\n    const element = document.createElement(\"input\");\n    GetElementsByNameSet.add(element);\n    element.setAttribute(\"data-element-id\", id);\n\n    element.disabled = data.readOnly;\n    this._setRequired(element, this.data.required);\n    element.type = \"checkbox\";\n    element.name = data.fieldName;\n    if (value) {\n      element.setAttribute(\"checked\", true);\n    }\n    element.setAttribute(\"exportValue\", data.exportValue);\n    element.tabIndex = DEFAULT_TAB_INDEX;\n\n    element.addEventListener(\"change\", event => {\n      const { name, checked } = event.target;\n      for (const checkbox of this._getElementsByName(name, /* skipId = */ id)) {\n        const curChecked = checked && checkbox.exportValue === data.exportValue;\n        if (checkbox.domElement) {\n          checkbox.domElement.checked = curChecked;\n        }\n        storage.setValue(checkbox.id, { value: curChecked });\n      }\n      storage.setValue(id, { value: checked });\n    });\n\n    element.addEventListener(\"resetform\", event => {\n      const defaultValue = data.defaultFieldValue || \"Off\";\n      event.target.checked = defaultValue === data.exportValue;\n    });\n\n    if (this.enableScripting && this.hasJSActions) {\n      element.addEventListener(\"updatefromsandbox\", jsEvent => {\n        const actions = {\n          value(event) {\n            event.target.checked = event.detail.value !== \"Off\";\n            storage.setValue(id, { value: event.target.checked });\n          },\n        };\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n\n      this._setEventListeners(\n        element,\n        null,\n        [\n          [\"change\", \"Validate\"],\n          [\"change\", \"Action\"],\n          [\"focus\", \"Focus\"],\n          [\"blur\", \"Blur\"],\n          [\"mousedown\", \"Mouse Down\"],\n          [\"mouseenter\", \"Mouse Enter\"],\n          [\"mouseleave\", \"Mouse Exit\"],\n          [\"mouseup\", \"Mouse Up\"],\n        ],\n        event => event.target.checked\n      );\n    }\n\n    this._setBackgroundColor(element);\n    this._setDefaultPropertiesFromJS(element);\n\n    this.container.append(element);\n    return this.container;\n  }\n}\n\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: parameters.renderForms });\n  }\n\n  render() {\n    this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n    const storage = this.annotationStorage;\n    const data = this.data;\n    const id = data.id;\n    let value = storage.getValue(id, {\n      value: data.fieldValue === data.buttonValue,\n    }).value;\n    if (typeof value === \"string\") {\n      // The value has been changed through js and set in annotationStorage.\n      value = value !== data.buttonValue;\n      storage.setValue(id, { value });\n    }\n\n    const element = document.createElement(\"input\");\n    GetElementsByNameSet.add(element);\n    element.setAttribute(\"data-element-id\", id);\n\n    element.disabled = data.readOnly;\n    this._setRequired(element, this.data.required);\n    element.type = \"radio\";\n    element.name = data.fieldName;\n    if (value) {\n      element.setAttribute(\"checked\", true);\n    }\n    element.tabIndex = DEFAULT_TAB_INDEX;\n\n    element.addEventListener(\"change\", event => {\n      const { name, checked } = event.target;\n      for (const radio of this._getElementsByName(name, /* skipId = */ id)) {\n        storage.setValue(radio.id, { value: false });\n      }\n      storage.setValue(id, { value: checked });\n    });\n\n    element.addEventListener(\"resetform\", event => {\n      const defaultValue = data.defaultFieldValue;\n      event.target.checked =\n        defaultValue !== null &&\n        defaultValue !== undefined &&\n        defaultValue === data.buttonValue;\n    });\n\n    if (this.enableScripting && this.hasJSActions) {\n      const pdfButtonValue = data.buttonValue;\n      element.addEventListener(\"updatefromsandbox\", jsEvent => {\n        const actions = {\n          value: event => {\n            const checked = pdfButtonValue === event.detail.value;\n            for (const radio of this._getElementsByName(event.target.name)) {\n              const curChecked = checked && radio.id === id;\n              if (radio.domElement) {\n                radio.domElement.checked = curChecked;\n              }\n              storage.setValue(radio.id, { value: curChecked });\n            }\n          },\n        };\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n\n      this._setEventListeners(\n        element,\n        null,\n        [\n          [\"change\", \"Validate\"],\n          [\"change\", \"Action\"],\n          [\"focus\", \"Focus\"],\n          [\"blur\", \"Blur\"],\n          [\"mousedown\", \"Mouse Down\"],\n          [\"mouseenter\", \"Mouse Enter\"],\n          [\"mouseleave\", \"Mouse Exit\"],\n          [\"mouseup\", \"Mouse Up\"],\n        ],\n        event => event.target.checked\n      );\n    }\n\n    this._setBackgroundColor(element);\n    this._setDefaultPropertiesFromJS(element);\n\n    this.container.append(element);\n    return this.container;\n  }\n}\n\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n  constructor(parameters) {\n    super(parameters, { ignoreBorder: parameters.data.hasAppearance });\n  }\n\n  render() {\n    // The rendering and functionality of a push button widget annotation is\n    // equal to that of a link annotation, but may have more functionality, such\n    // as performing actions on form fields (resetting, submitting, et cetera).\n    const container = super.render();\n    container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n\n    if (this.data.alternativeText) {\n      container.title = this.data.alternativeText;\n    }\n\n    const linkElement = container.lastChild;\n    if (this.enableScripting && this.hasJSActions && linkElement) {\n      this._setDefaultPropertiesFromJS(linkElement);\n\n      linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n        this._dispatchEventFromSandbox({}, jsEvent);\n      });\n    }\n\n    return container;\n  }\n}\n\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: parameters.renderForms });\n  }\n\n  render() {\n    this.container.classList.add(\"choiceWidgetAnnotation\");\n    const storage = this.annotationStorage;\n    const id = this.data.id;\n\n    const storedData = storage.getValue(id, {\n      value: this.data.fieldValue,\n    });\n\n    const selectElement = document.createElement(\"select\");\n    GetElementsByNameSet.add(selectElement);\n    selectElement.setAttribute(\"data-element-id\", id);\n\n    selectElement.disabled = this.data.readOnly;\n    this._setRequired(selectElement, this.data.required);\n    selectElement.name = this.data.fieldName;\n    selectElement.tabIndex = DEFAULT_TAB_INDEX;\n\n    let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n\n    if (!this.data.combo) {\n      // List boxes have a size and (optionally) multiple selection.\n      selectElement.size = this.data.options.length;\n      if (this.data.multiSelect) {\n        selectElement.multiple = true;\n      }\n    }\n\n    selectElement.addEventListener(\"resetform\", event => {\n      const defaultValue = this.data.defaultFieldValue;\n      for (const option of selectElement.options) {\n        option.selected = option.value === defaultValue;\n      }\n    });\n\n    // Insert the options into the choice field.\n    for (const option of this.data.options) {\n      const optionElement = document.createElement(\"option\");\n      optionElement.textContent = option.displayValue;\n      optionElement.value = option.exportValue;\n      if (storedData.value.includes(option.exportValue)) {\n        optionElement.setAttribute(\"selected\", true);\n        addAnEmptyEntry = false;\n      }\n      selectElement.append(optionElement);\n    }\n\n    let removeEmptyEntry = null;\n    if (addAnEmptyEntry) {\n      const noneOptionElement = document.createElement(\"option\");\n      noneOptionElement.value = \" \";\n      noneOptionElement.setAttribute(\"hidden\", true);\n      noneOptionElement.setAttribute(\"selected\", true);\n      selectElement.prepend(noneOptionElement);\n\n      removeEmptyEntry = () => {\n        noneOptionElement.remove();\n        selectElement.removeEventListener(\"input\", removeEmptyEntry);\n        removeEmptyEntry = null;\n      };\n      selectElement.addEventListener(\"input\", removeEmptyEntry);\n    }\n\n    const getValue = isExport => {\n      const name = isExport ? \"value\" : \"textContent\";\n      const { options, multiple } = selectElement;\n      if (!multiple) {\n        return options.selectedIndex === -1\n          ? null\n          : options[options.selectedIndex][name];\n      }\n      return Array.prototype.filter\n        .call(options, option => option.selected)\n        .map(option => option[name]);\n    };\n\n    let selectedValues = getValue(/* isExport */ false);\n\n    const getItems = event => {\n      const options = event.target.options;\n      return Array.prototype.map.call(options, option => {\n        return { displayValue: option.textContent, exportValue: option.value };\n      });\n    };\n\n    if (this.enableScripting && this.hasJSActions) {\n      selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n        const actions = {\n          value(event) {\n            removeEmptyEntry?.();\n            const value = event.detail.value;\n            const values = new Set(Array.isArray(value) ? value : [value]);\n            for (const option of selectElement.options) {\n              option.selected = values.has(option.value);\n            }\n            storage.setValue(id, {\n              value: getValue(/* isExport */ true),\n            });\n            selectedValues = getValue(/* isExport */ false);\n          },\n          multipleSelection(event) {\n            selectElement.multiple = true;\n          },\n          remove(event) {\n            const options = selectElement.options;\n            const index = event.detail.remove;\n            options[index].selected = false;\n            selectElement.remove(index);\n            if (options.length > 0) {\n              const i = Array.prototype.findIndex.call(\n                options,\n                option => option.selected\n              );\n              if (i === -1) {\n                options[0].selected = true;\n              }\n            }\n            storage.setValue(id, {\n              value: getValue(/* isExport */ true),\n              items: getItems(event),\n            });\n            selectedValues = getValue(/* isExport */ false);\n          },\n          clear(event) {\n            while (selectElement.length !== 0) {\n              selectElement.remove(0);\n            }\n            storage.setValue(id, { value: null, items: [] });\n            selectedValues = getValue(/* isExport */ false);\n          },\n          insert(event) {\n            const { index, displayValue, exportValue } = event.detail.insert;\n            const selectChild = selectElement.children[index];\n            const optionElement = document.createElement(\"option\");\n            optionElement.textContent = displayValue;\n            optionElement.value = exportValue;\n\n            if (selectChild) {\n              selectChild.before(optionElement);\n            } else {\n              selectElement.append(optionElement);\n            }\n            storage.setValue(id, {\n              value: getValue(/* isExport */ true),\n              items: getItems(event),\n            });\n            selectedValues = getValue(/* isExport */ false);\n          },\n          items(event) {\n            const { items } = event.detail;\n            while (selectElement.length !== 0) {\n              selectElement.remove(0);\n            }\n            for (const item of items) {\n              const { displayValue, exportValue } = item;\n              const optionElement = document.createElement(\"option\");\n              optionElement.textContent = displayValue;\n              optionElement.value = exportValue;\n              selectElement.append(optionElement);\n            }\n            if (selectElement.options.length > 0) {\n              selectElement.options[0].selected = true;\n            }\n            storage.setValue(id, {\n              value: getValue(/* isExport */ true),\n              items: getItems(event),\n            });\n            selectedValues = getValue(/* isExport */ false);\n          },\n          indices(event) {\n            const indices = new Set(event.detail.indices);\n            for (const option of event.target.options) {\n              option.selected = indices.has(option.index);\n            }\n            storage.setValue(id, {\n              value: getValue(/* isExport */ true),\n            });\n            selectedValues = getValue(/* isExport */ false);\n          },\n          editable(event) {\n            event.target.disabled = !event.detail.editable;\n          },\n        };\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n\n      selectElement.addEventListener(\"input\", event => {\n        const exportValue = getValue(/* isExport */ true);\n        storage.setValue(id, { value: exportValue });\n\n        event.preventDefault();\n\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id,\n            name: \"Keystroke\",\n            value: selectedValues,\n            changeEx: exportValue,\n            willCommit: false,\n            commitKey: 1,\n            keyDown: false,\n          },\n        });\n      });\n\n      this._setEventListeners(\n        selectElement,\n        null,\n        [\n          [\"focus\", \"Focus\"],\n          [\"blur\", \"Blur\"],\n          [\"mousedown\", \"Mouse Down\"],\n          [\"mouseenter\", \"Mouse Enter\"],\n          [\"mouseleave\", \"Mouse Exit\"],\n          [\"mouseup\", \"Mouse Up\"],\n          [\"input\", \"Action\"],\n          [\"input\", \"Validate\"],\n        ],\n        event => event.target.value\n      );\n    } else {\n      selectElement.addEventListener(\"input\", function (event) {\n        storage.setValue(id, { value: getValue(/* isExport */ true) });\n      });\n    }\n\n    if (this.data.combo) {\n      this._setTextStyle(selectElement);\n    } else {\n      // Just use the default font size...\n      // it's a bit hard to guess what is a good size.\n    }\n    this._setBackgroundColor(selectElement);\n    this._setDefaultPropertiesFromJS(selectElement);\n\n    this.container.append(selectElement);\n    return this.container;\n  }\n}\n\nclass PopupAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const { data, elements } = parameters;\n    super(parameters, { isRenderable: AnnotationElement._hasPopupData(data) });\n    this.elements = elements;\n  }\n\n  render() {\n    this.container.classList.add(\"popupAnnotation\");\n\n    const popup = new PopupElement({\n      container: this.container,\n      color: this.data.color,\n      titleObj: this.data.titleObj,\n      modificationDate: this.data.modificationDate,\n      contentsObj: this.data.contentsObj,\n      richText: this.data.richText,\n      rect: this.data.rect,\n      parentRect: this.data.parentRect || null,\n      parent: this.parent,\n      elements: this.elements,\n      open: this.data.open,\n    });\n\n    const elementIds = [];\n    for (const element of this.elements) {\n      element.popup = popup;\n      elementIds.push(element.data.id);\n      element.addHighlightArea();\n    }\n\n    this.container.setAttribute(\n      \"aria-controls\",\n      elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\")\n    );\n\n    return this.container;\n  }\n}\n\nclass PopupElement {\n  #boundKeyDown = this.#keyDown.bind(this);\n\n  #boundHide = this.#hide.bind(this);\n\n  #boundShow = this.#show.bind(this);\n\n  #boundToggle = this.#toggle.bind(this);\n\n  #color = null;\n\n  #container = null;\n\n  #contentsObj = null;\n\n  #dateObj = null;\n\n  #elements = null;\n\n  #parent = null;\n\n  #parentRect = null;\n\n  #pinned = false;\n\n  #popup = null;\n\n  #rect = null;\n\n  #richText = null;\n\n  #titleObj = null;\n\n  #wasVisible = false;\n\n  constructor({\n    container,\n    color,\n    elements,\n    titleObj,\n    modificationDate,\n    contentsObj,\n    richText,\n    parent,\n    rect,\n    parentRect,\n    open,\n  }) {\n    this.#container = container;\n    this.#titleObj = titleObj;\n    this.#contentsObj = contentsObj;\n    this.#richText = richText;\n    this.#parent = parent;\n    this.#color = color;\n    this.#rect = rect;\n    this.#parentRect = parentRect;\n    this.#elements = elements;\n\n    // The modification date is shown in the popup instead of the creation\n    // date if it is available and can be parsed correctly, which is\n    // consistent with other viewers such as Adobe Acrobat.\n    this.#dateObj = PDFDateString.toDateObject(modificationDate);\n\n    this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n    // Attach the event listeners to the trigger element.\n    for (const element of this.trigger) {\n      element.addEventListener(\"click\", this.#boundToggle);\n      element.addEventListener(\"mouseenter\", this.#boundShow);\n      element.addEventListener(\"mouseleave\", this.#boundHide);\n      element.classList.add(\"popupTriggerArea\");\n    }\n\n    // Attach the event listener to toggle the popup with the keyboard.\n    for (const element of elements) {\n      element.container?.addEventListener(\"keydown\", this.#boundKeyDown);\n    }\n\n    this.#container.hidden = true;\n    if (open) {\n      this.#toggle();\n    }\n\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n      // Since the popup is lazily created, we need to ensure that it'll be\n      // created and displayed during reference tests.\n      this.#parent.popupShow.push(async () => {\n        if (this.#container.hidden) {\n          this.#show();\n        }\n      });\n    }\n  }\n\n  render() {\n    if (this.#popup) {\n      return;\n    }\n\n    const {\n      page: { view },\n      viewport: {\n        rawDims: { pageWidth, pageHeight, pageX, pageY },\n      },\n    } = this.#parent;\n    const popup = (this.#popup = document.createElement(\"div\"));\n    popup.className = \"popup\";\n\n    if (this.#color) {\n      const baseColor = (popup.style.outlineColor = Util.makeHexColor(\n        ...this.#color\n      ));\n      if (\n        (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n        CSS.supports(\"background-color\", \"color-mix(in srgb, red 30%, white)\")\n      ) {\n        popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n      } else {\n        // color-mix isn't supported in some browsers hence this version.\n        // See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/color-mix#browser_compatibility\n        // TODO: Use color-mix when it's supported everywhere.\n        // Enlighten the color.\n        const BACKGROUND_ENLIGHT = 0.7;\n        popup.style.backgroundColor = Util.makeHexColor(\n          ...this.#color.map(c =>\n            Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c)\n          )\n        );\n      }\n    }\n\n    const header = document.createElement(\"span\");\n    header.className = \"header\";\n    const title = document.createElement(\"h1\");\n    header.append(title);\n    ({ dir: title.dir, str: title.textContent } = this.#titleObj);\n    popup.append(header);\n\n    if (this.#dateObj) {\n      const modificationDate = document.createElement(\"span\");\n      modificationDate.classList.add(\"popupDate\");\n      modificationDate.setAttribute(\n        \"data-l10n-id\",\n        \"pdfjs-annotation-date-string\"\n      );\n      modificationDate.setAttribute(\n        \"data-l10n-args\",\n        JSON.stringify({\n          date: this.#dateObj.toLocaleDateString(),\n          time: this.#dateObj.toLocaleTimeString(),\n        })\n      );\n      header.append(modificationDate);\n    }\n\n    const contentsObj = this.#contentsObj;\n    const richText = this.#richText;\n    if (\n      richText?.str &&\n      (!contentsObj?.str || contentsObj.str === richText.str)\n    ) {\n      XfaLayer.render({\n        xfaHtml: richText.html,\n        intent: \"richText\",\n        div: popup,\n      });\n      popup.lastChild.classList.add(\"richText\", \"popupContent\");\n    } else {\n      const contents = this._formatContents(contentsObj);\n      popup.append(contents);\n    }\n\n    let useParentRect = !!this.#parentRect;\n    let rect = useParentRect ? this.#parentRect : this.#rect;\n    for (const element of this.#elements) {\n      if (!rect || Util.intersect(element.data.rect, rect) !== null) {\n        rect = element.data.rect;\n        useParentRect = true;\n        break;\n      }\n    }\n\n    const normalizedRect = Util.normalizeRect([\n      rect[0],\n      view[3] - rect[1] + view[1],\n      rect[2],\n      view[3] - rect[3] + view[1],\n    ]);\n\n    const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n    const parentWidth = useParentRect\n      ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION\n      : 0;\n    const popupLeft = normalizedRect[0] + parentWidth;\n    const popupTop = normalizedRect[1];\n\n    const { style } = this.#container;\n    style.left = `${(100 * (popupLeft - pageX)) / pageWidth}%`;\n    style.top = `${(100 * (popupTop - pageY)) / pageHeight}%`;\n\n    this.#container.append(popup);\n  }\n\n  /**\n   * Format the contents of the popup by adding newlines where necessary.\n   *\n   * @private\n   * @param {Object<string, string>} contentsObj\n   * @memberof PopupElement\n   * @returns {HTMLParagraphElement}\n   */\n  _formatContents({ str, dir }) {\n    const p = document.createElement(\"p\");\n    p.classList.add(\"popupContent\");\n    p.dir = dir;\n    const lines = str.split(/(?:\\r\\n?|\\n)/);\n    for (let i = 0, ii = lines.length; i < ii; ++i) {\n      const line = lines[i];\n      p.append(document.createTextNode(line));\n      if (i < ii - 1) {\n        p.append(document.createElement(\"br\"));\n      }\n    }\n    return p;\n  }\n\n  #keyDown(event) {\n    if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n      return;\n    }\n\n    if (event.key === \"Enter\" || (event.key === \"Escape\" && this.#pinned)) {\n      this.#toggle();\n    }\n  }\n\n  /**\n   * Toggle the visibility of the popup.\n   */\n  #toggle() {\n    this.#pinned = !this.#pinned;\n    if (this.#pinned) {\n      this.#show();\n      this.#container.addEventListener(\"click\", this.#boundToggle);\n      this.#container.addEventListener(\"keydown\", this.#boundKeyDown);\n    } else {\n      this.#hide();\n      this.#container.removeEventListener(\"click\", this.#boundToggle);\n      this.#container.removeEventListener(\"keydown\", this.#boundKeyDown);\n    }\n  }\n\n  /**\n   * Show the popup.\n   */\n  #show() {\n    if (!this.#popup) {\n      this.render();\n    }\n    if (!this.isVisible) {\n      this.#container.hidden = false;\n      this.#container.style.zIndex =\n        parseInt(this.#container.style.zIndex) + 1000;\n    } else if (this.#pinned) {\n      this.#container.classList.add(\"focused\");\n    }\n  }\n\n  /**\n   * Hide the popup.\n   */\n  #hide() {\n    this.#container.classList.remove(\"focused\");\n    if (this.#pinned || !this.isVisible) {\n      return;\n    }\n    this.#container.hidden = true;\n    this.#container.style.zIndex =\n      parseInt(this.#container.style.zIndex) - 1000;\n  }\n\n  forceHide() {\n    this.#wasVisible = this.isVisible;\n    if (!this.#wasVisible) {\n      return;\n    }\n    this.#container.hidden = true;\n  }\n\n  maybeShow() {\n    if (!this.#wasVisible) {\n      return;\n    }\n    this.#wasVisible = false;\n    this.#container.hidden = false;\n  }\n\n  get isVisible() {\n    return this.#container.hidden === false;\n  }\n}\n\nclass FreeTextAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n    this.textContent = parameters.data.textContent;\n    this.textPosition = parameters.data.textPosition;\n    this.annotationEditorType = AnnotationEditorType.FREETEXT;\n  }\n\n  render() {\n    this.container.classList.add(\"freeTextAnnotation\");\n\n    if (this.textContent) {\n      const content = document.createElement(\"div\");\n      content.classList.add(\"annotationTextContent\");\n      content.setAttribute(\"role\", \"comment\");\n      for (const line of this.textContent) {\n        const lineSpan = document.createElement(\"span\");\n        lineSpan.textContent = line;\n        content.append(lineSpan);\n      }\n      this.container.append(content);\n    }\n\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    this._editOnDoubleClick();\n\n    return this.container;\n  }\n\n  get _isEditable() {\n    return this.data.hasOwnCanvas;\n  }\n}\n\nclass LineAnnotationElement extends AnnotationElement {\n  #line = null;\n\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n  }\n\n  render() {\n    this.container.classList.add(\"lineAnnotation\");\n\n    // Create an invisible line with the same starting and ending coordinates\n    // that acts as the trigger for the popup. Only the line itself should\n    // trigger the popup, not the entire container.\n    const data = this.data;\n    const { width, height } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(\n      width,\n      height,\n      /* skipDimensions = */ true\n    );\n\n    // PDF coordinates are calculated from a bottom left origin, so transform\n    // the line coordinates to a top left origin for the SVG element.\n    const line = (this.#line = this.svgFactory.createElement(\"svg:line\"));\n    line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n    line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n    line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n    line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n    // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n    // won't be possible to open/close the popup (note e.g. issue 11122).\n    line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n    line.setAttribute(\"stroke\", \"transparent\");\n    line.setAttribute(\"fill\", \"transparent\");\n\n    svg.append(line);\n    this.container.append(svg);\n\n    // Create the popup ourselves so that we can bind it to the line instead\n    // of to the entire container (which is the default).\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    return this.container;\n  }\n\n  getElementsToTriggerPopup() {\n    return this.#line;\n  }\n\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\n\nclass SquareAnnotationElement extends AnnotationElement {\n  #square = null;\n\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n  }\n\n  render() {\n    this.container.classList.add(\"squareAnnotation\");\n\n    // Create an invisible square with the same rectangle that acts as the\n    // trigger for the popup. Only the square itself should trigger the\n    // popup, not the entire container.\n    const data = this.data;\n    const { width, height } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(\n      width,\n      height,\n      /* skipDimensions = */ true\n    );\n\n    // The browser draws half of the borders inside the square and half of\n    // the borders outside the square by default. This behavior cannot be\n    // changed programmatically, so correct for that here.\n    const borderWidth = data.borderStyle.width;\n    const square = (this.#square = this.svgFactory.createElement(\"svg:rect\"));\n    square.setAttribute(\"x\", borderWidth / 2);\n    square.setAttribute(\"y\", borderWidth / 2);\n    square.setAttribute(\"width\", width - borderWidth);\n    square.setAttribute(\"height\", height - borderWidth);\n    // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n    // won't be possible to open/close the popup (note e.g. issue 11122).\n    square.setAttribute(\"stroke-width\", borderWidth || 1);\n    square.setAttribute(\"stroke\", \"transparent\");\n    square.setAttribute(\"fill\", \"transparent\");\n\n    svg.append(square);\n    this.container.append(svg);\n\n    // Create the popup ourselves so that we can bind it to the square instead\n    // of to the entire container (which is the default).\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    return this.container;\n  }\n\n  getElementsToTriggerPopup() {\n    return this.#square;\n  }\n\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\n\nclass CircleAnnotationElement extends AnnotationElement {\n  #circle = null;\n\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n  }\n\n  render() {\n    this.container.classList.add(\"circleAnnotation\");\n\n    // Create an invisible circle with the same ellipse that acts as the\n    // trigger for the popup. Only the circle itself should trigger the\n    // popup, not the entire container.\n    const data = this.data;\n    const { width, height } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(\n      width,\n      height,\n      /* skipDimensions = */ true\n    );\n\n    // The browser draws half of the borders inside the circle and half of\n    // the borders outside the circle by default. This behavior cannot be\n    // changed programmatically, so correct for that here.\n    const borderWidth = data.borderStyle.width;\n    const circle = (this.#circle =\n      this.svgFactory.createElement(\"svg:ellipse\"));\n    circle.setAttribute(\"cx\", width / 2);\n    circle.setAttribute(\"cy\", height / 2);\n    circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n    circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n    // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n    // won't be possible to open/close the popup (note e.g. issue 11122).\n    circle.setAttribute(\"stroke-width\", borderWidth || 1);\n    circle.setAttribute(\"stroke\", \"transparent\");\n    circle.setAttribute(\"fill\", \"transparent\");\n\n    svg.append(circle);\n    this.container.append(svg);\n\n    // Create the popup ourselves so that we can bind it to the circle instead\n    // of to the entire container (which is the default).\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    return this.container;\n  }\n\n  getElementsToTriggerPopup() {\n    return this.#circle;\n  }\n\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\n\nclass PolylineAnnotationElement extends AnnotationElement {\n  #polyline = null;\n\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n\n    this.containerClassName = \"polylineAnnotation\";\n    this.svgElementName = \"svg:polyline\";\n  }\n\n  render() {\n    this.container.classList.add(this.containerClassName);\n\n    // Create an invisible polyline with the same points that acts as the\n    // trigger for the popup. Only the polyline itself should trigger the\n    // popup, not the entire container.\n    const data = this.data;\n    const { width, height } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(\n      width,\n      height,\n      /* skipDimensions = */ true\n    );\n\n    // Convert the vertices array to a single points string that the SVG\n    // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n    // calculated from a bottom left origin, so transform the polyline\n    // coordinates to a top left origin for the SVG element.\n    let points = [];\n    for (const coordinate of data.vertices) {\n      const x = coordinate.x - data.rect[0];\n      const y = data.rect[3] - coordinate.y;\n      points.push(x + \",\" + y);\n    }\n    points = points.join(\" \");\n\n    const polyline = (this.#polyline = this.svgFactory.createElement(\n      this.svgElementName\n    ));\n    polyline.setAttribute(\"points\", points);\n    // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n    // won't be possible to open/close the popup (note e.g. issue 11122).\n    polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n    polyline.setAttribute(\"stroke\", \"transparent\");\n    polyline.setAttribute(\"fill\", \"transparent\");\n\n    svg.append(polyline);\n    this.container.append(svg);\n\n    // Create the popup ourselves so that we can bind it to the polyline\n    // instead of to the entire container (which is the default).\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    return this.container;\n  }\n\n  getElementsToTriggerPopup() {\n    return this.#polyline;\n  }\n\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\n\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n  constructor(parameters) {\n    // Polygons are specific forms of polylines, so reuse their logic.\n    super(parameters);\n\n    this.containerClassName = \"polygonAnnotation\";\n    this.svgElementName = \"svg:polygon\";\n  }\n}\n\nclass CaretAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n  }\n\n  render() {\n    this.container.classList.add(\"caretAnnotation\");\n\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    return this.container;\n  }\n}\n\nclass InkAnnotationElement extends AnnotationElement {\n  #polylines = [];\n\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n\n    this.containerClassName = \"inkAnnotation\";\n\n    // Use the polyline SVG element since it allows us to use coordinates\n    // directly and to draw both straight lines and curves.\n    this.svgElementName = \"svg:polyline\";\n    this.annotationEditorType = AnnotationEditorType.INK;\n  }\n\n  render() {\n    this.container.classList.add(this.containerClassName);\n\n    // Create an invisible polyline with the same points that acts as the\n    // trigger for the popup.\n    const data = this.data;\n    const { width, height } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(\n      width,\n      height,\n      /* skipDimensions = */ true\n    );\n\n    for (const inkList of data.inkLists) {\n      // Convert the ink list to a single points string that the SVG\n      // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n      // calculated from a bottom left origin, so transform the polyline\n      // coordinates to a top left origin for the SVG element.\n      let points = [];\n      for (const coordinate of inkList) {\n        const x = coordinate.x - data.rect[0];\n        const y = data.rect[3] - coordinate.y;\n        points.push(`${x},${y}`);\n      }\n      points = points.join(\" \");\n\n      const polyline = this.svgFactory.createElement(this.svgElementName);\n      this.#polylines.push(polyline);\n      polyline.setAttribute(\"points\", points);\n      // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n      // won't be possible to open/close the popup (note e.g. issue 11122).\n      polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n      polyline.setAttribute(\"stroke\", \"transparent\");\n      polyline.setAttribute(\"fill\", \"transparent\");\n\n      // Create the popup ourselves so that we can bind it to the polyline\n      // instead of to the entire container (which is the default).\n      if (!data.popupRef && this.hasPopupData) {\n        this._createPopup();\n      }\n\n      svg.append(polyline);\n    }\n\n    this.container.append(svg);\n    return this.container;\n  }\n\n  getElementsToTriggerPopup() {\n    return this.#polylines;\n  }\n\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\n\nclass HighlightAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true,\n    });\n  }\n\n  render() {\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    this.container.classList.add(\"highlightAnnotation\");\n    return this.container;\n  }\n}\n\nclass UnderlineAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true,\n    });\n  }\n\n  render() {\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    this.container.classList.add(\"underlineAnnotation\");\n    return this.container;\n  }\n}\n\nclass SquigglyAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true,\n    });\n  }\n\n  render() {\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    this.container.classList.add(\"squigglyAnnotation\");\n    return this.container;\n  }\n}\n\nclass StrikeOutAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true,\n    });\n  }\n\n  render() {\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    this.container.classList.add(\"strikeoutAnnotation\");\n    return this.container;\n  }\n}\n\nclass StampAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n  }\n\n  render() {\n    this.container.classList.add(\"stampAnnotation\");\n\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    return this.container;\n  }\n}\n\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n  #trigger = null;\n\n  constructor(parameters) {\n    super(parameters, { isRenderable: true });\n\n    const { filename, content } = this.data.file;\n    this.filename = getFilenameFromUrl(filename, /* onlyStripPath = */ true);\n    this.content = content;\n\n    this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n      source: this,\n      filename,\n      content,\n    });\n  }\n\n  render() {\n    this.container.classList.add(\"fileAttachmentAnnotation\");\n\n    const { container, data } = this;\n    let trigger;\n    if (data.hasAppearance || data.fillAlpha === 0) {\n      trigger = document.createElement(\"div\");\n    } else {\n      // Unfortunately it seems that it's not clearly specified exactly what\n      // names are actually valid, since Table 184 contains:\n      //   Conforming readers shall provide predefined icon appearances for at\n      //   least the following standard names: GraphPushPin, PaperclipTag.\n      //   Additional names may be supported as well. Default value: PushPin.\n      trigger = document.createElement(\"img\");\n      trigger.src = `${this.imageResourcesPath}annotation-${\n        /paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"\n      }.svg`;\n\n      if (data.fillAlpha && data.fillAlpha < 1) {\n        trigger.style = `filter: opacity(${Math.round(\n          data.fillAlpha * 100\n        )}%);`;\n\n        if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n          this.container.classList.add(\"hasFillAlpha\");\n        }\n      }\n    }\n    trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n    this.#trigger = trigger;\n\n    const { isMac } = FeatureTest.platform;\n    container.addEventListener(\"keydown\", evt => {\n      if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n        this.#download();\n      }\n    });\n\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    } else {\n      trigger.classList.add(\"popupTriggerArea\");\n    }\n\n    container.append(trigger);\n    return container;\n  }\n\n  getElementsToTriggerPopup() {\n    return this.#trigger;\n  }\n\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n\n  /**\n   * Download the file attachment associated with this annotation.\n   */\n  #download() {\n    this.downloadManager?.openOrDownloadData(this.content, this.filename);\n  }\n}\n\n/**\n * @typedef {Object} AnnotationLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Array} annotations\n * @property {PDFPageProxy} page\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} downloadManager\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n *   for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {boolean} [enableScripting] - Enable embedded script execution.\n * @property {boolean} [hasJSActions] - Some fields have JS actions.\n *   The default value is `false`.\n * @property {Object<string, Array<Object>> | null} [fieldObjects]\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap]\n * @property {TextAccessibilityManager} [accessibilityManager]\n */\n\n/**\n * Manage the layer containing all the annotations.\n */\nclass AnnotationLayer {\n  #accessibilityManager = null;\n\n  #annotationCanvasMap = null;\n\n  #editableAnnotations = new Map();\n\n  constructor({\n    div,\n    accessibilityManager,\n    annotationCanvasMap,\n    page,\n    viewport,\n  }) {\n    this.div = div;\n    this.#accessibilityManager = accessibilityManager;\n    this.#annotationCanvasMap = annotationCanvasMap;\n    this.page = page;\n    this.viewport = viewport;\n    this.zIndex = 0;\n\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n      // For testing purposes.\n      Object.defineProperty(this, \"showPopups\", {\n        value: async () => {\n          for (const show of this.popupShow) {\n            await show();\n          }\n        },\n      });\n      this.popupShow = [];\n    }\n  }\n\n  #appendElement(element, id) {\n    const contentElement = element.firstChild || element;\n    contentElement.id = `${AnnotationPrefix}${id}`;\n\n    this.div.append(element);\n    this.#accessibilityManager?.moveElementInDOM(\n      this.div,\n      element,\n      contentElement,\n      /* isRemovable = */ false\n    );\n  }\n\n  /**\n   * Render a new annotation layer with all annotation elements.\n   *\n   * @param {AnnotationLayerParameters} params\n   * @memberof AnnotationLayer\n   */\n  async render(params) {\n    const { annotations } = params;\n    const layer = this.div;\n    setLayerDimensions(layer, this.viewport);\n\n    const popupToElements = new Map();\n    const elementParams = {\n      data: null,\n      layer,\n      linkService: params.linkService,\n      downloadManager: params.downloadManager,\n      imageResourcesPath: params.imageResourcesPath || \"\",\n      renderForms: params.renderForms !== false,\n      svgFactory: new DOMSVGFactory(),\n      annotationStorage: params.annotationStorage || new AnnotationStorage(),\n      enableScripting: params.enableScripting === true,\n      hasJSActions: params.hasJSActions,\n      fieldObjects: params.fieldObjects,\n      parent: this,\n      elements: null,\n    };\n\n    for (const data of annotations) {\n      if (data.noHTML) {\n        continue;\n      }\n      const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n      if (!isPopupAnnotation) {\n        const { width, height } = getRectDims(data.rect);\n        if (width <= 0 || height <= 0) {\n          continue; // Ignore empty annotations.\n        }\n      } else {\n        const elements = popupToElements.get(data.id);\n        if (!elements) {\n          // Ignore popup annotations without a corresponding annotation.\n          continue;\n        }\n        elementParams.elements = elements;\n      }\n      elementParams.data = data;\n      const element = AnnotationElementFactory.create(elementParams);\n\n      if (!element.isRenderable) {\n        continue;\n      }\n\n      if (!isPopupAnnotation && data.popupRef) {\n        const elements = popupToElements.get(data.popupRef);\n        if (!elements) {\n          popupToElements.set(data.popupRef, [element]);\n        } else {\n          elements.push(element);\n        }\n      }\n\n      if (element.annotationEditorType > 0) {\n        this.#editableAnnotations.set(element.data.id, element);\n      }\n\n      const rendered = element.render();\n      if (data.hidden) {\n        rendered.style.visibility = \"hidden\";\n      }\n      this.#appendElement(rendered, data.id);\n    }\n\n    this.#setAnnotationCanvasMap();\n  }\n\n  /**\n   * Update the annotation elements on existing annotation layer.\n   *\n   * @param {AnnotationLayerParameters} viewport\n   * @memberof AnnotationLayer\n   */\n  update({ viewport }) {\n    const layer = this.div;\n    this.viewport = viewport;\n    setLayerDimensions(layer, { rotation: viewport.rotation });\n\n    this.#setAnnotationCanvasMap();\n    layer.hidden = false;\n  }\n\n  #setAnnotationCanvasMap() {\n    if (!this.#annotationCanvasMap) {\n      return;\n    }\n    const layer = this.div;\n    for (const [id, canvas] of this.#annotationCanvasMap) {\n      const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n      if (!element) {\n        continue;\n      }\n\n      const { firstChild } = element;\n      if (!firstChild) {\n        element.append(canvas);\n      } else if (firstChild.nodeName === \"CANVAS\") {\n        firstChild.replaceWith(canvas);\n      } else {\n        firstChild.before(canvas);\n      }\n    }\n    this.#annotationCanvasMap.clear();\n  }\n\n  getEditableAnnotations() {\n    return Array.from(this.#editableAnnotations.values());\n  }\n\n  getEditableAnnotation(id) {\n    return this.#editableAnnotations.get(id);\n  }\n}\n\nexport {\n  AnnotationLayer,\n  FreeTextAnnotationElement,\n  InkAnnotationElement,\n  StampAnnotationElement,\n};\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { objectFromMap, unreachable } from \"../shared/util.js\";\nimport { AnnotationEditor } from \"./editor/editor.js\";\nimport { MurmurHash3_64 } from \"../shared/murmurhash3.js\";\n\nconst SerializableEmpty = Object.freeze({\n  map: null,\n  hash: \"\",\n  transfer: undefined,\n});\n\n/**\n * Key/value storage for annotation data in forms.\n */\nclass AnnotationStorage {\n  #modified = false;\n\n  #storage = new Map();\n\n  constructor() {\n    // Callbacks to signal when the modification state is set or reset.\n    // This is used by the viewer to only bind on `beforeunload` if forms\n    // are actually edited to prevent doing so unconditionally since that\n    // can have undesirable effects.\n    this.onSetModified = null;\n    this.onResetModified = null;\n    this.onAnnotationEditor = null;\n  }\n\n  /**\n   * Get the value for a given key if it exists, or return the default value.\n   * @param {string} key\n   * @param {Object} defaultValue\n   * @returns {Object}\n   */\n  getValue(key, defaultValue) {\n    const value = this.#storage.get(key);\n    if (value === undefined) {\n      return defaultValue;\n    }\n\n    return Object.assign(defaultValue, value);\n  }\n\n  /**\n   * Get the value for a given key.\n   * @param {string} key\n   * @returns {Object}\n   */\n  getRawValue(key) {\n    return this.#storage.get(key);\n  }\n\n  /**\n   * Remove a value from the storage.\n   * @param {string} key\n   */\n  remove(key) {\n    this.#storage.delete(key);\n\n    if (this.#storage.size === 0) {\n      this.resetModified();\n    }\n\n    if (typeof this.onAnnotationEditor === \"function\") {\n      for (const value of this.#storage.values()) {\n        if (value instanceof AnnotationEditor) {\n          return;\n        }\n      }\n      this.onAnnotationEditor(null);\n    }\n  }\n\n  /**\n   * Set the value for a given key\n   * @param {string} key\n   * @param {Object} value\n   */\n  setValue(key, value) {\n    const obj = this.#storage.get(key);\n    let modified = false;\n    if (obj !== undefined) {\n      for (const [entry, val] of Object.entries(value)) {\n        if (obj[entry] !== val) {\n          modified = true;\n          obj[entry] = val;\n        }\n      }\n    } else {\n      modified = true;\n      this.#storage.set(key, value);\n    }\n    if (modified) {\n      this.#setModified();\n    }\n\n    if (\n      value instanceof AnnotationEditor &&\n      typeof this.onAnnotationEditor === \"function\"\n    ) {\n      this.onAnnotationEditor(value.constructor._type);\n    }\n  }\n\n  /**\n   * Check if the storage contains the given key.\n   * @param {string} key\n   * @returns {boolean}\n   */\n  has(key) {\n    return this.#storage.has(key);\n  }\n\n  /**\n   * @returns {Object | null}\n   */\n  getAll() {\n    return this.#storage.size > 0 ? objectFromMap(this.#storage) : null;\n  }\n\n  /**\n   * @param {Object} obj\n   */\n  setAll(obj) {\n    for (const [key, val] of Object.entries(obj)) {\n      this.setValue(key, val);\n    }\n  }\n\n  get size() {\n    return this.#storage.size;\n  }\n\n  #setModified() {\n    if (!this.#modified) {\n      this.#modified = true;\n      if (typeof this.onSetModified === \"function\") {\n        this.onSetModified();\n      }\n    }\n  }\n\n  resetModified() {\n    if (this.#modified) {\n      this.#modified = false;\n      if (typeof this.onResetModified === \"function\") {\n        this.onResetModified();\n      }\n    }\n  }\n\n  /**\n   * @returns {PrintAnnotationStorage}\n   */\n  get print() {\n    return new PrintAnnotationStorage(this);\n  }\n\n  /**\n   * PLEASE NOTE: Only intended for usage within the API itself.\n   * @ignore\n   */\n  get serializable() {\n    if (this.#storage.size === 0) {\n      return SerializableEmpty;\n    }\n    const map = new Map(),\n      hash = new MurmurHash3_64(),\n      transfer = [];\n    const context = Object.create(null);\n    let hasBitmap = false;\n\n    for (const [key, val] of this.#storage) {\n      const serialized =\n        val instanceof AnnotationEditor\n          ? val.serialize(/* isForCopying = */ false, context)\n          : val;\n      if (serialized) {\n        map.set(key, serialized);\n\n        hash.update(`${key}:${JSON.stringify(serialized)}`);\n        hasBitmap ||= !!serialized.bitmap;\n      }\n    }\n\n    if (hasBitmap) {\n      // We must transfer the bitmap data separately, since it can be changed\n      // during serialization with SVG images.\n      for (const value of map.values()) {\n        if (value.bitmap) {\n          transfer.push(value.bitmap);\n        }\n      }\n    }\n\n    return map.size > 0\n      ? { map, hash: hash.hexdigest(), transfer }\n      : SerializableEmpty;\n  }\n}\n\n/**\n * A special `AnnotationStorage` for use during printing, where the serializable\n * data is *frozen* upon initialization, to prevent scripting from modifying its\n * contents. (Necessary since printing is triggered synchronously in browsers.)\n */\nclass PrintAnnotationStorage extends AnnotationStorage {\n  #serializable;\n\n  constructor(parent) {\n    super();\n    const { map, hash, transfer } = parent.serializable;\n    // Create a *copy* of the data, since Objects are passed by reference in JS.\n    const clone = structuredClone(map, transfer ? { transfer } : null);\n\n    this.#serializable = { map: clone, hash, transfer };\n  }\n\n  /**\n   * @returns {PrintAnnotationStorage}\n   */\n  // eslint-disable-next-line getter-return\n  get print() {\n    unreachable(\"Should not call PrintAnnotationStorage.print\");\n  }\n\n  /**\n   * PLEASE NOTE: Only intended for usage within the API itself.\n   * @ignore\n   */\n  get serializable() {\n    return this.#serializable;\n  }\n}\n\nexport { AnnotationStorage, PrintAnnotationStorage, SerializableEmpty };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @module pdfjsLib\n */\n\nimport {\n  AbortException,\n  AnnotationMode,\n  assert,\n  getVerbosityLevel,\n  info,\n  InvalidPDFException,\n  isArrayBuffer,\n  isNodeJS,\n  MAX_IMAGE_SIZE_TO_CACHE,\n  MissingPDFException,\n  PasswordException,\n  PromiseCapability,\n  RenderingIntentFlag,\n  setVerbosityLevel,\n  shadow,\n  stringToBytes,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  AnnotationStorage,\n  PrintAnnotationStorage,\n  SerializableEmpty,\n} from \"./annotation_storage.js\";\nimport {\n  DOMCanvasFactory,\n  DOMCMapReaderFactory,\n  DOMFilterFactory,\n  DOMStandardFontDataFactory,\n  isDataScheme,\n  isValidFetchUrl,\n  PageViewport,\n  RenderingCancelledException,\n  StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport {\n  NodeCanvasFactory,\n  NodeCMapReaderFactory,\n  NodeFilterFactory,\n  NodeStandardFontDataFactory,\n} from \"display-node_utils\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { OptionalContentConfig } from \"./optional_content_config.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\nimport { PDFFetchStream } from \"display-fetch_stream\";\nimport { PDFNetworkStream } from \"display-network\";\nimport { PDFNodeStream } from \"display-node_stream\";\nimport { XfaText } from \"./xfa_text.js\";\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\nconst DELAYED_CLEANUP_TIMEOUT = 5000; // ms\n\nconst DefaultCanvasFactory =\n  typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n    ? NodeCanvasFactory\n    : DOMCanvasFactory;\nconst DefaultCMapReaderFactory =\n  typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n    ? NodeCMapReaderFactory\n    : DOMCMapReaderFactory;\nconst DefaultFilterFactory =\n  typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n    ? NodeFilterFactory\n    : DOMFilterFactory;\nconst DefaultStandardFontDataFactory =\n  typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n    ? NodeStandardFontDataFactory\n    : DOMStandardFontDataFactory;\n\n/**\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\n *            Int16Array | Uint16Array |\n *            Int32Array | Uint32Array | Float32Array |\n *            Float64Array\n * } TypedArray\n */\n\n/**\n * @typedef { TypedArray | ArrayBuffer | Array<number> | string } BinaryData\n */\n\n/**\n * @typedef {Object} RefProxy\n * @property {number} num\n * @property {number} gen\n */\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string | URL} [url] - The URL of the PDF.\n * @property {BinaryData} [data] - Binary PDF data.\n *   Use TypedArrays (Uint8Array) to improve the memory usage. If PDF data is\n *   BASE64-encoded, use `atob()` to convert it to a binary string first.\n *\n *   NOTE: If TypedArrays are used they will generally be transferred to the\n *   worker-thread. This will help reduce main-thread memory usage, however\n *   it will take ownership of the TypedArrays.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n *   cross-site Access-Control requests should be made using credentials such\n *   as cookies or authorization headers. The default is `false`.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {number} [length] - The PDF file length. It's used for progress\n *   reports and range requests operations.\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\n *   transport implementation.\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\n *   per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\n *   parsing the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the constants\n *   from {@link VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document, used when\n *   attempting to recover valid absolute URLs for annotations, and outline\n *   items, that (incorrectly) only specify relative URLs.\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\n *   located. Include the trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\n *   packed or not. The default value is `true`.\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\n *   reading built-in CMap files. Providing a custom factory is useful for\n *   environments without Fetch API or `XMLHttpRequest` support, such as\n *   Node.js. The default value is {DOMCMapReaderFactory}.\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\n *   embedded in the PDF document will fallback to a system font.\n *   The default value is `true` in web environments and `false` in Node.js;\n *   unless `disableFontFace === true` in which case this defaults to `false`\n *   regardless of the environment (to prevent completely broken fonts).\n * @property {string} [standardFontDataUrl] - The URL where the standard font\n *   files are located. Include the trailing slash.\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\n *   when reading the standard font files. Providing a custom factory is useful\n *   for environments without Fetch API or `XMLHttpRequest` support, such as\n *   Node.js. The default value is {DOMStandardFontDataFactory}.\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\n *   worker-thread when reading CMap and standard font files. When `true`,\n *   the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored.\n *   The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n *   `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n *   PDF data cannot be successfully parsed, instead of attempting to recover\n *   whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size in total\n *   pixels, i.e. width * height. Images above this value will not be rendered.\n *   Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\n *   as JavaScript. Primarily used to improve performance of font rendering, and\n *   when parsing PDF functions. The default value is `true`.\n * @property {boolean} [isOffscreenCanvasSupported] - Determines if we can use\n *   `OffscreenCanvas` in the worker. Primarily used to improve performance of\n *   image conversion/rendering.\n *   The default value is `true` in web environments and `false` in Node.js.\n * @property {number} [canvasMaxAreaInBytes] - The integer value is used to\n *   know when an image must be resized (uses `OffscreenCanvas` in the worker).\n *   If it's -1 then a possibly slow algorithm is used to guess the max value.\n * @property {boolean} [disableFontFace] - By default fonts are converted to\n *   OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\n *   If disabled, fonts will be rendered using a built-in font renderer that\n *   constructs the glyphs with primitive path commands.\n *   The default value is `false` in web environments and `true` in Node.js.\n * @property {boolean} [fontExtraProperties] - Include additional properties,\n *   which are unused during rendering of PDF documents, when exporting the\n *   parsed font data from the worker-thread. This may be useful for debugging\n *   purposes (and backwards compatibility), but note that it will lead to\n *   increased memory usage. The default value is `false`.\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\n *   The default value is `false`.\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\n *   context to create elements with and to load resources, such as fonts,\n *   into. Defaults to the current document.\n * @property {boolean} [disableRange] - Disable range request loading of PDF\n *   files. When enabled, and if the server supports partial content requests,\n *   then the PDF will be fetched in chunks. The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\n *   By default PDF.js attempts to load PDF files in chunks. The default value\n *   is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\n *   data. When range requests are enabled PDF.js will automatically keep\n *   fetching more data even if it isn't needed to display the current page.\n *   The default value is `false`.\n *\n *   NOTE: It is also necessary to disable streaming, see above, in order for\n *   disabling of pre-fetching to work correctly.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\n *   (see `web/debugger.js`). The default value is `false`.\n * @property {Object} [canvasFactory] - The factory instance that will be used\n *   when creating canvases. The default value is {new DOMCanvasFactory()}.\n * @property {Object} [filterFactory] - A factory instance that will be used\n *   to create SVG filters when rendering some images on the main canvas.\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n *\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\n * XHR as fallback) is used, which means it must follow same origin rules,\n * e.g. no cross-domain requests without CORS.\n *\n * @param {string | URL | TypedArray | ArrayBuffer | DocumentInitParameters}\n *   src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\n *         already populated with data, or a parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n    if (typeof src === \"string\" || src instanceof URL) {\n      src = { url: src };\n    } else if (isArrayBuffer(src)) {\n      src = { data: src };\n    }\n  }\n  if (typeof src !== \"object\") {\n    throw new Error(\"Invalid parameter in getDocument, need parameter object.\");\n  }\n  if (!src.url && !src.data && !src.range) {\n    throw new Error(\n      \"Invalid parameter object: need either .data, .range or .url\"\n    );\n  }\n  const task = new PDFDocumentLoadingTask();\n  const { docId } = task;\n\n  const url = src.url ? getUrlProp(src.url) : null;\n  const data = src.data ? getDataProp(src.data) : null;\n  const httpHeaders = src.httpHeaders || null;\n  const withCredentials = src.withCredentials === true;\n  const password = src.password ?? null;\n  const rangeTransport =\n    src.range instanceof PDFDataRangeTransport ? src.range : null;\n  const rangeChunkSize =\n    Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0\n      ? src.rangeChunkSize\n      : DEFAULT_RANGE_CHUNK_SIZE;\n  let worker = src.worker instanceof PDFWorker ? src.worker : null;\n  const verbosity = src.verbosity;\n  // Ignore \"data:\"-URLs, since they can't be used to recover valid absolute\n  // URLs anyway. We want to avoid sending them to the worker-thread, since\n  // they contain the *entire* PDF document and can thus be arbitrarily long.\n  const docBaseUrl =\n    typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl)\n      ? src.docBaseUrl\n      : null;\n  const cMapUrl = typeof src.cMapUrl === \"string\" ? src.cMapUrl : null;\n  const cMapPacked = src.cMapPacked !== false;\n  const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory;\n  const standardFontDataUrl =\n    typeof src.standardFontDataUrl === \"string\"\n      ? src.standardFontDataUrl\n      : null;\n  const StandardFontDataFactory =\n    src.StandardFontDataFactory || DefaultStandardFontDataFactory;\n  const ignoreErrors = src.stopAtErrors !== true;\n  const maxImageSize =\n    Number.isInteger(src.maxImageSize) && src.maxImageSize > -1\n      ? src.maxImageSize\n      : -1;\n  const isEvalSupported = src.isEvalSupported !== false;\n  const isOffscreenCanvasSupported =\n    typeof src.isOffscreenCanvasSupported === \"boolean\"\n      ? src.isOffscreenCanvasSupported\n      : !isNodeJS;\n  const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes)\n    ? src.canvasMaxAreaInBytes\n    : -1;\n  const disableFontFace =\n    typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n  const fontExtraProperties = src.fontExtraProperties === true;\n  const enableXfa = src.enableXfa === true;\n  const ownerDocument = src.ownerDocument || globalThis.document;\n  const disableRange = src.disableRange === true;\n  const disableStream = src.disableStream === true;\n  const disableAutoFetch = src.disableAutoFetch === true;\n  const pdfBug = src.pdfBug === true;\n\n  // Parameters whose default values depend on other parameters.\n  const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n  const useSystemFonts =\n    typeof src.useSystemFonts === \"boolean\"\n      ? src.useSystemFonts\n      : !isNodeJS && !disableFontFace;\n  const useWorkerFetch =\n    typeof src.useWorkerFetch === \"boolean\"\n      ? src.useWorkerFetch\n      : (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n        (CMapReaderFactory === DOMCMapReaderFactory &&\n          StandardFontDataFactory === DOMStandardFontDataFactory &&\n          cMapUrl &&\n          standardFontDataUrl &&\n          isValidFetchUrl(cMapUrl, document.baseURI) &&\n          isValidFetchUrl(standardFontDataUrl, document.baseURI));\n  const canvasFactory =\n    src.canvasFactory || new DefaultCanvasFactory({ ownerDocument });\n  const filterFactory =\n    src.filterFactory || new DefaultFilterFactory({ docId, ownerDocument });\n\n  // Parameters only intended for development/testing purposes.\n  const styleElement =\n    typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")\n      ? src.styleElement\n      : null;\n\n  // Set the main-thread verbosity level.\n  setVerbosityLevel(verbosity);\n\n  // Ensure that the various factories can be initialized, when necessary,\n  // since the user may provide *custom* ones.\n  const transportFactory = {\n    canvasFactory,\n    filterFactory,\n  };\n  if (!useWorkerFetch) {\n    transportFactory.cMapReaderFactory = new CMapReaderFactory({\n      baseUrl: cMapUrl,\n      isCompressed: cMapPacked,\n    });\n    transportFactory.standardFontDataFactory = new StandardFontDataFactory({\n      baseUrl: standardFontDataUrl,\n    });\n  }\n\n  if (!worker) {\n    const workerParams = {\n      verbosity,\n      port: GlobalWorkerOptions.workerPort,\n    };\n    // Worker was not provided -- creating and owning our own. If message port\n    // is specified in global worker options, using it.\n    worker = workerParams.port\n      ? PDFWorker.fromPort(workerParams)\n      : new PDFWorker(workerParams);\n    task._worker = worker;\n  }\n\n  const fetchDocParams = {\n    docId,\n    apiVersion:\n      typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n        ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n        : null,\n    data,\n    password,\n    disableAutoFetch,\n    rangeChunkSize,\n    length,\n    docBaseUrl,\n    enableXfa,\n    evaluatorOptions: {\n      maxImageSize,\n      disableFontFace,\n      ignoreErrors,\n      isEvalSupported,\n      isOffscreenCanvasSupported,\n      canvasMaxAreaInBytes,\n      fontExtraProperties,\n      useSystemFonts,\n      cMapUrl: useWorkerFetch ? cMapUrl : null,\n      standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null,\n    },\n  };\n  const transportParams = {\n    ignoreErrors,\n    isEvalSupported,\n    disableFontFace,\n    fontExtraProperties,\n    enableXfa,\n    ownerDocument,\n    disableAutoFetch,\n    pdfBug,\n    styleElement,\n  };\n\n  worker.promise\n    .then(function () {\n      if (task.destroyed) {\n        throw new Error(\"Loading aborted\");\n      }\n\n      const workerIdPromise = _fetchDocument(worker, fetchDocParams);\n      const networkStreamPromise = new Promise(function (resolve) {\n        let networkStream;\n        if (rangeTransport) {\n          networkStream = new PDFDataTransportStream(\n            {\n              length,\n              initialData: rangeTransport.initialData,\n              progressiveDone: rangeTransport.progressiveDone,\n              contentDispositionFilename:\n                rangeTransport.contentDispositionFilename,\n              disableRange,\n              disableStream,\n            },\n            rangeTransport\n          );\n        } else if (!data) {\n          if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n            throw new Error(\"Not implemented: createPDFNetworkStream\");\n          }\n          const createPDFNetworkStream = params => {\n            if (\n              typeof PDFJSDev !== \"undefined\" &&\n              PDFJSDev.test(\"GENERIC\") &&\n              isNodeJS\n            ) {\n              return new PDFNodeStream(params);\n            }\n            return isValidFetchUrl(params.url)\n              ? new PDFFetchStream(params)\n              : new PDFNetworkStream(params);\n          };\n\n          networkStream = createPDFNetworkStream({\n            url,\n            length,\n            httpHeaders,\n            withCredentials,\n            rangeChunkSize,\n            disableRange,\n            disableStream,\n          });\n        }\n        resolve(networkStream);\n      });\n\n      return Promise.all([workerIdPromise, networkStreamPromise]).then(\n        function ([workerId, networkStream]) {\n          if (task.destroyed) {\n            throw new Error(\"Loading aborted\");\n          }\n\n          const messageHandler = new MessageHandler(\n            docId,\n            workerId,\n            worker.port\n          );\n          const transport = new WorkerTransport(\n            messageHandler,\n            task,\n            networkStream,\n            transportParams,\n            transportFactory\n          );\n          task._transport = transport;\n          messageHandler.send(\"Ready\", null);\n        }\n      );\n    })\n    .catch(task._capability.reject);\n\n  return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n *\n * @param {PDFWorker} worker\n * @param {Object} source\n * @returns {Promise<string>} A promise that is resolved when the worker ID of\n *   the `MessageHandler` is known.\n * @private\n */\nasync function _fetchDocument(worker, source) {\n  if (worker.destroyed) {\n    throw new Error(\"Worker was destroyed\");\n  }\n  const workerId = await worker.messageHandler.sendWithPromise(\n    \"GetDocRequest\",\n    source,\n    source.data ? [source.data.buffer] : null\n  );\n\n  if (worker.destroyed) {\n    throw new Error(\"Worker was destroyed\");\n  }\n  return workerId;\n}\n\nfunction getUrlProp(val) {\n  if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n    return null; // The 'url' is unused with `PDFDataRangeTransport`.\n  }\n  if (val instanceof URL) {\n    return val.href;\n  }\n  try {\n    // The full path is required in the 'url' field.\n    return new URL(val, window.location).href;\n  } catch {\n    if (\n      typeof PDFJSDev !== \"undefined\" &&\n      PDFJSDev.test(\"GENERIC\") &&\n      isNodeJS &&\n      typeof val === \"string\"\n    ) {\n      return val; // Use the url as-is in Node.js environments.\n    }\n  }\n  throw new Error(\n    \"Invalid PDF url data: \" +\n      \"either string or URL-object is expected in the url property.\"\n  );\n}\n\nfunction getDataProp(val) {\n  // Converting string or array-like data to Uint8Array.\n  if (\n    typeof PDFJSDev !== \"undefined\" &&\n    PDFJSDev.test(\"GENERIC\") &&\n    isNodeJS &&\n    typeof Buffer !== \"undefined\" && // eslint-disable-line no-undef\n    val instanceof Buffer // eslint-disable-line no-undef\n  ) {\n    throw new Error(\n      \"Please provide binary data as `Uint8Array`, rather than `Buffer`.\"\n    );\n  }\n  if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n    // Use the data as-is when it's already a Uint8Array that completely\n    // \"utilizes\" its underlying ArrayBuffer, to prevent any possible\n    // issues when transferring it to the worker-thread.\n    return val;\n  }\n  if (typeof val === \"string\") {\n    return stringToBytes(val);\n  }\n  if ((typeof val === \"object\" && !isNaN(val?.length)) || isArrayBuffer(val)) {\n    return new Uint8Array(val);\n  }\n  throw new Error(\n    \"Invalid PDF binary data: either TypedArray, \" +\n      \"string, or array-like object is expected in the data property.\"\n  );\n}\n\n/**\n * @typedef {Object} OnProgressParameters\n * @property {number} loaded - Currently loaded number of bytes.\n * @property {number} total - Total number of bytes in the PDF file.\n */\n\n/**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\nclass PDFDocumentLoadingTask {\n  static #docId = 0;\n\n  constructor() {\n    this._capability = new PromiseCapability();\n    this._transport = null;\n    this._worker = null;\n\n    /**\n     * Unique identifier for the document loading task.\n     * @type {string}\n     */\n    this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n\n    /**\n     * Whether the loading task is destroyed or not.\n     * @type {boolean}\n     */\n    this.destroyed = false;\n\n    /**\n     * Callback to request a password if a wrong or no password was provided.\n     * The callback receives two parameters: a function that should be called\n     * with the new password, and a reason (see {@link PasswordResponses}).\n     * @type {function}\n     */\n    this.onPassword = null;\n\n    /**\n     * Callback to be able to monitor the loading progress of the PDF file\n     * (necessary to implement e.g. a loading bar).\n     * The callback receives an {@link OnProgressParameters} argument.\n     * @type {function}\n     */\n    this.onProgress = null;\n  }\n\n  /**\n   * Promise for document loading task completion.\n   * @type {Promise<PDFDocumentProxy>}\n   */\n  get promise() {\n    return this._capability.promise;\n  }\n\n  /**\n   * Abort all network requests and destroy the worker.\n   * @returns {Promise<void>} A promise that is resolved when destruction is\n   *   completed.\n   */\n  async destroy() {\n    this.destroyed = true;\n    try {\n      if (this._worker?.port) {\n        this._worker._pendingDestroy = true;\n      }\n      await this._transport?.destroy();\n    } catch (ex) {\n      if (this._worker?.port) {\n        delete this._worker._pendingDestroy;\n      }\n      throw ex;\n    }\n\n    this._transport = null;\n    if (this._worker) {\n      this._worker.destroy();\n      this._worker = null;\n    }\n  }\n}\n\n/**\n * Abstract class to support range requests file loading.\n *\n * NOTE: The TypedArrays passed to the constructor and relevant methods below\n * will generally be transferred to the worker-thread. This will help reduce\n * main-thread memory usage, however it will take ownership of the TypedArrays.\n */\nclass PDFDataRangeTransport {\n  /**\n   * @param {number} length\n   * @param {Uint8Array|null} initialData\n   * @param {boolean} [progressiveDone]\n   * @param {string} [contentDispositionFilename]\n   */\n  constructor(\n    length,\n    initialData,\n    progressiveDone = false,\n    contentDispositionFilename = null\n  ) {\n    this.length = length;\n    this.initialData = initialData;\n    this.progressiveDone = progressiveDone;\n    this.contentDispositionFilename = contentDispositionFilename;\n\n    this._rangeListeners = [];\n    this._progressListeners = [];\n    this._progressiveReadListeners = [];\n    this._progressiveDoneListeners = [];\n    this._readyCapability = new PromiseCapability();\n  }\n\n  /**\n   * @param {function} listener\n   */\n  addRangeListener(listener) {\n    this._rangeListeners.push(listener);\n  }\n\n  /**\n   * @param {function} listener\n   */\n  addProgressListener(listener) {\n    this._progressListeners.push(listener);\n  }\n\n  /**\n   * @param {function} listener\n   */\n  addProgressiveReadListener(listener) {\n    this._progressiveReadListeners.push(listener);\n  }\n\n  /**\n   * @param {function} listener\n   */\n  addProgressiveDoneListener(listener) {\n    this._progressiveDoneListeners.push(listener);\n  }\n\n  /**\n   * @param {number} begin\n   * @param {Uint8Array|null} chunk\n   */\n  onDataRange(begin, chunk) {\n    for (const listener of this._rangeListeners) {\n      listener(begin, chunk);\n    }\n  }\n\n  /**\n   * @param {number} loaded\n   * @param {number|undefined} total\n   */\n  onDataProgress(loaded, total) {\n    this._readyCapability.promise.then(() => {\n      for (const listener of this._progressListeners) {\n        listener(loaded, total);\n      }\n    });\n  }\n\n  /**\n   * @param {Uint8Array|null} chunk\n   */\n  onDataProgressiveRead(chunk) {\n    this._readyCapability.promise.then(() => {\n      for (const listener of this._progressiveReadListeners) {\n        listener(chunk);\n      }\n    });\n  }\n\n  onDataProgressiveDone() {\n    this._readyCapability.promise.then(() => {\n      for (const listener of this._progressiveDoneListeners) {\n        listener();\n      }\n    });\n  }\n\n  transportReady() {\n    this._readyCapability.resolve();\n  }\n\n  /**\n   * @param {number} begin\n   * @param {number} end\n   */\n  requestDataRange(begin, end) {\n    unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n  }\n\n  abort() {}\n}\n\n/**\n * Proxy to a `PDFDocument` in the worker thread.\n */\nclass PDFDocumentProxy {\n  constructor(pdfInfo, transport) {\n    this._pdfInfo = pdfInfo;\n    this._transport = transport;\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      // For testing purposes.\n      Object.defineProperty(this, \"getXFADatasets\", {\n        value: () => {\n          return this._transport.getXFADatasets();\n        },\n      });\n      Object.defineProperty(this, \"getXRefPrevValue\", {\n        value: () => {\n          return this._transport.getXRefPrevValue();\n        },\n      });\n      Object.defineProperty(this, \"getAnnotArray\", {\n        value: pageIndex => {\n          return this._transport.getAnnotArray(pageIndex);\n        },\n      });\n    }\n  }\n\n  /**\n   * @type {AnnotationStorage} Storage for annotation data in forms.\n   */\n  get annotationStorage() {\n    return this._transport.annotationStorage;\n  }\n\n  /**\n   * @type {Object} The filter factory instance.\n   */\n  get filterFactory() {\n    return this._transport.filterFactory;\n  }\n\n  /**\n   * @type {number} Total number of pages in the PDF file.\n   */\n  get numPages() {\n    return this._pdfInfo.numPages;\n  }\n\n  /**\n   * @type {Array<string, string|null>} A (not guaranteed to be) unique ID to\n   *   identify the PDF document.\n   *   NOTE: The first element will always be defined for all PDF documents,\n   *   whereas the second element is only defined for *modified* PDF documents.\n   */\n  get fingerprints() {\n    return this._pdfInfo.fingerprints;\n  }\n\n  /**\n   * @type {boolean} True if only XFA form.\n   */\n  get isPureXfa() {\n    return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n  }\n\n  /**\n   * NOTE: This is (mostly) intended to support printing of XFA forms.\n   *\n   * @type {Object | null} An object representing a HTML tree structure\n   *   to render the XFA, or `null` when no XFA form exists.\n   */\n  get allXfaHtml() {\n    return this._transport._htmlForXfa;\n  }\n\n  /**\n   * @param {number} pageNumber - The page number to get. The first page is 1.\n   * @returns {Promise<PDFPageProxy>} A promise that is resolved with\n   *   a {@link PDFPageProxy} object.\n   */\n  getPage(pageNumber) {\n    return this._transport.getPage(pageNumber);\n  }\n\n  /**\n   * @param {RefProxy} ref - The page reference.\n   * @returns {Promise<number>} A promise that is resolved with the page index,\n   *   starting from zero, that is associated with the reference.\n   */\n  getPageIndex(ref) {\n    return this._transport.getPageIndex(ref);\n  }\n\n  /**\n   * @returns {Promise<Object<string, Array<any>>>} A promise that is resolved\n   *   with a mapping from named destinations to references.\n   *\n   * This can be slow for large documents. Use `getDestination` instead.\n   */\n  getDestinations() {\n    return this._transport.getDestinations();\n  }\n\n  /**\n   * @param {string} id - The named destination to get.\n   * @returns {Promise<Array<any> | null>} A promise that is resolved with all\n   *   information of the given named destination, or `null` when the named\n   *   destination is not present in the PDF file.\n   */\n  getDestination(id) {\n    return this._transport.getDestination(id);\n  }\n\n  /**\n   * @returns {Promise<Array<string> | null>} A promise that is resolved with\n   *   an {Array} containing the page labels that correspond to the page\n   *   indexes, or `null` when no page labels are present in the PDF file.\n   */\n  getPageLabels() {\n    return this._transport.getPageLabels();\n  }\n\n  /**\n   * @returns {Promise<string>} A promise that is resolved with a {string}\n   *   containing the page layout name.\n   */\n  getPageLayout() {\n    return this._transport.getPageLayout();\n  }\n\n  /**\n   * @returns {Promise<string>} A promise that is resolved with a {string}\n   *   containing the page mode name.\n   */\n  getPageMode() {\n    return this._transport.getPageMode();\n  }\n\n  /**\n   * @returns {Promise<Object | null>} A promise that is resolved with an\n   *   {Object} containing the viewer preferences, or `null` when no viewer\n   *   preferences are present in the PDF file.\n   */\n  getViewerPreferences() {\n    return this._transport.getViewerPreferences();\n  }\n\n  /**\n   * @returns {Promise<any | null>} A promise that is resolved with an {Array}\n   *   containing the destination, or `null` when no open action is present\n   *   in the PDF.\n   */\n  getOpenAction() {\n    return this._transport.getOpenAction();\n  }\n\n  /**\n   * @returns {Promise<any>} A promise that is resolved with a lookup table\n   *   for mapping named attachments to their content.\n   */\n  getAttachments() {\n    return this._transport.getAttachments();\n  }\n\n  /**\n   * @returns {Promise<Object | null>} A promise that is resolved with\n   *   an {Object} with the JavaScript actions:\n   *     - from the name tree.\n   *     - from A or AA entries in the catalog dictionary.\n   *   , or `null` if no JavaScript exists.\n   */\n  getJSActions() {\n    return this._transport.getDocJSActions();\n  }\n\n  /**\n   * @typedef {Object} OutlineNode\n   * @property {string} title\n   * @property {boolean} bold\n   * @property {boolean} italic\n   * @property {Uint8ClampedArray} color - The color in RGB format to use for\n   *   display purposes.\n   * @property {string | Array<any> | null} dest\n   * @property {string | null} url\n   * @property {string | undefined} unsafeUrl\n   * @property {boolean | undefined} newWindow\n   * @property {number | undefined} count\n   * @property {Array<OutlineNode>} items\n   */\n\n  /**\n   * @returns {Promise<Array<OutlineNode>>} A promise that is resolved with an\n   *   {Array} that is a tree outline (if it has one) of the PDF file.\n   */\n  getOutline() {\n    return this._transport.getOutline();\n  }\n\n  /**\n   * @returns {Promise<OptionalContentConfig>} A promise that is resolved with\n   *   an {@link OptionalContentConfig} that contains all the optional content\n   *   groups (assuming that the document has any).\n   */\n  getOptionalContentConfig() {\n    return this._transport.getOptionalContentConfig();\n  }\n\n  /**\n   * @returns {Promise<Array<number> | null>} A promise that is resolved with\n   *   an {Array} that contains the permission flags for the PDF document, or\n   *   `null` when no permissions are present in the PDF file.\n   */\n  getPermissions() {\n    return this._transport.getPermissions();\n  }\n\n  /**\n   * @returns {Promise<{ info: Object, metadata: Metadata }>} A promise that is\n   *   resolved with an {Object} that has `info` and `metadata` properties.\n   *   `info` is an {Object} filled with anything available in the information\n   *   dictionary and similarly `metadata` is a {Metadata} object with\n   *   information from the metadata section of the PDF.\n   */\n  getMetadata() {\n    return this._transport.getMetadata();\n  }\n\n  /**\n   * @typedef {Object} MarkInfo\n   * Properties correspond to Table 321 of the PDF 32000-1:2008 spec.\n   * @property {boolean} Marked\n   * @property {boolean} UserProperties\n   * @property {boolean} Suspects\n   */\n\n  /**\n   * @returns {Promise<MarkInfo | null>} A promise that is resolved with\n   *   a {MarkInfo} object that contains the MarkInfo flags for the PDF\n   *   document, or `null` when no MarkInfo values are present in the PDF file.\n   */\n  getMarkInfo() {\n    return this._transport.getMarkInfo();\n  }\n\n  /**\n   * @returns {Promise<Uint8Array>} A promise that is resolved with a\n   *   {Uint8Array} containing the raw data of the PDF document.\n   */\n  getData() {\n    return this._transport.getData();\n  }\n\n  /**\n   * @returns {Promise<Uint8Array>} A promise that is resolved with a\n   *   {Uint8Array} containing the full data of the saved document.\n   */\n  saveDocument() {\n    return this._transport.saveDocument();\n  }\n\n  /**\n   * @returns {Promise<{ length: number }>} A promise that is resolved when the\n   *   document's data is loaded. It is resolved with an {Object} that contains\n   *   the `length` property that indicates size of the PDF data in bytes.\n   */\n  getDownloadInfo() {\n    return this._transport.downloadInfoCapability.promise;\n  }\n\n  /**\n   * Cleans up resources allocated by the document on both the main and worker\n   * threads.\n   *\n   * NOTE: Do not, under any circumstances, call this method when rendering is\n   * currently ongoing since that may lead to rendering errors.\n   *\n   * @param {boolean} [keepLoadedFonts] - Let fonts remain attached to the DOM.\n   *   NOTE: This will increase persistent memory usage, hence don't use this\n   *   option unless absolutely necessary. The default value is `false`.\n   * @returns {Promise} A promise that is resolved when clean-up has finished.\n   */\n  cleanup(keepLoadedFonts = false) {\n    return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n  }\n\n  /**\n   * Destroys the current document instance and terminates the worker.\n   */\n  destroy() {\n    return this.loadingTask.destroy();\n  }\n\n  /**\n   * @type {DocumentInitParameters} A subset of the current\n   *   {DocumentInitParameters}, which are needed in the viewer.\n   */\n  get loadingParams() {\n    return this._transport.loadingParams;\n  }\n\n  /**\n   * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\n   */\n  get loadingTask() {\n    return this._transport.loadingTask;\n  }\n\n  /**\n   * @returns {Promise<Object<string, Array<Object>> | null>} A promise that is\n   *   resolved with an {Object} containing /AcroForm field data for the JS\n   *   sandbox, or `null` when no field data is present in the PDF file.\n   */\n  getFieldObjects() {\n    return this._transport.getFieldObjects();\n  }\n\n  /**\n   * @returns {Promise<boolean>} A promise that is resolved with `true`\n   *   if some /AcroForm fields have JavaScript actions.\n   */\n  hasJSActions() {\n    return this._transport.hasJSActions();\n  }\n\n  /**\n   * @returns {Promise<Array<string> | null>} A promise that is resolved with an\n   *   {Array<string>} containing IDs of annotations that have a calculation\n   *   action, or `null` when no such annotations are present in the PDF file.\n   */\n  getCalculationOrderIds() {\n    return this._transport.getCalculationOrderIds();\n  }\n}\n\n/**\n * Page getViewport parameters.\n *\n * @typedef {Object} GetViewportParameters\n * @property {number} scale - The desired scale of the viewport.\n * @property {number} [rotation] - The desired rotation, in degrees, of\n *   the viewport. If omitted it defaults to the page rotation.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n *   The default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n *   The default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be\n *   flipped. The default value is `false`.\n */\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} [includeMarkedContent] - When true include marked\n *   content items in the items array of TextContent. The default is `false`.\n * @property {boolean} [disableNormalization] - When true the text is *not*\n *   normalized in the worker-thread. The default is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {Array<TextItem | TextMarkedContent>} items - Array of\n *   {@link TextItem} and {@link TextMarkedContent} objects. TextMarkedContent\n *   items are included when includeMarkedContent is true.\n * @property {Object<string, TextStyle>} styles - {@link TextStyle} objects,\n *   indexed by font name.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - Text content.\n * @property {string} dir - Text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {Array<any>} transform - Transformation matrix.\n * @property {number} width - Width in device space.\n * @property {number} height - Height in device space.\n * @property {string} fontName - Font name used by PDF.js for converted font.\n * @property {boolean} hasEOL - Indicating if the text content is followed by a\n *   line-break.\n */\n\n/**\n * Page text marked content part.\n *\n * @typedef {Object} TextMarkedContent\n * @property {string} type - Either 'beginMarkedContent',\n *   'beginMarkedContentProps', or 'endMarkedContent'.\n * @property {string} id - The marked content identifier. Only used for type\n *   'beginMarkedContentProps'.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - Font ascent.\n * @property {number} descent - Font descent.\n * @property {boolean} vertical - Whether or not the text is in vertical mode.\n * @property {string} fontFamily - The possible font family.\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} [intent] - Determines the annotations that are fetched,\n *   can be 'display' (viewable annotations), 'print' (printable annotations),\n *   or 'any' (all annotations). The default value is 'display'.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {CanvasRenderingContext2D} canvasContext - A 2D context of a DOM\n *   Canvas object.\n * @property {PageViewport} viewport - Rendering viewport obtained by calling\n *   the `PDFPageProxy.getViewport` method.\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n *   or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are rendered\n *   onto the canvas, for annotations with appearance-data; the values from\n *   {@link AnnotationMode} should be used. The following values are supported:\n *    - `AnnotationMode.DISABLE`, which disables all annotations.\n *    - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n *      it also depends on the `intent`-option, see above).\n *    - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n *      interactive form elements (those will be rendered in the display layer).\n *    - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n *      (as above) but where interactive form elements are updated with data\n *      from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n *   The default value is `AnnotationMode.ENABLE`.\n * @property {Array<any>} [transform] - Additional transform, applied just\n *   before viewport transform.\n * @property {CanvasGradient | CanvasPattern | string} [background] - Background\n *   to use for the canvas.\n *   Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS\n *   <color> value, a `CanvasGradient` object (a linear or radial gradient) or\n *   a `CanvasPattern` object (a repetitive image). The default value is\n *   'rgb(255,255,255)'.\n *\n *   NOTE: This option may be partially, or completely, ignored when the\n *   `pageColors`-option is used.\n * @property {Object} [pageColors] - Overwrites background and foreground colors\n *   with user defined ones in order to improve readability in high contrast\n *   mode.\n * @property {Promise<OptionalContentConfig>} [optionalContentConfigPromise] -\n *   A promise that should resolve with an {@link OptionalContentConfig}\n *   created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,\n *   the configuration will be fetched automatically with the default visibility\n *   states set.\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap] - Map some\n *   annotation ids with canvases used to render them.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n */\n\n/**\n * Page getOperatorList parameters.\n *\n * @typedef {Object} GetOperatorListParameters\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n *   or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are included\n *   in the operatorList, for annotations with appearance-data; the values from\n *   {@link AnnotationMode} should be used. The following values are supported:\n *    - `AnnotationMode.DISABLE`, which disables all annotations.\n *    - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n *      it also depends on the `intent`-option, see above).\n *    - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n *      interactive form elements (those will be rendered in the display layer).\n *    - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n *      (as above) but where interactive form elements are updated with data\n *      from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n *   The default value is `AnnotationMode.ENABLE`.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n */\n\n/**\n * Structure tree node. The root node will have a role \"Root\".\n *\n * @typedef {Object} StructTreeNode\n * @property {Array<StructTreeNode | StructTreeContent>} children - Array of\n *   {@link StructTreeNode} and {@link StructTreeContent} objects.\n * @property {string} role - element's role, already mapped if a role map exists\n * in the PDF.\n */\n\n/**\n * Structure tree content.\n *\n * @typedef {Object} StructTreeContent\n * @property {string} type - either \"content\" for page and stream structure\n *   elements or \"object\" for object references.\n * @property {string} id - unique id that will map to the text layer.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array<number>} fnArray - Array containing the operator functions.\n * @property {Array<any>} argsArray - Array containing the arguments of the\n *   functions.\n */\n\n/**\n * Proxy to a `PDFPage` in the worker thread.\n */\nclass PDFPageProxy {\n  #delayedCleanupTimeout = null;\n\n  #pendingCleanup = false;\n\n  constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n    this._pageIndex = pageIndex;\n    this._pageInfo = pageInfo;\n    this._transport = transport;\n    this._stats = pdfBug ? new StatTimer() : null;\n    this._pdfBug = pdfBug;\n    /** @type {PDFObjects} */\n    this.commonObjs = transport.commonObjs;\n    this.objs = new PDFObjects();\n\n    this._maybeCleanupAfterRender = false;\n    this._intentStates = new Map();\n    this.destroyed = false;\n  }\n\n  /**\n   * @type {number} Page number of the page. First page is 1.\n   */\n  get pageNumber() {\n    return this._pageIndex + 1;\n  }\n\n  /**\n   * @type {number} The number of degrees the page is rotated clockwise.\n   */\n  get rotate() {\n    return this._pageInfo.rotate;\n  }\n\n  /**\n   * @type {RefProxy | null} The reference that points to this page.\n   */\n  get ref() {\n    return this._pageInfo.ref;\n  }\n\n  /**\n   * @type {number} The default size of units in 1/72nds of an inch.\n   */\n  get userUnit() {\n    return this._pageInfo.userUnit;\n  }\n\n  /**\n   * @type {Array<number>} An array of the visible portion of the PDF page in\n   *   user space units [x1, y1, x2, y2].\n   */\n  get view() {\n    return this._pageInfo.view;\n  }\n\n  /**\n   * @param {GetViewportParameters} params - Viewport parameters.\n   * @returns {PageViewport} Contains 'width' and 'height' properties\n   *   along with transforms required for rendering.\n   */\n  getViewport({\n    scale,\n    rotation = this.rotate,\n    offsetX = 0,\n    offsetY = 0,\n    dontFlip = false,\n  } = {}) {\n    return new PageViewport({\n      viewBox: this.view,\n      scale,\n      rotation,\n      offsetX,\n      offsetY,\n      dontFlip,\n    });\n  }\n\n  /**\n   * @param {GetAnnotationsParameters} params - Annotation parameters.\n   * @returns {Promise<Array<any>>} A promise that is resolved with an\n   *   {Array} of the annotation objects.\n   */\n  getAnnotations({ intent = \"display\" } = {}) {\n    const intentArgs = this._transport.getRenderingIntent(intent);\n\n    return this._transport.getAnnotations(\n      this._pageIndex,\n      intentArgs.renderingIntent\n    );\n  }\n\n  /**\n   * @returns {Promise<Object>} A promise that is resolved with an\n   *   {Object} with JS actions.\n   */\n  getJSActions() {\n    return this._transport.getPageJSActions(this._pageIndex);\n  }\n\n  /**\n   * @type {Object} The filter factory instance.\n   */\n  get filterFactory() {\n    return this._transport.filterFactory;\n  }\n\n  /**\n   * @type {boolean} True if only XFA form.\n   */\n  get isPureXfa() {\n    return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n  }\n\n  /**\n   * @returns {Promise<Object | null>} A promise that is resolved with\n   *   an {Object} with a fake DOM object (a tree structure where elements\n   *   are {Object} with a name, attributes (class, style, ...), value and\n   *   children, very similar to a HTML DOM tree), or `null` if no XFA exists.\n   */\n  async getXfa() {\n    return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n  }\n\n  /**\n   * Begins the process of rendering a page to the desired context.\n   *\n   * @param {RenderParameters} params - Page render parameters.\n   * @returns {RenderTask} An object that contains a promise that is\n   *   resolved when the page finishes rendering.\n   */\n  render({\n    canvasContext,\n    viewport,\n    intent = \"display\",\n    annotationMode = AnnotationMode.ENABLE,\n    transform = null,\n    background = null,\n    optionalContentConfigPromise = null,\n    annotationCanvasMap = null,\n    pageColors = null,\n    printAnnotationStorage = null,\n  }) {\n    this._stats?.time(\"Overall\");\n\n    const intentArgs = this._transport.getRenderingIntent(\n      intent,\n      annotationMode,\n      printAnnotationStorage\n    );\n    // If there was a pending destroy, cancel it so no cleanup happens during\n    // this call to render...\n    this.#pendingCleanup = false;\n    // ... and ensure that a delayed cleanup is always aborted.\n    this.#abortDelayedCleanup();\n\n    if (!optionalContentConfigPromise) {\n      optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n    }\n\n    let intentState = this._intentStates.get(intentArgs.cacheKey);\n    if (!intentState) {\n      intentState = Object.create(null);\n      this._intentStates.set(intentArgs.cacheKey, intentState);\n    }\n\n    // Ensure that a pending `streamReader` cancel timeout is always aborted.\n    if (intentState.streamReaderCancelTimeout) {\n      clearTimeout(intentState.streamReaderCancelTimeout);\n      intentState.streamReaderCancelTimeout = null;\n    }\n\n    const intentPrint = !!(\n      intentArgs.renderingIntent & RenderingIntentFlag.PRINT\n    );\n\n    // If there's no displayReadyCapability yet, then the operatorList\n    // was never requested before. Make the request and create the promise.\n    if (!intentState.displayReadyCapability) {\n      intentState.displayReadyCapability = new PromiseCapability();\n      intentState.operatorList = {\n        fnArray: [],\n        argsArray: [],\n        lastChunk: false,\n        separateAnnots: null,\n      };\n\n      this._stats?.time(\"Page Request\");\n      this._pumpOperatorList(intentArgs);\n    }\n\n    const complete = error => {\n      intentState.renderTasks.delete(internalRenderTask);\n\n      // Attempt to reduce memory usage during *printing*, by always running\n      // cleanup immediately once rendering has finished.\n      if (this._maybeCleanupAfterRender || intentPrint) {\n        this.#pendingCleanup = true;\n      }\n      this.#tryCleanup(/* delayed = */ !intentPrint);\n\n      if (error) {\n        internalRenderTask.capability.reject(error);\n\n        this._abortOperatorList({\n          intentState,\n          reason: error instanceof Error ? error : new Error(error),\n        });\n      } else {\n        internalRenderTask.capability.resolve();\n      }\n\n      this._stats?.timeEnd(\"Rendering\");\n      this._stats?.timeEnd(\"Overall\");\n    };\n\n    const internalRenderTask = new InternalRenderTask({\n      callback: complete,\n      // Only include the required properties, and *not* the entire object.\n      params: {\n        canvasContext,\n        viewport,\n        transform,\n        background,\n      },\n      objs: this.objs,\n      commonObjs: this.commonObjs,\n      annotationCanvasMap,\n      operatorList: intentState.operatorList,\n      pageIndex: this._pageIndex,\n      canvasFactory: this._transport.canvasFactory,\n      filterFactory: this._transport.filterFactory,\n      useRequestAnimationFrame: !intentPrint,\n      pdfBug: this._pdfBug,\n      pageColors,\n    });\n\n    (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n    const renderTask = internalRenderTask.task;\n\n    Promise.all([\n      intentState.displayReadyCapability.promise,\n      optionalContentConfigPromise,\n    ])\n      .then(([transparency, optionalContentConfig]) => {\n        if (this.destroyed) {\n          complete();\n          return;\n        }\n        this._stats?.time(\"Rendering\");\n\n        internalRenderTask.initializeGraphics({\n          transparency,\n          optionalContentConfig,\n        });\n        internalRenderTask.operatorListChanged();\n      })\n      .catch(complete);\n\n    return renderTask;\n  }\n\n  /**\n   * @param {GetOperatorListParameters} params - Page getOperatorList\n   *   parameters.\n   * @returns {Promise<PDFOperatorList>} A promise resolved with an\n   *   {@link PDFOperatorList} object that represents the page's operator list.\n   */\n  getOperatorList({\n    intent = \"display\",\n    annotationMode = AnnotationMode.ENABLE,\n    printAnnotationStorage = null,\n  } = {}) {\n    if (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"GENERIC\")) {\n      throw new Error(\"Not implemented: getOperatorList\");\n    }\n    function operatorListChanged() {\n      if (intentState.operatorList.lastChunk) {\n        intentState.opListReadCapability.resolve(intentState.operatorList);\n\n        intentState.renderTasks.delete(opListTask);\n      }\n    }\n\n    const intentArgs = this._transport.getRenderingIntent(\n      intent,\n      annotationMode,\n      printAnnotationStorage,\n      /* isOpList = */ true\n    );\n    let intentState = this._intentStates.get(intentArgs.cacheKey);\n    if (!intentState) {\n      intentState = Object.create(null);\n      this._intentStates.set(intentArgs.cacheKey, intentState);\n    }\n    let opListTask;\n\n    if (!intentState.opListReadCapability) {\n      opListTask = Object.create(null);\n      opListTask.operatorListChanged = operatorListChanged;\n      intentState.opListReadCapability = new PromiseCapability();\n      (intentState.renderTasks ||= new Set()).add(opListTask);\n      intentState.operatorList = {\n        fnArray: [],\n        argsArray: [],\n        lastChunk: false,\n        separateAnnots: null,\n      };\n\n      this._stats?.time(\"Page Request\");\n      this._pumpOperatorList(intentArgs);\n    }\n    return intentState.opListReadCapability.promise;\n  }\n\n  /**\n   * NOTE: All occurrences of whitespace will be replaced by\n   * standard spaces (0x20).\n   *\n   * @param {getTextContentParameters} params - getTextContent parameters.\n   * @returns {ReadableStream} Stream for reading text content chunks.\n   */\n  streamTextContent({\n    includeMarkedContent = false,\n    disableNormalization = false,\n  } = {}) {\n    const TEXT_CONTENT_CHUNK_SIZE = 100;\n\n    return this._transport.messageHandler.sendWithStream(\n      \"GetTextContent\",\n      {\n        pageIndex: this._pageIndex,\n        includeMarkedContent: includeMarkedContent === true,\n        disableNormalization: disableNormalization === true,\n      },\n      {\n        highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n        size(textContent) {\n          return textContent.items.length;\n        },\n      }\n    );\n  }\n\n  /**\n   * NOTE: All occurrences of whitespace will be replaced by\n   * standard spaces (0x20).\n   *\n   * @param {getTextContentParameters} params - getTextContent parameters.\n   * @returns {Promise<TextContent>} A promise that is resolved with a\n   *   {@link TextContent} object that represents the page's text content.\n   */\n  getTextContent(params = {}) {\n    if (this._transport._htmlForXfa) {\n      // TODO: We need to revisit this once the XFA foreground patch lands and\n      // only do this for non-foreground XFA.\n      return this.getXfa().then(xfa => {\n        return XfaText.textContent(xfa);\n      });\n    }\n    const readableStream = this.streamTextContent(params);\n\n    return new Promise(function (resolve, reject) {\n      function pump() {\n        reader.read().then(function ({ value, done }) {\n          if (done) {\n            resolve(textContent);\n            return;\n          }\n          Object.assign(textContent.styles, value.styles);\n          textContent.items.push(...value.items);\n          pump();\n        }, reject);\n      }\n\n      const reader = readableStream.getReader();\n      const textContent = {\n        items: [],\n        styles: Object.create(null),\n      };\n      pump();\n    });\n  }\n\n  /**\n   * @returns {Promise<StructTreeNode>} A promise that is resolved with a\n   *   {@link StructTreeNode} object that represents the page's structure tree,\n   *   or `null` when no structure tree is present for the current page.\n   */\n  getStructTree() {\n    return this._transport.getStructTree(this._pageIndex);\n  }\n\n  /**\n   * Destroys the page object.\n   * @private\n   */\n  _destroy() {\n    this.destroyed = true;\n\n    const waitOn = [];\n    for (const intentState of this._intentStates.values()) {\n      this._abortOperatorList({\n        intentState,\n        reason: new Error(\"Page was destroyed.\"),\n        force: true,\n      });\n\n      if (intentState.opListReadCapability) {\n        // Avoid errors below, since the renderTasks are just stubs.\n        continue;\n      }\n      for (const internalRenderTask of intentState.renderTasks) {\n        waitOn.push(internalRenderTask.completed);\n        internalRenderTask.cancel();\n      }\n    }\n    this.objs.clear();\n    this.#pendingCleanup = false;\n    this.#abortDelayedCleanup();\n\n    return Promise.all(waitOn);\n  }\n\n  /**\n   * Cleans up resources allocated by the page.\n   *\n   * @param {boolean} [resetStats] - Reset page stats, if enabled.\n   *   The default value is `false`.\n   * @returns {boolean} Indicates if clean-up was successfully run.\n   */\n  cleanup(resetStats = false) {\n    this.#pendingCleanup = true;\n    const success = this.#tryCleanup(/* delayed = */ false);\n\n    if (resetStats && success) {\n      this._stats &&= new StatTimer();\n    }\n    return success;\n  }\n\n  /**\n   * Attempts to clean up if rendering is in a state where that's possible.\n   * @param {boolean} [delayed] - Delay the cleanup, to e.g. improve zooming\n   *   performance in documents with large images.\n   *   The default value is `false`.\n   * @returns {boolean} Indicates if clean-up was successfully run.\n   */\n  #tryCleanup(delayed = false) {\n    this.#abortDelayedCleanup();\n\n    if (!this.#pendingCleanup || this.destroyed) {\n      return false;\n    }\n    if (delayed) {\n      this.#delayedCleanupTimeout = setTimeout(() => {\n        this.#delayedCleanupTimeout = null;\n        this.#tryCleanup(/* delayed = */ false);\n      }, DELAYED_CLEANUP_TIMEOUT);\n\n      return false;\n    }\n    for (const { renderTasks, operatorList } of this._intentStates.values()) {\n      if (renderTasks.size > 0 || !operatorList.lastChunk) {\n        return false;\n      }\n    }\n    this._intentStates.clear();\n    this.objs.clear();\n    this.#pendingCleanup = false;\n    return true;\n  }\n\n  #abortDelayedCleanup() {\n    if (this.#delayedCleanupTimeout) {\n      clearTimeout(this.#delayedCleanupTimeout);\n      this.#delayedCleanupTimeout = null;\n    }\n  }\n\n  /**\n   * @private\n   */\n  _startRenderPage(transparency, cacheKey) {\n    const intentState = this._intentStates.get(cacheKey);\n    if (!intentState) {\n      return; // Rendering was cancelled.\n    }\n    this._stats?.timeEnd(\"Page Request\");\n\n    // TODO Refactor RenderPageRequest to separate rendering\n    // and operator list logic\n    intentState.displayReadyCapability?.resolve(transparency);\n  }\n\n  /**\n   * @private\n   */\n  _renderPageChunk(operatorListChunk, intentState) {\n    // Add the new chunk to the current operator list.\n    for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n      intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n      intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n    }\n    intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n    intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n\n    // Notify all the rendering tasks there are more operators to be consumed.\n    for (const internalRenderTask of intentState.renderTasks) {\n      internalRenderTask.operatorListChanged();\n    }\n\n    if (operatorListChunk.lastChunk) {\n      this.#tryCleanup(/* delayed = */ true);\n    }\n  }\n\n  /**\n   * @private\n   */\n  _pumpOperatorList({\n    renderingIntent,\n    cacheKey,\n    annotationStorageSerializable,\n  }) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        Number.isInteger(renderingIntent) && renderingIntent > 0,\n        '_pumpOperatorList: Expected valid \"renderingIntent\" argument.'\n      );\n    }\n    const { map, transfer } = annotationStorageSerializable;\n\n    const readableStream = this._transport.messageHandler.sendWithStream(\n      \"GetOperatorList\",\n      {\n        pageIndex: this._pageIndex,\n        intent: renderingIntent,\n        cacheKey,\n        annotationStorage: map,\n      },\n      transfer\n    );\n    const reader = readableStream.getReader();\n\n    const intentState = this._intentStates.get(cacheKey);\n    intentState.streamReader = reader;\n\n    const pump = () => {\n      reader.read().then(\n        ({ value, done }) => {\n          if (done) {\n            intentState.streamReader = null;\n            return;\n          }\n          if (this._transport.destroyed) {\n            return; // Ignore any pending requests if the worker was terminated.\n          }\n          this._renderPageChunk(value, intentState);\n          pump();\n        },\n        reason => {\n          intentState.streamReader = null;\n\n          if (this._transport.destroyed) {\n            return; // Ignore any pending requests if the worker was terminated.\n          }\n          if (intentState.operatorList) {\n            // Mark operator list as complete.\n            intentState.operatorList.lastChunk = true;\n\n            for (const internalRenderTask of intentState.renderTasks) {\n              internalRenderTask.operatorListChanged();\n            }\n            this.#tryCleanup(/* delayed = */ true);\n          }\n\n          if (intentState.displayReadyCapability) {\n            intentState.displayReadyCapability.reject(reason);\n          } else if (intentState.opListReadCapability) {\n            intentState.opListReadCapability.reject(reason);\n          } else {\n            throw reason;\n          }\n        }\n      );\n    };\n    pump();\n  }\n\n  /**\n   * @private\n   */\n  _abortOperatorList({ intentState, reason, force = false }) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        reason instanceof Error,\n        '_abortOperatorList: Expected valid \"reason\" argument.'\n      );\n    }\n\n    if (!intentState.streamReader) {\n      return;\n    }\n    // Ensure that a pending `streamReader` cancel timeout is always aborted.\n    if (intentState.streamReaderCancelTimeout) {\n      clearTimeout(intentState.streamReaderCancelTimeout);\n      intentState.streamReaderCancelTimeout = null;\n    }\n\n    if (!force) {\n      // Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\n      // multiple render() calls on the same canvas, won't break all rendering.\n      if (intentState.renderTasks.size > 0) {\n        return;\n      }\n      // Don't immediately abort parsing on the worker-thread when rendering is\n      // cancelled, since that will unnecessarily delay re-rendering when (for\n      // partially parsed pages) e.g. zooming/rotation occurs in the viewer.\n      if (reason instanceof RenderingCancelledException) {\n        let delay = RENDERING_CANCELLED_TIMEOUT;\n        if (reason.extraDelay > 0 && reason.extraDelay < /* ms = */ 1000) {\n          // Above, we prevent the total delay from becoming arbitrarily large.\n          delay += reason.extraDelay;\n        }\n\n        intentState.streamReaderCancelTimeout = setTimeout(() => {\n          intentState.streamReaderCancelTimeout = null;\n          this._abortOperatorList({ intentState, reason, force: true });\n        }, delay);\n        return;\n      }\n    }\n    intentState.streamReader\n      .cancel(new AbortException(reason.message))\n      .catch(() => {\n        // Avoid \"Uncaught promise\" messages in the console.\n      });\n    intentState.streamReader = null;\n\n    if (this._transport.destroyed) {\n      return; // Ignore any pending requests if the worker was terminated.\n    }\n    // Remove the current `intentState`, since a cancelled `getOperatorList`\n    // call on the worker-thread cannot be re-started...\n    for (const [curCacheKey, curIntentState] of this._intentStates) {\n      if (curIntentState === intentState) {\n        this._intentStates.delete(curCacheKey);\n        break;\n      }\n    }\n    // ... and force clean-up to ensure that any old state is always removed.\n    this.cleanup();\n  }\n\n  /**\n   * @type {StatTimer | null} Returns page stats, if enabled; returns `null`\n   *   otherwise.\n   */\n  get stats() {\n    return this._stats;\n  }\n}\n\nclass LoopbackPort {\n  #listeners = new Set();\n\n  #deferred = Promise.resolve();\n\n  postMessage(obj, transfer) {\n    const event = {\n      data: structuredClone(obj, transfer ? { transfer } : null),\n    };\n\n    this.#deferred.then(() => {\n      for (const listener of this.#listeners) {\n        listener.call(this, event);\n      }\n    });\n  }\n\n  addEventListener(name, listener) {\n    this.#listeners.add(listener);\n  }\n\n  removeEventListener(name, listener) {\n    this.#listeners.delete(listener);\n  }\n\n  terminate() {\n    this.#listeners.clear();\n  }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} [name] - The name of the worker.\n * @property {Worker} [port] - The `workerPort` object.\n * @property {number} [verbosity] - Controls the logging level;\n *   the constants from {@link VerbosityLevel} should be used.\n */\n\nconst PDFWorkerUtil = {\n  isWorkerDisabled: false,\n  fakeWorkerId: 0,\n};\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n  if (isNodeJS) {\n    // Workers aren't supported in Node.js, force-disabling them there.\n    PDFWorkerUtil.isWorkerDisabled = true;\n\n    GlobalWorkerOptions.workerSrc ||= PDFJSDev.test(\"LIB\")\n      ? \"../pdf.worker.js\"\n      : \"./pdf.worker.mjs\";\n  }\n\n  // Check if URLs have the same origin. For non-HTTP based URLs, returns false.\n  PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) {\n    let base;\n    try {\n      base = new URL(baseUrl);\n      if (!base.origin || base.origin === \"null\") {\n        return false; // non-HTTP url\n      }\n    } catch {\n      return false;\n    }\n\n    const other = new URL(otherUrl, base);\n    return base.origin === other.origin;\n  };\n\n  PDFWorkerUtil.createCDNWrapper = function (url) {\n    // We will rely on blob URL's property to specify origin.\n    // We want this function to fail in case if createObjectURL or Blob do not\n    // exist or fail for some reason -- our Worker creation will fail anyway.\n    const wrapper = `await import(\"${url}\");`;\n    return URL.createObjectURL(new Blob([wrapper]));\n  };\n}\n\n/**\n * PDF.js web worker abstraction that controls the instantiation of PDF\n * documents. Message handlers are used to pass information from the main\n * thread to the worker thread and vice versa. If the creation of a web\n * worker is not possible, a \"fake\" worker will be used instead.\n *\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\nclass PDFWorker {\n  static #workerPorts;\n\n  constructor({\n    name = null,\n    port = null,\n    verbosity = getVerbosityLevel(),\n  } = {}) {\n    this.name = name;\n    this.destroyed = false;\n    this.verbosity = verbosity;\n\n    this._readyCapability = new PromiseCapability();\n    this._port = null;\n    this._webWorker = null;\n    this._messageHandler = null;\n\n    if (\n      (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) &&\n      port\n    ) {\n      if (PDFWorker.#workerPorts?.has(port)) {\n        throw new Error(\"Cannot use more than one PDFWorker per port.\");\n      }\n      (PDFWorker.#workerPorts ||= new WeakMap()).set(port, this);\n      this._initializeFromPort(port);\n      return;\n    }\n    this._initialize();\n  }\n\n  /**\n   * Promise for worker initialization completion.\n   * @type {Promise<void>}\n   */\n  get promise() {\n    return this._readyCapability.promise;\n  }\n\n  /**\n   * The current `workerPort`, when it exists.\n   * @type {Worker}\n   */\n  get port() {\n    return this._port;\n  }\n\n  /**\n   * The current MessageHandler-instance.\n   * @type {MessageHandler}\n   */\n  get messageHandler() {\n    return this._messageHandler;\n  }\n\n  _initializeFromPort(port) {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n      throw new Error(\"Not implemented: _initializeFromPort\");\n    }\n    this._port = port;\n    this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n    this._messageHandler.on(\"ready\", function () {\n      // Ignoring \"ready\" event -- MessageHandler should already be initialized\n      // and ready to accept messages.\n    });\n    this._readyCapability.resolve();\n    // Send global setting, e.g. verbosity level.\n    this._messageHandler.send(\"configure\", {\n      verbosity: this.verbosity,\n    });\n  }\n\n  _initialize() {\n    // If worker support isn't disabled explicit and the browser has worker\n    // support, create a new web worker and test if it/the browser fulfills\n    // all requirements to run parts of pdf.js in a web worker.\n    // Right now, the requirement is, that an Uint8Array is still an\n    // Uint8Array as it arrives on the worker. (Chrome added this with v.15.)\n    if (\n      !PDFWorkerUtil.isWorkerDisabled &&\n      !PDFWorker.#mainThreadWorkerMessageHandler\n    ) {\n      let { workerSrc } = PDFWorker;\n\n      try {\n        // Wraps workerSrc path into blob URL, if the former does not belong\n        // to the same origin.\n        if (\n          typeof PDFJSDev !== \"undefined\" &&\n          PDFJSDev.test(\"GENERIC\") &&\n          !PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)\n        ) {\n          workerSrc = PDFWorkerUtil.createCDNWrapper(\n            new URL(workerSrc, window.location).href\n          );\n        }\n\n        const worker = new Worker(workerSrc, { type: \"module\" });\n        const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n        const terminateEarly = () => {\n          worker.removeEventListener(\"error\", onWorkerError);\n          messageHandler.destroy();\n          worker.terminate();\n          if (this.destroyed) {\n            this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n          } else {\n            // Fall back to fake worker if the termination is caused by an\n            // error (e.g. NetworkError / SecurityError).\n            this._setupFakeWorker();\n          }\n        };\n\n        const onWorkerError = () => {\n          if (!this._webWorker) {\n            // Worker failed to initialize due to an error. Clean up and fall\n            // back to the fake worker.\n            terminateEarly();\n          }\n        };\n        worker.addEventListener(\"error\", onWorkerError);\n\n        messageHandler.on(\"test\", data => {\n          worker.removeEventListener(\"error\", onWorkerError);\n          if (this.destroyed) {\n            terminateEarly();\n            return; // worker was destroyed\n          }\n          if (data) {\n            this._messageHandler = messageHandler;\n            this._port = worker;\n            this._webWorker = worker;\n\n            this._readyCapability.resolve();\n            // Send global setting, e.g. verbosity level.\n            messageHandler.send(\"configure\", {\n              verbosity: this.verbosity,\n            });\n          } else {\n            this._setupFakeWorker();\n            messageHandler.destroy();\n            worker.terminate();\n          }\n        });\n\n        messageHandler.on(\"ready\", data => {\n          worker.removeEventListener(\"error\", onWorkerError);\n          if (this.destroyed) {\n            terminateEarly();\n            return; // worker was destroyed\n          }\n          try {\n            sendTest();\n          } catch {\n            // We need fallback to a faked worker.\n            this._setupFakeWorker();\n          }\n        });\n\n        const sendTest = () => {\n          const testObj = new Uint8Array();\n          // Ensure that we can use `postMessage` transfers.\n          messageHandler.send(\"test\", testObj, [testObj.buffer]);\n        };\n\n        // It might take time for the worker to initialize. We will try to send\n        // the \"test\" message immediately, and once the \"ready\" message arrives.\n        // The worker shall process only the first received \"test\" message.\n        sendTest();\n        return;\n      } catch {\n        info(\"The worker has been disabled.\");\n      }\n    }\n    // Either workers are disabled, not supported or have thrown an exception.\n    // Thus, we fallback to a faked worker.\n    this._setupFakeWorker();\n  }\n\n  _setupFakeWorker() {\n    if (!PDFWorkerUtil.isWorkerDisabled) {\n      warn(\"Setting up fake worker.\");\n      PDFWorkerUtil.isWorkerDisabled = true;\n    }\n\n    PDFWorker._setupFakeWorkerGlobal\n      .then(WorkerMessageHandler => {\n        if (this.destroyed) {\n          this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n          return;\n        }\n        const port = new LoopbackPort();\n        this._port = port;\n\n        // All fake workers use the same port, making id unique.\n        const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n\n        // If the main thread is our worker, setup the handling for the\n        // messages -- the main thread sends to it self.\n        const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n        WorkerMessageHandler.setup(workerHandler, port);\n\n        const messageHandler = new MessageHandler(id, id + \"_worker\", port);\n        this._messageHandler = messageHandler;\n        this._readyCapability.resolve();\n        // Send global setting, e.g. verbosity level.\n        messageHandler.send(\"configure\", {\n          verbosity: this.verbosity,\n        });\n      })\n      .catch(reason => {\n        this._readyCapability.reject(\n          new Error(`Setting up fake worker failed: \"${reason.message}\".`)\n        );\n      });\n  }\n\n  /**\n   * Destroys the worker instance.\n   */\n  destroy() {\n    this.destroyed = true;\n    if (this._webWorker) {\n      // We need to terminate only web worker created resource.\n      this._webWorker.terminate();\n      this._webWorker = null;\n    }\n    PDFWorker.#workerPorts?.delete(this._port);\n    this._port = null;\n    if (this._messageHandler) {\n      this._messageHandler.destroy();\n      this._messageHandler = null;\n    }\n  }\n\n  /**\n   * @param {PDFWorkerParameters} params - The worker initialization parameters.\n   */\n  static fromPort(params) {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n      throw new Error(\"Not implemented: fromPort\");\n    }\n    if (!params?.port) {\n      throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n    }\n    const cachedPort = this.#workerPorts?.get(params.port);\n    if (cachedPort) {\n      if (cachedPort._pendingDestroy) {\n        throw new Error(\n          \"PDFWorker.fromPort - the worker is being destroyed.\\n\" +\n            \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\"\n        );\n      }\n      return cachedPort;\n    }\n    return new PDFWorker(params);\n  }\n\n  /**\n   * The current `workerSrc`, when it exists.\n   * @type {string}\n   */\n  static get workerSrc() {\n    if (GlobalWorkerOptions.workerSrc) {\n      return GlobalWorkerOptions.workerSrc;\n    }\n    throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n  }\n\n  static get #mainThreadWorkerMessageHandler() {\n    try {\n      return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n    } catch {\n      return null;\n    }\n  }\n\n  // Loads worker code into the main-thread.\n  static get _setupFakeWorkerGlobal() {\n    const loader = async () => {\n      if (this.#mainThreadWorkerMessageHandler) {\n        // The worker was already loaded using e.g. a `<script>` tag.\n        return this.#mainThreadWorkerMessageHandler;\n      }\n      const worker =\n        typeof PDFJSDev === \"undefined\"\n          ? await import(\"pdfjs/pdf.worker.js\")\n          : await import(/* webpackIgnore: true */ this.workerSrc);\n      return worker.WorkerMessageHandler;\n    };\n\n    return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n  }\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass WorkerTransport {\n  #methodPromises = new Map();\n\n  #pageCache = new Map();\n\n  #pagePromises = new Map();\n\n  #passwordCapability = null;\n\n  constructor(messageHandler, loadingTask, networkStream, params, factory) {\n    this.messageHandler = messageHandler;\n    this.loadingTask = loadingTask;\n    this.commonObjs = new PDFObjects();\n    this.fontLoader = new FontLoader({\n      ownerDocument: params.ownerDocument,\n      styleElement: params.styleElement,\n    });\n    this._params = params;\n\n    this.canvasFactory = factory.canvasFactory;\n    this.filterFactory = factory.filterFactory;\n    this.cMapReaderFactory = factory.cMapReaderFactory;\n    this.standardFontDataFactory = factory.standardFontDataFactory;\n\n    this.destroyed = false;\n    this.destroyCapability = null;\n\n    this._networkStream = networkStream;\n    this._fullReader = null;\n    this._lastProgress = null;\n    this.downloadInfoCapability = new PromiseCapability();\n\n    this.setupMessageHandler();\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      // For testing purposes.\n      Object.defineProperty(this, \"getXFADatasets\", {\n        value: () => {\n          return this.messageHandler.sendWithPromise(\"GetXFADatasets\", null);\n        },\n      });\n      Object.defineProperty(this, \"getXRefPrevValue\", {\n        value: () => {\n          return this.messageHandler.sendWithPromise(\"GetXRefPrevValue\", null);\n        },\n      });\n      Object.defineProperty(this, \"getAnnotArray\", {\n        value: pageIndex => {\n          return this.messageHandler.sendWithPromise(\"GetAnnotArray\", {\n            pageIndex,\n          });\n        },\n      });\n    }\n  }\n\n  #cacheSimpleMethod(name, data = null) {\n    const cachedPromise = this.#methodPromises.get(name);\n    if (cachedPromise) {\n      return cachedPromise;\n    }\n    const promise = this.messageHandler.sendWithPromise(name, data);\n\n    this.#methodPromises.set(name, promise);\n    return promise;\n  }\n\n  get annotationStorage() {\n    return shadow(this, \"annotationStorage\", new AnnotationStorage());\n  }\n\n  getRenderingIntent(\n    intent,\n    annotationMode = AnnotationMode.ENABLE,\n    printAnnotationStorage = null,\n    isOpList = false\n  ) {\n    let renderingIntent = RenderingIntentFlag.DISPLAY; // Default value.\n    let annotationStorageSerializable = SerializableEmpty;\n\n    switch (intent) {\n      case \"any\":\n        renderingIntent = RenderingIntentFlag.ANY;\n        break;\n      case \"display\":\n        break;\n      case \"print\":\n        renderingIntent = RenderingIntentFlag.PRINT;\n        break;\n      default:\n        warn(`getRenderingIntent - invalid intent: ${intent}`);\n    }\n\n    switch (annotationMode) {\n      case AnnotationMode.DISABLE:\n        renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n        break;\n      case AnnotationMode.ENABLE:\n        break;\n      case AnnotationMode.ENABLE_FORMS:\n        renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n        break;\n      case AnnotationMode.ENABLE_STORAGE:\n        renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n\n        const annotationStorage =\n          renderingIntent & RenderingIntentFlag.PRINT &&\n          printAnnotationStorage instanceof PrintAnnotationStorage\n            ? printAnnotationStorage\n            : this.annotationStorage;\n\n        annotationStorageSerializable = annotationStorage.serializable;\n        break;\n      default:\n        warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n    }\n\n    if (isOpList) {\n      renderingIntent += RenderingIntentFlag.OPLIST;\n    }\n\n    return {\n      renderingIntent,\n      cacheKey: `${renderingIntent}_${annotationStorageSerializable.hash}`,\n      annotationStorageSerializable,\n    };\n  }\n\n  destroy() {\n    if (this.destroyCapability) {\n      return this.destroyCapability.promise;\n    }\n\n    this.destroyed = true;\n    this.destroyCapability = new PromiseCapability();\n\n    this.#passwordCapability?.reject(\n      new Error(\"Worker was destroyed during onPassword callback\")\n    );\n\n    const waitOn = [];\n    // We need to wait for all renderings to be completed, e.g.\n    // timeout/rAF can take a long time.\n    for (const page of this.#pageCache.values()) {\n      waitOn.push(page._destroy());\n    }\n    this.#pageCache.clear();\n    this.#pagePromises.clear();\n    // Allow `AnnotationStorage`-related clean-up when destroying the document.\n    if (this.hasOwnProperty(\"annotationStorage\")) {\n      this.annotationStorage.resetModified();\n    }\n    // We also need to wait for the worker to finish its long running tasks.\n    const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n    waitOn.push(terminated);\n\n    Promise.all(waitOn).then(() => {\n      this.commonObjs.clear();\n      this.fontLoader.clear();\n      this.#methodPromises.clear();\n      this.filterFactory.destroy();\n\n      this._networkStream?.cancelAllRequests(\n        new AbortException(\"Worker was terminated.\")\n      );\n\n      if (this.messageHandler) {\n        this.messageHandler.destroy();\n        this.messageHandler = null;\n      }\n      this.destroyCapability.resolve();\n    }, this.destroyCapability.reject);\n    return this.destroyCapability.promise;\n  }\n\n  setupMessageHandler() {\n    const { messageHandler, loadingTask } = this;\n\n    messageHandler.on(\"GetReader\", (data, sink) => {\n      assert(\n        this._networkStream,\n        \"GetReader - no `IPDFStream` instance available.\"\n      );\n      this._fullReader = this._networkStream.getFullReader();\n      this._fullReader.onProgress = evt => {\n        this._lastProgress = {\n          loaded: evt.loaded,\n          total: evt.total,\n        };\n      };\n      sink.onPull = () => {\n        this._fullReader\n          .read()\n          .then(function ({ value, done }) {\n            if (done) {\n              sink.close();\n              return;\n            }\n            assert(\n              value instanceof ArrayBuffer,\n              \"GetReader - expected an ArrayBuffer.\"\n            );\n            // Enqueue data chunk into sink, and transfer it\n            // to other side as `Transferable` object.\n            sink.enqueue(new Uint8Array(value), 1, [value]);\n          })\n          .catch(reason => {\n            sink.error(reason);\n          });\n      };\n\n      sink.onCancel = reason => {\n        this._fullReader.cancel(reason);\n\n        sink.ready.catch(readyReason => {\n          if (this.destroyed) {\n            return; // Ignore any pending requests if the worker was terminated.\n          }\n          throw readyReason;\n        });\n      };\n    });\n\n    messageHandler.on(\"ReaderHeadersReady\", data => {\n      const headersCapability = new PromiseCapability();\n      const fullReader = this._fullReader;\n      fullReader.headersReady.then(() => {\n        // If stream or range are disabled, it's our only way to report\n        // loading progress.\n        if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n          if (this._lastProgress) {\n            loadingTask.onProgress?.(this._lastProgress);\n          }\n          fullReader.onProgress = evt => {\n            loadingTask.onProgress?.({\n              loaded: evt.loaded,\n              total: evt.total,\n            });\n          };\n        }\n\n        headersCapability.resolve({\n          isStreamingSupported: fullReader.isStreamingSupported,\n          isRangeSupported: fullReader.isRangeSupported,\n          contentLength: fullReader.contentLength,\n        });\n      }, headersCapability.reject);\n\n      return headersCapability.promise;\n    });\n\n    messageHandler.on(\"GetRangeReader\", (data, sink) => {\n      assert(\n        this._networkStream,\n        \"GetRangeReader - no `IPDFStream` instance available.\"\n      );\n      const rangeReader = this._networkStream.getRangeReader(\n        data.begin,\n        data.end\n      );\n\n      // When streaming is enabled, it's possible that the data requested here\n      // has already been fetched via the `_fullRequestReader` implementation.\n      // However, given that the PDF data is loaded asynchronously on the\n      // main-thread and then sent via `postMessage` to the worker-thread,\n      // it may not have been available during parsing (hence the attempt to\n      // use range requests here).\n      //\n      // To avoid wasting time and resources here, we'll thus *not* dispatch\n      // range requests if the data was already loaded but has not been sent to\n      // the worker-thread yet (which will happen via the `_fullRequestReader`).\n      if (!rangeReader) {\n        sink.close();\n        return;\n      }\n\n      sink.onPull = () => {\n        rangeReader\n          .read()\n          .then(function ({ value, done }) {\n            if (done) {\n              sink.close();\n              return;\n            }\n            assert(\n              value instanceof ArrayBuffer,\n              \"GetRangeReader - expected an ArrayBuffer.\"\n            );\n            sink.enqueue(new Uint8Array(value), 1, [value]);\n          })\n          .catch(reason => {\n            sink.error(reason);\n          });\n      };\n\n      sink.onCancel = reason => {\n        rangeReader.cancel(reason);\n\n        sink.ready.catch(readyReason => {\n          if (this.destroyed) {\n            return; // Ignore any pending requests if the worker was terminated.\n          }\n          throw readyReason;\n        });\n      };\n    });\n\n    messageHandler.on(\"GetDoc\", ({ pdfInfo }) => {\n      this._numPages = pdfInfo.numPages;\n      this._htmlForXfa = pdfInfo.htmlForXfa;\n      delete pdfInfo.htmlForXfa;\n      loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n    });\n\n    messageHandler.on(\"DocException\", function (ex) {\n      let reason;\n      switch (ex.name) {\n        case \"PasswordException\":\n          reason = new PasswordException(ex.message, ex.code);\n          break;\n        case \"InvalidPDFException\":\n          reason = new InvalidPDFException(ex.message);\n          break;\n        case \"MissingPDFException\":\n          reason = new MissingPDFException(ex.message);\n          break;\n        case \"UnexpectedResponseException\":\n          reason = new UnexpectedResponseException(ex.message, ex.status);\n          break;\n        case \"UnknownErrorException\":\n          reason = new UnknownErrorException(ex.message, ex.details);\n          break;\n        default:\n          unreachable(\"DocException - expected a valid Error.\");\n      }\n      loadingTask._capability.reject(reason);\n    });\n\n    messageHandler.on(\"PasswordRequest\", exception => {\n      this.#passwordCapability = new PromiseCapability();\n\n      if (loadingTask.onPassword) {\n        const updatePassword = password => {\n          if (password instanceof Error) {\n            this.#passwordCapability.reject(password);\n          } else {\n            this.#passwordCapability.resolve({ password });\n          }\n        };\n        try {\n          loadingTask.onPassword(updatePassword, exception.code);\n        } catch (ex) {\n          this.#passwordCapability.reject(ex);\n        }\n      } else {\n        this.#passwordCapability.reject(\n          new PasswordException(exception.message, exception.code)\n        );\n      }\n      return this.#passwordCapability.promise;\n    });\n\n    messageHandler.on(\"DataLoaded\", data => {\n      // For consistency: Ensure that progress is always reported when the\n      // entire PDF file has been loaded, regardless of how it was fetched.\n      loadingTask.onProgress?.({\n        loaded: data.length,\n        total: data.length,\n      });\n\n      this.downloadInfoCapability.resolve(data);\n    });\n\n    messageHandler.on(\"StartRenderPage\", data => {\n      if (this.destroyed) {\n        return; // Ignore any pending requests if the worker was terminated.\n      }\n\n      const page = this.#pageCache.get(data.pageIndex);\n      page._startRenderPage(data.transparency, data.cacheKey);\n    });\n\n    messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n      if (this.destroyed) {\n        return; // Ignore any pending requests if the worker was terminated.\n      }\n\n      if (this.commonObjs.has(id)) {\n        return;\n      }\n\n      switch (type) {\n        case \"Font\":\n          const params = this._params;\n\n          if (\"error\" in exportedData) {\n            const exportedError = exportedData.error;\n            warn(`Error during font loading: ${exportedError}`);\n            this.commonObjs.resolve(id, exportedError);\n            break;\n          }\n\n          const inspectFont =\n            params.pdfBug && globalThis.FontInspector?.enabled\n              ? (font, url) => globalThis.FontInspector.fontAdded(font, url)\n              : null;\n          const font = new FontFaceObject(exportedData, {\n            isEvalSupported: params.isEvalSupported,\n            disableFontFace: params.disableFontFace,\n            ignoreErrors: params.ignoreErrors,\n            inspectFont,\n          });\n\n          this.fontLoader\n            .bind(font)\n            .catch(reason => {\n              return messageHandler.sendWithPromise(\"FontFallback\", { id });\n            })\n            .finally(() => {\n              if (!params.fontExtraProperties && font.data) {\n                // Immediately release the `font.data` property once the font\n                // has been attached to the DOM, since it's no longer needed,\n                // rather than waiting for a `PDFDocumentProxy.cleanup` call.\n                // Since `font.data` could be very large, e.g. in some cases\n                // multiple megabytes, this will help reduce memory usage.\n                font.data = null;\n              }\n              this.commonObjs.resolve(id, font);\n            });\n          break;\n        case \"FontPath\":\n        case \"Image\":\n        case \"Pattern\":\n          this.commonObjs.resolve(id, exportedData);\n          break;\n        default:\n          throw new Error(`Got unknown common object type ${type}`);\n      }\n    });\n\n    messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n      if (this.destroyed) {\n        // Ignore any pending requests if the worker was terminated.\n        return;\n      }\n\n      const pageProxy = this.#pageCache.get(pageIndex);\n      if (pageProxy.objs.has(id)) {\n        return;\n      }\n      // Don't store data *after* cleanup has successfully run, see bug 1854145.\n      if (pageProxy._intentStates.size === 0) {\n        imageData?.bitmap?.close(); // Release any `ImageBitmap` data.\n        return;\n      }\n\n      switch (type) {\n        case \"Image\":\n          pageProxy.objs.resolve(id, imageData);\n\n          // Heuristic that will allow us not to store large data.\n          if (imageData) {\n            let length;\n            if (imageData.bitmap) {\n              const { width, height } = imageData;\n              length = width * height * 4;\n            } else {\n              length = imageData.data?.length || 0;\n            }\n\n            if (length > MAX_IMAGE_SIZE_TO_CACHE) {\n              pageProxy._maybeCleanupAfterRender = true;\n            }\n          }\n          break;\n        case \"Pattern\":\n          pageProxy.objs.resolve(id, imageData);\n          break;\n        default:\n          throw new Error(`Got unknown object type ${type}`);\n      }\n    });\n\n    messageHandler.on(\"DocProgress\", data => {\n      if (this.destroyed) {\n        return; // Ignore any pending requests if the worker was terminated.\n      }\n      loadingTask.onProgress?.({\n        loaded: data.loaded,\n        total: data.total,\n      });\n    });\n\n    messageHandler.on(\"FetchBuiltInCMap\", data => {\n      if (this.destroyed) {\n        return Promise.reject(new Error(\"Worker was destroyed.\"));\n      }\n      if (!this.cMapReaderFactory) {\n        return Promise.reject(\n          new Error(\n            \"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\"\n          )\n        );\n      }\n      return this.cMapReaderFactory.fetch(data);\n    });\n\n    messageHandler.on(\"FetchStandardFontData\", data => {\n      if (this.destroyed) {\n        return Promise.reject(new Error(\"Worker was destroyed.\"));\n      }\n      if (!this.standardFontDataFactory) {\n        return Promise.reject(\n          new Error(\n            \"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\"\n          )\n        );\n      }\n      return this.standardFontDataFactory.fetch(data);\n    });\n  }\n\n  getData() {\n    return this.messageHandler.sendWithPromise(\"GetData\", null);\n  }\n\n  saveDocument() {\n    if (this.annotationStorage.size <= 0) {\n      warn(\n        \"saveDocument called while `annotationStorage` is empty, \" +\n          \"please use the getData-method instead.\"\n      );\n    }\n    const { map, transfer } = this.annotationStorage.serializable;\n\n    return this.messageHandler\n      .sendWithPromise(\n        \"SaveDocument\",\n        {\n          isPureXfa: !!this._htmlForXfa,\n          numPages: this._numPages,\n          annotationStorage: map,\n          filename: this._fullReader?.filename ?? null,\n        },\n        transfer\n      )\n      .finally(() => {\n        this.annotationStorage.resetModified();\n      });\n  }\n\n  getPage(pageNumber) {\n    if (\n      !Number.isInteger(pageNumber) ||\n      pageNumber <= 0 ||\n      pageNumber > this._numPages\n    ) {\n      return Promise.reject(new Error(\"Invalid page request.\"));\n    }\n\n    const pageIndex = pageNumber - 1,\n      cachedPromise = this.#pagePromises.get(pageIndex);\n    if (cachedPromise) {\n      return cachedPromise;\n    }\n    const promise = this.messageHandler\n      .sendWithPromise(\"GetPage\", {\n        pageIndex,\n      })\n      .then(pageInfo => {\n        if (this.destroyed) {\n          throw new Error(\"Transport destroyed\");\n        }\n        const page = new PDFPageProxy(\n          pageIndex,\n          pageInfo,\n          this,\n          this._params.pdfBug\n        );\n        this.#pageCache.set(pageIndex, page);\n        return page;\n      });\n    this.#pagePromises.set(pageIndex, promise);\n    return promise;\n  }\n\n  getPageIndex(ref) {\n    if (\n      typeof ref !== \"object\" ||\n      ref === null ||\n      !Number.isInteger(ref.num) ||\n      ref.num < 0 ||\n      !Number.isInteger(ref.gen) ||\n      ref.gen < 0\n    ) {\n      return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n    }\n    return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n      num: ref.num,\n      gen: ref.gen,\n    });\n  }\n\n  getAnnotations(pageIndex, intent) {\n    return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n      pageIndex,\n      intent,\n    });\n  }\n\n  getFieldObjects() {\n    return this.#cacheSimpleMethod(\"GetFieldObjects\");\n  }\n\n  hasJSActions() {\n    return this.#cacheSimpleMethod(\"HasJSActions\");\n  }\n\n  getCalculationOrderIds() {\n    return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n  }\n\n  getDestinations() {\n    return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n  }\n\n  getDestination(id) {\n    if (typeof id !== \"string\") {\n      return Promise.reject(new Error(\"Invalid destination request.\"));\n    }\n    return this.messageHandler.sendWithPromise(\"GetDestination\", {\n      id,\n    });\n  }\n\n  getPageLabels() {\n    return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n  }\n\n  getPageLayout() {\n    return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n  }\n\n  getPageMode() {\n    return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n  }\n\n  getViewerPreferences() {\n    return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n  }\n\n  getOpenAction() {\n    return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n  }\n\n  getAttachments() {\n    return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n  }\n\n  getDocJSActions() {\n    return this.#cacheSimpleMethod(\"GetDocJSActions\");\n  }\n\n  getPageJSActions(pageIndex) {\n    return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n      pageIndex,\n    });\n  }\n\n  getStructTree(pageIndex) {\n    return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n      pageIndex,\n    });\n  }\n\n  getOutline() {\n    return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n  }\n\n  getOptionalContentConfig() {\n    return this.messageHandler\n      .sendWithPromise(\"GetOptionalContentConfig\", null)\n      .then(results => {\n        return new OptionalContentConfig(results);\n      });\n  }\n\n  getPermissions() {\n    return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n  }\n\n  getMetadata() {\n    const name = \"GetMetadata\",\n      cachedPromise = this.#methodPromises.get(name);\n    if (cachedPromise) {\n      return cachedPromise;\n    }\n    const promise = this.messageHandler\n      .sendWithPromise(name, null)\n      .then(results => {\n        return {\n          info: results[0],\n          metadata: results[1] ? new Metadata(results[1]) : null,\n          contentDispositionFilename: this._fullReader?.filename ?? null,\n          contentLength: this._fullReader?.contentLength ?? null,\n        };\n      });\n    this.#methodPromises.set(name, promise);\n    return promise;\n  }\n\n  getMarkInfo() {\n    return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n  }\n\n  async startCleanup(keepLoadedFonts = false) {\n    if (this.destroyed) {\n      return; // No need to manually clean-up when destruction has started.\n    }\n    await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n\n    for (const page of this.#pageCache.values()) {\n      const cleanupSuccessful = page.cleanup();\n\n      if (!cleanupSuccessful) {\n        throw new Error(\n          `startCleanup: Page ${page.pageNumber} is currently rendering.`\n        );\n      }\n    }\n    this.commonObjs.clear();\n    if (!keepLoadedFonts) {\n      this.fontLoader.clear();\n    }\n    this.#methodPromises.clear();\n    this.filterFactory.destroy(/* keepHCM = */ true);\n  }\n\n  get loadingParams() {\n    const { disableAutoFetch, enableXfa } = this._params;\n    return shadow(this, \"loadingParams\", {\n      disableAutoFetch,\n      enableXfa,\n    });\n  }\n}\n\n/**\n * A PDF document and page is built of many objects. E.g. there are objects for\n * fonts, images, rendering code, etc. These objects may get processed inside of\n * a worker. This class implements some basic methods to manage these objects.\n */\nclass PDFObjects {\n  #objs = Object.create(null);\n\n  /**\n   * Ensures there is an object defined for `objId`.\n   *\n   * @param {string} objId\n   * @returns {Object}\n   */\n  #ensureObj(objId) {\n    return (this.#objs[objId] ||= {\n      capability: new PromiseCapability(),\n      data: null,\n    });\n  }\n\n  /**\n   * If called *without* callback, this returns the data of `objId` but the\n   * object needs to be resolved. If it isn't, this method throws.\n   *\n   * If called *with* a callback, the callback is called with the data of the\n   * object once the object is resolved. That means, if you call this method\n   * and the object is already resolved, the callback gets called right away.\n   *\n   * @param {string} objId\n   * @param {function} [callback]\n   * @returns {any}\n   */\n  get(objId, callback = null) {\n    // If there is a callback, then the get can be async and the object is\n    // not required to be resolved right now.\n    if (callback) {\n      const obj = this.#ensureObj(objId);\n      obj.capability.promise.then(() => callback(obj.data));\n      return null;\n    }\n    // If there isn't a callback, the user expects to get the resolved data\n    // directly.\n    const obj = this.#objs[objId];\n    // If there isn't an object yet or the object isn't resolved, then the\n    // data isn't ready yet!\n    if (!obj?.capability.settled) {\n      throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n    }\n    return obj.data;\n  }\n\n  /**\n   * @param {string} objId\n   * @returns {boolean}\n   */\n  has(objId) {\n    const obj = this.#objs[objId];\n    return obj?.capability.settled || false;\n  }\n\n  /**\n   * Resolves the object `objId` with optional `data`.\n   *\n   * @param {string} objId\n   * @param {any} [data]\n   */\n  resolve(objId, data = null) {\n    const obj = this.#ensureObj(objId);\n    obj.data = data;\n    obj.capability.resolve();\n  }\n\n  clear() {\n    for (const objId in this.#objs) {\n      const { data } = this.#objs[objId];\n      data?.bitmap?.close(); // Release any `ImageBitmap` data.\n    }\n    this.#objs = Object.create(null);\n  }\n}\n\n/**\n * Allows controlling of the rendering tasks.\n */\nclass RenderTask {\n  #internalRenderTask = null;\n\n  constructor(internalRenderTask) {\n    this.#internalRenderTask = internalRenderTask;\n\n    /**\n     * Callback for incremental rendering -- a function that will be called\n     * each time the rendering is paused.  To continue rendering call the\n     * function that is the first argument to the callback.\n     * @type {function}\n     */\n    this.onContinue = null;\n  }\n\n  /**\n   * Promise for rendering task completion.\n   * @type {Promise<void>}\n   */\n  get promise() {\n    return this.#internalRenderTask.capability.promise;\n  }\n\n  /**\n   * Cancels the rendering task. If the task is currently rendering it will\n   * not be cancelled until graphics pauses with a timeout. The promise that\n   * this object extends will be rejected when cancelled.\n   *\n   * @param {number} [extraDelay]\n   */\n  cancel(extraDelay = 0) {\n    this.#internalRenderTask.cancel(/* error = */ null, extraDelay);\n  }\n\n  /**\n   * Whether form fields are rendered separately from the main operatorList.\n   * @type {boolean}\n   */\n  get separateAnnots() {\n    const { separateAnnots } = this.#internalRenderTask.operatorList;\n    if (!separateAnnots) {\n      return false;\n    }\n    const { annotationCanvasMap } = this.#internalRenderTask;\n    return (\n      separateAnnots.form ||\n      (separateAnnots.canvas && annotationCanvasMap?.size > 0)\n    );\n  }\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass InternalRenderTask {\n  static #canvasInUse = new WeakSet();\n\n  constructor({\n    callback,\n    params,\n    objs,\n    commonObjs,\n    annotationCanvasMap,\n    operatorList,\n    pageIndex,\n    canvasFactory,\n    filterFactory,\n    useRequestAnimationFrame = false,\n    pdfBug = false,\n    pageColors = null,\n  }) {\n    this.callback = callback;\n    this.params = params;\n    this.objs = objs;\n    this.commonObjs = commonObjs;\n    this.annotationCanvasMap = annotationCanvasMap;\n    this.operatorListIdx = null;\n    this.operatorList = operatorList;\n    this._pageIndex = pageIndex;\n    this.canvasFactory = canvasFactory;\n    this.filterFactory = filterFactory;\n    this._pdfBug = pdfBug;\n    this.pageColors = pageColors;\n\n    this.running = false;\n    this.graphicsReadyCallback = null;\n    this.graphicsReady = false;\n    this._useRequestAnimationFrame =\n      useRequestAnimationFrame === true && typeof window !== \"undefined\";\n    this.cancelled = false;\n    this.capability = new PromiseCapability();\n    this.task = new RenderTask(this);\n    // caching this-bound methods\n    this._cancelBound = this.cancel.bind(this);\n    this._continueBound = this._continue.bind(this);\n    this._scheduleNextBound = this._scheduleNext.bind(this);\n    this._nextBound = this._next.bind(this);\n    this._canvas = params.canvasContext.canvas;\n  }\n\n  get completed() {\n    return this.capability.promise.catch(function () {\n      // Ignoring errors, since we only want to know when rendering is\n      // no longer pending.\n    });\n  }\n\n  initializeGraphics({ transparency = false, optionalContentConfig }) {\n    if (this.cancelled) {\n      return;\n    }\n    if (this._canvas) {\n      if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n        throw new Error(\n          \"Cannot use the same canvas during multiple render() operations. \" +\n            \"Use different canvas or ensure previous operations were \" +\n            \"cancelled or completed.\"\n        );\n      }\n      InternalRenderTask.#canvasInUse.add(this._canvas);\n    }\n\n    if (this._pdfBug && globalThis.StepperManager?.enabled) {\n      this.stepper = globalThis.StepperManager.create(this._pageIndex);\n      this.stepper.init(this.operatorList);\n      this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n    }\n    const { canvasContext, viewport, transform, background } = this.params;\n\n    this.gfx = new CanvasGraphics(\n      canvasContext,\n      this.commonObjs,\n      this.objs,\n      this.canvasFactory,\n      this.filterFactory,\n      { optionalContentConfig },\n      this.annotationCanvasMap,\n      this.pageColors\n    );\n    this.gfx.beginDrawing({\n      transform,\n      viewport,\n      transparency,\n      background,\n    });\n    this.operatorListIdx = 0;\n    this.graphicsReady = true;\n    this.graphicsReadyCallback?.();\n  }\n\n  cancel(error = null, extraDelay = 0) {\n    this.running = false;\n    this.cancelled = true;\n    this.gfx?.endDrawing();\n    InternalRenderTask.#canvasInUse.delete(this._canvas);\n\n    this.callback(\n      error ||\n        new RenderingCancelledException(\n          `Rendering cancelled, page ${this._pageIndex + 1}`,\n          extraDelay\n        )\n    );\n  }\n\n  operatorListChanged() {\n    if (!this.graphicsReady) {\n      this.graphicsReadyCallback ||= this._continueBound;\n      return;\n    }\n    this.stepper?.updateOperatorList(this.operatorList);\n\n    if (this.running) {\n      return;\n    }\n    this._continue();\n  }\n\n  _continue() {\n    this.running = true;\n    if (this.cancelled) {\n      return;\n    }\n    if (this.task.onContinue) {\n      this.task.onContinue(this._scheduleNextBound);\n    } else {\n      this._scheduleNext();\n    }\n  }\n\n  _scheduleNext() {\n    if (this._useRequestAnimationFrame) {\n      window.requestAnimationFrame(() => {\n        this._nextBound().catch(this._cancelBound);\n      });\n    } else {\n      Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n    }\n  }\n\n  async _next() {\n    if (this.cancelled) {\n      return;\n    }\n    this.operatorListIdx = this.gfx.executeOperatorList(\n      this.operatorList,\n      this.operatorListIdx,\n      this._continueBound,\n      this.stepper\n    );\n    if (this.operatorListIdx === this.operatorList.argsArray.length) {\n      this.running = false;\n      if (this.operatorList.lastChunk) {\n        this.gfx.endDrawing();\n        InternalRenderTask.#canvasInUse.delete(this._canvas);\n\n        this.callback();\n      }\n    }\n  }\n}\n\n/** @type {string} */\nconst version =\n  typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : null;\n/** @type {string} */\nconst build =\n  typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : null;\n\nexport {\n  build,\n  DefaultCanvasFactory,\n  DefaultCMapReaderFactory,\n  DefaultFilterFactory,\n  DefaultStandardFontDataFactory,\n  getDocument,\n  LoopbackPort,\n  PDFDataRangeTransport,\n  PDFDocumentLoadingTask,\n  PDFDocumentProxy,\n  PDFPageProxy,\n  PDFWorker,\n  PDFWorkerUtil,\n  RenderTask,\n  version,\n};\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CMapCompressionType, unreachable } from \"../shared/util.js\";\n\nclass BaseFilterFactory {\n  constructor() {\n    if (this.constructor === BaseFilterFactory) {\n      unreachable(\"Cannot initialize BaseFilterFactory.\");\n    }\n  }\n\n  addFilter(maps) {\n    return \"none\";\n  }\n\n  addHCMFilter(fgColor, bgColor) {\n    return \"none\";\n  }\n\n  addHighlightHCMFilter(fgColor, bgColor, newFgColor, newBgColor) {\n    return \"none\";\n  }\n\n  destroy(keepHCM = false) {}\n}\n\nclass BaseCanvasFactory {\n  constructor() {\n    if (this.constructor === BaseCanvasFactory) {\n      unreachable(\"Cannot initialize BaseCanvasFactory.\");\n    }\n  }\n\n  create(width, height) {\n    if (width <= 0 || height <= 0) {\n      throw new Error(\"Invalid canvas size\");\n    }\n    const canvas = this._createCanvas(width, height);\n    return {\n      canvas,\n      context: canvas.getContext(\"2d\"),\n    };\n  }\n\n  reset(canvasAndContext, width, height) {\n    if (!canvasAndContext.canvas) {\n      throw new Error(\"Canvas is not specified\");\n    }\n    if (width <= 0 || height <= 0) {\n      throw new Error(\"Invalid canvas size\");\n    }\n    canvasAndContext.canvas.width = width;\n    canvasAndContext.canvas.height = height;\n  }\n\n  destroy(canvasAndContext) {\n    if (!canvasAndContext.canvas) {\n      throw new Error(\"Canvas is not specified\");\n    }\n    // Zeroing the width and height cause Firefox to release graphics\n    // resources immediately, which can greatly reduce memory consumption.\n    canvasAndContext.canvas.width = 0;\n    canvasAndContext.canvas.height = 0;\n    canvasAndContext.canvas = null;\n    canvasAndContext.context = null;\n  }\n\n  /**\n   * @ignore\n   */\n  _createCanvas(width, height) {\n    unreachable(\"Abstract method `_createCanvas` called.\");\n  }\n}\n\nclass BaseCMapReaderFactory {\n  constructor({ baseUrl = null, isCompressed = true }) {\n    if (this.constructor === BaseCMapReaderFactory) {\n      unreachable(\"Cannot initialize BaseCMapReaderFactory.\");\n    }\n    this.baseUrl = baseUrl;\n    this.isCompressed = isCompressed;\n  }\n\n  async fetch({ name }) {\n    if (!this.baseUrl) {\n      throw new Error(\n        'The CMap \"baseUrl\" parameter must be specified, ensure that ' +\n          'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.'\n      );\n    }\n    if (!name) {\n      throw new Error(\"CMap name must be specified.\");\n    }\n    const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n    const compressionType = this.isCompressed\n      ? CMapCompressionType.BINARY\n      : CMapCompressionType.NONE;\n\n    return this._fetchData(url, compressionType).catch(reason => {\n      throw new Error(\n        `Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`\n      );\n    });\n  }\n\n  /**\n   * @ignore\n   */\n  _fetchData(url, compressionType) {\n    unreachable(\"Abstract method `_fetchData` called.\");\n  }\n}\n\nclass BaseStandardFontDataFactory {\n  constructor({ baseUrl = null }) {\n    if (this.constructor === BaseStandardFontDataFactory) {\n      unreachable(\"Cannot initialize BaseStandardFontDataFactory.\");\n    }\n    this.baseUrl = baseUrl;\n  }\n\n  async fetch({ filename }) {\n    if (!this.baseUrl) {\n      throw new Error(\n        'The standard font \"baseUrl\" parameter must be specified, ensure that ' +\n          'the \"standardFontDataUrl\" API parameter is provided.'\n      );\n    }\n    if (!filename) {\n      throw new Error(\"Font filename must be specified.\");\n    }\n    const url = `${this.baseUrl}${filename}`;\n\n    return this._fetchData(url).catch(reason => {\n      throw new Error(`Unable to load font data at: ${url}`);\n    });\n  }\n\n  /**\n   * @ignore\n   */\n  _fetchData(url) {\n    unreachable(\"Abstract method `_fetchData` called.\");\n  }\n}\n\nclass BaseSVGFactory {\n  constructor() {\n    if (this.constructor === BaseSVGFactory) {\n      unreachable(\"Cannot initialize BaseSVGFactory.\");\n    }\n  }\n\n  create(width, height, skipDimensions = false) {\n    if (width <= 0 || height <= 0) {\n      throw new Error(\"Invalid SVG dimensions\");\n    }\n    const svg = this._createSVG(\"svg:svg\");\n    svg.setAttribute(\"version\", \"1.1\");\n\n    if (!skipDimensions) {\n      svg.setAttribute(\"width\", `${width}px`);\n      svg.setAttribute(\"height\", `${height}px`);\n    }\n\n    svg.setAttribute(\"preserveAspectRatio\", \"none\");\n    svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n\n    return svg;\n  }\n\n  createElement(type) {\n    if (typeof type !== \"string\") {\n      throw new Error(\"Invalid SVG element type\");\n    }\n    return this._createSVG(type);\n  }\n\n  /**\n   * @ignore\n   */\n  _createSVG(type) {\n    unreachable(\"Abstract method `_createSVG` called.\");\n  }\n}\n\nexport {\n  BaseCanvasFactory,\n  BaseCMapReaderFactory,\n  BaseFilterFactory,\n  BaseStandardFontDataFactory,\n  BaseSVGFactory,\n};\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormatError, info, unreachable, Util } from \"../shared/util.js\";\nimport { getCurrentTransform } from \"./display_utils.js\";\n\nconst PathType = {\n  FILL: \"Fill\",\n  STROKE: \"Stroke\",\n  SHADING: \"Shading\",\n};\n\nfunction applyBoundingBox(ctx, bbox) {\n  if (!bbox) {\n    return;\n  }\n  const width = bbox[2] - bbox[0];\n  const height = bbox[3] - bbox[1];\n  const region = new Path2D();\n  region.rect(bbox[0], bbox[1], width, height);\n  ctx.clip(region);\n}\n\nclass BaseShadingPattern {\n  constructor() {\n    if (this.constructor === BaseShadingPattern) {\n      unreachable(\"Cannot initialize BaseShadingPattern.\");\n    }\n  }\n\n  getPattern() {\n    unreachable(\"Abstract method `getPattern` called.\");\n  }\n}\n\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n  constructor(IR) {\n    super();\n    this._type = IR[1];\n    this._bbox = IR[2];\n    this._colorStops = IR[3];\n    this._p0 = IR[4];\n    this._p1 = IR[5];\n    this._r0 = IR[6];\n    this._r1 = IR[7];\n    this.matrix = null;\n  }\n\n  _createGradient(ctx) {\n    let grad;\n    if (this._type === \"axial\") {\n      grad = ctx.createLinearGradient(\n        this._p0[0],\n        this._p0[1],\n        this._p1[0],\n        this._p1[1]\n      );\n    } else if (this._type === \"radial\") {\n      grad = ctx.createRadialGradient(\n        this._p0[0],\n        this._p0[1],\n        this._r0,\n        this._p1[0],\n        this._p1[1],\n        this._r1\n      );\n    }\n\n    for (const colorStop of this._colorStops) {\n      grad.addColorStop(colorStop[0], colorStop[1]);\n    }\n    return grad;\n  }\n\n  getPattern(ctx, owner, inverse, pathType) {\n    let pattern;\n    if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n      const ownerBBox = owner.current.getClippedPathBoundingBox(\n        pathType,\n        getCurrentTransform(ctx)\n      ) || [0, 0, 0, 0];\n      // Create a canvas that is only as big as the current path. This doesn't\n      // allow us to cache the pattern, but it generally creates much smaller\n      // canvases and saves memory use. See bug 1722807 for an example.\n      const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n      const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n\n      const tmpCanvas = owner.cachedCanvases.getCanvas(\n        \"pattern\",\n        width,\n        height,\n        true\n      );\n\n      const tmpCtx = tmpCanvas.context;\n      tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n      tmpCtx.beginPath();\n      tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n      // Non shading fill patterns are positioned relative to the base transform\n      // (usually the page's initial transform), but we may have created a\n      // smaller canvas based on the path, so we must account for the shift.\n      tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n      inverse = Util.transform(inverse, [\n        1,\n        0,\n        0,\n        1,\n        ownerBBox[0],\n        ownerBBox[1],\n      ]);\n\n      tmpCtx.transform(...owner.baseTransform);\n      if (this.matrix) {\n        tmpCtx.transform(...this.matrix);\n      }\n      applyBoundingBox(tmpCtx, this._bbox);\n\n      tmpCtx.fillStyle = this._createGradient(tmpCtx);\n      tmpCtx.fill();\n\n      pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n      const domMatrix = new DOMMatrix(inverse);\n      pattern.setTransform(domMatrix);\n    } else {\n      // Shading fills are applied relative to the current matrix which is also\n      // how canvas gradients work, so there's no need to do anything special\n      // here.\n      applyBoundingBox(ctx, this._bbox);\n      pattern = this._createGradient(ctx);\n    }\n    return pattern;\n  }\n}\n\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n  // Very basic Gouraud-shaded triangle rasterization algorithm.\n  const coords = context.coords,\n    colors = context.colors;\n  const bytes = data.data,\n    rowSize = data.width * 4;\n  let tmp;\n  if (coords[p1 + 1] > coords[p2 + 1]) {\n    tmp = p1;\n    p1 = p2;\n    p2 = tmp;\n    tmp = c1;\n    c1 = c2;\n    c2 = tmp;\n  }\n  if (coords[p2 + 1] > coords[p3 + 1]) {\n    tmp = p2;\n    p2 = p3;\n    p3 = tmp;\n    tmp = c2;\n    c2 = c3;\n    c3 = tmp;\n  }\n  if (coords[p1 + 1] > coords[p2 + 1]) {\n    tmp = p1;\n    p1 = p2;\n    p2 = tmp;\n    tmp = c1;\n    c1 = c2;\n    c2 = tmp;\n  }\n  const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n  const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n  const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n  const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n  const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n  const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n  if (y1 >= y3) {\n    return;\n  }\n  const c1r = colors[c1],\n    c1g = colors[c1 + 1],\n    c1b = colors[c1 + 2];\n  const c2r = colors[c2],\n    c2g = colors[c2 + 1],\n    c2b = colors[c2 + 2];\n  const c3r = colors[c3],\n    c3g = colors[c3 + 1],\n    c3b = colors[c3 + 2];\n\n  const minY = Math.round(y1),\n    maxY = Math.round(y3);\n  let xa, car, cag, cab;\n  let xb, cbr, cbg, cbb;\n  for (let y = minY; y <= maxY; y++) {\n    if (y < y2) {\n      const k = y < y1 ? 0 : (y1 - y) / (y1 - y2);\n      xa = x1 - (x1 - x2) * k;\n      car = c1r - (c1r - c2r) * k;\n      cag = c1g - (c1g - c2g) * k;\n      cab = c1b - (c1b - c2b) * k;\n    } else {\n      let k;\n      if (y > y3) {\n        k = 1;\n      } else if (y2 === y3) {\n        k = 0;\n      } else {\n        k = (y2 - y) / (y2 - y3);\n      }\n      xa = x2 - (x2 - x3) * k;\n      car = c2r - (c2r - c3r) * k;\n      cag = c2g - (c2g - c3g) * k;\n      cab = c2b - (c2b - c3b) * k;\n    }\n\n    let k;\n    if (y < y1) {\n      k = 0;\n    } else if (y > y3) {\n      k = 1;\n    } else {\n      k = (y1 - y) / (y1 - y3);\n    }\n    xb = x1 - (x1 - x3) * k;\n    cbr = c1r - (c1r - c3r) * k;\n    cbg = c1g - (c1g - c3g) * k;\n    cbb = c1b - (c1b - c3b) * k;\n    const x1_ = Math.round(Math.min(xa, xb));\n    const x2_ = Math.round(Math.max(xa, xb));\n    let j = rowSize * y + x1_ * 4;\n    for (let x = x1_; x <= x2_; x++) {\n      k = (xa - x) / (xa - xb);\n      if (k < 0) {\n        k = 0;\n      } else if (k > 1) {\n        k = 1;\n      }\n      bytes[j++] = (car - (car - cbr) * k) | 0;\n      bytes[j++] = (cag - (cag - cbg) * k) | 0;\n      bytes[j++] = (cab - (cab - cbb) * k) | 0;\n      bytes[j++] = 255;\n    }\n  }\n}\n\nfunction drawFigure(data, figure, context) {\n  const ps = figure.coords;\n  const cs = figure.colors;\n  let i, ii;\n  switch (figure.type) {\n    case \"lattice\":\n      const verticesPerRow = figure.verticesPerRow;\n      const rows = Math.floor(ps.length / verticesPerRow) - 1;\n      const cols = verticesPerRow - 1;\n      for (i = 0; i < rows; i++) {\n        let q = i * verticesPerRow;\n        for (let j = 0; j < cols; j++, q++) {\n          drawTriangle(\n            data,\n            context,\n            ps[q],\n            ps[q + 1],\n            ps[q + verticesPerRow],\n            cs[q],\n            cs[q + 1],\n            cs[q + verticesPerRow]\n          );\n          drawTriangle(\n            data,\n            context,\n            ps[q + verticesPerRow + 1],\n            ps[q + 1],\n            ps[q + verticesPerRow],\n            cs[q + verticesPerRow + 1],\n            cs[q + 1],\n            cs[q + verticesPerRow]\n          );\n        }\n      }\n      break;\n    case \"triangles\":\n      for (i = 0, ii = ps.length; i < ii; i += 3) {\n        drawTriangle(\n          data,\n          context,\n          ps[i],\n          ps[i + 1],\n          ps[i + 2],\n          cs[i],\n          cs[i + 1],\n          cs[i + 2]\n        );\n      }\n      break;\n    default:\n      throw new Error(\"illegal figure\");\n  }\n}\n\nclass MeshShadingPattern extends BaseShadingPattern {\n  constructor(IR) {\n    super();\n    this._coords = IR[2];\n    this._colors = IR[3];\n    this._figures = IR[4];\n    this._bounds = IR[5];\n    this._bbox = IR[7];\n    this._background = IR[8];\n    this.matrix = null;\n  }\n\n  _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n    // we will increase scale on some weird factor to let antialiasing take\n    // care of \"rough\" edges\n    const EXPECTED_SCALE = 1.1;\n    // MAX_PATTERN_SIZE is used to avoid OOM situation.\n    const MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough\n    // We need to keep transparent border around our pattern for fill():\n    // createPattern with 'no-repeat' will bleed edges across entire area.\n    const BORDER_SIZE = 2;\n\n    const offsetX = Math.floor(this._bounds[0]);\n    const offsetY = Math.floor(this._bounds[1]);\n    const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n    const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n\n    const width = Math.min(\n      Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)),\n      MAX_PATTERN_SIZE\n    );\n    const height = Math.min(\n      Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)),\n      MAX_PATTERN_SIZE\n    );\n    const scaleX = boundsWidth / width;\n    const scaleY = boundsHeight / height;\n\n    const context = {\n      coords: this._coords,\n      colors: this._colors,\n      offsetX: -offsetX,\n      offsetY: -offsetY,\n      scaleX: 1 / scaleX,\n      scaleY: 1 / scaleY,\n    };\n\n    const paddedWidth = width + BORDER_SIZE * 2;\n    const paddedHeight = height + BORDER_SIZE * 2;\n\n    const tmpCanvas = cachedCanvases.getCanvas(\n      \"mesh\",\n      paddedWidth,\n      paddedHeight,\n      false\n    );\n    const tmpCtx = tmpCanvas.context;\n\n    const data = tmpCtx.createImageData(width, height);\n    if (backgroundColor) {\n      const bytes = data.data;\n      for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n        bytes[i] = backgroundColor[0];\n        bytes[i + 1] = backgroundColor[1];\n        bytes[i + 2] = backgroundColor[2];\n        bytes[i + 3] = 255;\n      }\n    }\n    for (const figure of this._figures) {\n      drawFigure(data, figure, context);\n    }\n    tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n    const canvas = tmpCanvas.canvas;\n\n    return {\n      canvas,\n      offsetX: offsetX - BORDER_SIZE * scaleX,\n      offsetY: offsetY - BORDER_SIZE * scaleY,\n      scaleX,\n      scaleY,\n    };\n  }\n\n  getPattern(ctx, owner, inverse, pathType) {\n    applyBoundingBox(ctx, this._bbox);\n    let scale;\n    if (pathType === PathType.SHADING) {\n      scale = Util.singularValueDecompose2dScale(getCurrentTransform(ctx));\n    } else {\n      // Obtain scale from matrix and current transformation matrix.\n      scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n      if (this.matrix) {\n        const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n        scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n      }\n    }\n\n    // Rasterizing on the main thread since sending/queue large canvases\n    // might cause OOM.\n    const temporaryPatternCanvas = this._createMeshCanvas(\n      scale,\n      pathType === PathType.SHADING ? null : this._background,\n      owner.cachedCanvases\n    );\n\n    if (pathType !== PathType.SHADING) {\n      ctx.setTransform(...owner.baseTransform);\n      if (this.matrix) {\n        ctx.transform(...this.matrix);\n      }\n    }\n\n    ctx.translate(\n      temporaryPatternCanvas.offsetX,\n      temporaryPatternCanvas.offsetY\n    );\n    ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n\n    return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n  }\n}\n\nclass DummyShadingPattern extends BaseShadingPattern {\n  getPattern() {\n    return \"hotpink\";\n  }\n}\n\nfunction getShadingPattern(IR) {\n  switch (IR[0]) {\n    case \"RadialAxial\":\n      return new RadialAxialShadingPattern(IR);\n    case \"Mesh\":\n      return new MeshShadingPattern(IR);\n    case \"Dummy\":\n      return new DummyShadingPattern();\n  }\n  throw new Error(`Unknown IR type: ${IR[0]}`);\n}\n\nconst PaintType = {\n  COLORED: 1,\n  UNCOLORED: 2,\n};\n\nclass TilingPattern {\n  // 10in @ 300dpi shall be enough.\n  static MAX_PATTERN_SIZE = 3000;\n\n  constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n    this.operatorList = IR[2];\n    this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\n    this.bbox = IR[4];\n    this.xstep = IR[5];\n    this.ystep = IR[6];\n    this.paintType = IR[7];\n    this.tilingType = IR[8];\n    this.color = color;\n    this.ctx = ctx;\n    this.canvasGraphicsFactory = canvasGraphicsFactory;\n    this.baseTransform = baseTransform;\n  }\n\n  createPatternCanvas(owner) {\n    const operatorList = this.operatorList;\n    const bbox = this.bbox;\n    const xstep = this.xstep;\n    const ystep = this.ystep;\n    const paintType = this.paintType;\n    const tilingType = this.tilingType;\n    const color = this.color;\n    const canvasGraphicsFactory = this.canvasGraphicsFactory;\n\n    info(\"TilingType: \" + tilingType);\n\n    // A tiling pattern as defined by PDF spec 8.7.2 is a cell whose size is\n    // described by bbox, and may repeat regularly by shifting the cell by\n    // xstep and ystep.\n    // Because the HTML5 canvas API does not support pattern repetition with\n    // gaps in between, we use the xstep/ystep instead of the bbox's size.\n    //\n    // This has the following consequences (similarly for ystep):\n    //\n    // - If xstep is the same as bbox, then there is no observable difference.\n    //\n    // - If xstep is larger than bbox, then the pattern canvas is partially\n    //   empty: the area bounded by bbox is painted, the outside area is void.\n    //\n    // - If xstep is smaller than bbox, then the pixels between xstep and the\n    //   bbox boundary will be missing. This is INCORRECT behavior.\n    //   \"Figures on adjacent tiles should not overlap\" (PDF spec 8.7.3.1),\n    //   but overlapping cells without common pixels are still valid.\n    //   TODO: Fix the implementation, to allow this scenario to be painted\n    //   correctly.\n\n    const x0 = bbox[0],\n      y0 = bbox[1],\n      x1 = bbox[2],\n      y1 = bbox[3];\n\n    // Obtain scale from matrix and current transformation matrix.\n    const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n    const curMatrixScale = Util.singularValueDecompose2dScale(\n      this.baseTransform\n    );\n    const combinedScale = [\n      matrixScale[0] * curMatrixScale[0],\n      matrixScale[1] * curMatrixScale[1],\n    ];\n\n    // Use width and height values that are as close as possible to the end\n    // result when the pattern is used. Too low value makes the pattern look\n    // blurry. Too large value makes it look too crispy.\n    const dimx = this.getSizeAndScale(\n      xstep,\n      this.ctx.canvas.width,\n      combinedScale[0]\n    );\n    const dimy = this.getSizeAndScale(\n      ystep,\n      this.ctx.canvas.height,\n      combinedScale[1]\n    );\n\n    const tmpCanvas = owner.cachedCanvases.getCanvas(\n      \"pattern\",\n      dimx.size,\n      dimy.size,\n      true\n    );\n    const tmpCtx = tmpCanvas.context;\n    const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n    graphics.groupLevel = owner.groupLevel;\n\n    this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n\n    let adjustedX0 = x0;\n    let adjustedY0 = y0;\n    let adjustedX1 = x1;\n    let adjustedY1 = y1;\n    // Some bounding boxes have negative x0/y0 coordinates which will cause the\n    // some of the drawing to be off of the canvas. To avoid this shift the\n    // bounding box over.\n    if (x0 < 0) {\n      adjustedX0 = 0;\n      adjustedX1 += Math.abs(x0);\n    }\n    if (y0 < 0) {\n      adjustedY0 = 0;\n      adjustedY1 += Math.abs(y0);\n    }\n    tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));\n    graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n\n    // To match CanvasGraphics beginDrawing we must save the context here or\n    // else we end up with unbalanced save/restores.\n    tmpCtx.save();\n\n    this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);\n\n    graphics.baseTransform = getCurrentTransform(graphics.ctx);\n\n    graphics.executeOperatorList(operatorList);\n\n    graphics.endDrawing();\n\n    return {\n      canvas: tmpCanvas.canvas,\n      scaleX: dimx.scale,\n      scaleY: dimy.scale,\n      offsetX: adjustedX0,\n      offsetY: adjustedY0,\n    };\n  }\n\n  getSizeAndScale(step, realOutputSize, scale) {\n    // xstep / ystep may be negative -- normalize.\n    step = Math.abs(step);\n    // MAX_PATTERN_SIZE is used to avoid OOM situation.\n    // Use the destination canvas's size if it is bigger than the hard-coded\n    // limit of MAX_PATTERN_SIZE to avoid clipping patterns that cover the\n    // whole canvas.\n    const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n    let size = Math.ceil(step * scale);\n    if (size >= maxSize) {\n      size = maxSize;\n    } else {\n      scale = size / step;\n    }\n    return { scale, size };\n  }\n\n  clipBbox(graphics, x0, y0, x1, y1) {\n    const bboxWidth = x1 - x0;\n    const bboxHeight = y1 - y0;\n    graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n    graphics.current.updateRectMinMax(getCurrentTransform(graphics.ctx), [\n      x0,\n      y0,\n      x1,\n      y1,\n    ]);\n    graphics.clip();\n    graphics.endPath();\n  }\n\n  setFillAndStrokeStyleToContext(graphics, paintType, color) {\n    const context = graphics.ctx,\n      current = graphics.current;\n    switch (paintType) {\n      case PaintType.COLORED:\n        const ctx = this.ctx;\n        context.fillStyle = ctx.fillStyle;\n        context.strokeStyle = ctx.strokeStyle;\n        current.fillColor = ctx.fillStyle;\n        current.strokeColor = ctx.strokeStyle;\n        break;\n      case PaintType.UNCOLORED:\n        const cssColor = Util.makeHexColor(color[0], color[1], color[2]);\n        context.fillStyle = cssColor;\n        context.strokeStyle = cssColor;\n        // Set color needed by image masks (fixes issues 3226 and 8741).\n        current.fillColor = cssColor;\n        current.strokeColor = cssColor;\n        break;\n      default:\n        throw new FormatError(`Unsupported paint type: ${paintType}`);\n    }\n  }\n\n  getPattern(ctx, owner, inverse, pathType) {\n    // PDF spec 8.7.2 NOTE 1: pattern's matrix is relative to initial matrix.\n    let matrix = inverse;\n    if (pathType !== PathType.SHADING) {\n      matrix = Util.transform(matrix, owner.baseTransform);\n      if (this.matrix) {\n        matrix = Util.transform(matrix, this.matrix);\n      }\n    }\n\n    const temporaryPatternCanvas = this.createPatternCanvas(owner);\n\n    let domMatrix = new DOMMatrix(matrix);\n    // Rescale and so that the ctx.createPattern call generates a pattern with\n    // the desired size.\n    domMatrix = domMatrix.translate(\n      temporaryPatternCanvas.offsetX,\n      temporaryPatternCanvas.offsetY\n    );\n    domMatrix = domMatrix.scale(\n      1 / temporaryPatternCanvas.scaleX,\n      1 / temporaryPatternCanvas.scaleY\n    );\n\n    const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n    pattern.setTransform(domMatrix);\n\n    return pattern;\n  }\n}\n\nexport { getShadingPattern, PathType, TilingPattern };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FeatureTest, ImageKind } from \"./util.js\";\n\nfunction convertToRGBA(params) {\n  switch (params.kind) {\n    case ImageKind.GRAYSCALE_1BPP:\n      return convertBlackAndWhiteToRGBA(params);\n    case ImageKind.RGB_24BPP:\n      return convertRGBToRGBA(params);\n  }\n\n  return null;\n}\n\nfunction convertBlackAndWhiteToRGBA({\n  src,\n  srcPos = 0,\n  dest,\n  width,\n  height,\n  nonBlackColor = 0xffffffff,\n  inverseDecode = false,\n}) {\n  const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n  const [zeroMapping, oneMapping] = inverseDecode\n    ? [nonBlackColor, black]\n    : [black, nonBlackColor];\n  const widthInSource = width >> 3;\n  const widthRemainder = width & 7;\n  const srcLength = src.length;\n  dest = new Uint32Array(dest.buffer);\n  let destPos = 0;\n\n  for (let i = 0; i < height; i++) {\n    for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n      const elem = srcPos < srcLength ? src[srcPos] : 255;\n      dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n    }\n    if (widthRemainder === 0) {\n      continue;\n    }\n    const elem = srcPos < srcLength ? src[srcPos++] : 255;\n    for (let j = 0; j < widthRemainder; j++) {\n      dest[destPos++] = elem & (1 << (7 - j)) ? oneMapping : zeroMapping;\n    }\n  }\n  return { srcPos, destPos };\n}\n\nfunction convertRGBToRGBA({\n  src,\n  srcPos = 0,\n  dest,\n  destPos = 0,\n  width,\n  height,\n}) {\n  let i = 0;\n  const len32 = src.length >> 2;\n  const src32 = new Uint32Array(src.buffer, srcPos, len32);\n\n  if (FeatureTest.isLittleEndian) {\n    // It's a way faster to do the shuffle manually instead of working\n    // component by component with some Uint8 arrays.\n    for (; i < len32 - 2; i += 3, destPos += 4) {\n      const s1 = src32[i]; // R2B1G1R1\n      const s2 = src32[i + 1]; // G3R3B2G2\n      const s3 = src32[i + 2]; // B4G4R4B3\n\n      dest[destPos] = s1 | 0xff000000;\n      dest[destPos + 1] = (s1 >>> 24) | (s2 << 8) | 0xff000000;\n      dest[destPos + 2] = (s2 >>> 16) | (s3 << 16) | 0xff000000;\n      dest[destPos + 3] = (s3 >>> 8) | 0xff000000;\n    }\n\n    for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n      dest[destPos++] =\n        src[j] | (src[j + 1] << 8) | (src[j + 2] << 16) | 0xff000000;\n    }\n  } else {\n    for (; i < len32 - 2; i += 3, destPos += 4) {\n      const s1 = src32[i]; // R1G1B1R2\n      const s2 = src32[i + 1]; // G2B2R3G3\n      const s3 = src32[i + 2]; // B3R4G4B4\n\n      dest[destPos] = s1 | 0xff;\n      dest[destPos + 1] = (s1 << 24) | (s2 >>> 8) | 0xff;\n      dest[destPos + 2] = (s2 << 16) | (s3 >>> 16) | 0xff;\n      dest[destPos + 3] = (s3 << 8) | 0xff;\n    }\n\n    for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n      dest[destPos++] =\n        (src[j] << 24) | (src[j + 1] << 16) | (src[j + 2] << 8) | 0xff;\n    }\n  }\n\n  return { srcPos, destPos };\n}\n\nfunction grayToRGBA(src, dest) {\n  if (FeatureTest.isLittleEndian) {\n    for (let i = 0, ii = src.length; i < ii; i++) {\n      dest[i] = (src[i] * 0x10101) | 0xff000000;\n    }\n  } else {\n    for (let i = 0, ii = src.length; i < ii; i++) {\n      dest[i] = (src[i] * 0x1010100) | 0x000000ff;\n    }\n  }\n}\n\nexport { convertBlackAndWhiteToRGBA, convertToRGBA, grayToRGBA };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  FeatureTest,\n  FONT_IDENTITY_MATRIX,\n  IDENTITY_MATRIX,\n  ImageKind,\n  info,\n  isNodeJS,\n  OPS,\n  shadow,\n  TextRenderingMode,\n  unreachable,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  getCurrentTransform,\n  getCurrentTransformInverse,\n  PixelsPerInch,\n} from \"./display_utils.js\";\nimport {\n  getShadingPattern,\n  PathType,\n  TilingPattern,\n} from \"./pattern_helper.js\";\nimport { convertBlackAndWhiteToRGBA } from \"../shared/image_utils.js\";\n\n// <canvas> contexts store most of the state we need natively.\n// However, PDF needs a bit more state, which we store here.\n// Minimal font size that would be used during canvas fillText operations.\nconst MIN_FONT_SIZE = 16;\n// Maximum font size that would be used during canvas fillText operations.\nconst MAX_FONT_SIZE = 100;\nconst MAX_GROUP_SIZE = 4096;\n\n// Defines the time the `executeOperatorList`-method is going to be executing\n// before it stops and schedules a continue of execution.\nconst EXECUTION_TIME = 15; // ms\n// Defines the number of steps before checking the execution time.\nconst EXECUTION_STEPS = 10;\n\n// To disable Type3 compilation, set the value to `-1`.\nconst MAX_SIZE_TO_COMPILE = 1000;\n\nconst FULL_CHUNK_HEIGHT = 16;\n\n/**\n * Overrides certain methods on a 2d ctx so that when they are called they\n * will also call the same method on the destCtx. The methods that are\n * overridden are all the transformation state modifiers, path creation, and\n * save/restore. We only forward these specific methods because they are the\n * only state modifiers that we cannot copy over when we switch contexts.\n *\n * To remove mirroring call `ctx._removeMirroring()`.\n *\n * @param {Object} ctx - The 2d canvas context that will duplicate its calls on\n *   the destCtx.\n * @param {Object} destCtx - The 2d canvas context that will receive the\n *   forwarded calls.\n */\nfunction mirrorContextOperations(ctx, destCtx) {\n  if (ctx._removeMirroring) {\n    throw new Error(\"Context is already forwarding operations.\");\n  }\n  ctx.__originalSave = ctx.save;\n  ctx.__originalRestore = ctx.restore;\n  ctx.__originalRotate = ctx.rotate;\n  ctx.__originalScale = ctx.scale;\n  ctx.__originalTranslate = ctx.translate;\n  ctx.__originalTransform = ctx.transform;\n  ctx.__originalSetTransform = ctx.setTransform;\n  ctx.__originalResetTransform = ctx.resetTransform;\n  ctx.__originalClip = ctx.clip;\n  ctx.__originalMoveTo = ctx.moveTo;\n  ctx.__originalLineTo = ctx.lineTo;\n  ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n  ctx.__originalRect = ctx.rect;\n  ctx.__originalClosePath = ctx.closePath;\n  ctx.__originalBeginPath = ctx.beginPath;\n\n  ctx._removeMirroring = () => {\n    ctx.save = ctx.__originalSave;\n    ctx.restore = ctx.__originalRestore;\n    ctx.rotate = ctx.__originalRotate;\n    ctx.scale = ctx.__originalScale;\n    ctx.translate = ctx.__originalTranslate;\n    ctx.transform = ctx.__originalTransform;\n    ctx.setTransform = ctx.__originalSetTransform;\n    ctx.resetTransform = ctx.__originalResetTransform;\n\n    ctx.clip = ctx.__originalClip;\n    ctx.moveTo = ctx.__originalMoveTo;\n    ctx.lineTo = ctx.__originalLineTo;\n    ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n    ctx.rect = ctx.__originalRect;\n    ctx.closePath = ctx.__originalClosePath;\n    ctx.beginPath = ctx.__originalBeginPath;\n    delete ctx._removeMirroring;\n  };\n\n  ctx.save = function ctxSave() {\n    destCtx.save();\n    this.__originalSave();\n  };\n\n  ctx.restore = function ctxRestore() {\n    destCtx.restore();\n    this.__originalRestore();\n  };\n\n  ctx.translate = function ctxTranslate(x, y) {\n    destCtx.translate(x, y);\n    this.__originalTranslate(x, y);\n  };\n\n  ctx.scale = function ctxScale(x, y) {\n    destCtx.scale(x, y);\n    this.__originalScale(x, y);\n  };\n\n  ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n    destCtx.transform(a, b, c, d, e, f);\n    this.__originalTransform(a, b, c, d, e, f);\n  };\n\n  ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n    destCtx.setTransform(a, b, c, d, e, f);\n    this.__originalSetTransform(a, b, c, d, e, f);\n  };\n\n  ctx.resetTransform = function ctxResetTransform() {\n    destCtx.resetTransform();\n    this.__originalResetTransform();\n  };\n\n  ctx.rotate = function ctxRotate(angle) {\n    destCtx.rotate(angle);\n    this.__originalRotate(angle);\n  };\n\n  ctx.clip = function ctxRotate(rule) {\n    destCtx.clip(rule);\n    this.__originalClip(rule);\n  };\n\n  ctx.moveTo = function (x, y) {\n    destCtx.moveTo(x, y);\n    this.__originalMoveTo(x, y);\n  };\n\n  ctx.lineTo = function (x, y) {\n    destCtx.lineTo(x, y);\n    this.__originalLineTo(x, y);\n  };\n\n  ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n    destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n    this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n  };\n\n  ctx.rect = function (x, y, width, height) {\n    destCtx.rect(x, y, width, height);\n    this.__originalRect(x, y, width, height);\n  };\n\n  ctx.closePath = function () {\n    destCtx.closePath();\n    this.__originalClosePath();\n  };\n\n  ctx.beginPath = function () {\n    destCtx.beginPath();\n    this.__originalBeginPath();\n  };\n}\n\nclass CachedCanvases {\n  constructor(canvasFactory) {\n    this.canvasFactory = canvasFactory;\n    this.cache = Object.create(null);\n  }\n\n  getCanvas(id, width, height) {\n    let canvasEntry;\n    if (this.cache[id] !== undefined) {\n      canvasEntry = this.cache[id];\n      this.canvasFactory.reset(canvasEntry, width, height);\n    } else {\n      canvasEntry = this.canvasFactory.create(width, height);\n      this.cache[id] = canvasEntry;\n    }\n    return canvasEntry;\n  }\n\n  delete(id) {\n    delete this.cache[id];\n  }\n\n  clear() {\n    for (const id in this.cache) {\n      const canvasEntry = this.cache[id];\n      this.canvasFactory.destroy(canvasEntry);\n      delete this.cache[id];\n    }\n  }\n}\n\nfunction drawImageAtIntegerCoords(\n  ctx,\n  srcImg,\n  srcX,\n  srcY,\n  srcW,\n  srcH,\n  destX,\n  destY,\n  destW,\n  destH\n) {\n  const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n  if (b === 0 && c === 0) {\n    // top-left corner is at (X, Y) and\n    // bottom-right one is at (X + width, Y + height).\n\n    // If leftX is 4.321 then it's rounded to 4.\n    // If width is 10.432 then it's rounded to 11 because\n    // rightX = leftX + width = 14.753 which is rounded to 15\n    // so after rounding the total width is 11 (15 - 4).\n    // It's why we can't just floor/ceil uniformly, it just depends\n    // on the values we've.\n\n    const tlX = destX * a + tx;\n    const rTlX = Math.round(tlX);\n    const tlY = destY * d + ty;\n    const rTlY = Math.round(tlY);\n    const brX = (destX + destW) * a + tx;\n\n    // Some pdf contains images with 1x1 images so in case of 0-width after\n    // scaling we must fallback on 1 to be sure there is something.\n    const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n    const brY = (destY + destH) * d + ty;\n    const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n\n    // We must apply a transformation in order to apply it on the image itself.\n    // For example if a == 1 && d == -1, it means that the image itself is\n    // mirrored w.r.t. the x-axis.\n    ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n    ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n    ctx.setTransform(a, b, c, d, tx, ty);\n\n    return [rWidth, rHeight];\n  }\n\n  if (a === 0 && d === 0) {\n    // This path is taken in issue9462.pdf (page 3).\n    const tlX = destY * c + tx;\n    const rTlX = Math.round(tlX);\n    const tlY = destX * b + ty;\n    const rTlY = Math.round(tlY);\n    const brX = (destY + destH) * c + tx;\n    const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n    const brY = (destX + destW) * b + ty;\n    const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n\n    ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n    ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n    ctx.setTransform(a, b, c, d, tx, ty);\n\n    return [rHeight, rWidth];\n  }\n\n  // Not a scale matrix so let the render handle the case without rounding.\n  ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n\n  const scaleX = Math.hypot(a, b);\n  const scaleY = Math.hypot(c, d);\n  return [scaleX * destW, scaleY * destH];\n}\n\nfunction compileType3Glyph(imgData) {\n  const { width, height } = imgData;\n  if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n    return null;\n  }\n\n  const POINT_TO_PROCESS_LIMIT = 1000;\n  const POINT_TYPES = new Uint8Array([\n    0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0,\n  ]);\n\n  const width1 = width + 1;\n  let points = new Uint8Array(width1 * (height + 1));\n  let i, j, j0;\n\n  // decodes bit-packed mask data\n  const lineSize = (width + 7) & ~7;\n  let data = new Uint8Array(lineSize * height),\n    pos = 0;\n  for (const elem of imgData.data) {\n    let mask = 128;\n    while (mask > 0) {\n      data[pos++] = elem & mask ? 0 : 255;\n      mask >>= 1;\n    }\n  }\n\n  // finding interesting points: every point is located between mask pixels,\n  // so there will be points of the (width + 1)x(height + 1) grid. Every point\n  // will have flags assigned based on neighboring mask pixels:\n  //   4 | 8\n  //   --P--\n  //   2 | 1\n  // We are interested only in points with the flags:\n  //   - outside corners: 1, 2, 4, 8;\n  //   - inside corners: 7, 11, 13, 14;\n  //   - and, intersections: 5, 10.\n  let count = 0;\n  pos = 0;\n  if (data[pos] !== 0) {\n    points[0] = 1;\n    ++count;\n  }\n  for (j = 1; j < width; j++) {\n    if (data[pos] !== data[pos + 1]) {\n      points[j] = data[pos] ? 2 : 1;\n      ++count;\n    }\n    pos++;\n  }\n  if (data[pos] !== 0) {\n    points[j] = 2;\n    ++count;\n  }\n  for (i = 1; i < height; i++) {\n    pos = i * lineSize;\n    j0 = i * width1;\n    if (data[pos - lineSize] !== data[pos]) {\n      points[j0] = data[pos] ? 1 : 8;\n      ++count;\n    }\n    // 'sum' is the position of the current pixel configuration in the 'TYPES'\n    // array (in order 8-1-2-4, so we can use '>>2' to shift the column).\n    let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n    for (j = 1; j < width; j++) {\n      sum =\n        (sum >> 2) +\n        (data[pos + 1] ? 4 : 0) +\n        (data[pos - lineSize + 1] ? 8 : 0);\n      if (POINT_TYPES[sum]) {\n        points[j0 + j] = POINT_TYPES[sum];\n        ++count;\n      }\n      pos++;\n    }\n    if (data[pos - lineSize] !== data[pos]) {\n      points[j0 + j] = data[pos] ? 2 : 4;\n      ++count;\n    }\n\n    if (count > POINT_TO_PROCESS_LIMIT) {\n      return null;\n    }\n  }\n\n  pos = lineSize * (height - 1);\n  j0 = i * width1;\n  if (data[pos] !== 0) {\n    points[j0] = 8;\n    ++count;\n  }\n  for (j = 1; j < width; j++) {\n    if (data[pos] !== data[pos + 1]) {\n      points[j0 + j] = data[pos] ? 4 : 8;\n      ++count;\n    }\n    pos++;\n  }\n  if (data[pos] !== 0) {\n    points[j0 + j] = 4;\n    ++count;\n  }\n  if (count > POINT_TO_PROCESS_LIMIT) {\n    return null;\n  }\n\n  // building outlines\n  const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n  const path = new Path2D();\n\n  for (i = 0; count && i <= height; i++) {\n    let p = i * width1;\n    const end = p + width;\n    while (p < end && !points[p]) {\n      p++;\n    }\n    if (p === end) {\n      continue;\n    }\n    path.moveTo(p % width1, i);\n\n    const p0 = p;\n    let type = points[p];\n    do {\n      const step = steps[type];\n      do {\n        p += step;\n      } while (!points[p]);\n\n      const pp = points[p];\n      if (pp !== 5 && pp !== 10) {\n        // set new direction\n        type = pp;\n        // delete mark\n        points[p] = 0;\n      } else {\n        // type is 5 or 10, ie, a crossing\n        // set new direction\n        type = pp & ((0x33 * type) >> 4);\n        // set new type for \"future hit\"\n        points[p] &= (type >> 2) | (type << 2);\n      }\n      path.lineTo(p % width1, (p / width1) | 0);\n\n      if (!points[p]) {\n        --count;\n      }\n    } while (p0 !== p);\n    --i;\n  }\n\n  // Immediately release the, potentially large, `Uint8Array`s after parsing.\n  data = null;\n  points = null;\n\n  const drawOutline = function (c) {\n    c.save();\n    // the path shall be painted in [0..1]x[0..1] space\n    c.scale(1 / width, -1 / height);\n    c.translate(0, -height);\n    c.fill(path);\n    c.beginPath();\n    c.restore();\n  };\n\n  return drawOutline;\n}\n\nclass CanvasExtraState {\n  constructor(width, height) {\n    // Are soft masks and alpha values shapes or opacities?\n    this.alphaIsShape = false;\n    this.fontSize = 0;\n    this.fontSizeScale = 1;\n    this.textMatrix = IDENTITY_MATRIX;\n    this.textMatrixScale = 1;\n    this.fontMatrix = FONT_IDENTITY_MATRIX;\n    this.leading = 0;\n    // Current point (in user coordinates)\n    this.x = 0;\n    this.y = 0;\n    // Start of text line (in text coordinates)\n    this.lineX = 0;\n    this.lineY = 0;\n    // Character and word spacing\n    this.charSpacing = 0;\n    this.wordSpacing = 0;\n    this.textHScale = 1;\n    this.textRenderingMode = TextRenderingMode.FILL;\n    this.textRise = 0;\n    // Default fore and background colors\n    this.fillColor = \"#000000\";\n    this.strokeColor = \"#000000\";\n    this.patternFill = false;\n    // Note: fill alpha applies to all non-stroking operations\n    this.fillAlpha = 1;\n    this.strokeAlpha = 1;\n    this.lineWidth = 1;\n    this.activeSMask = null;\n    this.transferMaps = \"none\";\n\n    this.startNewPathAndClipBox([0, 0, width, height]);\n  }\n\n  clone() {\n    const clone = Object.create(this);\n    clone.clipBox = this.clipBox.slice();\n    return clone;\n  }\n\n  setCurrentPoint(x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  updatePathMinMax(transform, x, y) {\n    [x, y] = Util.applyTransform([x, y], transform);\n    this.minX = Math.min(this.minX, x);\n    this.minY = Math.min(this.minY, y);\n    this.maxX = Math.max(this.maxX, x);\n    this.maxY = Math.max(this.maxY, y);\n  }\n\n  updateRectMinMax(transform, rect) {\n    const p1 = Util.applyTransform(rect, transform);\n    const p2 = Util.applyTransform(rect.slice(2), transform);\n    const p3 = Util.applyTransform([rect[0], rect[3]], transform);\n    const p4 = Util.applyTransform([rect[2], rect[1]], transform);\n\n    this.minX = Math.min(this.minX, p1[0], p2[0], p3[0], p4[0]);\n    this.minY = Math.min(this.minY, p1[1], p2[1], p3[1], p4[1]);\n    this.maxX = Math.max(this.maxX, p1[0], p2[0], p3[0], p4[0]);\n    this.maxY = Math.max(this.maxY, p1[1], p2[1], p3[1], p4[1]);\n  }\n\n  updateScalingPathMinMax(transform, minMax) {\n    Util.scaleMinMax(transform, minMax);\n    this.minX = Math.min(this.minX, minMax[0]);\n    this.maxX = Math.max(this.maxX, minMax[1]);\n    this.minY = Math.min(this.minY, minMax[2]);\n    this.maxY = Math.max(this.maxY, minMax[3]);\n  }\n\n  updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n    const box = Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3);\n    if (minMax) {\n      minMax[0] = Math.min(minMax[0], box[0], box[2]);\n      minMax[1] = Math.max(minMax[1], box[0], box[2]);\n      minMax[2] = Math.min(minMax[2], box[1], box[3]);\n      minMax[3] = Math.max(minMax[3], box[1], box[3]);\n      return;\n    }\n    this.updateRectMinMax(transform, box);\n  }\n\n  getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n    const box = [this.minX, this.minY, this.maxX, this.maxY];\n    if (pathType === PathType.STROKE) {\n      if (!transform) {\n        unreachable(\"Stroke bounding box must include transform.\");\n      }\n      // Stroked paths can be outside of the path bounding box by 1/2 the line\n      // width.\n      const scale = Util.singularValueDecompose2dScale(transform);\n      const xStrokePad = (scale[0] * this.lineWidth) / 2;\n      const yStrokePad = (scale[1] * this.lineWidth) / 2;\n      box[0] -= xStrokePad;\n      box[1] -= yStrokePad;\n      box[2] += xStrokePad;\n      box[3] += yStrokePad;\n    }\n    return box;\n  }\n\n  updateClipFromPath() {\n    const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n    this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n  }\n\n  isEmptyClip() {\n    return this.minX === Infinity;\n  }\n\n  startNewPathAndClipBox(box) {\n    this.clipBox = box;\n    this.minX = Infinity;\n    this.minY = Infinity;\n    this.maxX = 0;\n    this.maxY = 0;\n  }\n\n  getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n    return Util.intersect(\n      this.clipBox,\n      this.getPathBoundingBox(pathType, transform)\n    );\n  }\n}\n\nfunction putBinaryImageData(ctx, imgData) {\n  if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n    ctx.putImageData(imgData, 0, 0);\n    return;\n  }\n\n  // Put the image data to the canvas in chunks, rather than putting the\n  // whole image at once.  This saves JS memory, because the ImageData object\n  // is smaller. It also possibly saves C++ memory within the implementation\n  // of putImageData(). (E.g. in Firefox we make two short-lived copies of\n  // the data passed to putImageData()). |n| shouldn't be too small, however,\n  // because too many putImageData() calls will slow things down.\n  //\n  // Note: as written, if the last chunk is partial, the putImageData() call\n  // will (conceptually) put pixels past the bounds of the canvas.  But\n  // that's ok; any such pixels are ignored.\n\n  const height = imgData.height,\n    width = imgData.width;\n  const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n  const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n  const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n  const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n  let srcPos = 0,\n    destPos;\n  const src = imgData.data;\n  const dest = chunkImgData.data;\n  let i, j, thisChunkHeight, elemsInThisChunk;\n\n  // There are multiple forms in which the pixel data can be passed, and\n  // imgData.kind tells us which one this is.\n  if (imgData.kind === ImageKind.GRAYSCALE_1BPP) {\n    // Grayscale, 1 bit per pixel (i.e. black-and-white).\n    const srcLength = src.byteLength;\n    const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n    const dest32DataLength = dest32.length;\n    const fullSrcDiff = (width + 7) >> 3;\n    const white = 0xffffffff;\n    const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n\n    for (i = 0; i < totalChunks; i++) {\n      thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n      destPos = 0;\n      for (j = 0; j < thisChunkHeight; j++) {\n        const srcDiff = srcLength - srcPos;\n        let k = 0;\n        const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n        const kEndUnrolled = kEnd & ~7;\n        let mask = 0;\n        let srcByte = 0;\n        for (; k < kEndUnrolled; k += 8) {\n          srcByte = src[srcPos++];\n          dest32[destPos++] = srcByte & 128 ? white : black;\n          dest32[destPos++] = srcByte & 64 ? white : black;\n          dest32[destPos++] = srcByte & 32 ? white : black;\n          dest32[destPos++] = srcByte & 16 ? white : black;\n          dest32[destPos++] = srcByte & 8 ? white : black;\n          dest32[destPos++] = srcByte & 4 ? white : black;\n          dest32[destPos++] = srcByte & 2 ? white : black;\n          dest32[destPos++] = srcByte & 1 ? white : black;\n        }\n        for (; k < kEnd; k++) {\n          if (mask === 0) {\n            srcByte = src[srcPos++];\n            mask = 128;\n          }\n\n          dest32[destPos++] = srcByte & mask ? white : black;\n          mask >>= 1;\n        }\n      }\n      // We ran out of input. Make all remaining pixels transparent.\n      while (destPos < dest32DataLength) {\n        dest32[destPos++] = 0;\n      }\n\n      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n    }\n  } else if (imgData.kind === ImageKind.RGBA_32BPP) {\n    // RGBA, 32-bits per pixel.\n    j = 0;\n    elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n    for (i = 0; i < fullChunks; i++) {\n      dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n      srcPos += elemsInThisChunk;\n\n      ctx.putImageData(chunkImgData, 0, j);\n      j += FULL_CHUNK_HEIGHT;\n    }\n    if (i < totalChunks) {\n      elemsInThisChunk = width * partialChunkHeight * 4;\n      dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n\n      ctx.putImageData(chunkImgData, 0, j);\n    }\n  } else if (imgData.kind === ImageKind.RGB_24BPP) {\n    // RGB, 24-bits per pixel.\n    thisChunkHeight = FULL_CHUNK_HEIGHT;\n    elemsInThisChunk = width * thisChunkHeight;\n    for (i = 0; i < totalChunks; i++) {\n      if (i >= fullChunks) {\n        thisChunkHeight = partialChunkHeight;\n        elemsInThisChunk = width * thisChunkHeight;\n      }\n\n      destPos = 0;\n      for (j = elemsInThisChunk; j--; ) {\n        dest[destPos++] = src[srcPos++];\n        dest[destPos++] = src[srcPos++];\n        dest[destPos++] = src[srcPos++];\n        dest[destPos++] = 255;\n      }\n\n      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n    }\n  } else {\n    throw new Error(`bad image kind: ${imgData.kind}`);\n  }\n}\n\nfunction putBinaryImageMask(ctx, imgData) {\n  if (imgData.bitmap) {\n    // The bitmap has been created in the worker.\n    ctx.drawImage(imgData.bitmap, 0, 0);\n    return;\n  }\n\n  // Slow path: OffscreenCanvas isn't available in the worker.\n  const height = imgData.height,\n    width = imgData.width;\n  const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n  const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n  const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n  const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n  let srcPos = 0;\n  const src = imgData.data;\n  const dest = chunkImgData.data;\n\n  for (let i = 0; i < totalChunks; i++) {\n    const thisChunkHeight =\n      i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n\n    // Expand the mask so it can be used by the canvas.  Any required\n    // inversion has already been handled.\n\n    ({ srcPos } = convertBlackAndWhiteToRGBA({\n      src,\n      srcPos,\n      dest,\n      width,\n      height: thisChunkHeight,\n      nonBlackColor: 0,\n    }));\n\n    ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n  }\n}\n\nfunction copyCtxState(sourceCtx, destCtx) {\n  const properties = [\n    \"strokeStyle\",\n    \"fillStyle\",\n    \"fillRule\",\n    \"globalAlpha\",\n    \"lineWidth\",\n    \"lineCap\",\n    \"lineJoin\",\n    \"miterLimit\",\n    \"globalCompositeOperation\",\n    \"font\",\n    \"filter\",\n  ];\n  for (const property of properties) {\n    if (sourceCtx[property] !== undefined) {\n      destCtx[property] = sourceCtx[property];\n    }\n  }\n  if (sourceCtx.setLineDash !== undefined) {\n    destCtx.setLineDash(sourceCtx.getLineDash());\n    destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n  }\n}\n\nfunction resetCtxToDefault(ctx) {\n  ctx.strokeStyle = ctx.fillStyle = \"#000000\";\n  ctx.fillRule = \"nonzero\";\n  ctx.globalAlpha = 1;\n  ctx.lineWidth = 1;\n  ctx.lineCap = \"butt\";\n  ctx.lineJoin = \"miter\";\n  ctx.miterLimit = 10;\n  ctx.globalCompositeOperation = \"source-over\";\n  ctx.font = \"10px sans-serif\";\n  if (ctx.setLineDash !== undefined) {\n    ctx.setLineDash([]);\n    ctx.lineDashOffset = 0;\n  }\n  if (\n    (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n    !isNodeJS\n  ) {\n    const { filter } = ctx;\n    if (filter !== \"none\" && filter !== \"\") {\n      ctx.filter = \"none\";\n    }\n  }\n}\n\nfunction composeSMaskBackdrop(bytes, r0, g0, b0) {\n  const length = bytes.length;\n  for (let i = 3; i < length; i += 4) {\n    const alpha = bytes[i];\n    if (alpha === 0) {\n      bytes[i - 3] = r0;\n      bytes[i - 2] = g0;\n      bytes[i - 1] = b0;\n    } else if (alpha < 255) {\n      const alpha_ = 255 - alpha;\n      bytes[i - 3] = (bytes[i - 3] * alpha + r0 * alpha_) >> 8;\n      bytes[i - 2] = (bytes[i - 2] * alpha + g0 * alpha_) >> 8;\n      bytes[i - 1] = (bytes[i - 1] * alpha + b0 * alpha_) >> 8;\n    }\n  }\n}\n\nfunction composeSMaskAlpha(maskData, layerData, transferMap) {\n  const length = maskData.length;\n  const scale = 1 / 255;\n  for (let i = 3; i < length; i += 4) {\n    const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n    layerData[i] = (layerData[i] * alpha * scale) | 0;\n  }\n}\n\nfunction composeSMaskLuminosity(maskData, layerData, transferMap) {\n  const length = maskData.length;\n  for (let i = 3; i < length; i += 4) {\n    const y =\n      maskData[i - 3] * 77 + // * 0.3 / 255 * 0x10000\n      maskData[i - 2] * 152 + // * 0.59 ....\n      maskData[i - 1] * 28; // * 0.11 ....\n    layerData[i] = transferMap\n      ? (layerData[i] * transferMap[y >> 8]) >> 8\n      : (layerData[i] * y) >> 16;\n  }\n}\n\nfunction genericComposeSMask(\n  maskCtx,\n  layerCtx,\n  width,\n  height,\n  subtype,\n  backdrop,\n  transferMap,\n  layerOffsetX,\n  layerOffsetY,\n  maskOffsetX,\n  maskOffsetY\n) {\n  const hasBackdrop = !!backdrop;\n  const r0 = hasBackdrop ? backdrop[0] : 0;\n  const g0 = hasBackdrop ? backdrop[1] : 0;\n  const b0 = hasBackdrop ? backdrop[2] : 0;\n\n  const composeFn =\n    subtype === \"Luminosity\" ? composeSMaskLuminosity : composeSMaskAlpha;\n\n  // processing image in chunks to save memory\n  const PIXELS_TO_PROCESS = 1048576;\n  const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n  for (let row = 0; row < height; row += chunkSize) {\n    const chunkHeight = Math.min(chunkSize, height - row);\n    const maskData = maskCtx.getImageData(\n      layerOffsetX - maskOffsetX,\n      row + (layerOffsetY - maskOffsetY),\n      width,\n      chunkHeight\n    );\n    const layerData = layerCtx.getImageData(\n      layerOffsetX,\n      row + layerOffsetY,\n      width,\n      chunkHeight\n    );\n\n    if (hasBackdrop) {\n      composeSMaskBackdrop(maskData.data, r0, g0, b0);\n    }\n    composeFn(maskData.data, layerData.data, transferMap);\n\n    layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY);\n  }\n}\n\nfunction composeSMask(ctx, smask, layerCtx, layerBox) {\n  const layerOffsetX = layerBox[0];\n  const layerOffsetY = layerBox[1];\n  const layerWidth = layerBox[2] - layerOffsetX;\n  const layerHeight = layerBox[3] - layerOffsetY;\n  if (layerWidth === 0 || layerHeight === 0) {\n    return;\n  }\n  genericComposeSMask(\n    smask.context,\n    layerCtx,\n    layerWidth,\n    layerHeight,\n    smask.subtype,\n    smask.backdrop,\n    smask.transferMap,\n    layerOffsetX,\n    layerOffsetY,\n    smask.offsetX,\n    smask.offsetY\n  );\n  ctx.save();\n  ctx.globalAlpha = 1;\n  ctx.globalCompositeOperation = \"source-over\";\n  ctx.setTransform(1, 0, 0, 1, 0, 0);\n  ctx.drawImage(layerCtx.canvas, 0, 0);\n  ctx.restore();\n}\n\nfunction getImageSmoothingEnabled(transform, interpolate) {\n  const scale = Util.singularValueDecompose2dScale(transform);\n  // Round to a 32bit float so that `<=` check below will pass for numbers that\n  // are very close, but not exactly the same 64bit floats.\n  scale[0] = Math.fround(scale[0]);\n  scale[1] = Math.fround(scale[1]);\n  const actualScale = Math.fround(\n    (globalThis.devicePixelRatio || 1) * PixelsPerInch.PDF_TO_CSS_UNITS\n  );\n  if (interpolate !== undefined) {\n    // If the value is explicitly set use it.\n    return interpolate;\n  } else if (scale[0] <= actualScale || scale[1] <= actualScale) {\n    // Smooth when downscaling.\n    return true;\n  }\n  // Don't smooth when upscaling.\n  return false;\n}\n\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\n\nclass CanvasGraphics {\n  constructor(\n    canvasCtx,\n    commonObjs,\n    objs,\n    canvasFactory,\n    filterFactory,\n    { optionalContentConfig, markedContentStack = null },\n    annotationCanvasMap,\n    pageColors\n  ) {\n    this.ctx = canvasCtx;\n    this.current = new CanvasExtraState(\n      this.ctx.canvas.width,\n      this.ctx.canvas.height\n    );\n    this.stateStack = [];\n    this.pendingClip = null;\n    this.pendingEOFill = false;\n    this.res = null;\n    this.xobjs = null;\n    this.commonObjs = commonObjs;\n    this.objs = objs;\n    this.canvasFactory = canvasFactory;\n    this.filterFactory = filterFactory;\n    this.groupStack = [];\n    this.processingType3 = null;\n    // Patterns are painted relative to the initial page/form transform, see\n    // PDF spec 8.7.2 NOTE 1.\n    this.baseTransform = null;\n    this.baseTransformStack = [];\n    this.groupLevel = 0;\n    this.smaskStack = [];\n    this.smaskCounter = 0;\n    this.tempSMask = null;\n    this.suspendedCtx = null;\n    this.contentVisible = true;\n    this.markedContentStack = markedContentStack || [];\n    this.optionalContentConfig = optionalContentConfig;\n    this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n    this.cachedPatterns = new Map();\n    this.annotationCanvasMap = annotationCanvasMap;\n    this.viewportScale = 1;\n    this.outputScaleX = 1;\n    this.outputScaleY = 1;\n    this.pageColors = pageColors;\n\n    this._cachedScaleForStroking = [-1, 0];\n    this._cachedGetSinglePixelWidth = null;\n    this._cachedBitmapsMap = new Map();\n  }\n\n  getObject(data, fallback = null) {\n    if (typeof data === \"string\") {\n      return data.startsWith(\"g_\")\n        ? this.commonObjs.get(data)\n        : this.objs.get(data);\n    }\n    return fallback;\n  }\n\n  beginDrawing({\n    transform,\n    viewport,\n    transparency = false,\n    background = null,\n  }) {\n    // For pdfs that use blend modes we have to clear the canvas else certain\n    // blend modes can look wrong since we'd be blending with a white\n    // backdrop. The problem with a transparent backdrop though is we then\n    // don't get sub pixel anti aliasing on text, creating temporary\n    // transparent canvas when we have blend modes.\n    const width = this.ctx.canvas.width;\n    const height = this.ctx.canvas.height;\n\n    const savedFillStyle = this.ctx.fillStyle;\n    this.ctx.fillStyle = background || \"#ffffff\";\n    this.ctx.fillRect(0, 0, width, height);\n    this.ctx.fillStyle = savedFillStyle;\n\n    if (transparency) {\n      const transparentCanvas = this.cachedCanvases.getCanvas(\n        \"transparent\",\n        width,\n        height\n      );\n      this.compositeCtx = this.ctx;\n      this.transparentCanvas = transparentCanvas.canvas;\n      this.ctx = transparentCanvas.context;\n      this.ctx.save();\n      // The transform can be applied before rendering, transferring it to\n      // the new canvas.\n      this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n    }\n\n    this.ctx.save();\n    resetCtxToDefault(this.ctx);\n    if (transform) {\n      this.ctx.transform(...transform);\n      this.outputScaleX = transform[0];\n      this.outputScaleY = transform[0];\n    }\n    this.ctx.transform(...viewport.transform);\n    this.viewportScale = viewport.scale;\n\n    this.baseTransform = getCurrentTransform(this.ctx);\n  }\n\n  executeOperatorList(\n    operatorList,\n    executionStartIdx,\n    continueCallback,\n    stepper\n  ) {\n    const argsArray = operatorList.argsArray;\n    const fnArray = operatorList.fnArray;\n    let i = executionStartIdx || 0;\n    const argsArrayLen = argsArray.length;\n\n    // Sometimes the OperatorList to execute is empty.\n    if (argsArrayLen === i) {\n      return i;\n    }\n\n    const chunkOperations =\n      argsArrayLen - i > EXECUTION_STEPS &&\n      typeof continueCallback === \"function\";\n    const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n    let steps = 0;\n\n    const commonObjs = this.commonObjs;\n    const objs = this.objs;\n    let fnId;\n\n    while (true) {\n      if (stepper !== undefined && i === stepper.nextBreakPoint) {\n        stepper.breakIt(i, continueCallback);\n        return i;\n      }\n\n      fnId = fnArray[i];\n\n      if (fnId !== OPS.dependency) {\n        // eslint-disable-next-line prefer-spread\n        this[fnId].apply(this, argsArray[i]);\n      } else {\n        for (const depObjId of argsArray[i]) {\n          const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n\n          // If the promise isn't resolved yet, add the continueCallback\n          // to the promise and bail out.\n          if (!objsPool.has(depObjId)) {\n            objsPool.get(depObjId, continueCallback);\n            return i;\n          }\n        }\n      }\n\n      i++;\n\n      // If the entire operatorList was executed, stop as were done.\n      if (i === argsArrayLen) {\n        return i;\n      }\n\n      // If the execution took longer then a certain amount of time and\n      // `continueCallback` is specified, interrupt the execution.\n      if (chunkOperations && ++steps > EXECUTION_STEPS) {\n        if (Date.now() > endTime) {\n          continueCallback();\n          return i;\n        }\n        steps = 0;\n      }\n\n      // If the operatorList isn't executed completely yet OR the execution\n      // time was short enough, do another execution round.\n    }\n  }\n\n  #restoreInitialState() {\n    // Finishing all opened operations such as SMask group painting.\n    while (this.stateStack.length || this.inSMaskMode) {\n      this.restore();\n    }\n\n    this.ctx.restore();\n\n    if (this.transparentCanvas) {\n      this.ctx = this.compositeCtx;\n      this.ctx.save();\n      this.ctx.setTransform(1, 0, 0, 1, 0, 0); // Avoid apply transform twice\n      this.ctx.drawImage(this.transparentCanvas, 0, 0);\n      this.ctx.restore();\n      this.transparentCanvas = null;\n    }\n  }\n\n  endDrawing() {\n    this.#restoreInitialState();\n\n    this.cachedCanvases.clear();\n    this.cachedPatterns.clear();\n\n    for (const cache of this._cachedBitmapsMap.values()) {\n      for (const canvas of cache.values()) {\n        if (\n          typeof HTMLCanvasElement !== \"undefined\" &&\n          canvas instanceof HTMLCanvasElement\n        ) {\n          canvas.width = canvas.height = 0;\n        }\n      }\n      cache.clear();\n    }\n    this._cachedBitmapsMap.clear();\n    this.#drawFilter();\n  }\n\n  #drawFilter() {\n    if (this.pageColors) {\n      const hcmFilterId = this.filterFactory.addHCMFilter(\n        this.pageColors.foreground,\n        this.pageColors.background\n      );\n      if (hcmFilterId !== \"none\") {\n        const savedFilter = this.ctx.filter;\n        this.ctx.filter = hcmFilterId;\n        this.ctx.drawImage(this.ctx.canvas, 0, 0);\n        this.ctx.filter = savedFilter;\n      }\n    }\n  }\n\n  _scaleImage(img, inverseTransform) {\n    // Vertical or horizontal scaling shall not be more than 2 to not lose the\n    // pixels during drawImage operation, painting on the temporary canvas(es)\n    // that are twice smaller in size.\n    const width = img.width;\n    const height = img.height;\n    let widthScale = Math.max(\n      Math.hypot(inverseTransform[0], inverseTransform[1]),\n      1\n    );\n    let heightScale = Math.max(\n      Math.hypot(inverseTransform[2], inverseTransform[3]),\n      1\n    );\n\n    let paintWidth = width,\n      paintHeight = height;\n    let tmpCanvasId = \"prescale1\";\n    let tmpCanvas, tmpCtx;\n    while (\n      (widthScale > 2 && paintWidth > 1) ||\n      (heightScale > 2 && paintHeight > 1)\n    ) {\n      let newWidth = paintWidth,\n        newHeight = paintHeight;\n      if (widthScale > 2 && paintWidth > 1) {\n        // See bug 1820511 (Windows specific bug).\n        // TODO: once the above bug is fixed we could revert to:\n        // newWidth = Math.ceil(paintWidth / 2);\n        newWidth =\n          paintWidth >= 16384\n            ? Math.floor(paintWidth / 2) - 1 || 1\n            : Math.ceil(paintWidth / 2);\n        widthScale /= paintWidth / newWidth;\n      }\n      if (heightScale > 2 && paintHeight > 1) {\n        // TODO: see the comment above.\n        newHeight =\n          paintHeight >= 16384\n            ? Math.floor(paintHeight / 2) - 1 || 1\n            : Math.ceil(paintHeight) / 2;\n        heightScale /= paintHeight / newHeight;\n      }\n      tmpCanvas = this.cachedCanvases.getCanvas(\n        tmpCanvasId,\n        newWidth,\n        newHeight\n      );\n      tmpCtx = tmpCanvas.context;\n      tmpCtx.clearRect(0, 0, newWidth, newHeight);\n      tmpCtx.drawImage(\n        img,\n        0,\n        0,\n        paintWidth,\n        paintHeight,\n        0,\n        0,\n        newWidth,\n        newHeight\n      );\n      img = tmpCanvas.canvas;\n      paintWidth = newWidth;\n      paintHeight = newHeight;\n      tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n    }\n    return {\n      img,\n      paintWidth,\n      paintHeight,\n    };\n  }\n\n  _createMaskCanvas(img) {\n    const ctx = this.ctx;\n    const { width, height } = img;\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n    const currentTransform = getCurrentTransform(ctx);\n\n    let cache, cacheKey, scaled, maskCanvas;\n    if ((img.bitmap || img.data) && img.count > 1) {\n      const mainKey = img.bitmap || img.data.buffer;\n      // We're reusing the same image several times, so we can cache it.\n      // In case we've a pattern fill we just keep the scaled version of\n      // the image.\n      // Only the scaling part matters, the translation part is just used\n      // to compute offsets (but not when filling patterns see #15573).\n      // TODO: handle the case of a pattern fill if it's possible.\n      cacheKey = JSON.stringify(\n        isPatternFill\n          ? currentTransform\n          : [currentTransform.slice(0, 4), fillColor]\n      );\n\n      cache = this._cachedBitmapsMap.get(mainKey);\n      if (!cache) {\n        cache = new Map();\n        this._cachedBitmapsMap.set(mainKey, cache);\n      }\n      const cachedImage = cache.get(cacheKey);\n      if (cachedImage && !isPatternFill) {\n        const offsetX = Math.round(\n          Math.min(currentTransform[0], currentTransform[2]) +\n            currentTransform[4]\n        );\n        const offsetY = Math.round(\n          Math.min(currentTransform[1], currentTransform[3]) +\n            currentTransform[5]\n        );\n        return {\n          canvas: cachedImage,\n          offsetX,\n          offsetY,\n        };\n      }\n      scaled = cachedImage;\n    }\n\n    if (!scaled) {\n      maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n      putBinaryImageMask(maskCanvas.context, img);\n    }\n\n    // Create the mask canvas at the size it will be drawn at and also set\n    // its transform to match the current transform so if there are any\n    // patterns applied they will be applied relative to the correct\n    // transform.\n\n    let maskToCanvas = Util.transform(currentTransform, [\n      1 / width,\n      0,\n      0,\n      -1 / height,\n      0,\n      0,\n    ]);\n    maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n    const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox(\n      [0, 0, width, height],\n      maskToCanvas\n    );\n    const drawnWidth = Math.round(maxX - minX) || 1;\n    const drawnHeight = Math.round(maxY - minY) || 1;\n    const fillCanvas = this.cachedCanvases.getCanvas(\n      \"fillCanvas\",\n      drawnWidth,\n      drawnHeight\n    );\n    const fillCtx = fillCanvas.context;\n\n    // The offset will be the top-left cordinate mask.\n    // If objToCanvas is [a,b,c,d,e,f] then:\n    //   - offsetX = min(a, c) + e\n    //   - offsetY = min(b, d) + f\n    const offsetX = minX;\n    const offsetY = minY;\n    fillCtx.translate(-offsetX, -offsetY);\n    fillCtx.transform(...maskToCanvas);\n\n    if (!scaled) {\n      // Pre-scale if needed to improve image smoothing.\n      scaled = this._scaleImage(\n        maskCanvas.canvas,\n        getCurrentTransformInverse(fillCtx)\n      );\n      scaled = scaled.img;\n      if (cache && isPatternFill) {\n        cache.set(cacheKey, scaled);\n      }\n    }\n\n    fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(\n      getCurrentTransform(fillCtx),\n      img.interpolate\n    );\n\n    drawImageAtIntegerCoords(\n      fillCtx,\n      scaled,\n      0,\n      0,\n      scaled.width,\n      scaled.height,\n      0,\n      0,\n      width,\n      height\n    );\n    fillCtx.globalCompositeOperation = \"source-in\";\n\n    const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [\n      1,\n      0,\n      0,\n      1,\n      -offsetX,\n      -offsetY,\n    ]);\n    fillCtx.fillStyle = isPatternFill\n      ? fillColor.getPattern(ctx, this, inverse, PathType.FILL)\n      : fillColor;\n\n    fillCtx.fillRect(0, 0, width, height);\n\n    if (cache && !isPatternFill) {\n      // The fill canvas is put in the cache associated to the mask image\n      // so we must remove from the cached canvas: it mustn't be used again.\n      this.cachedCanvases.delete(\"fillCanvas\");\n      cache.set(cacheKey, fillCanvas.canvas);\n    }\n\n    // Round the offsets to avoid drawing fractional pixels.\n    return {\n      canvas: fillCanvas.canvas,\n      offsetX: Math.round(offsetX),\n      offsetY: Math.round(offsetY),\n    };\n  }\n\n  // Graphics state\n  setLineWidth(width) {\n    if (width !== this.current.lineWidth) {\n      this._cachedScaleForStroking[0] = -1;\n    }\n    this.current.lineWidth = width;\n    this.ctx.lineWidth = width;\n  }\n\n  setLineCap(style) {\n    this.ctx.lineCap = LINE_CAP_STYLES[style];\n  }\n\n  setLineJoin(style) {\n    this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n  }\n\n  setMiterLimit(limit) {\n    this.ctx.miterLimit = limit;\n  }\n\n  setDash(dashArray, dashPhase) {\n    const ctx = this.ctx;\n    if (ctx.setLineDash !== undefined) {\n      ctx.setLineDash(dashArray);\n      ctx.lineDashOffset = dashPhase;\n    }\n  }\n\n  setRenderingIntent(intent) {\n    // This operation is ignored since we haven't found a use case for it yet.\n  }\n\n  setFlatness(flatness) {\n    // This operation is ignored since we haven't found a use case for it yet.\n  }\n\n  setGState(states) {\n    for (const [key, value] of states) {\n      switch (key) {\n        case \"LW\":\n          this.setLineWidth(value);\n          break;\n        case \"LC\":\n          this.setLineCap(value);\n          break;\n        case \"LJ\":\n          this.setLineJoin(value);\n          break;\n        case \"ML\":\n          this.setMiterLimit(value);\n          break;\n        case \"D\":\n          this.setDash(value[0], value[1]);\n          break;\n        case \"RI\":\n          this.setRenderingIntent(value);\n          break;\n        case \"FL\":\n          this.setFlatness(value);\n          break;\n        case \"Font\":\n          this.setFont(value[0], value[1]);\n          break;\n        case \"CA\":\n          this.current.strokeAlpha = value;\n          break;\n        case \"ca\":\n          this.current.fillAlpha = value;\n          this.ctx.globalAlpha = value;\n          break;\n        case \"BM\":\n          this.ctx.globalCompositeOperation = value;\n          break;\n        case \"SMask\":\n          this.current.activeSMask = value ? this.tempSMask : null;\n          this.tempSMask = null;\n          this.checkSMaskState();\n          break;\n        case \"TR\":\n          this.ctx.filter = this.current.transferMaps =\n            this.filterFactory.addFilter(value);\n          break;\n      }\n    }\n  }\n\n  get inSMaskMode() {\n    return !!this.suspendedCtx;\n  }\n\n  checkSMaskState() {\n    const inSMaskMode = this.inSMaskMode;\n    if (this.current.activeSMask && !inSMaskMode) {\n      this.beginSMaskMode();\n    } else if (!this.current.activeSMask && inSMaskMode) {\n      this.endSMaskMode();\n    }\n    // Else, the state is okay and nothing needs to be done.\n  }\n\n  /**\n   * Soft mask mode takes the current main drawing canvas and replaces it with\n   * a temporary canvas. Any drawing operations that happen on the temporary\n   * canvas need to be composed with the main canvas that was suspended (see\n   * `compose()`). The temporary canvas also duplicates many of its operations\n   * on the suspended canvas to keep them in sync, so that when the soft mask\n   * mode ends any clipping paths or transformations will still be active and in\n   * the right order on the canvas' graphics state stack.\n   */\n  beginSMaskMode() {\n    if (this.inSMaskMode) {\n      throw new Error(\"beginSMaskMode called while already in smask mode\");\n    }\n    const drawnWidth = this.ctx.canvas.width;\n    const drawnHeight = this.ctx.canvas.height;\n    const cacheId = \"smaskGroupAt\" + this.groupLevel;\n    const scratchCanvas = this.cachedCanvases.getCanvas(\n      cacheId,\n      drawnWidth,\n      drawnHeight\n    );\n    this.suspendedCtx = this.ctx;\n    this.ctx = scratchCanvas.context;\n    const ctx = this.ctx;\n    ctx.setTransform(...getCurrentTransform(this.suspendedCtx));\n    copyCtxState(this.suspendedCtx, ctx);\n    mirrorContextOperations(ctx, this.suspendedCtx);\n\n    this.setGState([\n      [\"BM\", \"source-over\"],\n      [\"ca\", 1],\n      [\"CA\", 1],\n    ]);\n  }\n\n  endSMaskMode() {\n    if (!this.inSMaskMode) {\n      throw new Error(\"endSMaskMode called while not in smask mode\");\n    }\n    // The soft mask is done, now restore the suspended canvas as the main\n    // drawing canvas.\n    this.ctx._removeMirroring();\n    copyCtxState(this.ctx, this.suspendedCtx);\n    this.ctx = this.suspendedCtx;\n\n    this.suspendedCtx = null;\n  }\n\n  compose(dirtyBox) {\n    if (!this.current.activeSMask) {\n      return;\n    }\n\n    if (!dirtyBox) {\n      dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n    } else {\n      dirtyBox[0] = Math.floor(dirtyBox[0]);\n      dirtyBox[1] = Math.floor(dirtyBox[1]);\n      dirtyBox[2] = Math.ceil(dirtyBox[2]);\n      dirtyBox[3] = Math.ceil(dirtyBox[3]);\n    }\n    const smask = this.current.activeSMask;\n    const suspendedCtx = this.suspendedCtx;\n\n    composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n    // Whatever was drawn has been moved to the suspended canvas, now clear it\n    // out of the current canvas.\n    this.ctx.save();\n    this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n    this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n    this.ctx.restore();\n  }\n\n  save() {\n    if (this.inSMaskMode) {\n      // SMask mode may be turned on/off causing us to lose graphics state.\n      // Copy the temporary canvas state to the main(suspended) canvas to keep\n      // it in sync.\n      copyCtxState(this.ctx, this.suspendedCtx);\n      // Don't bother calling save on the temporary canvas since state is not\n      // saved there.\n      this.suspendedCtx.save();\n    } else {\n      this.ctx.save();\n    }\n    const old = this.current;\n    this.stateStack.push(old);\n    this.current = old.clone();\n  }\n\n  restore() {\n    if (this.stateStack.length === 0 && this.inSMaskMode) {\n      this.endSMaskMode();\n    }\n    if (this.stateStack.length !== 0) {\n      this.current = this.stateStack.pop();\n      if (this.inSMaskMode) {\n        // Graphics state is stored on the main(suspended) canvas. Restore its\n        // state then copy it over to the temporary canvas.\n        this.suspendedCtx.restore();\n        copyCtxState(this.suspendedCtx, this.ctx);\n      } else {\n        this.ctx.restore();\n      }\n      this.checkSMaskState();\n\n      // Ensure that the clipping path is reset (fixes issue6413.pdf).\n      this.pendingClip = null;\n\n      this._cachedScaleForStroking[0] = -1;\n      this._cachedGetSinglePixelWidth = null;\n    }\n  }\n\n  transform(a, b, c, d, e, f) {\n    this.ctx.transform(a, b, c, d, e, f);\n\n    this._cachedScaleForStroking[0] = -1;\n    this._cachedGetSinglePixelWidth = null;\n  }\n\n  // Path\n  constructPath(ops, args, minMax) {\n    const ctx = this.ctx;\n    const current = this.current;\n    let x = current.x,\n      y = current.y;\n    let startX, startY;\n    const currentTransform = getCurrentTransform(ctx);\n\n    // Most of the time the current transform is a scaling matrix\n    // so we don't need to transform points before computing min/max:\n    // we can compute min/max first and then smartly \"apply\" the\n    // transform (see Util.scaleMinMax).\n    // For rectangle, moveTo and lineTo, min/max are computed in the\n    // worker (see evaluator.js).\n    const isScalingMatrix =\n      (currentTransform[0] === 0 && currentTransform[3] === 0) ||\n      (currentTransform[1] === 0 && currentTransform[2] === 0);\n    const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\n\n    for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n      switch (ops[i] | 0) {\n        case OPS.rectangle:\n          x = args[j++];\n          y = args[j++];\n          const width = args[j++];\n          const height = args[j++];\n\n          const xw = x + width;\n          const yh = y + height;\n          ctx.moveTo(x, y);\n          if (width === 0 || height === 0) {\n            ctx.lineTo(xw, yh);\n          } else {\n            ctx.lineTo(xw, y);\n            ctx.lineTo(xw, yh);\n            ctx.lineTo(x, yh);\n          }\n          if (!isScalingMatrix) {\n            current.updateRectMinMax(currentTransform, [x, y, xw, yh]);\n          }\n          ctx.closePath();\n          break;\n        case OPS.moveTo:\n          x = args[j++];\n          y = args[j++];\n          ctx.moveTo(x, y);\n          if (!isScalingMatrix) {\n            current.updatePathMinMax(currentTransform, x, y);\n          }\n          break;\n        case OPS.lineTo:\n          x = args[j++];\n          y = args[j++];\n          ctx.lineTo(x, y);\n          if (!isScalingMatrix) {\n            current.updatePathMinMax(currentTransform, x, y);\n          }\n          break;\n        case OPS.curveTo:\n          startX = x;\n          startY = y;\n          x = args[j + 4];\n          y = args[j + 5];\n          ctx.bezierCurveTo(\n            args[j],\n            args[j + 1],\n            args[j + 2],\n            args[j + 3],\n            x,\n            y\n          );\n          current.updateCurvePathMinMax(\n            currentTransform,\n            startX,\n            startY,\n            args[j],\n            args[j + 1],\n            args[j + 2],\n            args[j + 3],\n            x,\n            y,\n            minMaxForBezier\n          );\n          j += 6;\n          break;\n        case OPS.curveTo2:\n          startX = x;\n          startY = y;\n          ctx.bezierCurveTo(\n            x,\n            y,\n            args[j],\n            args[j + 1],\n            args[j + 2],\n            args[j + 3]\n          );\n          current.updateCurvePathMinMax(\n            currentTransform,\n            startX,\n            startY,\n            x,\n            y,\n            args[j],\n            args[j + 1],\n            args[j + 2],\n            args[j + 3],\n            minMaxForBezier\n          );\n          x = args[j + 2];\n          y = args[j + 3];\n          j += 4;\n          break;\n        case OPS.curveTo3:\n          startX = x;\n          startY = y;\n          x = args[j + 2];\n          y = args[j + 3];\n          ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n          current.updateCurvePathMinMax(\n            currentTransform,\n            startX,\n            startY,\n            args[j],\n            args[j + 1],\n            x,\n            y,\n            x,\n            y,\n            minMaxForBezier\n          );\n          j += 4;\n          break;\n        case OPS.closePath:\n          ctx.closePath();\n          break;\n      }\n    }\n\n    if (isScalingMatrix) {\n      current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\n    }\n\n    current.setCurrentPoint(x, y);\n  }\n\n  closePath() {\n    this.ctx.closePath();\n  }\n\n  stroke(consumePath = true) {\n    const ctx = this.ctx;\n    const strokeColor = this.current.strokeColor;\n    // For stroke we want to temporarily change the global alpha to the\n    // stroking alpha.\n    ctx.globalAlpha = this.current.strokeAlpha;\n    if (this.contentVisible) {\n      if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n        ctx.save();\n        ctx.strokeStyle = strokeColor.getPattern(\n          ctx,\n          this,\n          getCurrentTransformInverse(ctx),\n          PathType.STROKE\n        );\n        this.rescaleAndStroke(/* saveRestore */ false);\n        ctx.restore();\n      } else {\n        this.rescaleAndStroke(/* saveRestore */ true);\n      }\n    }\n    if (consumePath) {\n      this.consumePath(this.current.getClippedPathBoundingBox());\n    }\n    // Restore the global alpha to the fill alpha\n    ctx.globalAlpha = this.current.fillAlpha;\n  }\n\n  closeStroke() {\n    this.closePath();\n    this.stroke();\n  }\n\n  fill(consumePath = true) {\n    const ctx = this.ctx;\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n    let needRestore = false;\n\n    if (isPatternFill) {\n      ctx.save();\n      ctx.fillStyle = fillColor.getPattern(\n        ctx,\n        this,\n        getCurrentTransformInverse(ctx),\n        PathType.FILL\n      );\n      needRestore = true;\n    }\n\n    const intersect = this.current.getClippedPathBoundingBox();\n    if (this.contentVisible && intersect !== null) {\n      if (this.pendingEOFill) {\n        ctx.fill(\"evenodd\");\n        this.pendingEOFill = false;\n      } else {\n        ctx.fill();\n      }\n    }\n\n    if (needRestore) {\n      ctx.restore();\n    }\n    if (consumePath) {\n      this.consumePath(intersect);\n    }\n  }\n\n  eoFill() {\n    this.pendingEOFill = true;\n    this.fill();\n  }\n\n  fillStroke() {\n    this.fill(false);\n    this.stroke(false);\n\n    this.consumePath();\n  }\n\n  eoFillStroke() {\n    this.pendingEOFill = true;\n    this.fillStroke();\n  }\n\n  closeFillStroke() {\n    this.closePath();\n    this.fillStroke();\n  }\n\n  closeEOFillStroke() {\n    this.pendingEOFill = true;\n    this.closePath();\n    this.fillStroke();\n  }\n\n  endPath() {\n    this.consumePath();\n  }\n\n  // Clipping\n  clip() {\n    this.pendingClip = NORMAL_CLIP;\n  }\n\n  eoClip() {\n    this.pendingClip = EO_CLIP;\n  }\n\n  // Text\n  beginText() {\n    this.current.textMatrix = IDENTITY_MATRIX;\n    this.current.textMatrixScale = 1;\n    this.current.x = this.current.lineX = 0;\n    this.current.y = this.current.lineY = 0;\n  }\n\n  endText() {\n    const paths = this.pendingTextPaths;\n    const ctx = this.ctx;\n    if (paths === undefined) {\n      ctx.beginPath();\n      return;\n    }\n\n    ctx.save();\n    ctx.beginPath();\n    for (const path of paths) {\n      ctx.setTransform(...path.transform);\n      ctx.translate(path.x, path.y);\n      path.addToPath(ctx, path.fontSize);\n    }\n    ctx.restore();\n    ctx.clip();\n    ctx.beginPath();\n    delete this.pendingTextPaths;\n  }\n\n  setCharSpacing(spacing) {\n    this.current.charSpacing = spacing;\n  }\n\n  setWordSpacing(spacing) {\n    this.current.wordSpacing = spacing;\n  }\n\n  setHScale(scale) {\n    this.current.textHScale = scale / 100;\n  }\n\n  setLeading(leading) {\n    this.current.leading = -leading;\n  }\n\n  setFont(fontRefName, size) {\n    const fontObj = this.commonObjs.get(fontRefName);\n    const current = this.current;\n\n    if (!fontObj) {\n      throw new Error(`Can't find font for ${fontRefName}`);\n    }\n    current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n\n    // A valid matrix needs all main diagonal elements to be non-zero\n    // This also ensures we bypass FF bugzilla bug #719844.\n    if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n      warn(\"Invalid font matrix for font \" + fontRefName);\n    }\n\n    // The spec for Tf (setFont) says that 'size' specifies the font 'scale',\n    // and in some docs this can be negative (inverted x-y axes).\n    if (size < 0) {\n      size = -size;\n      current.fontDirection = -1;\n    } else {\n      current.fontDirection = 1;\n    }\n\n    this.current.font = fontObj;\n    this.current.fontSize = size;\n\n    if (fontObj.isType3Font) {\n      return; // we don't need ctx.font for Type3 fonts\n    }\n\n    const name = fontObj.loadedName || \"sans-serif\";\n    const typeface =\n      fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n\n    let bold = \"normal\";\n    if (fontObj.black) {\n      bold = \"900\";\n    } else if (fontObj.bold) {\n      bold = \"bold\";\n    }\n    const italic = fontObj.italic ? \"italic\" : \"normal\";\n\n    // Some font backends cannot handle fonts below certain size.\n    // Keeping the font at minimal size and using the fontSizeScale to change\n    // the current transformation matrix before the fillText/strokeText.\n    // See https://bugzilla.mozilla.org/show_bug.cgi?id=726227\n    let browserFontSize = size;\n    if (size < MIN_FONT_SIZE) {\n      browserFontSize = MIN_FONT_SIZE;\n    } else if (size > MAX_FONT_SIZE) {\n      browserFontSize = MAX_FONT_SIZE;\n    }\n    this.current.fontSizeScale = size / browserFontSize;\n\n    this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n  }\n\n  setTextRenderingMode(mode) {\n    this.current.textRenderingMode = mode;\n  }\n\n  setTextRise(rise) {\n    this.current.textRise = rise;\n  }\n\n  moveText(x, y) {\n    this.current.x = this.current.lineX += x;\n    this.current.y = this.current.lineY += y;\n  }\n\n  setLeadingMoveText(x, y) {\n    this.setLeading(-y);\n    this.moveText(x, y);\n  }\n\n  setTextMatrix(a, b, c, d, e, f) {\n    this.current.textMatrix = [a, b, c, d, e, f];\n    this.current.textMatrixScale = Math.hypot(a, b);\n\n    this.current.x = this.current.lineX = 0;\n    this.current.y = this.current.lineY = 0;\n  }\n\n  nextLine() {\n    this.moveText(0, this.current.leading);\n  }\n\n  paintChar(character, x, y, patternTransform) {\n    const ctx = this.ctx;\n    const current = this.current;\n    const font = current.font;\n    const textRenderingMode = current.textRenderingMode;\n    const fontSize = current.fontSize / current.fontSizeScale;\n    const fillStrokeMode =\n      textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n    const isAddToPathSet = !!(\n      textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n    );\n    const patternFill = current.patternFill && !font.missingFile;\n\n    let addToPath;\n    if (font.disableFontFace || isAddToPathSet || patternFill) {\n      addToPath = font.getPathGenerator(this.commonObjs, character);\n    }\n\n    if (font.disableFontFace || patternFill) {\n      ctx.save();\n      ctx.translate(x, y);\n      ctx.beginPath();\n      addToPath(ctx, fontSize);\n      if (patternTransform) {\n        ctx.setTransform(...patternTransform);\n      }\n      if (\n        fillStrokeMode === TextRenderingMode.FILL ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\n        ctx.fill();\n      }\n      if (\n        fillStrokeMode === TextRenderingMode.STROKE ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\n        ctx.stroke();\n      }\n      ctx.restore();\n    } else {\n      if (\n        fillStrokeMode === TextRenderingMode.FILL ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\n        ctx.fillText(character, x, y);\n      }\n      if (\n        fillStrokeMode === TextRenderingMode.STROKE ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\n        ctx.strokeText(character, x, y);\n      }\n    }\n\n    if (isAddToPathSet) {\n      const paths = (this.pendingTextPaths ||= []);\n      paths.push({\n        transform: getCurrentTransform(ctx),\n        x,\n        y,\n        fontSize,\n        addToPath,\n      });\n    }\n  }\n\n  get isFontSubpixelAAEnabled() {\n    // Checks if anti-aliasing is enabled when scaled text is painted.\n    // On Windows GDI scaled fonts looks bad.\n    const { context: ctx } = this.cachedCanvases.getCanvas(\n      \"isFontSubpixelAAEnabled\",\n      10,\n      10\n    );\n    ctx.scale(1.5, 1);\n    ctx.fillText(\"I\", 0, 10);\n    const data = ctx.getImageData(0, 0, 10, 10).data;\n    let enabled = false;\n    for (let i = 3; i < data.length; i += 4) {\n      if (data[i] > 0 && data[i] < 255) {\n        enabled = true;\n        break;\n      }\n    }\n    return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n  }\n\n  showText(glyphs) {\n    const current = this.current;\n    const font = current.font;\n    if (font.isType3Font) {\n      return this.showType3Text(glyphs);\n    }\n\n    const fontSize = current.fontSize;\n    if (fontSize === 0) {\n      return undefined;\n    }\n\n    const ctx = this.ctx;\n    const fontSizeScale = current.fontSizeScale;\n    const charSpacing = current.charSpacing;\n    const wordSpacing = current.wordSpacing;\n    const fontDirection = current.fontDirection;\n    const textHScale = current.textHScale * fontDirection;\n    const glyphsLength = glyphs.length;\n    const vertical = font.vertical;\n    const spacingDir = vertical ? 1 : -1;\n    const defaultVMetrics = font.defaultVMetrics;\n    const widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n    const simpleFillText =\n      current.textRenderingMode === TextRenderingMode.FILL &&\n      !font.disableFontFace &&\n      !current.patternFill;\n\n    ctx.save();\n    ctx.transform(...current.textMatrix);\n    ctx.translate(current.x, current.y + current.textRise);\n\n    if (fontDirection > 0) {\n      ctx.scale(textHScale, -1);\n    } else {\n      ctx.scale(textHScale, 1);\n    }\n\n    let patternTransform;\n    if (current.patternFill) {\n      ctx.save();\n      const pattern = current.fillColor.getPattern(\n        ctx,\n        this,\n        getCurrentTransformInverse(ctx),\n        PathType.FILL\n      );\n      patternTransform = getCurrentTransform(ctx);\n      ctx.restore();\n      ctx.fillStyle = pattern;\n    }\n\n    let lineWidth = current.lineWidth;\n    const scale = current.textMatrixScale;\n    if (scale === 0 || lineWidth === 0) {\n      const fillStrokeMode =\n        current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n      if (\n        fillStrokeMode === TextRenderingMode.STROKE ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\n        lineWidth = this.getSinglePixelWidth();\n      }\n    } else {\n      lineWidth /= scale;\n    }\n\n    if (fontSizeScale !== 1.0) {\n      ctx.scale(fontSizeScale, fontSizeScale);\n      lineWidth /= fontSizeScale;\n    }\n\n    ctx.lineWidth = lineWidth;\n\n    if (font.isInvalidPDFjsFont) {\n      const chars = [];\n      let width = 0;\n      for (const glyph of glyphs) {\n        chars.push(glyph.unicode);\n        width += glyph.width;\n      }\n      ctx.fillText(chars.join(\"\"), 0, 0);\n      current.x += width * widthAdvanceScale * textHScale;\n      ctx.restore();\n      this.compose();\n\n      return undefined;\n    }\n\n    let x = 0,\n      i;\n    for (i = 0; i < glyphsLength; ++i) {\n      const glyph = glyphs[i];\n      if (typeof glyph === \"number\") {\n        x += (spacingDir * glyph * fontSize) / 1000;\n        continue;\n      }\n\n      let restoreNeeded = false;\n      const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n      const character = glyph.fontChar;\n      const accent = glyph.accent;\n      let scaledX, scaledY;\n      let width = glyph.width;\n      if (vertical) {\n        const vmetric = glyph.vmetric || defaultVMetrics;\n        const vx =\n          -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n        const vy = vmetric[2] * widthAdvanceScale;\n\n        width = vmetric ? -vmetric[0] : width;\n        scaledX = vx / fontSizeScale;\n        scaledY = (x + vy) / fontSizeScale;\n      } else {\n        scaledX = x / fontSizeScale;\n        scaledY = 0;\n      }\n\n      if (font.remeasure && width > 0) {\n        // Some standard fonts may not have the exact width: rescale per\n        // character if measured width is greater than expected glyph width\n        // and subpixel-aa is enabled, otherwise just center the glyph.\n        const measuredWidth =\n          ((ctx.measureText(character).width * 1000) / fontSize) *\n          fontSizeScale;\n        if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n          const characterScaleX = width / measuredWidth;\n          restoreNeeded = true;\n          ctx.save();\n          ctx.scale(characterScaleX, 1);\n          scaledX /= characterScaleX;\n        } else if (width !== measuredWidth) {\n          scaledX +=\n            (((width - measuredWidth) / 2000) * fontSize) / fontSizeScale;\n        }\n      }\n\n      // Only attempt to draw the glyph if it is actually in the embedded font\n      // file or if there isn't a font file so the fallback font is shown.\n      if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n        if (simpleFillText && !accent) {\n          // common case\n          ctx.fillText(character, scaledX, scaledY);\n        } else {\n          this.paintChar(character, scaledX, scaledY, patternTransform);\n          if (accent) {\n            const scaledAccentX =\n              scaledX + (fontSize * accent.offset.x) / fontSizeScale;\n            const scaledAccentY =\n              scaledY - (fontSize * accent.offset.y) / fontSizeScale;\n            this.paintChar(\n              accent.fontChar,\n              scaledAccentX,\n              scaledAccentY,\n              patternTransform\n            );\n          }\n        }\n      }\n\n      const charWidth = vertical\n        ? width * widthAdvanceScale - spacing * fontDirection\n        : width * widthAdvanceScale + spacing * fontDirection;\n      x += charWidth;\n\n      if (restoreNeeded) {\n        ctx.restore();\n      }\n    }\n    if (vertical) {\n      current.y -= x;\n    } else {\n      current.x += x * textHScale;\n    }\n    ctx.restore();\n    this.compose();\n\n    return undefined;\n  }\n\n  showType3Text(glyphs) {\n    // Type3 fonts - each glyph is a \"mini-PDF\"\n    const ctx = this.ctx;\n    const current = this.current;\n    const font = current.font;\n    const fontSize = current.fontSize;\n    const fontDirection = current.fontDirection;\n    const spacingDir = font.vertical ? 1 : -1;\n    const charSpacing = current.charSpacing;\n    const wordSpacing = current.wordSpacing;\n    const textHScale = current.textHScale * fontDirection;\n    const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n    const glyphsLength = glyphs.length;\n    const isTextInvisible =\n      current.textRenderingMode === TextRenderingMode.INVISIBLE;\n    let i, glyph, width, spacingLength;\n\n    if (isTextInvisible || fontSize === 0) {\n      return;\n    }\n    this._cachedScaleForStroking[0] = -1;\n    this._cachedGetSinglePixelWidth = null;\n\n    ctx.save();\n    ctx.transform(...current.textMatrix);\n    ctx.translate(current.x, current.y);\n\n    ctx.scale(textHScale, fontDirection);\n\n    for (i = 0; i < glyphsLength; ++i) {\n      glyph = glyphs[i];\n      if (typeof glyph === \"number\") {\n        spacingLength = (spacingDir * glyph * fontSize) / 1000;\n        this.ctx.translate(spacingLength, 0);\n        current.x += spacingLength * textHScale;\n        continue;\n      }\n\n      const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n      const operatorList = font.charProcOperatorList[glyph.operatorListId];\n      if (!operatorList) {\n        warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n        continue;\n      }\n      if (this.contentVisible) {\n        this.processingType3 = glyph;\n        this.save();\n        ctx.scale(fontSize, fontSize);\n        ctx.transform(...fontMatrix);\n        this.executeOperatorList(operatorList);\n        this.restore();\n      }\n\n      const transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n      width = transformed[0] * fontSize + spacing;\n\n      ctx.translate(width, 0);\n      current.x += width * textHScale;\n    }\n    ctx.restore();\n    this.processingType3 = null;\n  }\n\n  // Type3 fonts\n  setCharWidth(xWidth, yWidth) {\n    // We can safely ignore this since the width should be the same\n    // as the width in the Widths array.\n  }\n\n  setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n    this.ctx.rect(llx, lly, urx - llx, ury - lly);\n    this.ctx.clip();\n    this.endPath();\n  }\n\n  // Color\n  getColorN_Pattern(IR) {\n    let pattern;\n    if (IR[0] === \"TilingPattern\") {\n      const color = IR[1];\n      const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n      const canvasGraphicsFactory = {\n        createCanvasGraphics: ctx => {\n          return new CanvasGraphics(\n            ctx,\n            this.commonObjs,\n            this.objs,\n            this.canvasFactory,\n            this.filterFactory,\n            {\n              optionalContentConfig: this.optionalContentConfig,\n              markedContentStack: this.markedContentStack,\n            }\n          );\n        },\n      };\n      pattern = new TilingPattern(\n        IR,\n        color,\n        this.ctx,\n        canvasGraphicsFactory,\n        baseTransform\n      );\n    } else {\n      pattern = this._getPattern(IR[1], IR[2]);\n    }\n    return pattern;\n  }\n\n  setStrokeColorN() {\n    this.current.strokeColor = this.getColorN_Pattern(arguments);\n  }\n\n  setFillColorN() {\n    this.current.fillColor = this.getColorN_Pattern(arguments);\n    this.current.patternFill = true;\n  }\n\n  setStrokeRGBColor(r, g, b) {\n    const color = Util.makeHexColor(r, g, b);\n    this.ctx.strokeStyle = color;\n    this.current.strokeColor = color;\n  }\n\n  setFillRGBColor(r, g, b) {\n    const color = Util.makeHexColor(r, g, b);\n    this.ctx.fillStyle = color;\n    this.current.fillColor = color;\n    this.current.patternFill = false;\n  }\n\n  _getPattern(objId, matrix = null) {\n    let pattern;\n    if (this.cachedPatterns.has(objId)) {\n      pattern = this.cachedPatterns.get(objId);\n    } else {\n      pattern = getShadingPattern(this.getObject(objId));\n      this.cachedPatterns.set(objId, pattern);\n    }\n    if (matrix) {\n      pattern.matrix = matrix;\n    }\n    return pattern;\n  }\n\n  shadingFill(objId) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const ctx = this.ctx;\n\n    this.save();\n    const pattern = this._getPattern(objId);\n    ctx.fillStyle = pattern.getPattern(\n      ctx,\n      this,\n      getCurrentTransformInverse(ctx),\n      PathType.SHADING\n    );\n\n    const inv = getCurrentTransformInverse(ctx);\n    if (inv) {\n      const { width, height } = ctx.canvas;\n      const [x0, y0, x1, y1] = Util.getAxialAlignedBoundingBox(\n        [0, 0, width, height],\n        inv\n      );\n\n      this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n    } else {\n      // HACK to draw the gradient onto an infinite rectangle.\n      // PDF gradients are drawn across the entire image while\n      // Canvas only allows gradients to be drawn in a rectangle\n      // The following bug should allow us to remove this.\n      // https://bugzilla.mozilla.org/show_bug.cgi?id=664884\n\n      this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n    }\n\n    this.compose(this.current.getClippedPathBoundingBox());\n    this.restore();\n  }\n\n  // Images\n  beginInlineImage() {\n    unreachable(\"Should not call beginInlineImage\");\n  }\n\n  beginImageData() {\n    unreachable(\"Should not call beginImageData\");\n  }\n\n  paintFormXObjectBegin(matrix, bbox) {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.save();\n    this.baseTransformStack.push(this.baseTransform);\n\n    if (Array.isArray(matrix) && matrix.length === 6) {\n      this.transform(...matrix);\n    }\n\n    this.baseTransform = getCurrentTransform(this.ctx);\n\n    if (bbox) {\n      const width = bbox[2] - bbox[0];\n      const height = bbox[3] - bbox[1];\n      this.ctx.rect(bbox[0], bbox[1], width, height);\n      this.current.updateRectMinMax(getCurrentTransform(this.ctx), bbox);\n      this.clip();\n      this.endPath();\n    }\n  }\n\n  paintFormXObjectEnd() {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.restore();\n    this.baseTransform = this.baseTransformStack.pop();\n  }\n\n  beginGroup(group) {\n    if (!this.contentVisible) {\n      return;\n    }\n\n    this.save();\n    // If there's an active soft mask we don't want it enabled for the group, so\n    // clear it out. The mask and suspended canvas will be restored in endGroup.\n    if (this.inSMaskMode) {\n      this.endSMaskMode();\n      this.current.activeSMask = null;\n    }\n\n    const currentCtx = this.ctx;\n    // TODO non-isolated groups - according to Rik at adobe non-isolated\n    // group results aren't usually that different and they even have tools\n    // that ignore this setting. Notes from Rik on implementing:\n    // - When you encounter an transparency group, create a new canvas with\n    // the dimensions of the bbox\n    // - copy the content from the previous canvas to the new canvas\n    // - draw as usual\n    // - remove the backdrop alpha:\n    // alphaNew = 1 - (1 - alpha)/(1 - alphaBackdrop) with 'alpha' the alpha\n    // value of your transparency group and 'alphaBackdrop' the alpha of the\n    // backdrop\n    // - remove background color:\n    // colorNew = color - alphaNew *colorBackdrop /(1 - alphaNew)\n    if (!group.isolated) {\n      info(\"TODO: Support non-isolated groups.\");\n    }\n\n    // TODO knockout - supposedly possible with the clever use of compositing\n    // modes.\n    if (group.knockout) {\n      warn(\"Knockout groups not supported.\");\n    }\n\n    const currentTransform = getCurrentTransform(currentCtx);\n    if (group.matrix) {\n      currentCtx.transform(...group.matrix);\n    }\n    if (!group.bbox) {\n      throw new Error(\"Bounding box is required.\");\n    }\n\n    // Based on the current transform figure out how big the bounding box\n    // will actually be.\n    let bounds = Util.getAxialAlignedBoundingBox(\n      group.bbox,\n      getCurrentTransform(currentCtx)\n    );\n    // Clip the bounding box to the current canvas.\n    const canvasBounds = [\n      0,\n      0,\n      currentCtx.canvas.width,\n      currentCtx.canvas.height,\n    ];\n    bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n    // Use ceil in case we're between sizes so we don't create canvas that is\n    // too small and make the canvas at least 1x1 pixels.\n    const offsetX = Math.floor(bounds[0]);\n    const offsetY = Math.floor(bounds[1]);\n    let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n    let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n    let scaleX = 1,\n      scaleY = 1;\n    if (drawnWidth > MAX_GROUP_SIZE) {\n      scaleX = drawnWidth / MAX_GROUP_SIZE;\n      drawnWidth = MAX_GROUP_SIZE;\n    }\n    if (drawnHeight > MAX_GROUP_SIZE) {\n      scaleY = drawnHeight / MAX_GROUP_SIZE;\n      drawnHeight = MAX_GROUP_SIZE;\n    }\n\n    this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n\n    let cacheId = \"groupAt\" + this.groupLevel;\n    if (group.smask) {\n      // Using two cache entries is case if masks are used one after another.\n      cacheId += \"_smask_\" + (this.smaskCounter++ % 2);\n    }\n    const scratchCanvas = this.cachedCanvases.getCanvas(\n      cacheId,\n      drawnWidth,\n      drawnHeight\n    );\n    const groupCtx = scratchCanvas.context;\n\n    // Since we created a new canvas that is just the size of the bounding box\n    // we have to translate the group ctx.\n    groupCtx.scale(1 / scaleX, 1 / scaleY);\n    groupCtx.translate(-offsetX, -offsetY);\n    groupCtx.transform(...currentTransform);\n\n    if (group.smask) {\n      // Saving state and cached mask to be used in setGState.\n      this.smaskStack.push({\n        canvas: scratchCanvas.canvas,\n        context: groupCtx,\n        offsetX,\n        offsetY,\n        scaleX,\n        scaleY,\n        subtype: group.smask.subtype,\n        backdrop: group.smask.backdrop,\n        transferMap: group.smask.transferMap || null,\n        startTransformInverse: null, // used during suspend operation\n      });\n    } else {\n      // Setup the current ctx so when the group is popped we draw it at the\n      // right location.\n      currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n      currentCtx.translate(offsetX, offsetY);\n      currentCtx.scale(scaleX, scaleY);\n      currentCtx.save();\n    }\n    // The transparency group inherits all off the current graphics state\n    // except the blend mode, soft mask, and alpha constants.\n    copyCtxState(currentCtx, groupCtx);\n    this.ctx = groupCtx;\n    this.setGState([\n      [\"BM\", \"source-over\"],\n      [\"ca\", 1],\n      [\"CA\", 1],\n    ]);\n    this.groupStack.push(currentCtx);\n    this.groupLevel++;\n  }\n\n  endGroup(group) {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.groupLevel--;\n    const groupCtx = this.ctx;\n    const ctx = this.groupStack.pop();\n    this.ctx = ctx;\n    // Turn off image smoothing to avoid sub pixel interpolation which can\n    // look kind of blurry for some pdfs.\n    this.ctx.imageSmoothingEnabled = false;\n\n    if (group.smask) {\n      this.tempSMask = this.smaskStack.pop();\n      this.restore();\n    } else {\n      this.ctx.restore();\n      const currentMtx = getCurrentTransform(this.ctx);\n      this.restore();\n      this.ctx.save();\n      this.ctx.setTransform(...currentMtx);\n      const dirtyBox = Util.getAxialAlignedBoundingBox(\n        [0, 0, groupCtx.canvas.width, groupCtx.canvas.height],\n        currentMtx\n      );\n      this.ctx.drawImage(groupCtx.canvas, 0, 0);\n      this.ctx.restore();\n      this.compose(dirtyBox);\n    }\n  }\n\n  beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n    // The annotations are drawn just after the page content.\n    // The page content drawing can potentially have set a transform,\n    // a clipping path, whatever...\n    // So in order to have something clean, we restore the initial state.\n    this.#restoreInitialState();\n    resetCtxToDefault(this.ctx);\n\n    this.ctx.save();\n    this.save();\n\n    if (this.baseTransform) {\n      this.ctx.setTransform(...this.baseTransform);\n    }\n\n    if (Array.isArray(rect) && rect.length === 4) {\n      const width = rect[2] - rect[0];\n      const height = rect[3] - rect[1];\n\n      if (hasOwnCanvas && this.annotationCanvasMap) {\n        transform = transform.slice();\n        transform[4] -= rect[0];\n        transform[5] -= rect[1];\n\n        rect = rect.slice();\n        rect[0] = rect[1] = 0;\n        rect[2] = width;\n        rect[3] = height;\n\n        const [scaleX, scaleY] = Util.singularValueDecompose2dScale(\n          getCurrentTransform(this.ctx)\n        );\n        const { viewportScale } = this;\n        const canvasWidth = Math.ceil(\n          width * this.outputScaleX * viewportScale\n        );\n        const canvasHeight = Math.ceil(\n          height * this.outputScaleY * viewportScale\n        );\n\n        this.annotationCanvas = this.canvasFactory.create(\n          canvasWidth,\n          canvasHeight\n        );\n        const { canvas, context } = this.annotationCanvas;\n        this.annotationCanvasMap.set(id, canvas);\n        this.annotationCanvas.savedCtx = this.ctx;\n        this.ctx = context;\n        this.ctx.save();\n        this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n\n        resetCtxToDefault(this.ctx);\n      } else {\n        resetCtxToDefault(this.ctx);\n\n        this.ctx.rect(rect[0], rect[1], width, height);\n        this.ctx.clip();\n        this.endPath();\n      }\n    }\n\n    this.current = new CanvasExtraState(\n      this.ctx.canvas.width,\n      this.ctx.canvas.height\n    );\n\n    this.transform(...transform);\n    this.transform(...matrix);\n  }\n\n  endAnnotation() {\n    if (this.annotationCanvas) {\n      this.ctx.restore();\n      this.#drawFilter();\n\n      this.ctx = this.annotationCanvas.savedCtx;\n      delete this.annotationCanvas.savedCtx;\n      delete this.annotationCanvas;\n    }\n  }\n\n  paintImageMaskXObject(img) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const count = img.count;\n    img = this.getObject(img.data, img);\n    img.count = count;\n\n    const ctx = this.ctx;\n    const glyph = this.processingType3;\n\n    if (glyph) {\n      if (glyph.compiled === undefined) {\n        glyph.compiled = compileType3Glyph(img);\n      }\n\n      if (glyph.compiled) {\n        glyph.compiled(ctx);\n        return;\n      }\n    }\n    const mask = this._createMaskCanvas(img);\n    const maskCanvas = mask.canvas;\n\n    ctx.save();\n    // The mask is drawn with the transform applied. Reset the current\n    // transform to draw to the identity.\n    ctx.setTransform(1, 0, 0, 1, 0, 0);\n    ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n    ctx.restore();\n    this.compose();\n  }\n\n  paintImageMaskXObjectRepeat(\n    img,\n    scaleX,\n    skewX = 0,\n    skewY = 0,\n    scaleY,\n    positions\n  ) {\n    if (!this.contentVisible) {\n      return;\n    }\n\n    img = this.getObject(img.data, img);\n\n    const ctx = this.ctx;\n    ctx.save();\n    const currentTransform = getCurrentTransform(ctx);\n    ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n    const mask = this._createMaskCanvas(img);\n\n    ctx.setTransform(\n      1,\n      0,\n      0,\n      1,\n      mask.offsetX - currentTransform[4],\n      mask.offsetY - currentTransform[5]\n    );\n    for (let i = 0, ii = positions.length; i < ii; i += 2) {\n      const trans = Util.transform(currentTransform, [\n        scaleX,\n        skewX,\n        skewY,\n        scaleY,\n        positions[i],\n        positions[i + 1],\n      ]);\n\n      const [x, y] = Util.applyTransform([0, 0], trans);\n      ctx.drawImage(mask.canvas, x, y);\n    }\n    ctx.restore();\n    this.compose();\n  }\n\n  paintImageMaskXObjectGroup(images) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const ctx = this.ctx;\n\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n\n    for (const image of images) {\n      const { data, width, height, transform } = image;\n\n      const maskCanvas = this.cachedCanvases.getCanvas(\n        \"maskCanvas\",\n        width,\n        height\n      );\n      const maskCtx = maskCanvas.context;\n      maskCtx.save();\n\n      const img = this.getObject(data, image);\n      putBinaryImageMask(maskCtx, img);\n\n      maskCtx.globalCompositeOperation = \"source-in\";\n\n      maskCtx.fillStyle = isPatternFill\n        ? fillColor.getPattern(\n            maskCtx,\n            this,\n            getCurrentTransformInverse(ctx),\n            PathType.FILL\n          )\n        : fillColor;\n      maskCtx.fillRect(0, 0, width, height);\n\n      maskCtx.restore();\n\n      ctx.save();\n      ctx.transform(...transform);\n      ctx.scale(1, -1);\n      drawImageAtIntegerCoords(\n        ctx,\n        maskCanvas.canvas,\n        0,\n        0,\n        width,\n        height,\n        0,\n        -1,\n        1,\n        1\n      );\n      ctx.restore();\n    }\n    this.compose();\n  }\n\n  paintImageXObject(objId) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const imgData = this.getObject(objId);\n    if (!imgData) {\n      warn(\"Dependent image isn't ready yet\");\n      return;\n    }\n\n    this.paintInlineImageXObject(imgData);\n  }\n\n  paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const imgData = this.getObject(objId);\n    if (!imgData) {\n      warn(\"Dependent image isn't ready yet\");\n      return;\n    }\n\n    const width = imgData.width;\n    const height = imgData.height;\n    const map = [];\n    for (let i = 0, ii = positions.length; i < ii; i += 2) {\n      map.push({\n        transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n        x: 0,\n        y: 0,\n        w: width,\n        h: height,\n      });\n    }\n    this.paintInlineImageXObjectGroup(imgData, map);\n  }\n\n  applyTransferMapsToCanvas(ctx) {\n    if (this.current.transferMaps !== \"none\") {\n      ctx.filter = this.current.transferMaps;\n      ctx.drawImage(ctx.canvas, 0, 0);\n      ctx.filter = \"none\";\n    }\n    return ctx.canvas;\n  }\n\n  applyTransferMapsToBitmap(imgData) {\n    if (this.current.transferMaps === \"none\") {\n      return imgData.bitmap;\n    }\n    const { bitmap, width, height } = imgData;\n    const tmpCanvas = this.cachedCanvases.getCanvas(\n      \"inlineImage\",\n      width,\n      height\n    );\n    const tmpCtx = tmpCanvas.context;\n    tmpCtx.filter = this.current.transferMaps;\n    tmpCtx.drawImage(bitmap, 0, 0);\n    tmpCtx.filter = \"none\";\n\n    return tmpCanvas.canvas;\n  }\n\n  paintInlineImageXObject(imgData) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const width = imgData.width;\n    const height = imgData.height;\n    const ctx = this.ctx;\n\n    this.save();\n\n    if (\n      (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n      !isNodeJS\n    ) {\n      // The filter, if any, will be applied in applyTransferMapsToBitmap.\n      // It must be applied to the image before rescaling else some artifacts\n      // could appear.\n      // The final restore will reset it to its value.\n      const { filter } = ctx;\n      if (filter !== \"none\" && filter !== \"\") {\n        ctx.filter = \"none\";\n      }\n    }\n\n    // scale the image to the unit square\n    ctx.scale(1 / width, -1 / height);\n\n    let imgToPaint;\n    if (imgData.bitmap) {\n      imgToPaint = this.applyTransferMapsToBitmap(imgData);\n    } else if (\n      (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement) ||\n      !imgData.data\n    ) {\n      // typeof check is needed due to node.js support, see issue #8489\n      imgToPaint = imgData;\n    } else {\n      const tmpCanvas = this.cachedCanvases.getCanvas(\n        \"inlineImage\",\n        width,\n        height\n      );\n      const tmpCtx = tmpCanvas.context;\n      putBinaryImageData(tmpCtx, imgData);\n      imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n    }\n\n    const scaled = this._scaleImage(\n      imgToPaint,\n      getCurrentTransformInverse(ctx)\n    );\n    ctx.imageSmoothingEnabled = getImageSmoothingEnabled(\n      getCurrentTransform(ctx),\n      imgData.interpolate\n    );\n\n    drawImageAtIntegerCoords(\n      ctx,\n      scaled.img,\n      0,\n      0,\n      scaled.paintWidth,\n      scaled.paintHeight,\n      0,\n      -height,\n      width,\n      height\n    );\n    this.compose();\n    this.restore();\n  }\n\n  paintInlineImageXObjectGroup(imgData, map) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const ctx = this.ctx;\n    let imgToPaint;\n    if (imgData.bitmap) {\n      imgToPaint = imgData.bitmap;\n    } else {\n      const w = imgData.width;\n      const h = imgData.height;\n\n      const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n      const tmpCtx = tmpCanvas.context;\n      putBinaryImageData(tmpCtx, imgData);\n      imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n    }\n\n    for (const entry of map) {\n      ctx.save();\n      ctx.transform(...entry.transform);\n      ctx.scale(1, -1);\n      drawImageAtIntegerCoords(\n        ctx,\n        imgToPaint,\n        entry.x,\n        entry.y,\n        entry.w,\n        entry.h,\n        0,\n        -1,\n        1,\n        1\n      );\n      ctx.restore();\n    }\n    this.compose();\n  }\n\n  paintSolidColorImageMask() {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.ctx.fillRect(0, 0, 1, 1);\n    this.compose();\n  }\n\n  // Marked content\n\n  markPoint(tag) {\n    // TODO Marked content.\n  }\n\n  markPointProps(tag, properties) {\n    // TODO Marked content.\n  }\n\n  beginMarkedContent(tag) {\n    this.markedContentStack.push({\n      visible: true,\n    });\n  }\n\n  beginMarkedContentProps(tag, properties) {\n    if (tag === \"OC\") {\n      this.markedContentStack.push({\n        visible: this.optionalContentConfig.isVisible(properties),\n      });\n    } else {\n      this.markedContentStack.push({\n        visible: true,\n      });\n    }\n    this.contentVisible = this.isContentVisible();\n  }\n\n  endMarkedContent() {\n    this.markedContentStack.pop();\n    this.contentVisible = this.isContentVisible();\n  }\n\n  // Compatibility\n\n  beginCompat() {\n    // TODO ignore undefined operators (should we do that anyway?)\n  }\n\n  endCompat() {\n    // TODO stop ignoring undefined operators\n  }\n\n  // Helper functions\n\n  consumePath(clipBox) {\n    const isEmpty = this.current.isEmptyClip();\n    if (this.pendingClip) {\n      this.current.updateClipFromPath();\n    }\n    if (!this.pendingClip) {\n      this.compose(clipBox);\n    }\n    const ctx = this.ctx;\n    if (this.pendingClip) {\n      if (!isEmpty) {\n        if (this.pendingClip === EO_CLIP) {\n          ctx.clip(\"evenodd\");\n        } else {\n          ctx.clip();\n        }\n      }\n      this.pendingClip = null;\n    }\n    this.current.startNewPathAndClipBox(this.current.clipBox);\n    ctx.beginPath();\n  }\n\n  getSinglePixelWidth() {\n    if (!this._cachedGetSinglePixelWidth) {\n      const m = getCurrentTransform(this.ctx);\n      if (m[1] === 0 && m[2] === 0) {\n        // Fast path\n        this._cachedGetSinglePixelWidth =\n          1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n      } else {\n        const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n        const normX = Math.hypot(m[0], m[2]);\n        const normY = Math.hypot(m[1], m[3]);\n        this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n      }\n    }\n    return this._cachedGetSinglePixelWidth;\n  }\n\n  getScaleForStroking() {\n    // A pixel has thicknessX = thicknessY = 1;\n    // A transformed pixel is a parallelogram and the thicknesses\n    // corresponds to the heights.\n    // The goal of this function is to rescale before setting the\n    // lineWidth in order to have both thicknesses greater or equal\n    // to 1 after transform.\n    if (this._cachedScaleForStroking[0] === -1) {\n      const { lineWidth } = this.current;\n      const { a, b, c, d } = this.ctx.getTransform();\n      let scaleX, scaleY;\n\n      if (b === 0 && c === 0) {\n        // Fast path\n        const normX = Math.abs(a);\n        const normY = Math.abs(d);\n        if (normX === normY) {\n          if (lineWidth === 0) {\n            scaleX = scaleY = 1 / normX;\n          } else {\n            const scaledLineWidth = normX * lineWidth;\n            scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n          }\n        } else if (lineWidth === 0) {\n          scaleX = 1 / normX;\n          scaleY = 1 / normY;\n        } else {\n          const scaledXLineWidth = normX * lineWidth;\n          const scaledYLineWidth = normY * lineWidth;\n          scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n          scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n        }\n      } else {\n        // A pixel (base (x, y)) is transformed by M into a parallelogram:\n        //  - its area is |det(M)|;\n        //  - heightY (orthogonal to Mx) has a length: |det(M)| / norm(Mx);\n        //  - heightX (orthogonal to My) has a length: |det(M)| / norm(My).\n        // heightX and heightY are the thicknesses of the transformed pixel\n        // and they must be both greater or equal to 1.\n        const absDet = Math.abs(a * d - b * c);\n        const normX = Math.hypot(a, b);\n        const normY = Math.hypot(c, d);\n        if (lineWidth === 0) {\n          scaleX = normY / absDet;\n          scaleY = normX / absDet;\n        } else {\n          const baseArea = lineWidth * absDet;\n          scaleX = normY > baseArea ? normY / baseArea : 1;\n          scaleY = normX > baseArea ? normX / baseArea : 1;\n        }\n      }\n      this._cachedScaleForStroking[0] = scaleX;\n      this._cachedScaleForStroking[1] = scaleY;\n    }\n    return this._cachedScaleForStroking;\n  }\n\n  // Rescale before stroking in order to have a final lineWidth\n  // with both thicknesses greater or equal to 1.\n  rescaleAndStroke(saveRestore) {\n    const { ctx } = this;\n    const { lineWidth } = this.current;\n    const [scaleX, scaleY] = this.getScaleForStroking();\n\n    ctx.lineWidth = lineWidth || 1;\n\n    if (scaleX === 1 && scaleY === 1) {\n      ctx.stroke();\n      return;\n    }\n\n    const dashes = ctx.getLineDash();\n    if (saveRestore) {\n      ctx.save();\n    }\n\n    ctx.scale(scaleX, scaleY);\n\n    // How the dashed line is rendered depends on the current transform...\n    // so we added a rescale to handle too thin lines and consequently\n    // the way the line is dashed will be modified.\n    // If scaleX === scaleY, the dashed lines will be rendered correctly\n    // else we'll have some bugs (but only with too thin lines).\n    // Here we take the max... why not taking the min... or something else.\n    // Anyway, as said it's buggy when scaleX !== scaleY.\n    if (dashes.length > 0) {\n      const scale = Math.max(scaleX, scaleY);\n      ctx.setLineDash(dashes.map(x => x / scale));\n      ctx.lineDashOffset /= scale;\n    }\n\n    ctx.stroke();\n\n    if (saveRestore) {\n      ctx.restore();\n    }\n  }\n\n  isContentVisible() {\n    for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n      if (!this.markedContentStack[i].visible) {\n        return false;\n      }\n    }\n    return true;\n  }\n}\n\nfor (const op in OPS) {\n  if (CanvasGraphics.prototype[op] !== undefined) {\n    CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n  }\n}\n\nexport { CanvasGraphics };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  BaseCanvasFactory,\n  BaseCMapReaderFactory,\n  BaseFilterFactory,\n  BaseStandardFontDataFactory,\n  BaseSVGFactory,\n} from \"./base_factory.js\";\nimport {\n  BaseException,\n  FeatureTest,\n  shadow,\n  stringToBytes,\n  Util,\n  warn,\n} from \"../shared/util.js\";\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\nclass PixelsPerInch {\n  static CSS = 96.0;\n\n  static PDF = 72.0;\n\n  static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\n\n/**\n * FilterFactory aims to create some SVG filters we can use when drawing an\n * image (or whatever) on a canvas.\n * Filters aren't applied with ctx.putImageData because it just overwrites the\n * underlying pixels.\n * With these filters, it's possible for example to apply some transfer maps on\n * an image without the need to apply them on the pixel arrays: the renderer\n * does the magic for us.\n */\nclass DOMFilterFactory extends BaseFilterFactory {\n  #_cache;\n\n  #_defs;\n\n  #docId;\n\n  #document;\n\n  #hcmFilter;\n\n  #hcmKey;\n\n  #hcmUrl;\n\n  #hcmHighlightFilter;\n\n  #hcmHighlightKey;\n\n  #hcmHighlightUrl;\n\n  #id = 0;\n\n  constructor({ docId, ownerDocument = globalThis.document } = {}) {\n    super();\n    this.#docId = docId;\n    this.#document = ownerDocument;\n  }\n\n  get #cache() {\n    return (this.#_cache ||= new Map());\n  }\n\n  get #defs() {\n    if (!this.#_defs) {\n      const div = this.#document.createElement(\"div\");\n      const { style } = div;\n      style.visibility = \"hidden\";\n      style.contain = \"strict\";\n      style.width = style.height = 0;\n      style.position = \"absolute\";\n      style.top = style.left = 0;\n      style.zIndex = -1;\n\n      const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n      svg.setAttribute(\"width\", 0);\n      svg.setAttribute(\"height\", 0);\n      this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n      div.append(svg);\n      svg.append(this.#_defs);\n      this.#document.body.append(div);\n    }\n    return this.#_defs;\n  }\n\n  addFilter(maps) {\n    if (!maps) {\n      return \"none\";\n    }\n\n    // When a page is zoomed the page is re-drawn but the maps are likely\n    // the same.\n    let value = this.#cache.get(maps);\n    if (value) {\n      return value;\n    }\n\n    let tableR, tableG, tableB, key;\n    if (maps.length === 1) {\n      const mapR = maps[0];\n      const buffer = new Array(256);\n      for (let i = 0; i < 256; i++) {\n        buffer[i] = mapR[i] / 255;\n      }\n      key = tableR = tableG = tableB = buffer.join(\",\");\n    } else {\n      const [mapR, mapG, mapB] = maps;\n      const bufferR = new Array(256);\n      const bufferG = new Array(256);\n      const bufferB = new Array(256);\n      for (let i = 0; i < 256; i++) {\n        bufferR[i] = mapR[i] / 255;\n        bufferG[i] = mapG[i] / 255;\n        bufferB[i] = mapB[i] / 255;\n      }\n      tableR = bufferR.join(\",\");\n      tableG = bufferG.join(\",\");\n      tableB = bufferB.join(\",\");\n      key = `${tableR}${tableG}${tableB}`;\n    }\n\n    value = this.#cache.get(key);\n    if (value) {\n      this.#cache.set(maps, value);\n      return value;\n    }\n\n    // We create a SVG filter: feComponentTransferElement\n    //  https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement\n\n    const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n    const url = `url(#${id})`;\n    this.#cache.set(maps, url);\n    this.#cache.set(key, url);\n\n    const filter = this.#createFilter(id);\n    this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n\n    return url;\n  }\n\n  addHCMFilter(fgColor, bgColor) {\n    const key = `${fgColor}-${bgColor}`;\n    if (this.#hcmKey === key) {\n      return this.#hcmUrl;\n    }\n\n    this.#hcmKey = key;\n    this.#hcmUrl = \"none\";\n    this.#hcmFilter?.remove();\n\n    if (!fgColor || !bgColor) {\n      return this.#hcmUrl;\n    }\n\n    const fgRGB = this.#getRGB(fgColor);\n    fgColor = Util.makeHexColor(...fgRGB);\n    const bgRGB = this.#getRGB(bgColor);\n    bgColor = Util.makeHexColor(...bgRGB);\n    this.#defs.style.color = \"\";\n\n    if (\n      (fgColor === \"#000000\" && bgColor === \"#ffffff\") ||\n      fgColor === bgColor\n    ) {\n      return this.#hcmUrl;\n    }\n\n    // https://developer.mozilla.org/en-US/docs/Web/Accessibility/Understanding_Colors_and_Luminance\n    //\n    // Relative luminance:\n    // https://www.w3.org/TR/WCAG20/#relativeluminancedef\n    //\n    // We compute the rounded luminance of the default background color.\n    // Then for every color in the pdf, if its rounded luminance is the\n    // same as the background one then it's replaced by the new\n    // background color else by the foreground one.\n    const map = new Array(256);\n    for (let i = 0; i <= 255; i++) {\n      const x = i / 255;\n      map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n    }\n    const table = map.join(\",\");\n\n    const id = `g_${this.#docId}_hcm_filter`;\n    const filter = (this.#hcmHighlightFilter = this.#createFilter(id));\n    this.#addTransferMapConversion(table, table, table, filter);\n    this.#addGrayConversion(filter);\n\n    const getSteps = (c, n) => {\n      const start = fgRGB[c] / 255;\n      const end = bgRGB[c] / 255;\n      const arr = new Array(n + 1);\n      for (let i = 0; i <= n; i++) {\n        arr[i] = start + (i / n) * (end - start);\n      }\n      return arr.join(\",\");\n    };\n    this.#addTransferMapConversion(\n      getSteps(0, 5),\n      getSteps(1, 5),\n      getSteps(2, 5),\n      filter\n    );\n\n    this.#hcmUrl = `url(#${id})`;\n    return this.#hcmUrl;\n  }\n\n  addHighlightHCMFilter(fgColor, bgColor, newFgColor, newBgColor) {\n    const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n    if (this.#hcmHighlightKey === key) {\n      return this.#hcmHighlightUrl;\n    }\n\n    this.#hcmHighlightKey = key;\n    this.#hcmHighlightUrl = \"none\";\n    this.#hcmHighlightFilter?.remove();\n\n    if (!fgColor || !bgColor) {\n      return this.#hcmHighlightUrl;\n    }\n\n    const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n    let fgGray = Math.round(\n      0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]\n    );\n    let bgGray = Math.round(\n      0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]\n    );\n    let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(\n      this.#getRGB.bind(this)\n    );\n    if (bgGray < fgGray) {\n      [fgGray, bgGray, newFgRGB, newBgRGB] = [\n        bgGray,\n        fgGray,\n        newBgRGB,\n        newFgRGB,\n      ];\n    }\n    this.#defs.style.color = \"\";\n\n    // Now we can create the filters to highlight some canvas parts.\n    // The colors in the pdf will almost be Canvas and CanvasText, hence we\n    // want to filter them to finally get Highlight and HighlightText.\n    // Since we're in HCM the background color and the foreground color should\n    // be really different when converted to grayscale (if they're not then it\n    // means that we've a poor contrast). Once the canvas colors are converted\n    // to grayscale we can easily map them on their new colors.\n    // The grayscale step is important because if we've something like:\n    //   fgColor = #FF....\n    //   bgColor = #FF....\n    //   then we are enable to map the red component on the new red components\n    //   which can be different.\n\n    const getSteps = (fg, bg, n) => {\n      const arr = new Array(256);\n      const step = (bgGray - fgGray) / n;\n      const newStart = fg / 255;\n      const newStep = (bg - fg) / (255 * n);\n      let prev = 0;\n      for (let i = 0; i <= n; i++) {\n        const k = Math.round(fgGray + i * step);\n        const value = newStart + i * newStep;\n        for (let j = prev; j <= k; j++) {\n          arr[j] = value;\n        }\n        prev = k + 1;\n      }\n      for (let i = prev; i < 256; i++) {\n        arr[i] = arr[prev - 1];\n      }\n      return arr.join(\",\");\n    };\n\n    const id = `g_${this.#docId}_hcm_highlight_filter`;\n    const filter = (this.#hcmHighlightFilter = this.#createFilter(id));\n\n    this.#addGrayConversion(filter);\n    this.#addTransferMapConversion(\n      getSteps(newFgRGB[0], newBgRGB[0], 5),\n      getSteps(newFgRGB[1], newBgRGB[1], 5),\n      getSteps(newFgRGB[2], newBgRGB[2], 5),\n      filter\n    );\n\n    this.#hcmHighlightUrl = `url(#${id})`;\n    return this.#hcmHighlightUrl;\n  }\n\n  destroy(keepHCM = false) {\n    if (keepHCM && (this.#hcmUrl || this.#hcmHighlightUrl)) {\n      return;\n    }\n    if (this.#_defs) {\n      this.#_defs.parentNode.parentNode.remove();\n      this.#_defs = null;\n    }\n    if (this.#_cache) {\n      this.#_cache.clear();\n      this.#_cache = null;\n    }\n    this.#id = 0;\n  }\n\n  #addGrayConversion(filter) {\n    const feColorMatrix = this.#document.createElementNS(\n      SVG_NS,\n      \"feColorMatrix\"\n    );\n    feColorMatrix.setAttribute(\"type\", \"matrix\");\n    feColorMatrix.setAttribute(\n      \"values\",\n      \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\"\n    );\n    filter.append(feColorMatrix);\n  }\n\n  #createFilter(id) {\n    const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n    filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n    filter.setAttribute(\"id\", id);\n    this.#defs.append(filter);\n\n    return filter;\n  }\n\n  #appendFeFunc(feComponentTransfer, func, table) {\n    const feFunc = this.#document.createElementNS(SVG_NS, func);\n    feFunc.setAttribute(\"type\", \"discrete\");\n    feFunc.setAttribute(\"tableValues\", table);\n    feComponentTransfer.append(feFunc);\n  }\n\n  #addTransferMapConversion(rTable, gTable, bTable, filter) {\n    const feComponentTransfer = this.#document.createElementNS(\n      SVG_NS,\n      \"feComponentTransfer\"\n    );\n    filter.append(feComponentTransfer);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n  }\n\n  #getRGB(color) {\n    this.#defs.style.color = color;\n    return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n  }\n}\n\nclass DOMCanvasFactory extends BaseCanvasFactory {\n  constructor({ ownerDocument = globalThis.document } = {}) {\n    super();\n    this._document = ownerDocument;\n  }\n\n  /**\n   * @ignore\n   */\n  _createCanvas(width, height) {\n    const canvas = this._document.createElement(\"canvas\");\n    canvas.width = width;\n    canvas.height = height;\n    return canvas;\n  }\n}\n\nasync function fetchData(url, asTypedArray = false) {\n  if (\n    (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n    isValidFetchUrl(url, document.baseURI)\n  ) {\n    const response = await fetch(url);\n    if (!response.ok) {\n      throw new Error(response.statusText);\n    }\n    return asTypedArray\n      ? new Uint8Array(await response.arrayBuffer())\n      : stringToBytes(await response.text());\n  }\n\n  // The Fetch API is not supported.\n  return new Promise((resolve, reject) => {\n    const request = new XMLHttpRequest();\n    request.open(\"GET\", url, /* asTypedArray = */ true);\n\n    if (asTypedArray) {\n      request.responseType = \"arraybuffer\";\n    }\n    request.onreadystatechange = () => {\n      if (request.readyState !== XMLHttpRequest.DONE) {\n        return;\n      }\n      if (request.status === 200 || request.status === 0) {\n        let data;\n        if (asTypedArray && request.response) {\n          data = new Uint8Array(request.response);\n        } else if (!asTypedArray && request.responseText) {\n          data = stringToBytes(request.responseText);\n        }\n        if (data) {\n          resolve(data);\n          return;\n        }\n      }\n      reject(new Error(request.statusText));\n    };\n\n    request.send(null);\n  });\n}\n\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n  /**\n   * @ignore\n   */\n  _fetchData(url, compressionType) {\n    return fetchData(url, /* asTypedArray = */ this.isCompressed).then(data => {\n      return { cMapData: data, compressionType };\n    });\n  }\n}\n\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n  /**\n   * @ignore\n   */\n  _fetchData(url) {\n    return fetchData(url, /* asTypedArray = */ true);\n  }\n}\n\nclass DOMSVGFactory extends BaseSVGFactory {\n  /**\n   * @ignore\n   */\n  _createSVG(type) {\n    return document.createElementNS(SVG_NS, type);\n  }\n}\n\n/**\n * @typedef {Object} PageViewportParameters\n * @property {Array<number>} viewBox - The xMin, yMin, xMax and\n *   yMax coordinates.\n * @property {number} scale - The scale of the viewport.\n * @property {number} rotation - The rotation, in degrees, of the viewport.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset. The\n *   default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset. The\n *   default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be flipped.\n *   The default value is `false`.\n */\n\n/**\n * @typedef {Object} PageViewportCloneParameters\n * @property {number} [scale] - The scale, overriding the one in the cloned\n *   viewport. The default value is `this.scale`.\n * @property {number} [rotation] - The rotation, in degrees, overriding the one\n *   in the cloned viewport. The default value is `this.rotation`.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n *   The default value is `this.offsetX`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n *   The default value is `this.offsetY`.\n * @property {boolean} [dontFlip] - If true, the x-axis will not be flipped.\n *   The default value is `false`.\n */\n\n/**\n * PDF page viewport created based on scale, rotation and offset.\n */\nclass PageViewport {\n  /**\n   * @param {PageViewportParameters}\n   */\n  constructor({\n    viewBox,\n    scale,\n    rotation,\n    offsetX = 0,\n    offsetY = 0,\n    dontFlip = false,\n  }) {\n    this.viewBox = viewBox;\n    this.scale = scale;\n    this.rotation = rotation;\n    this.offsetX = offsetX;\n    this.offsetY = offsetY;\n\n    // creating transform to convert pdf coordinate system to the normal\n    // canvas like coordinates taking in account scale and rotation\n    const centerX = (viewBox[2] + viewBox[0]) / 2;\n    const centerY = (viewBox[3] + viewBox[1]) / 2;\n    let rotateA, rotateB, rotateC, rotateD;\n    // Normalize the rotation, by clamping it to the [0, 360) range.\n    rotation %= 360;\n    if (rotation < 0) {\n      rotation += 360;\n    }\n    switch (rotation) {\n      case 180:\n        rotateA = -1;\n        rotateB = 0;\n        rotateC = 0;\n        rotateD = 1;\n        break;\n      case 90:\n        rotateA = 0;\n        rotateB = 1;\n        rotateC = 1;\n        rotateD = 0;\n        break;\n      case 270:\n        rotateA = 0;\n        rotateB = -1;\n        rotateC = -1;\n        rotateD = 0;\n        break;\n      case 0:\n        rotateA = 1;\n        rotateB = 0;\n        rotateC = 0;\n        rotateD = -1;\n        break;\n      default:\n        throw new Error(\n          \"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\"\n        );\n    }\n\n    if (dontFlip) {\n      rotateC = -rotateC;\n      rotateD = -rotateD;\n    }\n\n    let offsetCanvasX, offsetCanvasY;\n    let width, height;\n    if (rotateA === 0) {\n      offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n      offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n      width = (viewBox[3] - viewBox[1]) * scale;\n      height = (viewBox[2] - viewBox[0]) * scale;\n    } else {\n      offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n      offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n      width = (viewBox[2] - viewBox[0]) * scale;\n      height = (viewBox[3] - viewBox[1]) * scale;\n    }\n    // creating transform for the following operations:\n    // translate(-centerX, -centerY), rotate and flip vertically,\n    // scale, and translate(offsetCanvasX, offsetCanvasY)\n    this.transform = [\n      rotateA * scale,\n      rotateB * scale,\n      rotateC * scale,\n      rotateD * scale,\n      offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\n      offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY,\n    ];\n\n    this.width = width;\n    this.height = height;\n  }\n\n  /**\n   * The original, un-scaled, viewport dimensions.\n   * @type {Object}\n   */\n  get rawDims() {\n    const { viewBox } = this;\n    return shadow(this, \"rawDims\", {\n      pageWidth: viewBox[2] - viewBox[0],\n      pageHeight: viewBox[3] - viewBox[1],\n      pageX: viewBox[0],\n      pageY: viewBox[1],\n    });\n  }\n\n  /**\n   * Clones viewport, with optional additional properties.\n   * @param {PageViewportCloneParameters} [params]\n   * @returns {PageViewport} Cloned viewport.\n   */\n  clone({\n    scale = this.scale,\n    rotation = this.rotation,\n    offsetX = this.offsetX,\n    offsetY = this.offsetY,\n    dontFlip = false,\n  } = {}) {\n    return new PageViewport({\n      viewBox: this.viewBox.slice(),\n      scale,\n      rotation,\n      offsetX,\n      offsetY,\n      dontFlip,\n    });\n  }\n\n  /**\n   * Converts PDF point to the viewport coordinates. For examples, useful for\n   * converting PDF location into canvas pixel coordinates.\n   * @param {number} x - The x-coordinate.\n   * @param {number} y - The y-coordinate.\n   * @returns {Array} Array containing `x`- and `y`-coordinates of the\n   *   point in the viewport coordinate space.\n   * @see {@link convertToPdfPoint}\n   * @see {@link convertToViewportRectangle}\n   */\n  convertToViewportPoint(x, y) {\n    return Util.applyTransform([x, y], this.transform);\n  }\n\n  /**\n   * Converts PDF rectangle to the viewport coordinates.\n   * @param {Array} rect - The xMin, yMin, xMax and yMax coordinates.\n   * @returns {Array} Array containing corresponding coordinates of the\n   *   rectangle in the viewport coordinate space.\n   * @see {@link convertToViewportPoint}\n   */\n  convertToViewportRectangle(rect) {\n    const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\n    const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\n    return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n  }\n\n  /**\n   * Converts viewport coordinates to the PDF location. For examples, useful\n   * for converting canvas pixel location into PDF one.\n   * @param {number} x - The x-coordinate.\n   * @param {number} y - The y-coordinate.\n   * @returns {Array} Array containing `x`- and `y`-coordinates of the\n   *   point in the PDF coordinate space.\n   * @see {@link convertToViewportPoint}\n   */\n  convertToPdfPoint(x, y) {\n    return Util.applyInverseTransform([x, y], this.transform);\n  }\n}\n\nclass RenderingCancelledException extends BaseException {\n  constructor(msg, extraDelay = 0) {\n    super(msg, \"RenderingCancelledException\");\n    this.extraDelay = extraDelay;\n  }\n}\n\nfunction isDataScheme(url) {\n  const ii = url.length;\n  let i = 0;\n  while (i < ii && url[i].trim() === \"\") {\n    i++;\n  }\n  return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\n\nfunction isPdfFile(filename) {\n  return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\n\n/**\n * Gets the filename from a given URL.\n * @param {string} url\n * @param {boolean} [onlyStripPath]\n * @returns {string}\n */\nfunction getFilenameFromUrl(url, onlyStripPath = false) {\n  if (!onlyStripPath) {\n    [url] = url.split(/[#?]/, 1);\n  }\n  return url.substring(url.lastIndexOf(\"/\") + 1);\n}\n\n/**\n * Returns the filename or guessed filename from the url (see issue 3455).\n * @param {string} url - The original PDF location.\n * @param {string} defaultFilename - The value returned if the filename is\n *   unknown, or the protocol is unsupported.\n * @returns {string} Guessed PDF filename.\n */\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n  if (typeof url !== \"string\") {\n    return defaultFilename;\n  }\n  if (isDataScheme(url)) {\n    warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n    return defaultFilename;\n  }\n  const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n  //              SCHEME        HOST        1.PATH  2.QUERY   3.REF\n  // Pattern to get last matching NAME.pdf\n  const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n  const splitURI = reURI.exec(url);\n  let suggestedFilename =\n    reFilename.exec(splitURI[1]) ||\n    reFilename.exec(splitURI[2]) ||\n    reFilename.exec(splitURI[3]);\n  if (suggestedFilename) {\n    suggestedFilename = suggestedFilename[0];\n    if (suggestedFilename.includes(\"%\")) {\n      // URL-encoded %2Fpath%2Fto%2Ffile.pdf should be file.pdf\n      try {\n        suggestedFilename = reFilename.exec(\n          decodeURIComponent(suggestedFilename)\n        )[0];\n      } catch {\n        // Possible (extremely rare) errors:\n        // URIError \"Malformed URI\", e.g. for \"%AA.pdf\"\n        // TypeError \"null has no properties\", e.g. for \"%2F.pdf\"\n      }\n    }\n  }\n  return suggestedFilename || defaultFilename;\n}\n\nclass StatTimer {\n  started = Object.create(null);\n\n  times = [];\n\n  time(name) {\n    if (name in this.started) {\n      warn(`Timer is already running for ${name}`);\n    }\n    this.started[name] = Date.now();\n  }\n\n  timeEnd(name) {\n    if (!(name in this.started)) {\n      warn(`Timer has not been started for ${name}`);\n    }\n    this.times.push({\n      name,\n      start: this.started[name],\n      end: Date.now(),\n    });\n    // Remove timer from started so it can be called again.\n    delete this.started[name];\n  }\n\n  toString() {\n    // Find the longest name for padding purposes.\n    const outBuf = [];\n    let longest = 0;\n    for (const { name } of this.times) {\n      longest = Math.max(name.length, longest);\n    }\n    for (const { name, start, end } of this.times) {\n      outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n    }\n    return outBuf.join(\"\");\n  }\n}\n\nfunction isValidFetchUrl(url, baseUrl) {\n  if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n    throw new Error(\"Not implemented: isValidFetchUrl\");\n  }\n  try {\n    const { protocol } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n    // The Fetch API only supports the http/https protocols, and not file/ftp.\n    return protocol === \"http:\" || protocol === \"https:\";\n  } catch {\n    return false; // `new URL()` will throw on incorrect data.\n  }\n}\n\n/**\n * Event handler to suppress context menu.\n */\nfunction noContextMenu(e) {\n  e.preventDefault();\n}\n\n// Deprecated API function -- display regardless of the `verbosity` setting.\nfunction deprecated(details) {\n  console.log(\"Deprecated API usage: \" + details);\n}\n\nlet pdfDateStringRegex;\n\nclass PDFDateString {\n  /**\n   * Convert a PDF date string to a JavaScript `Date` object.\n   *\n   * The PDF date string format is described in section 7.9.4 of the official\n   * PDF 32000-1:2008 specification. However, in the PDF 1.7 reference (sixth\n   * edition) Adobe describes the same format including a trailing apostrophe.\n   * This syntax in incorrect, but Adobe Acrobat creates PDF files that contain\n   * them. We ignore all apostrophes as they are not necessary for date parsing.\n   *\n   * Moreover, Adobe Acrobat doesn't handle changing the date to universal time\n   * and doesn't use the user's time zone (effectively ignoring the HH' and mm'\n   * parts of the date string).\n   *\n   * @param {string} input\n   * @returns {Date|null}\n   */\n  static toDateObject(input) {\n    if (!input || typeof input !== \"string\") {\n      return null;\n    }\n\n    // Lazily initialize the regular expression.\n    pdfDateStringRegex ||= new RegExp(\n      \"^D:\" + // Prefix (required)\n        \"(\\\\d{4})\" + // Year (required)\n        \"(\\\\d{2})?\" + // Month (optional)\n        \"(\\\\d{2})?\" + // Day (optional)\n        \"(\\\\d{2})?\" + // Hour (optional)\n        \"(\\\\d{2})?\" + // Minute (optional)\n        \"(\\\\d{2})?\" + // Second (optional)\n        \"([Z|+|-])?\" + // Universal time relation (optional)\n        \"(\\\\d{2})?\" + // Offset hour (optional)\n        \"'?\" + // Splitting apostrophe (optional)\n        \"(\\\\d{2})?\" + // Offset minute (optional)\n        \"'?\" // Trailing apostrophe (optional)\n    );\n\n    // Optional fields that don't satisfy the requirements from the regular\n    // expression (such as incorrect digit counts or numbers that are out of\n    // range) will fall back the defaults from the specification.\n    const matches = pdfDateStringRegex.exec(input);\n    if (!matches) {\n      return null;\n    }\n\n    // JavaScript's `Date` object expects the month to be between 0 and 11\n    // instead of 1 and 12, so we have to correct for that.\n    const year = parseInt(matches[1], 10);\n    let month = parseInt(matches[2], 10);\n    month = month >= 1 && month <= 12 ? month - 1 : 0;\n    let day = parseInt(matches[3], 10);\n    day = day >= 1 && day <= 31 ? day : 1;\n    let hour = parseInt(matches[4], 10);\n    hour = hour >= 0 && hour <= 23 ? hour : 0;\n    let minute = parseInt(matches[5], 10);\n    minute = minute >= 0 && minute <= 59 ? minute : 0;\n    let second = parseInt(matches[6], 10);\n    second = second >= 0 && second <= 59 ? second : 0;\n    const universalTimeRelation = matches[7] || \"Z\";\n    let offsetHour = parseInt(matches[8], 10);\n    offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n    let offsetMinute = parseInt(matches[9], 10) || 0;\n    offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n\n    // Universal time relation 'Z' means that the local time is equal to the\n    // universal time, whereas the relations '+'/'-' indicate that the local\n    // time is later respectively earlier than the universal time. Every date\n    // is normalized to universal time.\n    if (universalTimeRelation === \"-\") {\n      hour += offsetHour;\n      minute += offsetMinute;\n    } else if (universalTimeRelation === \"+\") {\n      hour -= offsetHour;\n      minute -= offsetMinute;\n    }\n\n    return new Date(Date.UTC(year, month, day, hour, minute, second));\n  }\n}\n\n/**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n */\nfunction getXfaPageViewport(xfaPage, { scale = 1, rotation = 0 }) {\n  const { width, height } = xfaPage.attributes.style;\n  const viewBox = [0, 0, parseInt(width), parseInt(height)];\n\n  return new PageViewport({\n    viewBox,\n    scale,\n    rotation,\n  });\n}\n\nfunction getRGB(color) {\n  if (color.startsWith(\"#\")) {\n    const colorRGB = parseInt(color.slice(1), 16);\n    return [\n      (colorRGB & 0xff0000) >> 16,\n      (colorRGB & 0x00ff00) >> 8,\n      colorRGB & 0x0000ff,\n    ];\n  }\n\n  if (color.startsWith(\"rgb(\")) {\n    // getComputedStyle(...).color returns a `rgb(R, G, B)` color.\n    return color\n      .slice(/* \"rgb(\".length */ 4, -1) // Strip out \"rgb(\" and \")\".\n      .split(\",\")\n      .map(x => parseInt(x));\n  }\n\n  if (color.startsWith(\"rgba(\")) {\n    return color\n      .slice(/* \"rgba(\".length */ 5, -1) // Strip out \"rgba(\" and \")\".\n      .split(\",\")\n      .map(x => parseInt(x))\n      .slice(0, 3);\n  }\n\n  warn(`Not a valid color format: \"${color}\"`);\n  return [0, 0, 0];\n}\n\nfunction getColorValues(colors) {\n  const span = document.createElement(\"span\");\n  span.style.visibility = \"hidden\";\n  document.body.append(span);\n  for (const name of colors.keys()) {\n    span.style.color = name;\n    const computedColor = window.getComputedStyle(span).color;\n    colors.set(name, getRGB(computedColor));\n  }\n  span.remove();\n}\n\nfunction getCurrentTransform(ctx) {\n  const { a, b, c, d, e, f } = ctx.getTransform();\n  return [a, b, c, d, e, f];\n}\n\nfunction getCurrentTransformInverse(ctx) {\n  const { a, b, c, d, e, f } = ctx.getTransform().invertSelf();\n  return [a, b, c, d, e, f];\n}\n\n/**\n * @param {HTMLDivElement} div\n * @param {PageViewport} viewport\n * @param {boolean} mustFlip\n * @param {boolean} mustRotate\n */\nfunction setLayerDimensions(\n  div,\n  viewport,\n  mustFlip = false,\n  mustRotate = true\n) {\n  if (viewport instanceof PageViewport) {\n    const { pageWidth, pageHeight } = viewport.rawDims;\n    const { style } = div;\n    const useRound = FeatureTest.isCSSRoundSupported;\n\n    const w = `var(--scale-factor) * ${pageWidth}px`,\n      h = `var(--scale-factor) * ${pageHeight}px`;\n    const widthStr = useRound ? `round(${w}, 1px)` : `calc(${w})`,\n      heightStr = useRound ? `round(${h}, 1px)` : `calc(${h})`;\n\n    if (!mustFlip || viewport.rotation % 180 === 0) {\n      style.width = widthStr;\n      style.height = heightStr;\n    } else {\n      style.width = heightStr;\n      style.height = widthStr;\n    }\n  }\n\n  if (mustRotate) {\n    div.setAttribute(\"data-main-rotation\", viewport.rotation);\n  }\n}\n\nexport {\n  deprecated,\n  DOMCanvasFactory,\n  DOMCMapReaderFactory,\n  DOMFilterFactory,\n  DOMStandardFontDataFactory,\n  DOMSVGFactory,\n  getColorValues,\n  getCurrentTransform,\n  getCurrentTransformInverse,\n  getFilenameFromUrl,\n  getPdfFilenameFromUrl,\n  getRGB,\n  getXfaPageViewport,\n  isDataScheme,\n  isPdfFile,\n  isValidFetchUrl,\n  noContextMenu,\n  PageViewport,\n  PDFDateString,\n  PixelsPerInch,\n  RenderingCancelledException,\n  setLayerDimensions,\n  StatTimer,\n};\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n\nimport {\n  AnnotationEditorParamsType,\n  AnnotationEditorType,\n  assert,\n  LINE_FACTOR,\n  shadow,\n  Util,\n} from \"../../shared/util.js\";\nimport {\n  AnnotationEditorUIManager,\n  bindEvents,\n  KeyboardManager,\n} from \"./tools.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { FreeTextAnnotationElement } from \"../annotation_layer.js\";\n\n/**\n * Basic text editor in order to create a FreeTex annotation.\n */\nclass FreeTextEditor extends AnnotationEditor {\n  #boundEditorDivBlur = this.editorDivBlur.bind(this);\n\n  #boundEditorDivFocus = this.editorDivFocus.bind(this);\n\n  #boundEditorDivInput = this.editorDivInput.bind(this);\n\n  #boundEditorDivKeydown = this.editorDivKeydown.bind(this);\n\n  #color;\n\n  #content = \"\";\n\n  #editorDivId = `${this.id}-editor`;\n\n  #fontSize;\n\n  #initialData = null;\n\n  static _freeTextDefaultContent = \"\";\n\n  static _internalPadding = 0;\n\n  static _defaultColor = null;\n\n  static _defaultFontSize = 10;\n\n  static get _keyboardManager() {\n    const proto = FreeTextEditor.prototype;\n\n    const arrowChecker = self => self.isEmpty();\n\n    const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n    const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n\n    return shadow(\n      this,\n      \"_keyboardManager\",\n      new KeyboardManager([\n        [\n          // Commit the text in case the user use ctrl+s to save the document.\n          // The event must bubble in order to be caught by the viewer.\n          // See bug 1831574.\n          [\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"],\n          proto.commitOrRemove,\n          { bubbles: true },\n        ],\n        [\n          [\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"],\n          proto.commitOrRemove,\n        ],\n        [\n          [\"ArrowLeft\", \"mac+ArrowLeft\"],\n          proto._translateEmpty,\n          { args: [-small, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"],\n          proto._translateEmpty,\n          { args: [-big, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ArrowRight\", \"mac+ArrowRight\"],\n          proto._translateEmpty,\n          { args: [small, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"],\n          proto._translateEmpty,\n          { args: [big, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ArrowUp\", \"mac+ArrowUp\"],\n          proto._translateEmpty,\n          { args: [0, -small], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"],\n          proto._translateEmpty,\n          { args: [0, -big], checker: arrowChecker },\n        ],\n        [\n          [\"ArrowDown\", \"mac+ArrowDown\"],\n          proto._translateEmpty,\n          { args: [0, small], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"],\n          proto._translateEmpty,\n          { args: [0, big], checker: arrowChecker },\n        ],\n      ])\n    );\n  }\n\n  static _type = \"freetext\";\n\n  static _editorType = AnnotationEditorType.FREETEXT;\n\n  constructor(params) {\n    super({ ...params, name: \"freeTextEditor\" });\n    this.#color =\n      params.color ||\n      FreeTextEditor._defaultColor ||\n      AnnotationEditor._defaultLineColor;\n    this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n  }\n\n  /** @inheritdoc */\n  static initialize(l10n) {\n    AnnotationEditor.initialize(l10n, {\n      strings: [\"pdfjs-free-text-default-content\"],\n    });\n    const style = getComputedStyle(document.documentElement);\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      const lineHeight = parseFloat(\n        style.getPropertyValue(\"--freetext-line-height\")\n      );\n      assert(\n        lineHeight === LINE_FACTOR,\n        \"Update the CSS variable to agree with the constant.\"\n      );\n    }\n\n    this._internalPadding = parseFloat(\n      style.getPropertyValue(\"--freetext-padding\")\n    );\n  }\n\n  /** @inheritdoc */\n  static updateDefaultParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.FREETEXT_SIZE:\n        FreeTextEditor._defaultFontSize = value;\n        break;\n      case AnnotationEditorParamsType.FREETEXT_COLOR:\n        FreeTextEditor._defaultColor = value;\n        break;\n    }\n  }\n\n  /** @inheritdoc */\n  updateParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.FREETEXT_SIZE:\n        this.#updateFontSize(value);\n        break;\n      case AnnotationEditorParamsType.FREETEXT_COLOR:\n        this.#updateColor(value);\n        break;\n    }\n  }\n\n  /** @inheritdoc */\n  static get defaultPropertiesToUpdate() {\n    return [\n      [\n        AnnotationEditorParamsType.FREETEXT_SIZE,\n        FreeTextEditor._defaultFontSize,\n      ],\n      [\n        AnnotationEditorParamsType.FREETEXT_COLOR,\n        FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor,\n      ],\n    ];\n  }\n\n  /** @inheritdoc */\n  get propertiesToUpdate() {\n    return [\n      [AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize],\n      [AnnotationEditorParamsType.FREETEXT_COLOR, this.#color],\n    ];\n  }\n\n  /**\n   * Update the font size and make this action as undoable.\n   * @param {number} fontSize\n   */\n  #updateFontSize(fontSize) {\n    const setFontsize = size => {\n      this.editorDiv.style.fontSize = `calc(${size}px * var(--scale-factor))`;\n      this.translate(0, -(size - this.#fontSize) * this.parentScale);\n      this.#fontSize = size;\n      this.#setEditorDimensions();\n    };\n    const savedFontsize = this.#fontSize;\n    this.addCommands({\n      cmd: () => {\n        setFontsize(fontSize);\n      },\n      undo: () => {\n        setFontsize(savedFontsize);\n      },\n      mustExec: true,\n      type: AnnotationEditorParamsType.FREETEXT_SIZE,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n  }\n\n  /**\n   * Update the color and make this action undoable.\n   * @param {string} color\n   */\n  #updateColor(color) {\n    const savedColor = this.#color;\n    this.addCommands({\n      cmd: () => {\n        this.#color = this.editorDiv.style.color = color;\n      },\n      undo: () => {\n        this.#color = this.editorDiv.style.color = savedColor;\n      },\n      mustExec: true,\n      type: AnnotationEditorParamsType.FREETEXT_COLOR,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n  }\n\n  /**\n   * Helper to translate the editor with the keyboard when it's empty.\n   * @param {number} x in page units.\n   * @param {number} y in page units.\n   */\n  _translateEmpty(x, y) {\n    this._uiManager.translateSelectedEditors(x, y, /* noCommit = */ true);\n  }\n\n  /** @inheritdoc */\n  getInitialTranslation() {\n    // The start of the base line is where the user clicked.\n    const scale = this.parentScale;\n    return [\n      -FreeTextEditor._internalPadding * scale,\n      -(FreeTextEditor._internalPadding + this.#fontSize) * scale,\n    ];\n  }\n\n  /** @inheritdoc */\n  rebuild() {\n    if (!this.parent) {\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n\n    if (!this.isAttachedToDOM) {\n      // At some point this editor was removed and we're rebuilting it,\n      // hence we must add it to its parent.\n      this.parent.add(this);\n    }\n  }\n\n  /** @inheritdoc */\n  enableEditMode() {\n    if (this.isInEditMode()) {\n      return;\n    }\n\n    this.parent.setEditingState(false);\n    this.parent.updateToolbar(AnnotationEditorType.FREETEXT);\n    super.enableEditMode();\n    this.overlayDiv.classList.remove(\"enabled\");\n    this.editorDiv.contentEditable = true;\n    this._isDraggable = false;\n    this.div.removeAttribute(\"aria-activedescendant\");\n    this.editorDiv.addEventListener(\"keydown\", this.#boundEditorDivKeydown);\n    this.editorDiv.addEventListener(\"focus\", this.#boundEditorDivFocus);\n    this.editorDiv.addEventListener(\"blur\", this.#boundEditorDivBlur);\n    this.editorDiv.addEventListener(\"input\", this.#boundEditorDivInput);\n  }\n\n  /** @inheritdoc */\n  disableEditMode() {\n    if (!this.isInEditMode()) {\n      return;\n    }\n\n    this.parent.setEditingState(true);\n    super.disableEditMode();\n    this.overlayDiv.classList.add(\"enabled\");\n    this.editorDiv.contentEditable = false;\n    this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n    this._isDraggable = true;\n    this.editorDiv.removeEventListener(\"keydown\", this.#boundEditorDivKeydown);\n    this.editorDiv.removeEventListener(\"focus\", this.#boundEditorDivFocus);\n    this.editorDiv.removeEventListener(\"blur\", this.#boundEditorDivBlur);\n    this.editorDiv.removeEventListener(\"input\", this.#boundEditorDivInput);\n\n    // On Chrome, the focus is given to <body> when contentEditable is set to\n    // false, hence we focus the div.\n    this.div.focus({\n      preventScroll: true /* See issue #15744 */,\n    });\n\n    // In case the blur callback hasn't been called.\n    this.isEditing = false;\n    this.parent.div.classList.add(\"freetextEditing\");\n  }\n\n  /** @inheritdoc */\n  focusin(event) {\n    if (!this._focusEventsAllowed) {\n      return;\n    }\n    super.focusin(event);\n    if (event.target !== this.editorDiv) {\n      this.editorDiv.focus();\n    }\n  }\n\n  /** @inheritdoc */\n  onceAdded() {\n    if (this.width) {\n      this.#cheatInitialRect();\n      // The editor was created in using ctrl+c.\n      return;\n    }\n    this.enableEditMode();\n    this.editorDiv.focus();\n    if (this._initialOptions?.isCentered) {\n      this.center();\n    }\n    this._initialOptions = null;\n  }\n\n  /** @inheritdoc */\n  isEmpty() {\n    return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n  }\n\n  /** @inheritdoc */\n  remove() {\n    this.isEditing = false;\n    if (this.parent) {\n      this.parent.setEditingState(true);\n      this.parent.div.classList.add(\"freetextEditing\");\n    }\n    super.remove();\n  }\n\n  /**\n   * Extract the text from this editor.\n   * @returns {string}\n   */\n  #extractText() {\n    const divs = this.editorDiv.getElementsByTagName(\"div\");\n    if (divs.length === 0) {\n      return this.editorDiv.innerText;\n    }\n    const buffer = [];\n    for (const div of divs) {\n      buffer.push(div.innerText.replace(/\\r\\n?|\\n/, \"\"));\n    }\n    return buffer.join(\"\\n\");\n  }\n\n  #setEditorDimensions() {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n\n    let rect;\n    if (this.isAttachedToDOM) {\n      rect = this.div.getBoundingClientRect();\n    } else {\n      // This editor isn't on screen but we need to get its dimensions, so\n      // we just insert it in the DOM, get its bounding box and then remove it.\n      const { currentLayer, div } = this;\n      const savedDisplay = div.style.display;\n      div.style.display = \"hidden\";\n      currentLayer.div.append(this.div);\n      rect = div.getBoundingClientRect();\n      div.remove();\n      div.style.display = savedDisplay;\n    }\n\n    // The dimensions are relative to the rotation of the page, hence we need to\n    // take that into account (see issue #16636).\n    if (this.rotation % 180 === this.parentRotation % 180) {\n      this.width = rect.width / parentWidth;\n      this.height = rect.height / parentHeight;\n    } else {\n      this.width = rect.height / parentWidth;\n      this.height = rect.width / parentHeight;\n    }\n    this.fixAndSetPosition();\n  }\n\n  /**\n   * Commit the content we have in this editor.\n   * @returns {undefined}\n   */\n  commit() {\n    if (!this.isInEditMode()) {\n      return;\n    }\n\n    super.commit();\n    this.disableEditMode();\n    const savedText = this.#content;\n    const newText = (this.#content = this.#extractText().trimEnd());\n    if (savedText === newText) {\n      return;\n    }\n\n    const setText = text => {\n      this.#content = text;\n      if (!text) {\n        this.remove();\n        return;\n      }\n      this.#setContent();\n      this._uiManager.rebuild(this);\n      this.#setEditorDimensions();\n    };\n    this.addCommands({\n      cmd: () => {\n        setText(newText);\n      },\n      undo: () => {\n        setText(savedText);\n      },\n      mustExec: false,\n    });\n    this.#setEditorDimensions();\n  }\n\n  /** @inheritdoc */\n  shouldGetKeyboardEvents() {\n    return this.isInEditMode();\n  }\n\n  /** @inheritdoc */\n  enterInEditMode() {\n    this.enableEditMode();\n    this.editorDiv.focus();\n  }\n\n  /**\n   * ondblclick callback.\n   * @param {MouseEvent} event\n   */\n  dblclick(event) {\n    this.enterInEditMode();\n  }\n\n  /**\n   * onkeydown callback.\n   * @param {KeyboardEvent} event\n   */\n  keydown(event) {\n    if (event.target === this.div && event.key === \"Enter\") {\n      this.enterInEditMode();\n      // Avoid to add an unwanted new line.\n      event.preventDefault();\n    }\n  }\n\n  editorDivKeydown(event) {\n    FreeTextEditor._keyboardManager.exec(this, event);\n  }\n\n  editorDivFocus(event) {\n    this.isEditing = true;\n  }\n\n  editorDivBlur(event) {\n    this.isEditing = false;\n  }\n\n  editorDivInput(event) {\n    this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n  }\n\n  /** @inheritdoc */\n  disableEditing() {\n    this.editorDiv.setAttribute(\"role\", \"comment\");\n    this.editorDiv.removeAttribute(\"aria-multiline\");\n  }\n\n  /** @inheritdoc */\n  enableEditing() {\n    this.editorDiv.setAttribute(\"role\", \"textbox\");\n    this.editorDiv.setAttribute(\"aria-multiline\", true);\n  }\n\n  /** @inheritdoc */\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n\n    let baseX, baseY;\n    if (this.width) {\n      baseX = this.x;\n      baseY = this.y;\n    }\n\n    super.render();\n    this.editorDiv = document.createElement(\"div\");\n    this.editorDiv.className = \"internal\";\n\n    this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n    this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text\");\n    this.enableEditing();\n\n    AnnotationEditor._l10nPromise\n      .get(\"pdfjs-free-text-default-content\")\n      .then(msg => this.editorDiv?.setAttribute(\"default-content\", msg));\n    this.editorDiv.contentEditable = true;\n\n    const { style } = this.editorDiv;\n    style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n    style.color = this.#color;\n\n    this.div.append(this.editorDiv);\n\n    this.overlayDiv = document.createElement(\"div\");\n    this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n    this.div.append(this.overlayDiv);\n\n    // TODO: implement paste callback.\n    // The goal is to sanitize and have something suitable for this\n    // editor.\n    bindEvents(this, this.div, [\"dblclick\", \"keydown\"]);\n\n    if (this.width) {\n      // This editor was created in using copy (ctrl+c).\n      const [parentWidth, parentHeight] = this.parentDimensions;\n      if (this.annotationElementId) {\n        // This stuff is hard to test: if something is changed here, please\n        // test with the following PDF file:\n        //  - freetexts.pdf\n        //  - rotated_freetexts.pdf\n        // Only small variations between the original annotation and its editor\n        // are allowed.\n\n        // position is the position of the first glyph in the annotation\n        // and it's relative to its container.\n        const { position } = this.#initialData;\n        let [tx, ty] = this.getInitialTranslation();\n        [tx, ty] = this.pageTranslationToScreen(tx, ty);\n        const [pageWidth, pageHeight] = this.pageDimensions;\n        const [pageX, pageY] = this.pageTranslation;\n        let posX, posY;\n        switch (this.rotation) {\n          case 0:\n            posX = baseX + (position[0] - pageX) / pageWidth;\n            posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n            break;\n          case 90:\n            posX = baseX + (position[0] - pageX) / pageWidth;\n            posY = baseY - (position[1] - pageY) / pageHeight;\n            [tx, ty] = [ty, -tx];\n            break;\n          case 180:\n            posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n            posY = baseY - (position[1] - pageY) / pageHeight;\n            [tx, ty] = [-tx, -ty];\n            break;\n          case 270:\n            posX =\n              baseX +\n              (position[0] - pageX - this.height * pageHeight) / pageWidth;\n            posY =\n              baseY +\n              (position[1] - pageY - this.width * pageWidth) / pageHeight;\n            [tx, ty] = [-ty, tx];\n            break;\n        }\n        this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n      } else {\n        this.setAt(\n          baseX * parentWidth,\n          baseY * parentHeight,\n          this.width * parentWidth,\n          this.height * parentHeight\n        );\n      }\n\n      this.#setContent();\n      this._isDraggable = true;\n      this.editorDiv.contentEditable = false;\n    } else {\n      this._isDraggable = false;\n      this.editorDiv.contentEditable = true;\n    }\n\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n      this.div.setAttribute(\"annotation-id\", this.annotationElementId);\n    }\n\n    return this.div;\n  }\n\n  #setContent() {\n    this.editorDiv.replaceChildren();\n    if (!this.#content) {\n      return;\n    }\n    for (const line of this.#content.split(\"\\n\")) {\n      const div = document.createElement(\"div\");\n      div.append(\n        line ? document.createTextNode(line) : document.createElement(\"br\")\n      );\n      this.editorDiv.append(div);\n    }\n  }\n\n  /** @inheritdoc */\n  get contentDiv() {\n    return this.editorDiv;\n  }\n\n  /** @inheritdoc */\n  static deserialize(data, parent, uiManager) {\n    let initialData = null;\n    if (data instanceof FreeTextAnnotationElement) {\n      const {\n        data: {\n          defaultAppearanceData: { fontSize, fontColor },\n          rect,\n          rotation,\n          id,\n        },\n        textContent,\n        textPosition,\n        parent: {\n          page: { pageNumber },\n        },\n      } = data;\n      // textContent is supposed to be an array of strings containing each line\n      // of text. However, it can be null or empty.\n      if (!textContent || textContent.length === 0) {\n        // Empty annotation.\n        return null;\n      }\n      initialData = data = {\n        annotationType: AnnotationEditorType.FREETEXT,\n        color: Array.from(fontColor),\n        fontSize,\n        value: textContent.join(\"\\n\"),\n        position: textPosition,\n        pageIndex: pageNumber - 1,\n        rect,\n        rotation,\n        id,\n        deleted: false,\n      };\n    }\n    const editor = super.deserialize(data, parent, uiManager);\n\n    editor.#fontSize = data.fontSize;\n    editor.#color = Util.makeHexColor(...data.color);\n    editor.#content = data.value;\n    editor.annotationElementId = data.id || null;\n    editor.#initialData = initialData;\n\n    return editor;\n  }\n\n  /** @inheritdoc */\n  serialize(isForCopying = false) {\n    if (this.isEmpty()) {\n      return null;\n    }\n\n    if (this.deleted) {\n      return {\n        pageIndex: this.pageIndex,\n        id: this.annotationElementId,\n        deleted: true,\n      };\n    }\n\n    const padding = FreeTextEditor._internalPadding * this.parentScale;\n    const rect = this.getRect(padding, padding);\n    const color = AnnotationEditor._colorManager.convert(\n      this.isAttachedToDOM\n        ? getComputedStyle(this.editorDiv).color\n        : this.#color\n    );\n\n    const serialized = {\n      annotationType: AnnotationEditorType.FREETEXT,\n      color,\n      fontSize: this.#fontSize,\n      value: this.#content,\n      pageIndex: this.pageIndex,\n      rect,\n      rotation: this.rotation,\n      structTreeParentId: this._structTreeParentId,\n    };\n\n    if (isForCopying) {\n      // Don't add the id when copying because the pasted editor mustn't be\n      // linked to an existing annotation.\n      return serialized;\n    }\n\n    if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n      return null;\n    }\n\n    serialized.id = this.annotationElementId;\n\n    return serialized;\n  }\n\n  #hasElementChanged(serialized) {\n    const { value, fontSize, color, rect, pageIndex } = this.#initialData;\n\n    return (\n      serialized.value !== value ||\n      serialized.fontSize !== fontSize ||\n      serialized.rect.some((x, i) => Math.abs(x - rect[i]) >= 1) ||\n      serialized.color.some((c, i) => c !== color[i]) ||\n      serialized.pageIndex !== pageIndex\n    );\n  }\n\n  #cheatInitialRect(delayed = false) {\n    // The annotation has a rect but the editor has an other one.\n    // When we want to know if the annotation has changed (e.g. has been moved)\n    // we must compare the editor initial rect with the current one.\n    // So this method is a hack to have a way to compare the real rects.\n    if (!this.annotationElementId) {\n      return;\n    }\n\n    this.#setEditorDimensions();\n    if (!delayed && (this.width === 0 || this.height === 0)) {\n      setTimeout(() => this.#cheatInitialRect(/* delayed = */ true), 0);\n      return;\n    }\n\n    const padding = FreeTextEditor._internalPadding * this.parentScale;\n    this.#initialData.rect = this.getRect(padding, padding);\n  }\n}\n\nexport { FreeTextEditor };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AnnotationEditorParamsType,\n  AnnotationEditorType,\n  Util,\n} from \"../../shared/util.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { InkAnnotationElement } from \"../annotation_layer.js\";\nimport { noContextMenu } from \"../display_utils.js\";\nimport { opacityToHex } from \"./tools.js\";\n\n/**\n * Basic draw editor in order to generate an Ink annotation.\n */\nclass InkEditor extends AnnotationEditor {\n  #baseHeight = 0;\n\n  #baseWidth = 0;\n\n  #boundCanvasPointermove = this.canvasPointermove.bind(this);\n\n  #boundCanvasPointerleave = this.canvasPointerleave.bind(this);\n\n  #boundCanvasPointerup = this.canvasPointerup.bind(this);\n\n  #boundCanvasPointerdown = this.canvasPointerdown.bind(this);\n\n  #canvasContextMenuTimeoutId = null;\n\n  #currentPath2D = new Path2D();\n\n  #disableEditing = false;\n\n  #hasSomethingToDraw = false;\n\n  #isCanvasInitialized = false;\n\n  #observer = null;\n\n  #realWidth = 0;\n\n  #realHeight = 0;\n\n  #requestFrameCallback = null;\n\n  static _defaultColor = null;\n\n  static _defaultOpacity = 1;\n\n  static _defaultThickness = 1;\n\n  static _type = \"ink\";\n\n  static _editorType = AnnotationEditorType.INK;\n\n  constructor(params) {\n    super({ ...params, name: \"inkEditor\" });\n    this.color = params.color || null;\n    this.thickness = params.thickness || null;\n    this.opacity = params.opacity || null;\n    this.paths = [];\n    this.bezierPath2D = [];\n    this.allRawPaths = [];\n    this.currentPath = [];\n    this.scaleFactor = 1;\n    this.translationX = this.translationY = 0;\n    this.x = 0;\n    this.y = 0;\n    this._willKeepAspectRatio = true;\n  }\n\n  /** @inheritdoc */\n  static initialize(l10n) {\n    AnnotationEditor.initialize(l10n);\n  }\n\n  /** @inheritdoc */\n  static updateDefaultParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.INK_THICKNESS:\n        InkEditor._defaultThickness = value;\n        break;\n      case AnnotationEditorParamsType.INK_COLOR:\n        InkEditor._defaultColor = value;\n        break;\n      case AnnotationEditorParamsType.INK_OPACITY:\n        InkEditor._defaultOpacity = value / 100;\n        break;\n    }\n  }\n\n  /** @inheritdoc */\n  updateParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.INK_THICKNESS:\n        this.#updateThickness(value);\n        break;\n      case AnnotationEditorParamsType.INK_COLOR:\n        this.#updateColor(value);\n        break;\n      case AnnotationEditorParamsType.INK_OPACITY:\n        this.#updateOpacity(value);\n        break;\n    }\n  }\n\n  /** @inheritdoc */\n  static get defaultPropertiesToUpdate() {\n    return [\n      [AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness],\n      [\n        AnnotationEditorParamsType.INK_COLOR,\n        InkEditor._defaultColor || AnnotationEditor._defaultLineColor,\n      ],\n      [\n        AnnotationEditorParamsType.INK_OPACITY,\n        Math.round(InkEditor._defaultOpacity * 100),\n      ],\n    ];\n  }\n\n  /** @inheritdoc */\n  get propertiesToUpdate() {\n    return [\n      [\n        AnnotationEditorParamsType.INK_THICKNESS,\n        this.thickness || InkEditor._defaultThickness,\n      ],\n      [\n        AnnotationEditorParamsType.INK_COLOR,\n        this.color ||\n          InkEditor._defaultColor ||\n          AnnotationEditor._defaultLineColor,\n      ],\n      [\n        AnnotationEditorParamsType.INK_OPACITY,\n        Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity)),\n      ],\n    ];\n  }\n\n  /**\n   * Update the thickness and make this action undoable.\n   * @param {number} thickness\n   */\n  #updateThickness(thickness) {\n    const savedThickness = this.thickness;\n    this.addCommands({\n      cmd: () => {\n        this.thickness = thickness;\n        this.#fitToContent();\n      },\n      undo: () => {\n        this.thickness = savedThickness;\n        this.#fitToContent();\n      },\n      mustExec: true,\n      type: AnnotationEditorParamsType.INK_THICKNESS,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n  }\n\n  /**\n   * Update the color and make this action undoable.\n   * @param {string} color\n   */\n  #updateColor(color) {\n    const savedColor = this.color;\n    this.addCommands({\n      cmd: () => {\n        this.color = color;\n        this.#redraw();\n      },\n      undo: () => {\n        this.color = savedColor;\n        this.#redraw();\n      },\n      mustExec: true,\n      type: AnnotationEditorParamsType.INK_COLOR,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n  }\n\n  /**\n   * Update the opacity and make this action undoable.\n   * @param {number} opacity\n   */\n  #updateOpacity(opacity) {\n    opacity /= 100;\n    const savedOpacity = this.opacity;\n    this.addCommands({\n      cmd: () => {\n        this.opacity = opacity;\n        this.#redraw();\n      },\n      undo: () => {\n        this.opacity = savedOpacity;\n        this.#redraw();\n      },\n      mustExec: true,\n      type: AnnotationEditorParamsType.INK_OPACITY,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n  }\n\n  /** @inheritdoc */\n  rebuild() {\n    if (!this.parent) {\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n\n    if (!this.canvas) {\n      this.#createCanvas();\n      this.#createObserver();\n    }\n\n    if (!this.isAttachedToDOM) {\n      // At some point this editor was removed and we're rebuilding it,\n      // hence we must add it to its parent.\n      this.parent.add(this);\n      this.#setCanvasDims();\n    }\n    this.#fitToContent();\n  }\n\n  /** @inheritdoc */\n  remove() {\n    if (this.canvas === null) {\n      return;\n    }\n\n    if (!this.isEmpty()) {\n      this.commit();\n    }\n\n    // Destroy the canvas.\n    this.canvas.width = this.canvas.height = 0;\n    this.canvas.remove();\n    this.canvas = null;\n\n    if (this.#canvasContextMenuTimeoutId) {\n      clearTimeout(this.#canvasContextMenuTimeoutId);\n      this.#canvasContextMenuTimeoutId = null;\n    }\n\n    this.#observer.disconnect();\n    this.#observer = null;\n\n    super.remove();\n  }\n\n  setParent(parent) {\n    if (!this.parent && parent) {\n      // We've a parent hence the rescale will be handled thanks to the\n      // ResizeObserver.\n      this._uiManager.removeShouldRescale(this);\n    } else if (this.parent && parent === null) {\n      // The editor is removed from the DOM, hence we handle the rescale thanks\n      // to the onScaleChanging callback.\n      // This way, it'll be saved/printed correctly.\n      this._uiManager.addShouldRescale(this);\n    }\n    super.setParent(parent);\n  }\n\n  onScaleChanging() {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    const width = this.width * parentWidth;\n    const height = this.height * parentHeight;\n    this.setDimensions(width, height);\n  }\n\n  /** @inheritdoc */\n  enableEditMode() {\n    if (this.#disableEditing || this.canvas === null) {\n      return;\n    }\n\n    super.enableEditMode();\n    this._isDraggable = false;\n    this.canvas.addEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n  }\n\n  /** @inheritdoc */\n  disableEditMode() {\n    if (!this.isInEditMode() || this.canvas === null) {\n      return;\n    }\n\n    super.disableEditMode();\n    this._isDraggable = !this.isEmpty();\n    this.div.classList.remove(\"editing\");\n\n    this.canvas.removeEventListener(\n      \"pointerdown\",\n      this.#boundCanvasPointerdown\n    );\n  }\n\n  /** @inheritdoc */\n  onceAdded() {\n    this._isDraggable = !this.isEmpty();\n  }\n\n  /** @inheritdoc */\n  isEmpty() {\n    return (\n      this.paths.length === 0 ||\n      (this.paths.length === 1 && this.paths[0].length === 0)\n    );\n  }\n\n  #getInitialBBox() {\n    const {\n      parentRotation,\n      parentDimensions: [width, height],\n    } = this;\n    switch (parentRotation) {\n      case 90:\n        return [0, height, height, width];\n      case 180:\n        return [width, height, width, height];\n      case 270:\n        return [width, 0, height, width];\n      default:\n        return [0, 0, width, height];\n    }\n  }\n\n  /**\n   * Set line styles.\n   */\n  #setStroke() {\n    const { ctx, color, opacity, thickness, parentScale, scaleFactor } = this;\n    ctx.lineWidth = (thickness * parentScale) / scaleFactor;\n    ctx.lineCap = \"round\";\n    ctx.lineJoin = \"round\";\n    ctx.miterLimit = 10;\n    ctx.strokeStyle = `${color}${opacityToHex(opacity)}`;\n  }\n\n  /**\n   * Start to draw on the canvas.\n   * @param {number} x\n   * @param {number} y\n   */\n  #startDrawing(x, y) {\n    this.canvas.addEventListener(\"contextmenu\", noContextMenu);\n    this.canvas.addEventListener(\"pointerleave\", this.#boundCanvasPointerleave);\n    this.canvas.addEventListener(\"pointermove\", this.#boundCanvasPointermove);\n    this.canvas.addEventListener(\"pointerup\", this.#boundCanvasPointerup);\n    this.canvas.removeEventListener(\n      \"pointerdown\",\n      this.#boundCanvasPointerdown\n    );\n\n    this.isEditing = true;\n    if (!this.#isCanvasInitialized) {\n      this.#isCanvasInitialized = true;\n      this.#setCanvasDims();\n      this.thickness ||= InkEditor._defaultThickness;\n      this.color ||=\n        InkEditor._defaultColor || AnnotationEditor._defaultLineColor;\n      this.opacity ??= InkEditor._defaultOpacity;\n    }\n    this.currentPath.push([x, y]);\n    this.#hasSomethingToDraw = false;\n    this.#setStroke();\n\n    this.#requestFrameCallback = () => {\n      this.#drawPoints();\n      if (this.#requestFrameCallback) {\n        window.requestAnimationFrame(this.#requestFrameCallback);\n      }\n    };\n    window.requestAnimationFrame(this.#requestFrameCallback);\n  }\n\n  /**\n   * Draw on the canvas.\n   * @param {number} x\n   * @param {number} y\n   */\n  #draw(x, y) {\n    const [lastX, lastY] = this.currentPath.at(-1);\n    if (this.currentPath.length > 1 && x === lastX && y === lastY) {\n      return;\n    }\n    const currentPath = this.currentPath;\n    let path2D = this.#currentPath2D;\n    currentPath.push([x, y]);\n    this.#hasSomethingToDraw = true;\n\n    if (currentPath.length <= 2) {\n      path2D.moveTo(...currentPath[0]);\n      path2D.lineTo(x, y);\n      return;\n    }\n\n    if (currentPath.length === 3) {\n      this.#currentPath2D = path2D = new Path2D();\n      path2D.moveTo(...currentPath[0]);\n    }\n\n    this.#makeBezierCurve(\n      path2D,\n      ...currentPath.at(-3),\n      ...currentPath.at(-2),\n      x,\n      y\n    );\n  }\n\n  #endPath() {\n    if (this.currentPath.length === 0) {\n      return;\n    }\n    const lastPoint = this.currentPath.at(-1);\n    this.#currentPath2D.lineTo(...lastPoint);\n  }\n\n  /**\n   * Stop to draw on the canvas.\n   * @param {number} x\n   * @param {number} y\n   */\n  #stopDrawing(x, y) {\n    this.#requestFrameCallback = null;\n\n    x = Math.min(Math.max(x, 0), this.canvas.width);\n    y = Math.min(Math.max(y, 0), this.canvas.height);\n\n    this.#draw(x, y);\n    this.#endPath();\n\n    // Interpolate the path entered by the user with some\n    // Bezier's curves in order to have a smoother path and\n    // to reduce the data size used to draw it in the PDF.\n    let bezier;\n    if (this.currentPath.length !== 1) {\n      bezier = this.#generateBezierPoints();\n    } else {\n      // We have only one point finally.\n      const xy = [x, y];\n      bezier = [[xy, xy.slice(), xy.slice(), xy]];\n    }\n    const path2D = this.#currentPath2D;\n    const currentPath = this.currentPath;\n    this.currentPath = [];\n    this.#currentPath2D = new Path2D();\n\n    const cmd = () => {\n      this.allRawPaths.push(currentPath);\n      this.paths.push(bezier);\n      this.bezierPath2D.push(path2D);\n      this.rebuild();\n    };\n\n    const undo = () => {\n      this.allRawPaths.pop();\n      this.paths.pop();\n      this.bezierPath2D.pop();\n      if (this.paths.length === 0) {\n        this.remove();\n      } else {\n        if (!this.canvas) {\n          this.#createCanvas();\n          this.#createObserver();\n        }\n        this.#fitToContent();\n      }\n    };\n\n    this.addCommands({ cmd, undo, mustExec: true });\n  }\n\n  #drawPoints() {\n    if (!this.#hasSomethingToDraw) {\n      return;\n    }\n    this.#hasSomethingToDraw = false;\n\n    const thickness = Math.ceil(this.thickness * this.parentScale);\n    const lastPoints = this.currentPath.slice(-3);\n    const x = lastPoints.map(xy => xy[0]);\n    const y = lastPoints.map(xy => xy[1]);\n    const xMin = Math.min(...x) - thickness;\n    const xMax = Math.max(...x) + thickness;\n    const yMin = Math.min(...y) - thickness;\n    const yMax = Math.max(...y) + thickness;\n\n    const { ctx } = this;\n    ctx.save();\n\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n      // In Chrome, the clip() method doesn't work as expected.\n      ctx.clearRect(xMin, yMin, xMax - xMin, yMax - yMin);\n      ctx.beginPath();\n      ctx.rect(xMin, yMin, xMax - xMin, yMax - yMin);\n      ctx.clip();\n    } else {\n      ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n    }\n\n    for (const path of this.bezierPath2D) {\n      ctx.stroke(path);\n    }\n    ctx.stroke(this.#currentPath2D);\n\n    ctx.restore();\n  }\n\n  #makeBezierCurve(path2D, x0, y0, x1, y1, x2, y2) {\n    const prevX = (x0 + x1) / 2;\n    const prevY = (y0 + y1) / 2;\n    const x3 = (x1 + x2) / 2;\n    const y3 = (y1 + y2) / 2;\n\n    path2D.bezierCurveTo(\n      prevX + (2 * (x1 - prevX)) / 3,\n      prevY + (2 * (y1 - prevY)) / 3,\n      x3 + (2 * (x1 - x3)) / 3,\n      y3 + (2 * (y1 - y3)) / 3,\n      x3,\n      y3\n    );\n  }\n\n  #generateBezierPoints() {\n    const path = this.currentPath;\n    if (path.length <= 2) {\n      return [[path[0], path[0], path.at(-1), path.at(-1)]];\n    }\n\n    const bezierPoints = [];\n    let i;\n    let [x0, y0] = path[0];\n    for (i = 1; i < path.length - 2; i++) {\n      const [x1, y1] = path[i];\n      const [x2, y2] = path[i + 1];\n      const x3 = (x1 + x2) / 2;\n      const y3 = (y1 + y2) / 2;\n\n      // The quadratic is: [[x0, y0], [x1, y1], [x3, y3]].\n      // Convert the quadratic to a cubic\n      // (see https://fontforge.org/docs/techref/bezier.html#converting-truetype-to-postscript)\n      const control1 = [x0 + (2 * (x1 - x0)) / 3, y0 + (2 * (y1 - y0)) / 3];\n      const control2 = [x3 + (2 * (x1 - x3)) / 3, y3 + (2 * (y1 - y3)) / 3];\n\n      bezierPoints.push([[x0, y0], control1, control2, [x3, y3]]);\n\n      [x0, y0] = [x3, y3];\n    }\n\n    const [x1, y1] = path[i];\n    const [x2, y2] = path[i + 1];\n\n    // The quadratic is: [[x0, y0], [x1, y1], [x2, y2]].\n    const control1 = [x0 + (2 * (x1 - x0)) / 3, y0 + (2 * (y1 - y0)) / 3];\n    const control2 = [x2 + (2 * (x1 - x2)) / 3, y2 + (2 * (y1 - y2)) / 3];\n\n    bezierPoints.push([[x0, y0], control1, control2, [x2, y2]]);\n    return bezierPoints;\n  }\n\n  /**\n   * Redraw all the paths.\n   */\n  #redraw() {\n    if (this.isEmpty()) {\n      this.#updateTransform();\n      return;\n    }\n    this.#setStroke();\n\n    const { canvas, ctx } = this;\n    ctx.setTransform(1, 0, 0, 1, 0, 0);\n    ctx.clearRect(0, 0, canvas.width, canvas.height);\n    this.#updateTransform();\n\n    for (const path of this.bezierPath2D) {\n      ctx.stroke(path);\n    }\n  }\n\n  /**\n   * Commit the curves we have in this editor.\n   */\n  commit() {\n    if (this.#disableEditing) {\n      return;\n    }\n\n    super.commit();\n\n    this.isEditing = false;\n    this.disableEditMode();\n\n    // This editor must be on top of the main ink editor.\n    this.setInForeground();\n\n    this.#disableEditing = true;\n    this.div.classList.add(\"disabled\");\n\n    this.#fitToContent(/* firstTime = */ true);\n    this.makeResizable();\n\n    this.parent.addInkEditorIfNeeded(/* isCommitting = */ true);\n\n    // When commiting, the position of this editor is changed, hence we must\n    // move it to the right position in the DOM.\n    this.moveInDOM();\n    this.div.focus({\n      preventScroll: true /* See issue #15744 */,\n    });\n  }\n\n  /** @inheritdoc */\n  focusin(event) {\n    if (!this._focusEventsAllowed) {\n      return;\n    }\n    super.focusin(event);\n    this.enableEditMode();\n  }\n\n  /**\n   * onpointerdown callback for the canvas we're drawing on.\n   * @param {PointerEvent} event\n   */\n  canvasPointerdown(event) {\n    if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) {\n      return;\n    }\n\n    // We want to draw on top of any other editors.\n    // Since it's the last child, there's no need to give it a higher z-index.\n    this.setInForeground();\n\n    event.preventDefault();\n\n    if (event.type !== \"mouse\") {\n      this.div.focus();\n    }\n\n    this.#startDrawing(event.offsetX, event.offsetY);\n  }\n\n  /**\n   * onpointermove callback for the canvas we're drawing on.\n   * @param {PointerEvent} event\n   */\n  canvasPointermove(event) {\n    event.preventDefault();\n    this.#draw(event.offsetX, event.offsetY);\n  }\n\n  /**\n   * onpointerup callback for the canvas we're drawing on.\n   * @param {PointerEvent} event\n   */\n  canvasPointerup(event) {\n    event.preventDefault();\n    this.#endDrawing(event);\n  }\n\n  /**\n   * onpointerleave callback for the canvas we're drawing on.\n   * @param {PointerEvent} event\n   */\n  canvasPointerleave(event) {\n    this.#endDrawing(event);\n  }\n\n  /**\n   * End the drawing.\n   * @param {PointerEvent} event\n   */\n  #endDrawing(event) {\n    this.canvas.removeEventListener(\n      \"pointerleave\",\n      this.#boundCanvasPointerleave\n    );\n    this.canvas.removeEventListener(\n      \"pointermove\",\n      this.#boundCanvasPointermove\n    );\n    this.canvas.removeEventListener(\"pointerup\", this.#boundCanvasPointerup);\n    this.canvas.addEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n\n    // Slight delay to avoid the context menu to appear (it can happen on a long\n    // tap with a pen).\n    if (this.#canvasContextMenuTimeoutId) {\n      clearTimeout(this.#canvasContextMenuTimeoutId);\n    }\n    this.#canvasContextMenuTimeoutId = setTimeout(() => {\n      this.#canvasContextMenuTimeoutId = null;\n      this.canvas.removeEventListener(\"contextmenu\", noContextMenu);\n    }, 10);\n\n    this.#stopDrawing(event.offsetX, event.offsetY);\n\n    this.addToAnnotationStorage();\n\n    // Since the ink editor covers all of the page and we want to be able\n    // to select another editor, we just put this one in the background.\n    this.setInBackground();\n  }\n\n  /**\n   * Create the canvas element.\n   */\n  #createCanvas() {\n    this.canvas = document.createElement(\"canvas\");\n    this.canvas.width = this.canvas.height = 0;\n    this.canvas.className = \"inkEditorCanvas\";\n    this.canvas.setAttribute(\"data-l10n-id\", \"pdfjs-ink-canvas\");\n\n    this.div.append(this.canvas);\n    this.ctx = this.canvas.getContext(\"2d\");\n  }\n\n  /**\n   * Create the resize observer.\n   */\n  #createObserver() {\n    this.#observer = new ResizeObserver(entries => {\n      const rect = entries[0].contentRect;\n      if (rect.width && rect.height) {\n        this.setDimensions(rect.width, rect.height);\n      }\n    });\n    this.#observer.observe(this.div);\n  }\n\n  /** @inheritdoc */\n  get isResizable() {\n    return !this.isEmpty() && this.#disableEditing;\n  }\n\n  /** @inheritdoc */\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n\n    let baseX, baseY;\n    if (this.width) {\n      baseX = this.x;\n      baseY = this.y;\n    }\n\n    super.render();\n\n    this.div.setAttribute(\"data-l10n-id\", \"pdfjs-ink\");\n\n    const [x, y, w, h] = this.#getInitialBBox();\n    this.setAt(x, y, 0, 0);\n    this.setDims(w, h);\n\n    this.#createCanvas();\n\n    if (this.width) {\n      // This editor was created in using copy (ctrl+c).\n      const [parentWidth, parentHeight] = this.parentDimensions;\n      this.setAspectRatio(this.width * parentWidth, this.height * parentHeight);\n      this.setAt(\n        baseX * parentWidth,\n        baseY * parentHeight,\n        this.width * parentWidth,\n        this.height * parentHeight\n      );\n      this.#isCanvasInitialized = true;\n      this.#setCanvasDims();\n      this.setDims(this.width * parentWidth, this.height * parentHeight);\n      this.#redraw();\n      this.div.classList.add(\"disabled\");\n    } else {\n      this.div.classList.add(\"editing\");\n      this.enableEditMode();\n    }\n\n    this.#createObserver();\n\n    return this.div;\n  }\n\n  #setCanvasDims() {\n    if (!this.#isCanvasInitialized) {\n      return;\n    }\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.canvas.width = Math.ceil(this.width * parentWidth);\n    this.canvas.height = Math.ceil(this.height * parentHeight);\n    this.#updateTransform();\n  }\n\n  /**\n   * When the dimensions of the div change the inner canvas must\n   * renew its dimensions, hence it must redraw its own contents.\n   * @param {number} width - the new width of the div\n   * @param {number} height - the new height of the div\n   * @returns\n   */\n  setDimensions(width, height) {\n    const roundedWidth = Math.round(width);\n    const roundedHeight = Math.round(height);\n    if (\n      this.#realWidth === roundedWidth &&\n      this.#realHeight === roundedHeight\n    ) {\n      return;\n    }\n\n    this.#realWidth = roundedWidth;\n    this.#realHeight = roundedHeight;\n\n    this.canvas.style.visibility = \"hidden\";\n\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.width = width / parentWidth;\n    this.height = height / parentHeight;\n    this.fixAndSetPosition();\n\n    if (this.#disableEditing) {\n      this.#setScaleFactor(width, height);\n    }\n\n    this.#setCanvasDims();\n    this.#redraw();\n\n    this.canvas.style.visibility = \"visible\";\n\n    // For any reason the dimensions couldn't be in percent but in pixels, hence\n    // we must fix them.\n    this.fixDims();\n  }\n\n  #setScaleFactor(width, height) {\n    const padding = this.#getPadding();\n    const scaleFactorW = (width - padding) / this.#baseWidth;\n    const scaleFactorH = (height - padding) / this.#baseHeight;\n    this.scaleFactor = Math.min(scaleFactorW, scaleFactorH);\n  }\n\n  /**\n   * Update the canvas transform.\n   */\n  #updateTransform() {\n    const padding = this.#getPadding() / 2;\n    this.ctx.setTransform(\n      this.scaleFactor,\n      0,\n      0,\n      this.scaleFactor,\n      this.translationX * this.scaleFactor + padding,\n      this.translationY * this.scaleFactor + padding\n    );\n  }\n\n  /**\n   * Convert into a Path2D.\n   * @param {Array<Array<number>>} bezier\n   * @returns {Path2D}\n   */\n  static #buildPath2D(bezier) {\n    const path2D = new Path2D();\n    for (let i = 0, ii = bezier.length; i < ii; i++) {\n      const [first, control1, control2, second] = bezier[i];\n      if (i === 0) {\n        path2D.moveTo(...first);\n      }\n      path2D.bezierCurveTo(\n        control1[0],\n        control1[1],\n        control2[0],\n        control2[1],\n        second[0],\n        second[1]\n      );\n    }\n    return path2D;\n  }\n\n  static #toPDFCoordinates(points, rect, rotation) {\n    const [blX, blY, trX, trY] = rect;\n\n    switch (rotation) {\n      case 0:\n        for (let i = 0, ii = points.length; i < ii; i += 2) {\n          points[i] += blX;\n          points[i + 1] = trY - points[i + 1];\n        }\n        break;\n      case 90:\n        for (let i = 0, ii = points.length; i < ii; i += 2) {\n          const x = points[i];\n          points[i] = points[i + 1] + blX;\n          points[i + 1] = x + blY;\n        }\n        break;\n      case 180:\n        for (let i = 0, ii = points.length; i < ii; i += 2) {\n          points[i] = trX - points[i];\n          points[i + 1] += blY;\n        }\n        break;\n      case 270:\n        for (let i = 0, ii = points.length; i < ii; i += 2) {\n          const x = points[i];\n          points[i] = trX - points[i + 1];\n          points[i + 1] = trY - x;\n        }\n        break;\n      default:\n        throw new Error(\"Invalid rotation\");\n    }\n    return points;\n  }\n\n  static #fromPDFCoordinates(points, rect, rotation) {\n    const [blX, blY, trX, trY] = rect;\n\n    switch (rotation) {\n      case 0:\n        for (let i = 0, ii = points.length; i < ii; i += 2) {\n          points[i] -= blX;\n          points[i + 1] = trY - points[i + 1];\n        }\n        break;\n      case 90:\n        for (let i = 0, ii = points.length; i < ii; i += 2) {\n          const x = points[i];\n          points[i] = points[i + 1] - blY;\n          points[i + 1] = x - blX;\n        }\n        break;\n      case 180:\n        for (let i = 0, ii = points.length; i < ii; i += 2) {\n          points[i] = trX - points[i];\n          points[i + 1] -= blY;\n        }\n        break;\n      case 270:\n        for (let i = 0, ii = points.length; i < ii; i += 2) {\n          const x = points[i];\n          points[i] = trY - points[i + 1];\n          points[i + 1] = trX - x;\n        }\n        break;\n      default:\n        throw new Error(\"Invalid rotation\");\n    }\n    return points;\n  }\n\n  /**\n   * Transform and serialize the paths.\n   * @param {number} s - scale factor\n   * @param {number} tx - abscissa of the translation\n   * @param {number} ty - ordinate of the translation\n   * @param {Array<number>} rect - the bounding box of the annotation\n   */\n  #serializePaths(s, tx, ty, rect) {\n    const paths = [];\n    const padding = this.thickness / 2;\n    const shiftX = s * tx + padding;\n    const shiftY = s * ty + padding;\n    for (const bezier of this.paths) {\n      const buffer = [];\n      const points = [];\n      for (let j = 0, jj = bezier.length; j < jj; j++) {\n        const [first, control1, control2, second] = bezier[j];\n        const p10 = s * first[0] + shiftX;\n        const p11 = s * first[1] + shiftY;\n        const p20 = s * control1[0] + shiftX;\n        const p21 = s * control1[1] + shiftY;\n        const p30 = s * control2[0] + shiftX;\n        const p31 = s * control2[1] + shiftY;\n        const p40 = s * second[0] + shiftX;\n        const p41 = s * second[1] + shiftY;\n\n        if (j === 0) {\n          buffer.push(p10, p11);\n          points.push(p10, p11);\n        }\n        buffer.push(p20, p21, p30, p31, p40, p41);\n        points.push(p20, p21);\n        if (j === jj - 1) {\n          points.push(p40, p41);\n        }\n      }\n      paths.push({\n        bezier: InkEditor.#toPDFCoordinates(buffer, rect, this.rotation),\n        points: InkEditor.#toPDFCoordinates(points, rect, this.rotation),\n      });\n    }\n\n    return paths;\n  }\n\n  /**\n   * Get the bounding box containing all the paths.\n   * @returns {Array<number>}\n   */\n  #getBbox() {\n    let xMin = Infinity;\n    let xMax = -Infinity;\n    let yMin = Infinity;\n    let yMax = -Infinity;\n\n    for (const path of this.paths) {\n      for (const [first, control1, control2, second] of path) {\n        const bbox = Util.bezierBoundingBox(\n          ...first,\n          ...control1,\n          ...control2,\n          ...second\n        );\n        xMin = Math.min(xMin, bbox[0]);\n        yMin = Math.min(yMin, bbox[1]);\n        xMax = Math.max(xMax, bbox[2]);\n        yMax = Math.max(yMax, bbox[3]);\n      }\n    }\n\n    return [xMin, yMin, xMax, yMax];\n  }\n\n  /**\n   * The bounding box is computed with null thickness, so we must take\n   * it into account for the display.\n   * It corresponds to the total padding, hence it should be divided by 2\n   * in order to have left/right paddings.\n   * @returns {number}\n   */\n  #getPadding() {\n    return this.#disableEditing\n      ? Math.ceil(this.thickness * this.parentScale)\n      : 0;\n  }\n\n  /**\n   * Set the div position and dimensions in order to fit to\n   * the bounding box of the contents.\n   * @returns {undefined}\n   */\n  #fitToContent(firstTime = false) {\n    if (this.isEmpty()) {\n      return;\n    }\n\n    if (!this.#disableEditing) {\n      this.#redraw();\n      return;\n    }\n\n    const bbox = this.#getBbox();\n    const padding = this.#getPadding();\n    this.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n    this.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n\n    const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor);\n    const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor);\n\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.width = width / parentWidth;\n    this.height = height / parentHeight;\n\n    this.setAspectRatio(width, height);\n\n    const prevTranslationX = this.translationX;\n    const prevTranslationY = this.translationY;\n\n    this.translationX = -bbox[0];\n    this.translationY = -bbox[1];\n    this.#setCanvasDims();\n    this.#redraw();\n\n    this.#realWidth = width;\n    this.#realHeight = height;\n\n    this.setDims(width, height);\n    const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0;\n    this.translate(\n      prevTranslationX - this.translationX - unscaledPadding,\n      prevTranslationY - this.translationY - unscaledPadding\n    );\n  }\n\n  /** @inheritdoc */\n  static deserialize(data, parent, uiManager) {\n    if (data instanceof InkAnnotationElement) {\n      return null;\n    }\n    const editor = super.deserialize(data, parent, uiManager);\n\n    editor.thickness = data.thickness;\n    editor.color = Util.makeHexColor(...data.color);\n    editor.opacity = data.opacity;\n\n    const [pageWidth, pageHeight] = editor.pageDimensions;\n    const width = editor.width * pageWidth;\n    const height = editor.height * pageHeight;\n    const scaleFactor = editor.parentScale;\n    const padding = data.thickness / 2;\n\n    editor.#disableEditing = true;\n    editor.#realWidth = Math.round(width);\n    editor.#realHeight = Math.round(height);\n\n    const { paths, rect, rotation } = data;\n\n    for (let { bezier } of paths) {\n      bezier = InkEditor.#fromPDFCoordinates(bezier, rect, rotation);\n      const path = [];\n      editor.paths.push(path);\n      let p0 = scaleFactor * (bezier[0] - padding);\n      let p1 = scaleFactor * (bezier[1] - padding);\n      for (let i = 2, ii = bezier.length; i < ii; i += 6) {\n        const p10 = scaleFactor * (bezier[i] - padding);\n        const p11 = scaleFactor * (bezier[i + 1] - padding);\n        const p20 = scaleFactor * (bezier[i + 2] - padding);\n        const p21 = scaleFactor * (bezier[i + 3] - padding);\n        const p30 = scaleFactor * (bezier[i + 4] - padding);\n        const p31 = scaleFactor * (bezier[i + 5] - padding);\n        path.push([\n          [p0, p1],\n          [p10, p11],\n          [p20, p21],\n          [p30, p31],\n        ]);\n        p0 = p30;\n        p1 = p31;\n      }\n      const path2D = this.#buildPath2D(path);\n      editor.bezierPath2D.push(path2D);\n    }\n\n    const bbox = editor.#getBbox();\n    editor.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n    editor.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n    editor.#setScaleFactor(width, height);\n\n    return editor;\n  }\n\n  /** @inheritdoc */\n  serialize() {\n    if (this.isEmpty()) {\n      return null;\n    }\n\n    const rect = this.getRect(0, 0);\n    const color = AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);\n\n    return {\n      annotationType: AnnotationEditorType.INK,\n      color,\n      thickness: this.thickness,\n      opacity: this.opacity,\n      paths: this.#serializePaths(\n        this.scaleFactor / this.parentScale,\n        this.translationX,\n        this.translationY,\n        rect\n      ),\n      pageIndex: this.pageIndex,\n      rect,\n      rotation: this.rotation,\n      structTreeParentId: this._structTreeParentId,\n    };\n  }\n}\n\nexport { InkEditor };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AnnotationEditorType, shadow } from \"../../shared/util.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { PixelsPerInch } from \"../display_utils.js\";\nimport { StampAnnotationElement } from \"../annotation_layer.js\";\n\n/**\n * Basic text editor in order to create a FreeTex annotation.\n */\nclass StampEditor extends AnnotationEditor {\n  #bitmap = null;\n\n  #bitmapId = null;\n\n  #bitmapPromise = null;\n\n  #bitmapUrl = null;\n\n  #bitmapFile = null;\n\n  #bitmapFileName = \"\";\n\n  #canvas = null;\n\n  #observer = null;\n\n  #resizeTimeoutId = null;\n\n  #isSvg = false;\n\n  #hasBeenAddedInUndoStack = false;\n\n  static _type = \"stamp\";\n\n  static _editorType = AnnotationEditorType.STAMP;\n\n  constructor(params) {\n    super({ ...params, name: \"stampEditor\" });\n    this.#bitmapUrl = params.bitmapUrl;\n    this.#bitmapFile = params.bitmapFile;\n  }\n\n  /** @inheritdoc */\n  static initialize(l10n) {\n    AnnotationEditor.initialize(l10n);\n  }\n\n  static get supportedTypes() {\n    // See https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types\n    // to know which types are supported by the browser.\n    const types = [\n      \"apng\",\n      \"avif\",\n      \"bmp\",\n      \"gif\",\n      \"jpeg\",\n      \"png\",\n      \"svg+xml\",\n      \"webp\",\n      \"x-icon\",\n    ];\n    return shadow(\n      this,\n      \"supportedTypes\",\n      types.map(type => `image/${type}`)\n    );\n  }\n\n  static get supportedTypesStr() {\n    return shadow(this, \"supportedTypesStr\", this.supportedTypes.join(\",\"));\n  }\n\n  /** @inheritdoc */\n  static isHandlingMimeForPasting(mime) {\n    return this.supportedTypes.includes(mime);\n  }\n\n  /** @inheritdoc */\n  static paste(item, parent) {\n    parent.pasteEditor(AnnotationEditorType.STAMP, {\n      bitmapFile: item.getAsFile(),\n    });\n  }\n\n  #getBitmapFetched(data, fromId = false) {\n    if (!data) {\n      this.remove();\n      return;\n    }\n    this.#bitmap = data.bitmap;\n    if (!fromId) {\n      this.#bitmapId = data.id;\n      this.#isSvg = data.isSvg;\n    }\n    if (data.file) {\n      this.#bitmapFileName = data.file.name;\n    }\n    this.#createCanvas();\n  }\n\n  #getBitmapDone() {\n    this.#bitmapPromise = null;\n    this._uiManager.enableWaiting(false);\n    if (this.#canvas) {\n      this.div.focus();\n    }\n  }\n\n  #getBitmap() {\n    if (this.#bitmapId) {\n      this._uiManager.enableWaiting(true);\n      this._uiManager.imageManager\n        .getFromId(this.#bitmapId)\n        .then(data => this.#getBitmapFetched(data, /* fromId = */ true))\n        .finally(() => this.#getBitmapDone());\n      return;\n    }\n\n    if (this.#bitmapUrl) {\n      const url = this.#bitmapUrl;\n      this.#bitmapUrl = null;\n      this._uiManager.enableWaiting(true);\n      this.#bitmapPromise = this._uiManager.imageManager\n        .getFromUrl(url)\n        .then(data => this.#getBitmapFetched(data))\n        .finally(() => this.#getBitmapDone());\n      return;\n    }\n\n    if (this.#bitmapFile) {\n      const file = this.#bitmapFile;\n      this.#bitmapFile = null;\n      this._uiManager.enableWaiting(true);\n      this.#bitmapPromise = this._uiManager.imageManager\n        .getFromFile(file)\n        .then(data => this.#getBitmapFetched(data))\n        .finally(() => this.#getBitmapDone());\n      return;\n    }\n\n    const input = document.createElement(\"input\");\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n      input.hidden = true;\n      input.id = \"stampEditorFileInput\";\n      document.body.append(input);\n    }\n    input.type = \"file\";\n    input.accept = StampEditor.supportedTypesStr;\n    this.#bitmapPromise = new Promise(resolve => {\n      input.addEventListener(\"change\", async () => {\n        if (!input.files || input.files.length === 0) {\n          this.remove();\n        } else {\n          this._uiManager.enableWaiting(true);\n          const data = await this._uiManager.imageManager.getFromFile(\n            input.files[0]\n          );\n          this.#getBitmapFetched(data);\n        }\n        if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n          input.remove();\n        }\n        resolve();\n      });\n      input.addEventListener(\"cancel\", () => {\n        this.remove();\n        resolve();\n      });\n    }).finally(() => this.#getBitmapDone());\n    if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"TESTING\")) {\n      input.click();\n    }\n  }\n\n  /** @inheritdoc */\n  remove() {\n    if (this.#bitmapId) {\n      this.#bitmap = null;\n      this._uiManager.imageManager.deleteId(this.#bitmapId);\n      this.#canvas?.remove();\n      this.#canvas = null;\n      this.#observer?.disconnect();\n      this.#observer = null;\n      if (this.#resizeTimeoutId) {\n        clearTimeout(this.#resizeTimeoutId);\n        this.#resizeTimeoutId = null;\n      }\n    }\n    super.remove();\n  }\n\n  /** @inheritdoc */\n  rebuild() {\n    if (!this.parent) {\n      // It's possible to have to rebuild an editor which is not on a visible\n      // page.\n      if (this.#bitmapId) {\n        this.#getBitmap();\n      }\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n\n    if (this.#bitmapId) {\n      this.#getBitmap();\n    }\n\n    if (!this.isAttachedToDOM) {\n      // At some point this editor was removed and we're rebuilting it,\n      // hence we must add it to its parent.\n      this.parent.add(this);\n    }\n  }\n\n  /** @inheritdoc */\n  onceAdded() {\n    this._isDraggable = true;\n    this.div.focus();\n  }\n\n  /** @inheritdoc */\n  isEmpty() {\n    return !(\n      this.#bitmapPromise ||\n      this.#bitmap ||\n      this.#bitmapUrl ||\n      this.#bitmapFile\n    );\n  }\n\n  /** @inheritdoc */\n  get isResizable() {\n    return true;\n  }\n\n  /** @inheritdoc */\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n\n    let baseX, baseY;\n    if (this.width) {\n      baseX = this.x;\n      baseY = this.y;\n    }\n\n    super.render();\n    this.div.hidden = true;\n\n    if (this.#bitmap) {\n      this.#createCanvas();\n    } else {\n      this.#getBitmap();\n    }\n\n    if (this.width) {\n      // This editor was created in using copy (ctrl+c).\n      const [parentWidth, parentHeight] = this.parentDimensions;\n      this.setAt(\n        baseX * parentWidth,\n        baseY * parentHeight,\n        this.width * parentWidth,\n        this.height * parentHeight\n      );\n    }\n\n    return this.div;\n  }\n\n  #createCanvas() {\n    const { div } = this;\n    let { width, height } = this.#bitmap;\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    const MAX_RATIO = 0.75;\n    if (this.width) {\n      width = this.width * pageWidth;\n      height = this.height * pageHeight;\n    } else if (\n      width > MAX_RATIO * pageWidth ||\n      height > MAX_RATIO * pageHeight\n    ) {\n      // If the the image is too big compared to the page dimensions\n      // (more than MAX_RATIO) then we scale it down.\n      const factor = Math.min(\n        (MAX_RATIO * pageWidth) / width,\n        (MAX_RATIO * pageHeight) / height\n      );\n      width *= factor;\n      height *= factor;\n    }\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.setDims(\n      (width * parentWidth) / pageWidth,\n      (height * parentHeight) / pageHeight\n    );\n\n    this._uiManager.enableWaiting(false);\n    const canvas = (this.#canvas = document.createElement(\"canvas\"));\n    div.append(canvas);\n    div.hidden = false;\n    this.#drawBitmap(width, height);\n    this.#createObserver();\n    if (!this.#hasBeenAddedInUndoStack) {\n      this.parent.addUndoableEditor(this);\n      this.#hasBeenAddedInUndoStack = true;\n    }\n\n    // There are multiple ways to add an image to the page, so here we just\n    // count the number of times an image is added to the page whatever the way\n    // is.\n    this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n      source: this,\n      details: {\n        type: \"editing\",\n        subtype: this.editorType,\n        data: {\n          action: \"inserted_image\",\n        },\n      },\n    });\n    this.addAltTextButton();\n    if (this.#bitmapFileName) {\n      canvas.setAttribute(\"aria-label\", this.#bitmapFileName);\n    }\n  }\n\n  /**\n   * When the dimensions of the div change the inner canvas must\n   * renew its dimensions, hence it must redraw its own contents.\n   * @param {number} width - the new width of the div\n   * @param {number} height - the new height of the div\n   * @returns\n   */\n  #setDimensions(width, height) {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.width = width / parentWidth;\n    this.height = height / parentHeight;\n    this.setDims(width, height);\n    if (this._initialOptions?.isCentered) {\n      this.center();\n    } else {\n      this.fixAndSetPosition();\n    }\n    this._initialOptions = null;\n    if (this.#resizeTimeoutId !== null) {\n      clearTimeout(this.#resizeTimeoutId);\n    }\n    // When the user is resizing the editor we just use CSS to scale the image\n    // to avoid redrawing it too often.\n    // And once the user stops resizing the editor we redraw the image in\n    // rescaling it correctly (see this.#scaleBitmap).\n    const TIME_TO_WAIT = 200;\n    this.#resizeTimeoutId = setTimeout(() => {\n      this.#resizeTimeoutId = null;\n      this.#drawBitmap(width, height);\n    }, TIME_TO_WAIT);\n  }\n\n  #scaleBitmap(width, height) {\n    const { width: bitmapWidth, height: bitmapHeight } = this.#bitmap;\n\n    let newWidth = bitmapWidth;\n    let newHeight = bitmapHeight;\n    let bitmap = this.#bitmap;\n    while (newWidth > 2 * width || newHeight > 2 * height) {\n      const prevWidth = newWidth;\n      const prevHeight = newHeight;\n\n      if (newWidth > 2 * width) {\n        // See bug 1820511 (Windows specific bug).\n        // TODO: once the above bug is fixed we could revert to:\n        // newWidth = Math.ceil(newWidth / 2);\n        newWidth =\n          newWidth >= 16384\n            ? Math.floor(newWidth / 2) - 1\n            : Math.ceil(newWidth / 2);\n      }\n      if (newHeight > 2 * height) {\n        newHeight =\n          newHeight >= 16384\n            ? Math.floor(newHeight / 2) - 1\n            : Math.ceil(newHeight / 2);\n      }\n\n      const offscreen = new OffscreenCanvas(newWidth, newHeight);\n      const ctx = offscreen.getContext(\"2d\");\n      ctx.drawImage(\n        bitmap,\n        0,\n        0,\n        prevWidth,\n        prevHeight,\n        0,\n        0,\n        newWidth,\n        newHeight\n      );\n      bitmap = offscreen.transferToImageBitmap();\n    }\n\n    return bitmap;\n  }\n\n  #drawBitmap(width, height) {\n    width = Math.ceil(width);\n    height = Math.ceil(height);\n    const canvas = this.#canvas;\n    if (!canvas || (canvas.width === width && canvas.height === height)) {\n      return;\n    }\n    canvas.width = width;\n    canvas.height = height;\n    const bitmap = this.#isSvg\n      ? this.#bitmap\n      : this.#scaleBitmap(width, height);\n    const ctx = canvas.getContext(\"2d\");\n    ctx.filter = this._uiManager.hcmFilter;\n    ctx.drawImage(\n      bitmap,\n      0,\n      0,\n      bitmap.width,\n      bitmap.height,\n      0,\n      0,\n      width,\n      height\n    );\n  }\n\n  /** @inheritdoc */\n  getImageForAltText() {\n    return this.#canvas;\n  }\n\n  #serializeBitmap(toUrl) {\n    if (toUrl) {\n      if (this.#isSvg) {\n        const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n        if (url) {\n          return url;\n        }\n      }\n      // We convert to a data url because it's sync and the url can live in the\n      // clipboard.\n      const canvas = document.createElement(\"canvas\");\n      ({ width: canvas.width, height: canvas.height } = this.#bitmap);\n      const ctx = canvas.getContext(\"2d\");\n      ctx.drawImage(this.#bitmap, 0, 0);\n\n      return canvas.toDataURL();\n    }\n\n    if (this.#isSvg) {\n      const [pageWidth, pageHeight] = this.pageDimensions;\n      // Multiply by PixelsPerInch.PDF_TO_CSS_UNITS in order to increase the\n      // image resolution when rasterizing it.\n      const width = Math.round(\n        this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS\n      );\n      const height = Math.round(\n        this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS\n      );\n      const offscreen = new OffscreenCanvas(width, height);\n      const ctx = offscreen.getContext(\"2d\");\n      ctx.drawImage(\n        this.#bitmap,\n        0,\n        0,\n        this.#bitmap.width,\n        this.#bitmap.height,\n        0,\n        0,\n        width,\n        height\n      );\n      return offscreen.transferToImageBitmap();\n    }\n\n    return structuredClone(this.#bitmap);\n  }\n\n  /**\n   * Create the resize observer.\n   */\n  #createObserver() {\n    this.#observer = new ResizeObserver(entries => {\n      const rect = entries[0].contentRect;\n      if (rect.width && rect.height) {\n        this.#setDimensions(rect.width, rect.height);\n      }\n    });\n    this.#observer.observe(this.div);\n  }\n\n  /** @inheritdoc */\n  static deserialize(data, parent, uiManager) {\n    if (data instanceof StampAnnotationElement) {\n      return null;\n    }\n    const editor = super.deserialize(data, parent, uiManager);\n    const { rect, bitmapUrl, bitmapId, isSvg, accessibilityData } = data;\n    if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n      editor.#bitmapId = bitmapId;\n    } else {\n      editor.#bitmapUrl = bitmapUrl;\n    }\n    editor.#isSvg = isSvg;\n\n    const [parentWidth, parentHeight] = editor.pageDimensions;\n    editor.width = (rect[2] - rect[0]) / parentWidth;\n    editor.height = (rect[3] - rect[1]) / parentHeight;\n\n    if (accessibilityData) {\n      editor.altTextData = accessibilityData;\n    }\n\n    return editor;\n  }\n\n  /** @inheritdoc */\n  serialize(isForCopying = false, context = null) {\n    if (this.isEmpty()) {\n      return null;\n    }\n\n    const serialized = {\n      annotationType: AnnotationEditorType.STAMP,\n      bitmapId: this.#bitmapId,\n      pageIndex: this.pageIndex,\n      rect: this.getRect(0, 0),\n      rotation: this.rotation,\n      isSvg: this.#isSvg,\n      structTreeParentId: this._structTreeParentId,\n    };\n\n    if (isForCopying) {\n      // We don't know what's the final destination (this pdf or another one)\n      // of this annotation and the clipboard doesn't support ImageBitmaps,\n      // hence we serialize the bitmap to a data url.\n      serialized.bitmapUrl = this.#serializeBitmap(/* toUrl = */ true);\n      serialized.accessibilityData = this.altTextData;\n      return serialized;\n    }\n\n    const { decorative, altText } = this.altTextData;\n    if (!decorative && altText) {\n      serialized.accessibilityData = { type: \"Figure\", alt: altText };\n    }\n\n    if (context === null) {\n      return serialized;\n    }\n\n    context.stamps ||= new Map();\n    const area = this.#isSvg\n      ? (serialized.rect[2] - serialized.rect[0]) *\n        (serialized.rect[3] - serialized.rect[1])\n      : null;\n    if (!context.stamps.has(this.#bitmapId)) {\n      // We don't want to have multiple copies of the same bitmap in the\n      // annotationMap, hence we only add the bitmap the first time we meet it.\n      context.stamps.set(this.#bitmapId, { area, serialized });\n      serialized.bitmap = this.#serializeBitmap(/* toUrl = */ false);\n    } else if (this.#isSvg) {\n      // If we have multiple copies of the same svg but with different sizes,\n      // then we want to keep the biggest one.\n      const prevData = context.stamps.get(this.#bitmapId);\n      if (area > prevData.area) {\n        prevData.area = area;\n        prevData.serialized.bitmap.close();\n        prevData.serialized.bitmap = this.#serializeBitmap(/* toUrl = */ false);\n      }\n    }\n    return serialized;\n  }\n}\n\nexport { StampEditor };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./tools.js\").AnnotationEditorUIManager} AnnotationEditorUIManager */\n/** @typedef {import(\"../display_utils.js\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../../web/text_accessibility.js\").TextAccessibilityManager} TextAccessibilityManager */\n/** @typedef {import(\"../../../web/interfaces\").IL10n} IL10n */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../annotation_layer.js\").AnnotationLayer} AnnotationLayer */\n\nimport { AnnotationEditorType, FeatureTest } from \"../../shared/util.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { FreeTextEditor } from \"./freetext.js\";\nimport { InkEditor } from \"./ink.js\";\nimport { setLayerDimensions } from \"../display_utils.js\";\nimport { StampEditor } from \"./stamp.js\";\n\n/**\n * @typedef {Object} AnnotationEditorLayerOptions\n * @property {Object} mode\n * @property {HTMLDivElement} div\n * @property {AnnotationEditorUIManager} uiManager\n * @property {boolean} enabled\n * @property {TextAccessibilityManager} [accessibilityManager]\n * @property {number} pageIndex\n * @property {IL10n} l10n\n * @property {AnnotationLayer} [annotationLayer]\n * @property {PageViewport} viewport\n */\n\n/**\n * @typedef {Object} RenderEditorLayerOptions\n * @property {PageViewport} viewport\n */\n\n/**\n * Manage all the different editors on a page.\n */\nclass AnnotationEditorLayer {\n  #accessibilityManager;\n\n  #allowClick = false;\n\n  #annotationLayer = null;\n\n  #boundPointerup = this.pointerup.bind(this);\n\n  #boundPointerdown = this.pointerdown.bind(this);\n\n  #editorFocusTimeoutId = null;\n\n  #editors = new Map();\n\n  #hadPointerDown = false;\n\n  #isCleaningUp = false;\n\n  #isDisabling = false;\n\n  #uiManager;\n\n  static _initialized = false;\n\n  static #editorTypes = new Map(\n    [FreeTextEditor, InkEditor, StampEditor].map(type => [\n      type._editorType,\n      type,\n    ])\n  );\n\n  /**\n   * @param {AnnotationEditorLayerOptions} options\n   */\n  constructor({\n    uiManager,\n    pageIndex,\n    div,\n    accessibilityManager,\n    annotationLayer,\n    viewport,\n    l10n,\n  }) {\n    const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];\n    if (!AnnotationEditorLayer._initialized) {\n      AnnotationEditorLayer._initialized = true;\n      for (const editorType of editorTypes) {\n        editorType.initialize(l10n);\n      }\n    }\n    uiManager.registerEditorTypes(editorTypes);\n\n    this.#uiManager = uiManager;\n    this.pageIndex = pageIndex;\n    this.div = div;\n    this.#accessibilityManager = accessibilityManager;\n    this.#annotationLayer = annotationLayer;\n    this.viewport = viewport;\n\n    this.#uiManager.addLayer(this);\n  }\n\n  get isEmpty() {\n    return this.#editors.size === 0;\n  }\n\n  /**\n   * Update the toolbar if it's required to reflect the tool currently used.\n   * @param {number} mode\n   */\n  updateToolbar(mode) {\n    this.#uiManager.updateToolbar(mode);\n  }\n\n  /**\n   * The mode has changed: it must be updated.\n   * @param {number} mode\n   */\n  updateMode(mode = this.#uiManager.getMode()) {\n    this.#cleanup();\n    if (mode === AnnotationEditorType.INK) {\n      // We always want to an ink editor ready to draw in.\n      this.addInkEditorIfNeeded(false);\n      this.disableClick();\n    } else {\n      this.enableClick();\n    }\n\n    if (mode !== AnnotationEditorType.NONE) {\n      const { classList } = this.div;\n      for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n        classList.toggle(\n          `${editorType._type}Editing`,\n          mode === editorType._editorType\n        );\n      }\n      this.div.hidden = false;\n    }\n  }\n\n  addInkEditorIfNeeded(isCommitting) {\n    if (\n      !isCommitting &&\n      this.#uiManager.getMode() !== AnnotationEditorType.INK\n    ) {\n      return;\n    }\n\n    if (!isCommitting) {\n      // We're removing an editor but an empty one can already exist so in this\n      // case we don't need to create a new one.\n      for (const editor of this.#editors.values()) {\n        if (editor.isEmpty()) {\n          editor.setInBackground();\n          return;\n        }\n      }\n    }\n\n    const editor = this.#createAndAddNewEditor(\n      { offsetX: 0, offsetY: 0 },\n      /* isCentered = */ false\n    );\n    editor.setInBackground();\n  }\n\n  /**\n   * Set the editing state.\n   * @param {boolean} isEditing\n   */\n  setEditingState(isEditing) {\n    this.#uiManager.setEditingState(isEditing);\n  }\n\n  /**\n   * Add some commands into the CommandManager (undo/redo stuff).\n   * @param {Object} params\n   */\n  addCommands(params) {\n    this.#uiManager.addCommands(params);\n  }\n\n  togglePointerEvents(enabled = false) {\n    this.div.classList.toggle(\"disabled\", !enabled);\n  }\n\n  /**\n   * Enable pointer events on the main div in order to enable\n   * editor creation.\n   */\n  enable() {\n    this.togglePointerEvents(true);\n    const annotationElementIds = new Set();\n    for (const editor of this.#editors.values()) {\n      editor.enableEditing();\n      if (editor.annotationElementId) {\n        annotationElementIds.add(editor.annotationElementId);\n      }\n    }\n\n    if (!this.#annotationLayer) {\n      return;\n    }\n\n    const editables = this.#annotationLayer.getEditableAnnotations();\n    for (const editable of editables) {\n      // The element must be hidden whatever its state is.\n      editable.hide();\n      if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n        continue;\n      }\n      if (annotationElementIds.has(editable.data.id)) {\n        continue;\n      }\n      const editor = this.deserialize(editable);\n      if (!editor) {\n        continue;\n      }\n      this.addOrRebuild(editor);\n      editor.enableEditing();\n    }\n  }\n\n  /**\n   * Disable editor creation.\n   */\n  disable() {\n    this.#isDisabling = true;\n    this.togglePointerEvents(false);\n    const hiddenAnnotationIds = new Set();\n    for (const editor of this.#editors.values()) {\n      editor.disableEditing();\n      if (!editor.annotationElementId || editor.serialize() !== null) {\n        hiddenAnnotationIds.add(editor.annotationElementId);\n        continue;\n      }\n      this.getEditableAnnotation(editor.annotationElementId)?.show();\n      editor.remove();\n    }\n\n    if (this.#annotationLayer) {\n      // Show the annotations that were hidden in enable().\n      const editables = this.#annotationLayer.getEditableAnnotations();\n      for (const editable of editables) {\n        const { id } = editable.data;\n        if (\n          hiddenAnnotationIds.has(id) ||\n          this.#uiManager.isDeletedAnnotationElement(id)\n        ) {\n          continue;\n        }\n        editable.show();\n      }\n    }\n\n    this.#cleanup();\n    if (this.isEmpty) {\n      this.div.hidden = true;\n    }\n    const { classList } = this.div;\n    for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n      classList.remove(`${editorType._type}Editing`);\n    }\n\n    this.#isDisabling = false;\n  }\n\n  getEditableAnnotation(id) {\n    return this.#annotationLayer?.getEditableAnnotation(id) || null;\n  }\n\n  /**\n   * Set the current editor.\n   * @param {AnnotationEditor} editor\n   */\n  setActiveEditor(editor) {\n    const currentActive = this.#uiManager.getActive();\n    if (currentActive === editor) {\n      return;\n    }\n\n    this.#uiManager.setActiveEditor(editor);\n  }\n\n  enableClick() {\n    this.div.addEventListener(\"pointerdown\", this.#boundPointerdown);\n    this.div.addEventListener(\"pointerup\", this.#boundPointerup);\n  }\n\n  disableClick() {\n    this.div.removeEventListener(\"pointerdown\", this.#boundPointerdown);\n    this.div.removeEventListener(\"pointerup\", this.#boundPointerup);\n  }\n\n  attach(editor) {\n    this.#editors.set(editor.id, editor);\n    const { annotationElementId } = editor;\n    if (\n      annotationElementId &&\n      this.#uiManager.isDeletedAnnotationElement(annotationElementId)\n    ) {\n      this.#uiManager.removeDeletedAnnotationElement(editor);\n    }\n  }\n\n  detach(editor) {\n    this.#editors.delete(editor.id);\n    this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n\n    if (!this.#isDisabling && editor.annotationElementId) {\n      this.#uiManager.addDeletedAnnotationElement(editor);\n    }\n  }\n\n  /**\n   * Remove an editor.\n   * @param {AnnotationEditor} editor\n   */\n  remove(editor) {\n    // Since we can undo a removal we need to keep the\n    // parent property as it is, so don't null it!\n\n    this.detach(editor);\n    this.#uiManager.removeEditor(editor);\n    editor.div.remove();\n    editor.isAttachedToDOM = false;\n\n    if (!this.#isCleaningUp) {\n      this.addInkEditorIfNeeded(/* isCommitting = */ false);\n    }\n  }\n\n  /**\n   * An editor can have a different parent, for example after having\n   * being dragged and droped from a page to another.\n   * @param {AnnotationEditor} editor\n   */\n  changeParent(editor) {\n    if (editor.parent === this) {\n      return;\n    }\n\n    if (editor.annotationElementId) {\n      this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);\n      AnnotationEditor.deleteAnnotationElement(editor);\n      editor.annotationElementId = null;\n    }\n\n    this.attach(editor);\n    editor.parent?.detach(editor);\n    editor.setParent(this);\n    if (editor.div && editor.isAttachedToDOM) {\n      editor.div.remove();\n      this.div.append(editor.div);\n    }\n  }\n\n  /**\n   * Add a new editor in the current view.\n   * @param {AnnotationEditor} editor\n   */\n  add(editor) {\n    this.changeParent(editor);\n    this.#uiManager.addEditor(editor);\n    this.attach(editor);\n\n    if (!editor.isAttachedToDOM) {\n      const div = editor.render();\n      this.div.append(div);\n      editor.isAttachedToDOM = true;\n    }\n\n    // The editor will be correctly moved into the DOM (see fixAndSetPosition).\n    editor.fixAndSetPosition();\n    editor.onceAdded();\n    this.#uiManager.addToAnnotationStorage(editor);\n  }\n\n  moveEditorInDOM(editor) {\n    if (!editor.isAttachedToDOM) {\n      return;\n    }\n\n    const { activeElement } = document;\n    if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n      // When the div is moved in the DOM the focus can move somewhere else,\n      // so we want to be sure that the focus will stay on the editor but we\n      // don't want to call any focus callbacks, hence we disable them and only\n      // re-enable them when the editor has the focus.\n      editor._focusEventsAllowed = false;\n      this.#editorFocusTimeoutId = setTimeout(() => {\n        this.#editorFocusTimeoutId = null;\n        if (!editor.div.contains(document.activeElement)) {\n          editor.div.addEventListener(\n            \"focusin\",\n            () => {\n              editor._focusEventsAllowed = true;\n            },\n            { once: true }\n          );\n          activeElement.focus();\n        } else {\n          editor._focusEventsAllowed = true;\n        }\n      }, 0);\n    }\n\n    editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(\n      this.div,\n      editor.div,\n      editor.contentDiv,\n      /* isRemovable = */ true\n    );\n  }\n\n  /**\n   * Add or rebuild depending if it has been removed or not.\n   * @param {AnnotationEditor} editor\n   */\n  addOrRebuild(editor) {\n    if (editor.needsToBeRebuilt()) {\n      editor.parent ||= this;\n      editor.rebuild();\n    } else {\n      this.add(editor);\n    }\n  }\n\n  /**\n   * Add a new editor and make this addition undoable.\n   * @param {AnnotationEditor} editor\n   */\n  addUndoableEditor(editor) {\n    const cmd = () => editor._uiManager.rebuild(editor);\n    const undo = () => {\n      editor.remove();\n    };\n\n    this.addCommands({ cmd, undo, mustExec: false });\n  }\n\n  /**\n   * Get an id for an editor.\n   * @returns {string}\n   */\n  getNextId() {\n    return this.#uiManager.getId();\n  }\n\n  /**\n   * Create a new editor\n   * @param {Object} params\n   * @returns {AnnotationEditor}\n   */\n  #createNewEditor(params) {\n    const editorType = AnnotationEditorLayer.#editorTypes.get(\n      this.#uiManager.getMode()\n    );\n    return editorType ? new editorType.prototype.constructor(params) : null;\n  }\n\n  /**\n   * Paste some content into a new editor.\n   * @param {number} mode\n   * @param {Object} params\n   */\n  pasteEditor(mode, params) {\n    this.#uiManager.updateToolbar(mode);\n    this.#uiManager.updateMode(mode);\n\n    const { offsetX, offsetY } = this.#getCenterPoint();\n    const id = this.getNextId();\n    const editor = this.#createNewEditor({\n      parent: this,\n      id,\n      x: offsetX,\n      y: offsetY,\n      uiManager: this.#uiManager,\n      isCentered: true,\n      ...params,\n    });\n    if (editor) {\n      this.add(editor);\n    }\n  }\n\n  /**\n   * Create a new editor\n   * @param {Object} data\n   * @returns {AnnotationEditor | null}\n   */\n  deserialize(data) {\n    return (\n      AnnotationEditorLayer.#editorTypes\n        .get(data.annotationType ?? data.annotationEditorType)\n        ?.deserialize(data, this, this.#uiManager) || null\n    );\n  }\n\n  /**\n   * Create and add a new editor.\n   * @param {PointerEvent} event\n   * @param {boolean} isCentered\n   * @returns {AnnotationEditor}\n   */\n  #createAndAddNewEditor(event, isCentered) {\n    const id = this.getNextId();\n    const editor = this.#createNewEditor({\n      parent: this,\n      id,\n      x: event.offsetX,\n      y: event.offsetY,\n      uiManager: this.#uiManager,\n      isCentered,\n    });\n    if (editor) {\n      this.add(editor);\n    }\n\n    return editor;\n  }\n\n  #getCenterPoint() {\n    const { x, y, width, height } = this.div.getBoundingClientRect();\n    const tlX = Math.max(0, x);\n    const tlY = Math.max(0, y);\n    const brX = Math.min(window.innerWidth, x + width);\n    const brY = Math.min(window.innerHeight, y + height);\n    const centerX = (tlX + brX) / 2 - x;\n    const centerY = (tlY + brY) / 2 - y;\n    const [offsetX, offsetY] =\n      this.viewport.rotation % 180 === 0\n        ? [centerX, centerY]\n        : [centerY, centerX];\n\n    return { offsetX, offsetY };\n  }\n\n  /**\n   * Create and add a new editor.\n   */\n  addNewEditor() {\n    this.#createAndAddNewEditor(\n      this.#getCenterPoint(),\n      /* isCentered = */ true\n    );\n  }\n\n  /**\n   * Set the last selected editor.\n   * @param {AnnotationEditor} editor\n   */\n  setSelected(editor) {\n    this.#uiManager.setSelected(editor);\n  }\n\n  /**\n   * Add or remove an editor the current selection.\n   * @param {AnnotationEditor} editor\n   */\n  toggleSelected(editor) {\n    this.#uiManager.toggleSelected(editor);\n  }\n\n  /**\n   * Check if the editor is selected.\n   * @param {AnnotationEditor} editor\n   */\n  isSelected(editor) {\n    return this.#uiManager.isSelected(editor);\n  }\n\n  /**\n   * Unselect an editor.\n   * @param {AnnotationEditor} editor\n   */\n  unselect(editor) {\n    this.#uiManager.unselect(editor);\n  }\n\n  /**\n   * Pointerup callback.\n   * @param {PointerEvent} event\n   */\n  pointerup(event) {\n    const { isMac } = FeatureTest.platform;\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\n      // Don't create an editor on right click.\n      return;\n    }\n\n    if (event.target !== this.div) {\n      return;\n    }\n\n    if (!this.#hadPointerDown) {\n      // It can happen when the user starts a drag inside a text editor\n      // and then releases the mouse button outside of it. In such a case\n      // we don't want to create a new editor, hence we check that a pointerdown\n      // occurred on this div previously.\n      return;\n    }\n    this.#hadPointerDown = false;\n\n    if (!this.#allowClick) {\n      this.#allowClick = true;\n      return;\n    }\n\n    if (this.#uiManager.getMode() === AnnotationEditorType.STAMP) {\n      this.#uiManager.unselectAll();\n      return;\n    }\n\n    this.#createAndAddNewEditor(event, /* isCentered = */ false);\n  }\n\n  /**\n   * Pointerdown callback.\n   * @param {PointerEvent} event\n   */\n  pointerdown(event) {\n    if (this.#hadPointerDown) {\n      // It's possible to have a second pointerdown event before a pointerup one\n      // when the user puts a finger on a touchscreen and then add a second one\n      // to start a pinch-to-zoom gesture.\n      // That said, in case it's possible to have two pointerdown events with\n      // a mouse, we don't want to create a new editor in such a case either.\n      this.#hadPointerDown = false;\n      return;\n    }\n    const { isMac } = FeatureTest.platform;\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\n      // Do nothing on right click.\n      return;\n    }\n\n    if (event.target !== this.div) {\n      return;\n    }\n\n    this.#hadPointerDown = true;\n\n    const editor = this.#uiManager.getActive();\n    this.#allowClick = !editor || editor.isEmpty();\n  }\n\n  /**\n   *\n   * @param {AnnotationEditor} editor\n   * @param {number} x\n   * @param {number} y\n   * @returns\n   */\n  findNewParent(editor, x, y) {\n    const layer = this.#uiManager.findParent(x, y);\n    if (layer === null || layer === this) {\n      return false;\n    }\n    layer.changeParent(editor);\n    return true;\n  }\n\n  /**\n   * Destroy the main editor.\n   */\n  destroy() {\n    if (this.#uiManager.getActive()?.parent === this) {\n      // We need to commit the current editor before destroying the layer.\n      this.#uiManager.commitOrRemove();\n      this.#uiManager.setActiveEditor(null);\n    }\n\n    if (this.#editorFocusTimeoutId) {\n      clearTimeout(this.#editorFocusTimeoutId);\n      this.#editorFocusTimeoutId = null;\n    }\n\n    for (const editor of this.#editors.values()) {\n      this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n      editor.setParent(null);\n      editor.isAttachedToDOM = false;\n      editor.div.remove();\n    }\n    this.div = null;\n    this.#editors.clear();\n    this.#uiManager.removeLayer(this);\n  }\n\n  #cleanup() {\n    // When we're cleaning up, some editors are removed but we don't want\n    // to add a new one which will induce an addition in this.#editors, hence\n    // an infinite loop.\n    this.#isCleaningUp = true;\n    for (const editor of this.#editors.values()) {\n      if (editor.isEmpty()) {\n        editor.remove();\n      }\n    }\n    this.#isCleaningUp = false;\n  }\n\n  /**\n   * Render the main editor.\n   * @param {RenderEditorLayerOptions} parameters\n   */\n  render({ viewport }) {\n    this.viewport = viewport;\n    setLayerDimensions(this.div, viewport);\n    for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n      this.add(editor);\n    }\n    this.updateMode();\n  }\n\n  /**\n   * Update the main editor.\n   * @param {RenderEditorLayerOptions} parameters\n   */\n  update({ viewport }) {\n    // Editors have their dimensions/positions in percent so to avoid any\n    // issues (see #15582), we must commit the current one before changing\n    // the viewport.\n    this.#uiManager.commitOrRemove();\n\n    this.viewport = viewport;\n    setLayerDimensions(this.div, { rotation: viewport.rotation });\n    this.updateMode();\n  }\n\n  /**\n   * Get page dimensions.\n   * @returns {Object} dimensions.\n   */\n  get pageDimensions() {\n    const { pageWidth, pageHeight } = this.viewport.rawDims;\n    return [pageWidth, pageHeight];\n  }\n}\n\nexport { AnnotationEditorLayer };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n\nimport {\n  AnnotationEditorUIManager,\n  bindEvents,\n  ColorManager,\n  KeyboardManager,\n} from \"./tools.js\";\nimport { FeatureTest, shadow, unreachable } from \"../../shared/util.js\";\nimport { noContextMenu } from \"../display_utils.js\";\n\n/**\n * @typedef {Object} AnnotationEditorParameters\n * @property {AnnotationEditorUIManager} uiManager - the global manager\n * @property {AnnotationEditorLayer} parent - the layer containing this editor\n * @property {string} id - editor id\n * @property {number} x - x-coordinate\n * @property {number} y - y-coordinate\n */\n\n/**\n * Base class for editors.\n */\nclass AnnotationEditor {\n  #allResizerDivs = null;\n\n  #altText = \"\";\n\n  #altTextDecorative = false;\n\n  #altTextButton = null;\n\n  #altTextTooltip = null;\n\n  #altTextTooltipTimeout = null;\n\n  #altTextWasFromKeyBoard = false;\n\n  #keepAspectRatio = false;\n\n  #resizersDiv = null;\n\n  #savedDimensions = null;\n\n  #boundFocusin = this.focusin.bind(this);\n\n  #boundFocusout = this.focusout.bind(this);\n\n  #focusedResizerName = \"\";\n\n  #hasBeenClicked = false;\n\n  #isEditing = false;\n\n  #isInEditMode = false;\n\n  #isResizerEnabledForKeyboard = false;\n\n  #moveInDOMTimeout = null;\n\n  _initialOptions = Object.create(null);\n\n  _uiManager = null;\n\n  _focusEventsAllowed = true;\n\n  _l10nPromise = null;\n\n  #isDraggable = false;\n\n  #zIndex = AnnotationEditor._zIndex++;\n\n  static _borderLineWidth = -1;\n\n  static _colorManager = new ColorManager();\n\n  static _zIndex = 1;\n\n  // When one of the dimensions of an editor is smaller than this value, the\n  // button to edit the alt text is visually moved outside of the editor.\n  static SMALL_EDITOR_SIZE = 0;\n\n  static get _resizerKeyboardManager() {\n    const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n    const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n    const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n\n    return shadow(\n      this,\n      \"_resizerKeyboardManager\",\n      new KeyboardManager([\n        [[\"ArrowLeft\", \"mac+ArrowLeft\"], resize, { args: [-small, 0] }],\n        [\n          [\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"],\n          resize,\n          { args: [-big, 0] },\n        ],\n        [[\"ArrowRight\", \"mac+ArrowRight\"], resize, { args: [small, 0] }],\n        [\n          [\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"],\n          resize,\n          { args: [big, 0] },\n        ],\n        [[\"ArrowUp\", \"mac+ArrowUp\"], resize, { args: [0, -small] }],\n        [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, { args: [0, -big] }],\n        [[\"ArrowDown\", \"mac+ArrowDown\"], resize, { args: [0, small] }],\n        [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, { args: [0, big] }],\n        [\n          [\"Escape\", \"mac+Escape\"],\n          AnnotationEditor.prototype._stopResizingWithKeyboard,\n        ],\n      ])\n    );\n  }\n\n  /**\n   * @param {AnnotationEditorParameters} parameters\n   */\n  constructor(parameters) {\n    if (this.constructor === AnnotationEditor) {\n      unreachable(\"Cannot initialize AnnotationEditor.\");\n    }\n\n    this.parent = parameters.parent;\n    this.id = parameters.id;\n    this.width = this.height = null;\n    this.pageIndex = parameters.parent.pageIndex;\n    this.name = parameters.name;\n    this.div = null;\n    this._uiManager = parameters.uiManager;\n    this.annotationElementId = null;\n    this._willKeepAspectRatio = false;\n    this._initialOptions.isCentered = parameters.isCentered;\n    this._structTreeParentId = null;\n\n    const {\n      rotation,\n      rawDims: { pageWidth, pageHeight, pageX, pageY },\n    } = this.parent.viewport;\n\n    this.rotation = rotation;\n    this.pageRotation =\n      (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n    this.pageDimensions = [pageWidth, pageHeight];\n    this.pageTranslation = [pageX, pageY];\n\n    const [width, height] = this.parentDimensions;\n    this.x = parameters.x / width;\n    this.y = parameters.y / height;\n\n    this.isAttachedToDOM = false;\n    this.deleted = false;\n  }\n\n  get editorType() {\n    return Object.getPrototypeOf(this).constructor._type;\n  }\n\n  static get _defaultLineColor() {\n    return shadow(\n      this,\n      \"_defaultLineColor\",\n      this._colorManager.getHexCode(\"CanvasText\")\n    );\n  }\n\n  static deleteAnnotationElement(editor) {\n    const fakeEditor = new FakeEditor({\n      id: editor.parent.getNextId(),\n      parent: editor.parent,\n      uiManager: editor._uiManager,\n    });\n    fakeEditor.annotationElementId = editor.annotationElementId;\n    fakeEditor.deleted = true;\n    fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n  }\n\n  /**\n   * Initialize the l10n stuff for this type of editor.\n   * @param {Object} l10n\n   */\n  static initialize(l10n, options = null) {\n    AnnotationEditor._l10nPromise ||= new Map(\n      [\n        \"pdfjs-editor-alt-text-button-label\",\n        \"pdfjs-editor-alt-text-edit-button-label\",\n        \"pdfjs-editor-alt-text-decorative-tooltip\",\n        \"pdfjs-editor-resizer-label-topLeft\",\n        \"pdfjs-editor-resizer-label-topMiddle\",\n        \"pdfjs-editor-resizer-label-topRight\",\n        \"pdfjs-editor-resizer-label-middleRight\",\n        \"pdfjs-editor-resizer-label-bottomRight\",\n        \"pdfjs-editor-resizer-label-bottomMiddle\",\n        \"pdfjs-editor-resizer-label-bottomLeft\",\n        \"pdfjs-editor-resizer-label-middleLeft\",\n      ].map(str => [\n        str,\n        l10n.get(str.replaceAll(/([A-Z])/g, c => `-${c.toLowerCase()}`)),\n      ])\n    );\n    if (options?.strings) {\n      for (const str of options.strings) {\n        AnnotationEditor._l10nPromise.set(str, l10n.get(str));\n      }\n    }\n    if (AnnotationEditor._borderLineWidth !== -1) {\n      return;\n    }\n    const style = getComputedStyle(document.documentElement);\n    AnnotationEditor._borderLineWidth =\n      parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n  }\n\n  /**\n   * Update the default parameters for this type of editor.\n   * @param {number} _type\n   * @param {*} _value\n   */\n  static updateDefaultParams(_type, _value) {}\n\n  /**\n   * Get the default properties to set in the UI for this type of editor.\n   * @returns {Array}\n   */\n  static get defaultPropertiesToUpdate() {\n    return [];\n  }\n\n  /**\n   * Check if this kind of editor is able to handle the given mime type for\n   * pasting.\n   * @param {string} mime\n   * @returns {boolean}\n   */\n  static isHandlingMimeForPasting(mime) {\n    return false;\n  }\n\n  /**\n   * Extract the data from the clipboard item and delegate the creation of the\n   * editor to the parent.\n   * @param {DataTransferItem} item\n   * @param {AnnotationEditorLayer} parent\n   */\n  static paste(item, parent) {\n    unreachable(\"Not implemented\");\n  }\n\n  /**\n   * Get the properties to update in the UI for this editor.\n   * @returns {Array}\n   */\n  get propertiesToUpdate() {\n    return [];\n  }\n\n  get _isDraggable() {\n    return this.#isDraggable;\n  }\n\n  set _isDraggable(value) {\n    this.#isDraggable = value;\n    this.div?.classList.toggle(\"draggable\", value);\n  }\n\n  /**\n   * @returns {boolean} true if the editor handles the Enter key itself.\n   */\n  get isEnterHandled() {\n    return true;\n  }\n\n  center() {\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    switch (this.parentRotation) {\n      case 90:\n        this.x -= (this.height * pageHeight) / (pageWidth * 2);\n        this.y += (this.width * pageWidth) / (pageHeight * 2);\n        break;\n      case 180:\n        this.x += this.width / 2;\n        this.y += this.height / 2;\n        break;\n      case 270:\n        this.x += (this.height * pageHeight) / (pageWidth * 2);\n        this.y -= (this.width * pageWidth) / (pageHeight * 2);\n        break;\n      default:\n        this.x -= this.width / 2;\n        this.y -= this.height / 2;\n        break;\n    }\n    this.fixAndSetPosition();\n  }\n\n  /**\n   * Add some commands into the CommandManager (undo/redo stuff).\n   * @param {Object} params\n   */\n  addCommands(params) {\n    this._uiManager.addCommands(params);\n  }\n\n  get currentLayer() {\n    return this._uiManager.currentLayer;\n  }\n\n  /**\n   * This editor will be behind the others.\n   */\n  setInBackground() {\n    this.div.style.zIndex = 0;\n  }\n\n  /**\n   * This editor will be in the foreground.\n   */\n  setInForeground() {\n    this.div.style.zIndex = this.#zIndex;\n  }\n\n  setParent(parent) {\n    if (parent !== null) {\n      this.pageIndex = parent.pageIndex;\n      this.pageDimensions = parent.pageDimensions;\n    } else {\n      // The editor is being removed from the DOM, so we need to stop resizing.\n      this.#stopResizing();\n    }\n    this.parent = parent;\n  }\n\n  /**\n   * onfocus callback.\n   */\n  focusin(event) {\n    if (!this._focusEventsAllowed) {\n      return;\n    }\n    if (!this.#hasBeenClicked) {\n      this.parent.setSelected(this);\n    } else {\n      this.#hasBeenClicked = false;\n    }\n  }\n\n  /**\n   * onblur callback.\n   * @param {FocusEvent} event\n   */\n  focusout(event) {\n    if (!this._focusEventsAllowed) {\n      return;\n    }\n\n    if (!this.isAttachedToDOM) {\n      return;\n    }\n\n    // In case of focusout, the relatedTarget is the element which\n    // is grabbing the focus.\n    // So if the related target is an element under the div for this\n    // editor, then the editor isn't unactive.\n    const target = event.relatedTarget;\n    if (target?.closest(`#${this.id}`)) {\n      return;\n    }\n\n    event.preventDefault();\n\n    if (!this.parent?.isMultipleSelection) {\n      this.commitOrRemove();\n    }\n  }\n\n  commitOrRemove() {\n    if (this.isEmpty()) {\n      this.remove();\n    } else {\n      this.commit();\n    }\n  }\n\n  /**\n   * Commit the data contained in this editor.\n   */\n  commit() {\n    this.addToAnnotationStorage();\n  }\n\n  addToAnnotationStorage() {\n    this._uiManager.addToAnnotationStorage(this);\n  }\n\n  /**\n   * Set the editor position within its parent.\n   * @param {number} x\n   * @param {number} y\n   * @param {number} tx - x-translation in screen coordinates.\n   * @param {number} ty - y-translation in screen coordinates.\n   */\n  setAt(x, y, tx, ty) {\n    const [width, height] = this.parentDimensions;\n    [tx, ty] = this.screenToPageTranslation(tx, ty);\n\n    this.x = (x + tx) / width;\n    this.y = (y + ty) / height;\n\n    this.fixAndSetPosition();\n  }\n\n  #translate([width, height], x, y) {\n    [x, y] = this.screenToPageTranslation(x, y);\n\n    this.x += x / width;\n    this.y += y / height;\n\n    this.fixAndSetPosition();\n  }\n\n  /**\n   * Translate the editor position within its parent.\n   * @param {number} x - x-translation in screen coordinates.\n   * @param {number} y - y-translation in screen coordinates.\n   */\n  translate(x, y) {\n    this.#translate(this.parentDimensions, x, y);\n  }\n\n  /**\n   * Translate the editor position within its page and adjust the scroll\n   * in order to have the editor in the view.\n   * @param {number} x - x-translation in page coordinates.\n   * @param {number} y - y-translation in page coordinates.\n   */\n  translateInPage(x, y) {\n    this.#translate(this.pageDimensions, x, y);\n    this.div.scrollIntoView({ block: \"nearest\" });\n  }\n\n  drag(tx, ty) {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.x += tx / parentWidth;\n    this.y += ty / parentHeight;\n    if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n      // It's possible to not have a parent: for example, when the user is\n      // dragging all the selected editors but this one on a page which has been\n      // destroyed.\n      // It's why we need to check for it. In such a situation, it isn't really\n      // a problem to not find a new parent: it's something which is related to\n      // what the user is seeing, hence it depends on how pages are layed out.\n\n      // The element will be outside of its parent so change the parent.\n      const { x, y } = this.div.getBoundingClientRect();\n      if (this.parent.findNewParent(this, x, y)) {\n        this.x -= Math.floor(this.x);\n        this.y -= Math.floor(this.y);\n      }\n    }\n\n    // The editor can be moved wherever the user wants, so we don't need to fix\n    // the position: it'll be done when the user will release the mouse button.\n\n    let { x, y } = this;\n    const [bx, by] = this.#getBaseTranslation();\n    x += bx;\n    y += by;\n\n    this.div.style.left = `${(100 * x).toFixed(2)}%`;\n    this.div.style.top = `${(100 * y).toFixed(2)}%`;\n    this.div.scrollIntoView({ block: \"nearest\" });\n  }\n\n  #getBaseTranslation() {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    const { _borderLineWidth } = AnnotationEditor;\n    const x = _borderLineWidth / parentWidth;\n    const y = _borderLineWidth / parentHeight;\n    switch (this.rotation) {\n      case 90:\n        return [-x, y];\n      case 180:\n        return [x, y];\n      case 270:\n        return [x, -y];\n      default:\n        return [-x, -y];\n    }\n  }\n\n  fixAndSetPosition() {\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    let { x, y, width, height } = this;\n    width *= pageWidth;\n    height *= pageHeight;\n    x *= pageWidth;\n    y *= pageHeight;\n\n    switch (this.rotation) {\n      case 0:\n        x = Math.max(0, Math.min(pageWidth - width, x));\n        y = Math.max(0, Math.min(pageHeight - height, y));\n        break;\n      case 90:\n        x = Math.max(0, Math.min(pageWidth - height, x));\n        y = Math.min(pageHeight, Math.max(width, y));\n        break;\n      case 180:\n        x = Math.min(pageWidth, Math.max(width, x));\n        y = Math.min(pageHeight, Math.max(height, y));\n        break;\n      case 270:\n        x = Math.min(pageWidth, Math.max(height, x));\n        y = Math.max(0, Math.min(pageHeight - width, y));\n        break;\n    }\n\n    this.x = x /= pageWidth;\n    this.y = y /= pageHeight;\n\n    const [bx, by] = this.#getBaseTranslation();\n    x += bx;\n    y += by;\n\n    const { style } = this.div;\n    style.left = `${(100 * x).toFixed(2)}%`;\n    style.top = `${(100 * y).toFixed(2)}%`;\n\n    this.moveInDOM();\n  }\n\n  static #rotatePoint(x, y, angle) {\n    switch (angle) {\n      case 90:\n        return [y, -x];\n      case 180:\n        return [-x, -y];\n      case 270:\n        return [-y, x];\n      default:\n        return [x, y];\n    }\n  }\n\n  /**\n   * Convert a screen translation into a page one.\n   * @param {number} x\n   * @param {number} y\n   */\n  screenToPageTranslation(x, y) {\n    return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n  }\n\n  /**\n   * Convert a page translation into a screen one.\n   * @param {number} x\n   * @param {number} y\n   */\n  pageTranslationToScreen(x, y) {\n    return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n  }\n\n  #getRotationMatrix(rotation) {\n    switch (rotation) {\n      case 90: {\n        const [pageWidth, pageHeight] = this.pageDimensions;\n        return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n      }\n      case 180:\n        return [-1, 0, 0, -1];\n      case 270: {\n        const [pageWidth, pageHeight] = this.pageDimensions;\n        return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n      }\n      default:\n        return [1, 0, 0, 1];\n    }\n  }\n\n  get parentScale() {\n    return this._uiManager.viewParameters.realScale;\n  }\n\n  get parentRotation() {\n    return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n  }\n\n  get parentDimensions() {\n    const {\n      parentScale,\n      pageDimensions: [pageWidth, pageHeight],\n    } = this;\n    const scaledWidth = pageWidth * parentScale;\n    const scaledHeight = pageHeight * parentScale;\n    return FeatureTest.isCSSRoundSupported\n      ? [Math.round(scaledWidth), Math.round(scaledHeight)]\n      : [scaledWidth, scaledHeight];\n  }\n\n  /**\n   * Set the dimensions of this editor.\n   * @param {number} width\n   * @param {number} height\n   */\n  setDims(width, height) {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.div.style.width = `${((100 * width) / parentWidth).toFixed(2)}%`;\n    if (!this.#keepAspectRatio) {\n      this.div.style.height = `${((100 * height) / parentHeight).toFixed(2)}%`;\n    }\n    this.#altTextButton?.classList.toggle(\n      \"small\",\n      width < AnnotationEditor.SMALL_EDITOR_SIZE ||\n        height < AnnotationEditor.SMALL_EDITOR_SIZE\n    );\n  }\n\n  fixDims() {\n    const { style } = this.div;\n    const { height, width } = style;\n    const widthPercent = width.endsWith(\"%\");\n    const heightPercent = !this.#keepAspectRatio && height.endsWith(\"%\");\n    if (widthPercent && heightPercent) {\n      return;\n    }\n\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    if (!widthPercent) {\n      style.width = `${((100 * parseFloat(width)) / parentWidth).toFixed(2)}%`;\n    }\n    if (!this.#keepAspectRatio && !heightPercent) {\n      style.height = `${((100 * parseFloat(height)) / parentHeight).toFixed(\n        2\n      )}%`;\n    }\n  }\n\n  /**\n   * Get the translation used to position this editor when it's created.\n   * @returns {Array<number>}\n   */\n  getInitialTranslation() {\n    return [0, 0];\n  }\n\n  #createResizers() {\n    if (this.#resizersDiv) {\n      return;\n    }\n    this.#resizersDiv = document.createElement(\"div\");\n    this.#resizersDiv.classList.add(\"resizers\");\n    // When the resizers are used with the keyboard, they're focusable, hence\n    // we want to have them in this order (top left, top middle, top right, ...)\n    // in the DOM to have the focus order correct.\n    const classes = this._willKeepAspectRatio\n      ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"]\n      : [\n          \"topLeft\",\n          \"topMiddle\",\n          \"topRight\",\n          \"middleRight\",\n          \"bottomRight\",\n          \"bottomMiddle\",\n          \"bottomLeft\",\n          \"middleLeft\",\n        ];\n    for (const name of classes) {\n      const div = document.createElement(\"div\");\n      this.#resizersDiv.append(div);\n      div.classList.add(\"resizer\", name);\n      div.setAttribute(\"data-resizer-name\", name);\n      div.addEventListener(\n        \"pointerdown\",\n        this.#resizerPointerdown.bind(this, name)\n      );\n      div.addEventListener(\"contextmenu\", noContextMenu);\n      div.tabIndex = -1;\n    }\n    this.div.prepend(this.#resizersDiv);\n  }\n\n  #resizerPointerdown(name, event) {\n    event.preventDefault();\n    const { isMac } = FeatureTest.platform;\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\n      return;\n    }\n\n    this.#toggleAltTextButton(false);\n\n    const boundResizerPointermove = this.#resizerPointermove.bind(this, name);\n    const savedDraggable = this._isDraggable;\n    this._isDraggable = false;\n    const pointerMoveOptions = { passive: true, capture: true };\n    this.parent.togglePointerEvents(false);\n    window.addEventListener(\n      \"pointermove\",\n      boundResizerPointermove,\n      pointerMoveOptions\n    );\n    const savedX = this.x;\n    const savedY = this.y;\n    const savedWidth = this.width;\n    const savedHeight = this.height;\n    const savedParentCursor = this.parent.div.style.cursor;\n    const savedCursor = this.div.style.cursor;\n    this.div.style.cursor = this.parent.div.style.cursor =\n      window.getComputedStyle(event.target).cursor;\n\n    const pointerUpCallback = () => {\n      this.parent.togglePointerEvents(true);\n      this.#toggleAltTextButton(true);\n      this._isDraggable = savedDraggable;\n      window.removeEventListener(\"pointerup\", pointerUpCallback);\n      window.removeEventListener(\"blur\", pointerUpCallback);\n      window.removeEventListener(\n        \"pointermove\",\n        boundResizerPointermove,\n        pointerMoveOptions\n      );\n      this.parent.div.style.cursor = savedParentCursor;\n      this.div.style.cursor = savedCursor;\n\n      this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n    };\n    window.addEventListener(\"pointerup\", pointerUpCallback);\n    // If the user switches to another window (with alt+tab), then we end the\n    // resize session.\n    window.addEventListener(\"blur\", pointerUpCallback);\n  }\n\n  #addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight) {\n    const newX = this.x;\n    const newY = this.y;\n    const newWidth = this.width;\n    const newHeight = this.height;\n    if (\n      newX === savedX &&\n      newY === savedY &&\n      newWidth === savedWidth &&\n      newHeight === savedHeight\n    ) {\n      return;\n    }\n\n    this.addCommands({\n      cmd: () => {\n        this.width = newWidth;\n        this.height = newHeight;\n        this.x = newX;\n        this.y = newY;\n        const [parentWidth, parentHeight] = this.parentDimensions;\n        this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n        this.fixAndSetPosition();\n      },\n      undo: () => {\n        this.width = savedWidth;\n        this.height = savedHeight;\n        this.x = savedX;\n        this.y = savedY;\n        const [parentWidth, parentHeight] = this.parentDimensions;\n        this.setDims(parentWidth * savedWidth, parentHeight * savedHeight);\n        this.fixAndSetPosition();\n      },\n      mustExec: true,\n    });\n  }\n\n  #resizerPointermove(name, event) {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    const savedX = this.x;\n    const savedY = this.y;\n    const savedWidth = this.width;\n    const savedHeight = this.height;\n    const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n    const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n\n    // 10000 because we multiply by 100 and use toFixed(2) in fixAndSetPosition.\n    // Without rounding, the positions of the corners other than the top left\n    // one can be slightly wrong.\n    const round = x => Math.round(x * 10000) / 10000;\n    const rotationMatrix = this.#getRotationMatrix(this.rotation);\n    const transf = (x, y) => [\n      rotationMatrix[0] * x + rotationMatrix[2] * y,\n      rotationMatrix[1] * x + rotationMatrix[3] * y,\n    ];\n    const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n    const invTransf = (x, y) => [\n      invRotationMatrix[0] * x + invRotationMatrix[2] * y,\n      invRotationMatrix[1] * x + invRotationMatrix[3] * y,\n    ];\n    let getPoint;\n    let getOpposite;\n    let isDiagonal = false;\n    let isHorizontal = false;\n\n    switch (name) {\n      case \"topLeft\":\n        isDiagonal = true;\n        getPoint = (w, h) => [0, 0];\n        getOpposite = (w, h) => [w, h];\n        break;\n      case \"topMiddle\":\n        getPoint = (w, h) => [w / 2, 0];\n        getOpposite = (w, h) => [w / 2, h];\n        break;\n      case \"topRight\":\n        isDiagonal = true;\n        getPoint = (w, h) => [w, 0];\n        getOpposite = (w, h) => [0, h];\n        break;\n      case \"middleRight\":\n        isHorizontal = true;\n        getPoint = (w, h) => [w, h / 2];\n        getOpposite = (w, h) => [0, h / 2];\n        break;\n      case \"bottomRight\":\n        isDiagonal = true;\n        getPoint = (w, h) => [w, h];\n        getOpposite = (w, h) => [0, 0];\n        break;\n      case \"bottomMiddle\":\n        getPoint = (w, h) => [w / 2, h];\n        getOpposite = (w, h) => [w / 2, 0];\n        break;\n      case \"bottomLeft\":\n        isDiagonal = true;\n        getPoint = (w, h) => [0, h];\n        getOpposite = (w, h) => [w, 0];\n        break;\n      case \"middleLeft\":\n        isHorizontal = true;\n        getPoint = (w, h) => [0, h / 2];\n        getOpposite = (w, h) => [w, h / 2];\n        break;\n    }\n\n    const point = getPoint(savedWidth, savedHeight);\n    const oppositePoint = getOpposite(savedWidth, savedHeight);\n    let transfOppositePoint = transf(...oppositePoint);\n    const oppositeX = round(savedX + transfOppositePoint[0]);\n    const oppositeY = round(savedY + transfOppositePoint[1]);\n    let ratioX = 1;\n    let ratioY = 1;\n\n    let [deltaX, deltaY] = this.screenToPageTranslation(\n      event.movementX,\n      event.movementY\n    );\n    [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n\n    if (isDiagonal) {\n      const oldDiag = Math.hypot(savedWidth, savedHeight);\n      ratioX = ratioY = Math.max(\n        Math.min(\n          Math.hypot(\n            oppositePoint[0] - point[0] - deltaX,\n            oppositePoint[1] - point[1] - deltaY\n          ) / oldDiag,\n          // Avoid the editor to be larger than the page.\n          1 / savedWidth,\n          1 / savedHeight\n        ),\n        // Avoid the editor to be smaller than the minimum size.\n        minWidth / savedWidth,\n        minHeight / savedHeight\n      );\n    } else if (isHorizontal) {\n      ratioX =\n        Math.max(\n          minWidth,\n          Math.min(1, Math.abs(oppositePoint[0] - point[0] - deltaX))\n        ) / savedWidth;\n    } else {\n      ratioY =\n        Math.max(\n          minHeight,\n          Math.min(1, Math.abs(oppositePoint[1] - point[1] - deltaY))\n        ) / savedHeight;\n    }\n\n    const newWidth = round(savedWidth * ratioX);\n    const newHeight = round(savedHeight * ratioY);\n    transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n    const newX = oppositeX - transfOppositePoint[0];\n    const newY = oppositeY - transfOppositePoint[1];\n\n    this.width = newWidth;\n    this.height = newHeight;\n    this.x = newX;\n    this.y = newY;\n\n    this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n    this.fixAndSetPosition();\n  }\n\n  async addAltTextButton() {\n    if (this.#altTextButton) {\n      return;\n    }\n    const altText = (this.#altTextButton = document.createElement(\"button\"));\n    altText.className = \"altText\";\n    const msg = await AnnotationEditor._l10nPromise.get(\n      \"pdfjs-editor-alt-text-button-label\"\n    );\n    altText.textContent = msg;\n    altText.setAttribute(\"aria-label\", msg);\n    altText.tabIndex = \"0\";\n    altText.addEventListener(\"contextmenu\", noContextMenu);\n    altText.addEventListener(\"pointerdown\", event => event.stopPropagation());\n\n    const onClick = event => {\n      this.#altTextButton.hidden = true;\n      event.preventDefault();\n      this._uiManager.editAltText(this);\n    };\n    altText.addEventListener(\"click\", onClick, { capture: true });\n    altText.addEventListener(\"keydown\", event => {\n      if (event.target === altText && event.key === \"Enter\") {\n        this.#altTextWasFromKeyBoard = true;\n        onClick(event);\n      }\n    });\n    this.#setAltTextButtonState();\n    this.div.append(altText);\n    if (!AnnotationEditor.SMALL_EDITOR_SIZE) {\n      // We take the width of the alt text button and we add 40% to it to be\n      // sure to have enough space for it.\n      const PERCENT = 40;\n      AnnotationEditor.SMALL_EDITOR_SIZE = Math.min(\n        128,\n        Math.round(altText.getBoundingClientRect().width * (1 + PERCENT / 100))\n      );\n    }\n  }\n\n  async #setAltTextButtonState() {\n    const button = this.#altTextButton;\n    if (!button) {\n      return;\n    }\n    if (!this.#altText && !this.#altTextDecorative) {\n      button.classList.remove(\"done\");\n      this.#altTextTooltip?.remove();\n      return;\n    }\n    button.classList.add(\"done\");\n\n    AnnotationEditor._l10nPromise\n      .get(\"pdfjs-editor-alt-text-edit-button-label\")\n      .then(msg => {\n        button.setAttribute(\"aria-label\", msg);\n      });\n    let tooltip = this.#altTextTooltip;\n    if (!tooltip) {\n      this.#altTextTooltip = tooltip = document.createElement(\"span\");\n      tooltip.className = \"tooltip\";\n      tooltip.setAttribute(\"role\", \"tooltip\");\n      const id = (tooltip.id = `alt-text-tooltip-${this.id}`);\n      button.setAttribute(\"aria-describedby\", id);\n\n      const DELAY_TO_SHOW_TOOLTIP = 100;\n      button.addEventListener(\"mouseenter\", () => {\n        this.#altTextTooltipTimeout = setTimeout(() => {\n          this.#altTextTooltipTimeout = null;\n          this.#altTextTooltip.classList.add(\"show\");\n          this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n            source: this,\n            details: {\n              type: \"editing\",\n              subtype: this.editorType,\n              data: {\n                action: \"alt_text_tooltip\",\n              },\n            },\n          });\n        }, DELAY_TO_SHOW_TOOLTIP);\n      });\n      button.addEventListener(\"mouseleave\", () => {\n        if (this.#altTextTooltipTimeout) {\n          clearTimeout(this.#altTextTooltipTimeout);\n          this.#altTextTooltipTimeout = null;\n        }\n        this.#altTextTooltip?.classList.remove(\"show\");\n      });\n    }\n    tooltip.innerText = this.#altTextDecorative\n      ? await AnnotationEditor._l10nPromise.get(\n          \"pdfjs-editor-alt-text-decorative-tooltip\"\n        )\n      : this.#altText;\n\n    if (!tooltip.parentNode) {\n      button.append(tooltip);\n    }\n\n    const element = this.getImageForAltText();\n    element?.setAttribute(\"aria-describedby\", tooltip.id);\n  }\n\n  #toggleAltTextButton(enabled = false) {\n    if (!this.#altTextButton) {\n      return;\n    }\n    if (!enabled && this.#altTextTooltipTimeout) {\n      clearTimeout(this.#altTextTooltipTimeout);\n      this.#altTextTooltipTimeout = null;\n    }\n    this.#altTextButton.disabled = !enabled;\n  }\n\n  altTextFinish() {\n    if (!this.#altTextButton) {\n      return;\n    }\n    this.#altTextButton.hidden = false;\n    this.#altTextButton.focus({ focusVisible: this.#altTextWasFromKeyBoard });\n    this.#altTextWasFromKeyBoard = false;\n  }\n\n  getClientDimensions() {\n    return this.div.getBoundingClientRect();\n  }\n\n  get altTextData() {\n    return {\n      altText: this.#altText,\n      decorative: this.#altTextDecorative,\n    };\n  }\n\n  /**\n   * Set the alt text data.\n   */\n  set altTextData({ altText, decorative }) {\n    if (this.#altText === altText && this.#altTextDecorative === decorative) {\n      return;\n    }\n    this.#altText = altText;\n    this.#altTextDecorative = decorative;\n    this.#setAltTextButtonState();\n  }\n\n  /**\n   * Render this editor in a div.\n   * @returns {HTMLDivElement | null}\n   */\n  render() {\n    this.div = document.createElement(\"div\");\n    this.div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n    this.div.className = this.name;\n    this.div.setAttribute(\"id\", this.id);\n    this.div.setAttribute(\"tabIndex\", 0);\n\n    this.setInForeground();\n\n    this.div.addEventListener(\"focusin\", this.#boundFocusin);\n    this.div.addEventListener(\"focusout\", this.#boundFocusout);\n\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    if (this.parentRotation % 180 !== 0) {\n      this.div.style.maxWidth = `${((100 * parentHeight) / parentWidth).toFixed(\n        2\n      )}%`;\n      this.div.style.maxHeight = `${(\n        (100 * parentWidth) /\n        parentHeight\n      ).toFixed(2)}%`;\n    }\n\n    const [tx, ty] = this.getInitialTranslation();\n    this.translate(tx, ty);\n\n    bindEvents(this, this.div, [\"pointerdown\"]);\n\n    return this.div;\n  }\n\n  /**\n   * Onpointerdown callback.\n   * @param {PointerEvent} event\n   */\n  pointerdown(event) {\n    const { isMac } = FeatureTest.platform;\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\n      // Avoid to focus this editor because of a non-left click.\n      event.preventDefault();\n      return;\n    }\n\n    this.#hasBeenClicked = true;\n\n    this.#setUpDragSession(event);\n  }\n\n  #setUpDragSession(event) {\n    if (!this._isDraggable) {\n      return;\n    }\n\n    const isSelected = this._uiManager.isSelected(this);\n    this._uiManager.setUpDragSession();\n\n    let pointerMoveOptions, pointerMoveCallback;\n    if (isSelected) {\n      pointerMoveOptions = { passive: true, capture: true };\n      pointerMoveCallback = e => {\n        const [tx, ty] = this.screenToPageTranslation(e.movementX, e.movementY);\n        this._uiManager.dragSelectedEditors(tx, ty);\n      };\n      window.addEventListener(\n        \"pointermove\",\n        pointerMoveCallback,\n        pointerMoveOptions\n      );\n    }\n\n    const pointerUpCallback = () => {\n      window.removeEventListener(\"pointerup\", pointerUpCallback);\n      window.removeEventListener(\"blur\", pointerUpCallback);\n      if (isSelected) {\n        window.removeEventListener(\n          \"pointermove\",\n          pointerMoveCallback,\n          pointerMoveOptions\n        );\n      }\n\n      this.#hasBeenClicked = false;\n      if (!this._uiManager.endDragSession()) {\n        const { isMac } = FeatureTest.platform;\n        if (\n          (event.ctrlKey && !isMac) ||\n          event.shiftKey ||\n          (event.metaKey && isMac)\n        ) {\n          this.parent.toggleSelected(this);\n        } else {\n          this.parent.setSelected(this);\n        }\n      }\n    };\n    window.addEventListener(\"pointerup\", pointerUpCallback);\n    // If the user is using alt+tab during the dragging session, the pointerup\n    // event could be not fired, but a blur event is fired so we can use it in\n    // order to interrupt the dragging session.\n    window.addEventListener(\"blur\", pointerUpCallback);\n  }\n\n  moveInDOM() {\n    // Moving the editor in the DOM can be expensive, so we wait a bit before.\n    // It's important to not block the UI (for example when changing the font\n    // size in a FreeText).\n    if (this.#moveInDOMTimeout) {\n      clearTimeout(this.#moveInDOMTimeout);\n    }\n    this.#moveInDOMTimeout = setTimeout(() => {\n      this.#moveInDOMTimeout = null;\n      this.parent?.moveEditorInDOM(this);\n    }, 0);\n  }\n\n  _setParentAndPosition(parent, x, y) {\n    parent.changeParent(this);\n    this.x = x;\n    this.y = y;\n    this.fixAndSetPosition();\n  }\n\n  /**\n   * Convert the current rect into a page one.\n   */\n  getRect(tx, ty) {\n    const scale = this.parentScale;\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    const [pageX, pageY] = this.pageTranslation;\n    const shiftX = tx / scale;\n    const shiftY = ty / scale;\n    const x = this.x * pageWidth;\n    const y = this.y * pageHeight;\n    const width = this.width * pageWidth;\n    const height = this.height * pageHeight;\n\n    switch (this.rotation) {\n      case 0:\n        return [\n          x + shiftX + pageX,\n          pageHeight - y - shiftY - height + pageY,\n          x + shiftX + width + pageX,\n          pageHeight - y - shiftY + pageY,\n        ];\n      case 90:\n        return [\n          x + shiftY + pageX,\n          pageHeight - y + shiftX + pageY,\n          x + shiftY + height + pageX,\n          pageHeight - y + shiftX + width + pageY,\n        ];\n      case 180:\n        return [\n          x - shiftX - width + pageX,\n          pageHeight - y + shiftY + pageY,\n          x - shiftX + pageX,\n          pageHeight - y + shiftY + height + pageY,\n        ];\n      case 270:\n        return [\n          x - shiftY - height + pageX,\n          pageHeight - y - shiftX - width + pageY,\n          x - shiftY + pageX,\n          pageHeight - y - shiftX + pageY,\n        ];\n      default:\n        throw new Error(\"Invalid rotation\");\n    }\n  }\n\n  getRectInCurrentCoords(rect, pageHeight) {\n    const [x1, y1, x2, y2] = rect;\n\n    const width = x2 - x1;\n    const height = y2 - y1;\n\n    switch (this.rotation) {\n      case 0:\n        return [x1, pageHeight - y2, width, height];\n      case 90:\n        return [x1, pageHeight - y1, height, width];\n      case 180:\n        return [x2, pageHeight - y1, width, height];\n      case 270:\n        return [x2, pageHeight - y2, height, width];\n      default:\n        throw new Error(\"Invalid rotation\");\n    }\n  }\n\n  /**\n   * Executed once this editor has been rendered.\n   */\n  onceAdded() {}\n\n  /**\n   * Check if the editor contains something.\n   * @returns {boolean}\n   */\n  isEmpty() {\n    return false;\n  }\n\n  /**\n   * Enable edit mode.\n   */\n  enableEditMode() {\n    this.#isInEditMode = true;\n  }\n\n  /**\n   * Disable edit mode.\n   */\n  disableEditMode() {\n    this.#isInEditMode = false;\n  }\n\n  /**\n   * Check if the editor is edited.\n   * @returns {boolean}\n   */\n  isInEditMode() {\n    return this.#isInEditMode;\n  }\n\n  /**\n   * If it returns true, then this editor handles the keyboard\n   * events itself.\n   * @returns {boolean}\n   */\n  shouldGetKeyboardEvents() {\n    return this.#isResizerEnabledForKeyboard;\n  }\n\n  /**\n   * Check if this editor needs to be rebuilt or not.\n   * @returns {boolean}\n   */\n  needsToBeRebuilt() {\n    return this.div && !this.isAttachedToDOM;\n  }\n\n  /**\n   * Rebuild the editor in case it has been removed on undo.\n   *\n   * To implement in subclasses.\n   */\n  rebuild() {\n    this.div?.addEventListener(\"focusin\", this.#boundFocusin);\n    this.div?.addEventListener(\"focusout\", this.#boundFocusout);\n  }\n\n  /**\n   * Serialize the editor.\n   * The result of the serialization will be used to construct a\n   * new annotation to add to the pdf document.\n   *\n   * To implement in subclasses.\n   * @param {boolean} [isForCopying]\n   * @param {Object | null} [context]\n   * @returns {Object | null}\n   */\n  serialize(isForCopying = false, context = null) {\n    unreachable(\"An editor must be serializable\");\n  }\n\n  /**\n   * Deserialize the editor.\n   * The result of the deserialization is a new editor.\n   *\n   * @param {Object} data\n   * @param {AnnotationEditorLayer} parent\n   * @param {AnnotationEditorUIManager} uiManager\n   * @returns {AnnotationEditor | null}\n   */\n  static deserialize(data, parent, uiManager) {\n    const editor = new this.prototype.constructor({\n      parent,\n      id: parent.getNextId(),\n      uiManager,\n    });\n    editor.rotation = data.rotation;\n\n    const [pageWidth, pageHeight] = editor.pageDimensions;\n    const [x, y, width, height] = editor.getRectInCurrentCoords(\n      data.rect,\n      pageHeight\n    );\n    editor.x = x / pageWidth;\n    editor.y = y / pageHeight;\n    editor.width = width / pageWidth;\n    editor.height = height / pageHeight;\n\n    return editor;\n  }\n\n  /**\n   * Remove this editor.\n   * It's used on ctrl+backspace action.\n   */\n  remove() {\n    this.div.removeEventListener(\"focusin\", this.#boundFocusin);\n    this.div.removeEventListener(\"focusout\", this.#boundFocusout);\n\n    if (!this.isEmpty()) {\n      // The editor is removed but it can be back at some point thanks to\n      // undo/redo so we must commit it before.\n      this.commit();\n    }\n    if (this.parent) {\n      this.parent.remove(this);\n    } else {\n      this._uiManager.removeEditor(this);\n    }\n\n    // The editor is removed so we can remove the alt text button and if it's\n    // restored then it's up to the subclass to add it back.\n    this.#altTextButton?.remove();\n    this.#altTextButton = null;\n    this.#altTextTooltip = null;\n    if (this.#moveInDOMTimeout) {\n      clearTimeout(this.#moveInDOMTimeout);\n      this.#moveInDOMTimeout = null;\n    }\n    this.#stopResizing();\n  }\n\n  /**\n   * @returns {boolean} true if this editor can be resized.\n   */\n  get isResizable() {\n    return false;\n  }\n\n  /**\n   * Add the resizers to this editor.\n   */\n  makeResizable() {\n    if (this.isResizable) {\n      this.#createResizers();\n      this.#resizersDiv.classList.remove(\"hidden\");\n      bindEvents(this, this.div, [\"keydown\"]);\n    }\n  }\n\n  /**\n   * onkeydown callback.\n   * @param {KeyboardEvent} event\n   */\n  keydown(event) {\n    if (\n      !this.isResizable ||\n      event.target !== this.div ||\n      event.key !== \"Enter\"\n    ) {\n      return;\n    }\n    this._uiManager.setSelected(this);\n    this.#savedDimensions = {\n      savedX: this.x,\n      savedY: this.y,\n      savedWidth: this.width,\n      savedHeight: this.height,\n    };\n    const children = this.#resizersDiv.children;\n    if (!this.#allResizerDivs) {\n      this.#allResizerDivs = Array.from(children);\n      const boundResizerKeydown = this.#resizerKeydown.bind(this);\n      const boundResizerBlur = this.#resizerBlur.bind(this);\n      for (const div of this.#allResizerDivs) {\n        const name = div.getAttribute(\"data-resizer-name\");\n        div.setAttribute(\"role\", \"spinbutton\");\n        div.addEventListener(\"keydown\", boundResizerKeydown);\n        div.addEventListener(\"blur\", boundResizerBlur);\n        div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name));\n        AnnotationEditor._l10nPromise\n          .get(`pdfjs-editor-resizer-label-${name}`)\n          .then(msg => div.setAttribute(\"aria-label\", msg));\n      }\n    }\n\n    // We want to have the resizers in the visual order, so we move the first\n    // (top-left) to the right place.\n    const first = this.#allResizerDivs[0];\n    let firstPosition = 0;\n    for (const div of children) {\n      if (div === first) {\n        break;\n      }\n      firstPosition++;\n    }\n    const nextFirstPosition =\n      (((360 - this.rotation + this.parentRotation) % 360) / 90) *\n      (this.#allResizerDivs.length / 4);\n\n    if (nextFirstPosition !== firstPosition) {\n      // We need to reorder the resizers in the DOM in order to have the focus\n      // on the top-left one.\n      if (nextFirstPosition < firstPosition) {\n        for (let i = 0; i < firstPosition - nextFirstPosition; i++) {\n          this.#resizersDiv.append(this.#resizersDiv.firstChild);\n        }\n      } else if (nextFirstPosition > firstPosition) {\n        for (let i = 0; i < nextFirstPosition - firstPosition; i++) {\n          this.#resizersDiv.firstChild.before(this.#resizersDiv.lastChild);\n        }\n      }\n\n      let i = 0;\n      for (const child of children) {\n        const div = this.#allResizerDivs[i++];\n        const name = div.getAttribute(\"data-resizer-name\");\n        AnnotationEditor._l10nPromise\n          .get(`pdfjs-editor-resizer-label-${name}`)\n          .then(msg => child.setAttribute(\"aria-label\", msg));\n      }\n    }\n\n    this.#setResizerTabIndex(0);\n    this.#isResizerEnabledForKeyboard = true;\n    this.#resizersDiv.firstChild.focus({ focusVisible: true });\n    event.preventDefault();\n    event.stopImmediatePropagation();\n  }\n\n  #resizerKeydown(event) {\n    AnnotationEditor._resizerKeyboardManager.exec(this, event);\n  }\n\n  #resizerBlur(event) {\n    if (\n      this.#isResizerEnabledForKeyboard &&\n      event.relatedTarget?.parentNode !== this.#resizersDiv\n    ) {\n      this.#stopResizing();\n    }\n  }\n\n  #resizerFocus(name) {\n    this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n  }\n\n  #setResizerTabIndex(value) {\n    if (!this.#allResizerDivs) {\n      return;\n    }\n    for (const div of this.#allResizerDivs) {\n      div.tabIndex = value;\n    }\n  }\n\n  _resizeWithKeyboard(x, y) {\n    if (!this.#isResizerEnabledForKeyboard) {\n      return;\n    }\n    this.#resizerPointermove(this.#focusedResizerName, {\n      movementX: x,\n      movementY: y,\n    });\n  }\n\n  #stopResizing() {\n    this.#isResizerEnabledForKeyboard = false;\n    this.#setResizerTabIndex(-1);\n    if (this.#savedDimensions) {\n      const { savedX, savedY, savedWidth, savedHeight } = this.#savedDimensions;\n      this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n      this.#savedDimensions = null;\n    }\n  }\n\n  _stopResizingWithKeyboard() {\n    this.#stopResizing();\n    this.div.focus();\n  }\n\n  /**\n   * Select this editor.\n   */\n  select() {\n    this.makeResizable();\n    this.div?.classList.add(\"selectedEditor\");\n  }\n\n  /**\n   * Unselect this editor.\n   */\n  unselect() {\n    this.#resizersDiv?.classList.add(\"hidden\");\n    this.div?.classList.remove(\"selectedEditor\");\n    if (this.div?.contains(document.activeElement)) {\n      // Don't use this.div.blur() because we don't know where the focus will\n      // go.\n      this._uiManager.currentLayer.div.focus();\n    }\n  }\n\n  /**\n   * Update some parameters which have been changed through the UI.\n   * @param {number} type\n   * @param {*} value\n   */\n  updateParams(type, value) {}\n\n  /**\n   * When the user disables the editing mode some editors can change some of\n   * their properties.\n   */\n  disableEditing() {\n    if (this.#altTextButton) {\n      this.#altTextButton.hidden = true;\n    }\n  }\n\n  /**\n   * When the user enables the editing mode some editors can change some of\n   * their properties.\n   */\n  enableEditing() {\n    if (this.#altTextButton) {\n      this.#altTextButton.hidden = false;\n    }\n  }\n\n  /**\n   * The editor is about to be edited.\n   */\n  enterInEditMode() {}\n\n  /**\n   * @returns {HTMLElement | null} the element requiring an alt text.\n   */\n  getImageForAltText() {\n    return null;\n  }\n\n  /**\n   * Get the div which really contains the displayed content.\n   * @returns {HTMLDivElement | undefined}\n   */\n  get contentDiv() {\n    return this.div;\n  }\n\n  /**\n   * If true then the editor is currently edited.\n   * @type {boolean}\n   */\n  get isEditing() {\n    return this.#isEditing;\n  }\n\n  /**\n   * When set to true, it means that this editor is currently edited.\n   * @param {boolean} value\n   */\n  set isEditing(value) {\n    this.#isEditing = value;\n    if (!this.parent) {\n      return;\n    }\n    if (value) {\n      this.parent.setSelected(this);\n      this.parent.setActiveEditor(this);\n    } else {\n      this.parent.setActiveEditor(null);\n    }\n  }\n\n  /**\n   * Set the aspect ratio to use when resizing.\n   * @param {number} width\n   * @param {number} height\n   */\n  setAspectRatio(width, height) {\n    this.#keepAspectRatio = true;\n    const aspectRatio = width / height;\n    const { style } = this.div;\n    style.aspectRatio = aspectRatio;\n    style.height = \"auto\";\n  }\n\n  static get MIN_SIZE() {\n    return 16;\n  }\n}\n\n// This class is used to fake an editor which has been deleted.\nclass FakeEditor extends AnnotationEditor {\n  constructor(params) {\n    super(params);\n    this.annotationElementId = params.annotationElementId;\n    this.deleted = true;\n  }\n\n  serialize() {\n    return {\n      id: this.annotationElementId,\n      deleted: true,\n      pageIndex: this.pageIndex,\n    };\n  }\n}\n\nexport { AnnotationEditor };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./editor.js\").AnnotationEditor} AnnotationEditor */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n\nimport {\n  AnnotationEditorParamsType,\n  AnnotationEditorPrefix,\n  AnnotationEditorType,\n  FeatureTest,\n  getUuid,\n  shadow,\n  Util,\n  warn,\n} from \"../../shared/util.js\";\nimport { getColorValues, getRGB, PixelsPerInch } from \"../display_utils.js\";\n\nfunction bindEvents(obj, element, names) {\n  for (const name of names) {\n    element.addEventListener(name, obj[name].bind(obj));\n  }\n}\n\n/**\n * Convert a number between 0 and 100 into an hex number between 0 and 255.\n * @param {number} opacity\n * @return {string}\n */\nfunction opacityToHex(opacity) {\n  return Math.round(Math.min(255, Math.max(1, 255 * opacity)))\n    .toString(16)\n    .padStart(2, \"0\");\n}\n\n/**\n * Class to create some unique ids for the different editors.\n */\nclass IdManager {\n  #id = 0;\n\n  /**\n   * Get a unique id.\n   * @returns {string}\n   */\n  getId() {\n    return `${AnnotationEditorPrefix}${this.#id++}`;\n  }\n}\n\n/**\n * Class to manage the images used by the editors.\n * The main idea is to try to minimize the memory used by the images.\n * The images are cached and reused when possible\n * We use a refCounter to know when an image is not used anymore but we need to\n * be able to restore an image after a remove+undo, so we keep a file reference\n * or an url one.\n */\nclass ImageManager {\n  #baseId = getUuid();\n\n  #id = 0;\n\n  #cache = null;\n\n  static get _isSVGFittingCanvas() {\n    // By default, Firefox doesn't rescale without preserving the aspect ratio\n    // when drawing an SVG image on a canvas, see https://bugzilla.mozilla.org/1547776.\n    // The \"workaround\" is to append \"svgView(preserveAspectRatio(none))\" to the\n    // url, but according to comment #15, it seems that it leads to unexpected\n    // behavior in Safari.\n    const svg = `data:image/svg+xml;charset=UTF-8,<svg viewBox=\"0 0 1 1\" width=\"1\" height=\"1\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"1\" height=\"1\" style=\"fill:red;\"/></svg>`;\n    const canvas = new OffscreenCanvas(1, 3);\n    const ctx = canvas.getContext(\"2d\");\n    const image = new Image();\n    image.src = svg;\n    const promise = image.decode().then(() => {\n      ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\n      return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\n    });\n\n    return shadow(this, \"_isSVGFittingCanvas\", promise);\n  }\n\n  async #get(key, rawData) {\n    this.#cache ||= new Map();\n    let data = this.#cache.get(key);\n    if (data === null) {\n      // We already tried to load the image but it failed.\n      return null;\n    }\n    if (data?.bitmap) {\n      data.refCounter += 1;\n      return data;\n    }\n    try {\n      data ||= {\n        bitmap: null,\n        id: `image_${this.#baseId}_${this.#id++}`,\n        refCounter: 0,\n        isSvg: false,\n      };\n      let image;\n      if (typeof rawData === \"string\") {\n        data.url = rawData;\n\n        const response = await fetch(rawData);\n        if (!response.ok) {\n          throw new Error(response.statusText);\n        }\n        image = await response.blob();\n      } else {\n        image = data.file = rawData;\n      }\n\n      if (image.type === \"image/svg+xml\") {\n        // Unfortunately, createImageBitmap doesn't work with SVG images.\n        // (see https://bugzilla.mozilla.org/1841972).\n        const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n        const fileReader = new FileReader();\n        const imageElement = new Image();\n        const imagePromise = new Promise((resolve, reject) => {\n          imageElement.onload = () => {\n            data.bitmap = imageElement;\n            data.isSvg = true;\n            resolve();\n          };\n          fileReader.onload = async () => {\n            const url = (data.svgUrl = fileReader.result);\n            // We need to set the preserveAspectRatio to none in order to let\n            // the image fits the canvas when resizing.\n            imageElement.src = (await mustRemoveAspectRatioPromise)\n              ? `${url}#svgView(preserveAspectRatio(none))`\n              : url;\n          };\n          imageElement.onerror = fileReader.onerror = reject;\n        });\n        fileReader.readAsDataURL(image);\n        await imagePromise;\n      } else {\n        data.bitmap = await createImageBitmap(image);\n      }\n      data.refCounter = 1;\n    } catch (e) {\n      console.error(e);\n      data = null;\n    }\n    this.#cache.set(key, data);\n    if (data) {\n      this.#cache.set(data.id, data);\n    }\n    return data;\n  }\n\n  async getFromFile(file) {\n    const { lastModified, name, size, type } = file;\n    return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n  }\n\n  async getFromUrl(url) {\n    return this.#get(url, url);\n  }\n\n  async getFromId(id) {\n    this.#cache ||= new Map();\n    const data = this.#cache.get(id);\n    if (!data) {\n      return null;\n    }\n    if (data.bitmap) {\n      data.refCounter += 1;\n      return data;\n    }\n\n    if (data.file) {\n      return this.getFromFile(data.file);\n    }\n    return this.getFromUrl(data.url);\n  }\n\n  getSvgUrl(id) {\n    const data = this.#cache.get(id);\n    if (!data?.isSvg) {\n      return null;\n    }\n    return data.svgUrl;\n  }\n\n  deleteId(id) {\n    this.#cache ||= new Map();\n    const data = this.#cache.get(id);\n    if (!data) {\n      return;\n    }\n    data.refCounter -= 1;\n    if (data.refCounter !== 0) {\n      return;\n    }\n    data.bitmap = null;\n  }\n\n  // We can use the id only if it belongs this manager.\n  // We must take care of having the right manager because we can copy/paste\n  // some images from other documents, hence it'd be a pity to use an id from an\n  // other manager.\n  isValidId(id) {\n    return id.startsWith(`image_${this.#baseId}_`);\n  }\n}\n\n/**\n * Class to handle undo/redo.\n * Commands are just saved in a buffer.\n * If we hit some memory issues we could likely use a circular buffer.\n * It has to be used as a singleton.\n */\nclass CommandManager {\n  #commands = [];\n\n  #locked = false;\n\n  #maxSize;\n\n  #position = -1;\n\n  constructor(maxSize = 128) {\n    this.#maxSize = maxSize;\n  }\n\n  /**\n   * @typedef {Object} addOptions\n   * @property {function} cmd\n   * @property {function} undo\n   * @property {boolean} mustExec\n   * @property {number} type\n   * @property {boolean} overwriteIfSameType\n   * @property {boolean} keepUndo\n   */\n\n  /**\n   * Add a new couple of commands to be used in case of redo/undo.\n   * @param {addOptions} options\n   */\n  add({\n    cmd,\n    undo,\n    mustExec,\n    type = NaN,\n    overwriteIfSameType = false,\n    keepUndo = false,\n  }) {\n    if (mustExec) {\n      cmd();\n    }\n\n    if (this.#locked) {\n      return;\n    }\n\n    const save = { cmd, undo, type };\n    if (this.#position === -1) {\n      if (this.#commands.length > 0) {\n        // All the commands have been undone and then a new one is added\n        // hence we clear the queue.\n        this.#commands.length = 0;\n      }\n      this.#position = 0;\n      this.#commands.push(save);\n      return;\n    }\n\n    if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n      // For example when we change a color we don't want to\n      // be able to undo all the steps, hence we only want to\n      // keep the last undoable action in this sequence of actions.\n      if (keepUndo) {\n        save.undo = this.#commands[this.#position].undo;\n      }\n      this.#commands[this.#position] = save;\n      return;\n    }\n\n    const next = this.#position + 1;\n    if (next === this.#maxSize) {\n      this.#commands.splice(0, 1);\n    } else {\n      this.#position = next;\n      if (next < this.#commands.length) {\n        this.#commands.splice(next);\n      }\n    }\n\n    this.#commands.push(save);\n  }\n\n  /**\n   * Undo the last command.\n   */\n  undo() {\n    if (this.#position === -1) {\n      // Nothing to undo.\n      return;\n    }\n\n    // Avoid to insert something during the undo execution.\n    this.#locked = true;\n    this.#commands[this.#position].undo();\n    this.#locked = false;\n\n    this.#position -= 1;\n  }\n\n  /**\n   * Redo the last command.\n   */\n  redo() {\n    if (this.#position < this.#commands.length - 1) {\n      this.#position += 1;\n\n      // Avoid to insert something during the redo execution.\n      this.#locked = true;\n      this.#commands[this.#position].cmd();\n      this.#locked = false;\n    }\n  }\n\n  /**\n   * Check if there is something to undo.\n   * @returns {boolean}\n   */\n  hasSomethingToUndo() {\n    return this.#position !== -1;\n  }\n\n  /**\n   * Check if there is something to redo.\n   * @returns {boolean}\n   */\n  hasSomethingToRedo() {\n    return this.#position < this.#commands.length - 1;\n  }\n\n  destroy() {\n    this.#commands = null;\n  }\n}\n\n/**\n * Class to handle the different keyboards shortcuts we can have on mac or\n * non-mac OSes.\n */\nclass KeyboardManager {\n  /**\n   * Create a new keyboard manager class.\n   * @param {Array<Array>} callbacks - an array containing an array of shortcuts\n   * and a callback to call.\n   * A shortcut is a string like `ctrl+c` or `mac+ctrl+c` for mac OS.\n   */\n  constructor(callbacks) {\n    this.buffer = [];\n    this.callbacks = new Map();\n    this.allKeys = new Set();\n\n    const { isMac } = FeatureTest.platform;\n    for (const [keys, callback, options = {}] of callbacks) {\n      for (const key of keys) {\n        const isMacKey = key.startsWith(\"mac+\");\n        if (isMac && isMacKey) {\n          this.callbacks.set(key.slice(4), { callback, options });\n          this.allKeys.add(key.split(\"+\").at(-1));\n        } else if (!isMac && !isMacKey) {\n          this.callbacks.set(key, { callback, options });\n          this.allKeys.add(key.split(\"+\").at(-1));\n        }\n      }\n    }\n  }\n\n  /**\n   * Serialize an event into a string in order to match a\n   * potential key for a callback.\n   * @param {KeyboardEvent} event\n   * @returns {string}\n   */\n  #serialize(event) {\n    if (event.altKey) {\n      this.buffer.push(\"alt\");\n    }\n    if (event.ctrlKey) {\n      this.buffer.push(\"ctrl\");\n    }\n    if (event.metaKey) {\n      this.buffer.push(\"meta\");\n    }\n    if (event.shiftKey) {\n      this.buffer.push(\"shift\");\n    }\n    this.buffer.push(event.key);\n    const str = this.buffer.join(\"+\");\n    this.buffer.length = 0;\n\n    return str;\n  }\n\n  /**\n   * Execute a callback, if any, for a given keyboard event.\n   * The self is used as `this` in the callback.\n   * @param {Object} self\n   * @param {KeyboardEvent} event\n   * @returns\n   */\n  exec(self, event) {\n    if (!this.allKeys.has(event.key)) {\n      return;\n    }\n    const info = this.callbacks.get(this.#serialize(event));\n    if (!info) {\n      return;\n    }\n    const {\n      callback,\n      options: { bubbles = false, args = [], checker = null },\n    } = info;\n\n    if (checker && !checker(self, event)) {\n      return;\n    }\n    callback.bind(self, ...args)();\n\n    // For example, ctrl+s in a FreeText must be handled by the viewer, hence\n    // the event must bubble.\n    if (!bubbles) {\n      event.stopPropagation();\n      event.preventDefault();\n    }\n  }\n}\n\nclass ColorManager {\n  static _colorsMapping = new Map([\n    [\"CanvasText\", [0, 0, 0]],\n    [\"Canvas\", [255, 255, 255]],\n  ]);\n\n  get _colors() {\n    if (\n      typeof PDFJSDev !== \"undefined\" &&\n      PDFJSDev.test(\"LIB\") &&\n      typeof document === \"undefined\"\n    ) {\n      return shadow(this, \"_colors\", ColorManager._colorsMapping);\n    }\n\n    const colors = new Map([\n      [\"CanvasText\", null],\n      [\"Canvas\", null],\n    ]);\n    getColorValues(colors);\n    return shadow(this, \"_colors\", colors);\n  }\n\n  /**\n   * In High Contrast Mode, the color on the screen is not always the\n   * real color used in the pdf.\n   * For example in some cases white can appear to be black but when saving\n   * we want to have white.\n   * @param {string} color\n   * @returns {Array<number>}\n   */\n  convert(color) {\n    const rgb = getRGB(color);\n    if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n      return rgb;\n    }\n\n    for (const [name, RGB] of this._colors) {\n      if (RGB.every((x, i) => x === rgb[i])) {\n        return ColorManager._colorsMapping.get(name);\n      }\n    }\n    return rgb;\n  }\n\n  /**\n   * An input element must have its color value as a hex string\n   * and not as color name.\n   * So this function converts a name into an hex string.\n   * @param {string} name\n   * @returns {string}\n   */\n  getHexCode(name) {\n    const rgb = this._colors.get(name);\n    if (!rgb) {\n      return name;\n    }\n    return Util.makeHexColor(...rgb);\n  }\n}\n\n/**\n * A pdf has several pages and each of them when it will rendered\n * will have an AnnotationEditorLayer which will contain the some\n * new Annotations associated to an editor in order to modify them.\n *\n * This class is used to manage all the different layers, editors and\n * some action like copy/paste, undo/redo, ...\n */\nclass AnnotationEditorUIManager {\n  #activeEditor = null;\n\n  #allEditors = new Map();\n\n  #allLayers = new Map();\n\n  #altTextManager = null;\n\n  #annotationStorage = null;\n\n  #commandManager = new CommandManager();\n\n  #currentPageIndex = 0;\n\n  #deletedAnnotationsElementIds = new Set();\n\n  #draggingEditors = null;\n\n  #editorTypes = null;\n\n  #editorsToRescale = new Set();\n\n  #filterFactory = null;\n\n  #focusMainContainerTimeoutId = null;\n\n  #idManager = new IdManager();\n\n  #isEnabled = false;\n\n  #isWaiting = false;\n\n  #lastActiveElement = null;\n\n  #mode = AnnotationEditorType.NONE;\n\n  #selectedEditors = new Set();\n\n  #pageColors = null;\n\n  #boundBlur = this.blur.bind(this);\n\n  #boundFocus = this.focus.bind(this);\n\n  #boundCopy = this.copy.bind(this);\n\n  #boundCut = this.cut.bind(this);\n\n  #boundPaste = this.paste.bind(this);\n\n  #boundKeydown = this.keydown.bind(this);\n\n  #boundOnEditingAction = this.onEditingAction.bind(this);\n\n  #boundOnPageChanging = this.onPageChanging.bind(this);\n\n  #boundOnScaleChanging = this.onScaleChanging.bind(this);\n\n  #boundOnRotationChanging = this.onRotationChanging.bind(this);\n\n  #previousStates = {\n    isEditing: false,\n    isEmpty: true,\n    hasSomethingToUndo: false,\n    hasSomethingToRedo: false,\n    hasSelectedEditor: false,\n  };\n\n  #translation = [0, 0];\n\n  #translationTimeoutId = null;\n\n  #container = null;\n\n  #viewer = null;\n\n  static TRANSLATE_SMALL = 1; // page units.\n\n  static TRANSLATE_BIG = 10; // page units.\n\n  static get _keyboardManager() {\n    const proto = AnnotationEditorUIManager.prototype;\n\n    const arrowChecker = self => {\n      // If the focused element is an input, we don't want to handle the arrow.\n      // For example, sliders can be controlled with the arrow keys.\n      return (\n        self.#container.contains(document.activeElement) &&\n        self.hasSomethingToControl()\n      );\n    };\n\n    const textInputChecker = (_self, { target: el }) => {\n      if (el instanceof HTMLInputElement) {\n        const { type } = el;\n        return type !== \"text\" && type !== \"number\";\n      }\n      return true;\n    };\n\n    const small = this.TRANSLATE_SMALL;\n    const big = this.TRANSLATE_BIG;\n\n    return shadow(\n      this,\n      \"_keyboardManager\",\n      new KeyboardManager([\n        [\n          [\"ctrl+a\", \"mac+meta+a\"],\n          proto.selectAll,\n          { checker: textInputChecker },\n        ],\n        [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, { checker: textInputChecker }],\n        [\n          // On mac, depending of the OS version, the event.key is either \"z\" or\n          // \"Z\" when the user presses \"meta+shift+z\".\n          [\n            \"ctrl+y\",\n            \"ctrl+shift+z\",\n            \"mac+meta+shift+z\",\n            \"ctrl+shift+Z\",\n            \"mac+meta+shift+Z\",\n          ],\n          proto.redo,\n          { checker: textInputChecker },\n        ],\n        [\n          [\n            \"Backspace\",\n            \"alt+Backspace\",\n            \"ctrl+Backspace\",\n            \"shift+Backspace\",\n            \"mac+Backspace\",\n            \"mac+alt+Backspace\",\n            \"mac+ctrl+Backspace\",\n            \"Delete\",\n            \"ctrl+Delete\",\n            \"shift+Delete\",\n            \"mac+Delete\",\n          ],\n          proto.delete,\n          { checker: textInputChecker },\n        ],\n        [\n          [\"Enter\", \"mac+Enter\"],\n          proto.addNewEditorFromKeyboard,\n          {\n            // Those shortcuts can be used in the toolbar for some other actions\n            // like zooming, hence we need to check if the container has the\n            // focus.\n            checker: self =>\n              self.#container.contains(document.activeElement) &&\n              !self.isEnterHandled,\n          },\n        ],\n        [\n          [\" \", \"mac+ \"],\n          proto.addNewEditorFromKeyboard,\n          {\n            // Those shortcuts can be used in the toolbar for some other actions\n            // like zooming, hence we need to check if the container has the\n            // focus.\n            checker: self => self.#container.contains(document.activeElement),\n          },\n        ],\n        [[\"Escape\", \"mac+Escape\"], proto.unselectAll],\n        [\n          [\"ArrowLeft\", \"mac+ArrowLeft\"],\n          proto.translateSelectedEditors,\n          { args: [-small, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"],\n          proto.translateSelectedEditors,\n          { args: [-big, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ArrowRight\", \"mac+ArrowRight\"],\n          proto.translateSelectedEditors,\n          { args: [small, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"],\n          proto.translateSelectedEditors,\n          { args: [big, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ArrowUp\", \"mac+ArrowUp\"],\n          proto.translateSelectedEditors,\n          { args: [0, -small], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"],\n          proto.translateSelectedEditors,\n          { args: [0, -big], checker: arrowChecker },\n        ],\n        [\n          [\"ArrowDown\", \"mac+ArrowDown\"],\n          proto.translateSelectedEditors,\n          { args: [0, small], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"],\n          proto.translateSelectedEditors,\n          { args: [0, big], checker: arrowChecker },\n        ],\n      ])\n    );\n  }\n\n  constructor(\n    container,\n    viewer,\n    altTextManager,\n    eventBus,\n    pdfDocument,\n    pageColors\n  ) {\n    this.#container = container;\n    this.#viewer = viewer;\n    this.#altTextManager = altTextManager;\n    this._eventBus = eventBus;\n    this._eventBus._on(\"editingaction\", this.#boundOnEditingAction);\n    this._eventBus._on(\"pagechanging\", this.#boundOnPageChanging);\n    this._eventBus._on(\"scalechanging\", this.#boundOnScaleChanging);\n    this._eventBus._on(\"rotationchanging\", this.#boundOnRotationChanging);\n    this.#annotationStorage = pdfDocument.annotationStorage;\n    this.#filterFactory = pdfDocument.filterFactory;\n    this.#pageColors = pageColors;\n    this.viewParameters = {\n      realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n      rotation: 0,\n    };\n  }\n\n  destroy() {\n    this.#removeKeyboardManager();\n    this.#removeFocusManager();\n    this._eventBus._off(\"editingaction\", this.#boundOnEditingAction);\n    this._eventBus._off(\"pagechanging\", this.#boundOnPageChanging);\n    this._eventBus._off(\"scalechanging\", this.#boundOnScaleChanging);\n    this._eventBus._off(\"rotationchanging\", this.#boundOnRotationChanging);\n    for (const layer of this.#allLayers.values()) {\n      layer.destroy();\n    }\n    this.#allLayers.clear();\n    this.#allEditors.clear();\n    this.#editorsToRescale.clear();\n    this.#activeEditor = null;\n    this.#selectedEditors.clear();\n    this.#commandManager.destroy();\n    this.#altTextManager.destroy();\n    if (this.#focusMainContainerTimeoutId) {\n      clearTimeout(this.#focusMainContainerTimeoutId);\n      this.#focusMainContainerTimeoutId = null;\n    }\n    if (this.#translationTimeoutId) {\n      clearTimeout(this.#translationTimeoutId);\n      this.#translationTimeoutId = null;\n    }\n  }\n\n  get hcmFilter() {\n    return shadow(\n      this,\n      \"hcmFilter\",\n      this.#pageColors\n        ? this.#filterFactory.addHCMFilter(\n            this.#pageColors.foreground,\n            this.#pageColors.background\n          )\n        : \"none\"\n    );\n  }\n\n  get direction() {\n    return shadow(\n      this,\n      \"direction\",\n      getComputedStyle(this.#container).direction\n    );\n  }\n\n  editAltText(editor) {\n    this.#altTextManager?.editAltText(this, editor);\n  }\n\n  onPageChanging({ pageNumber }) {\n    this.#currentPageIndex = pageNumber - 1;\n  }\n\n  focusMainContainer() {\n    this.#container.focus();\n  }\n\n  findParent(x, y) {\n    for (const layer of this.#allLayers.values()) {\n      const {\n        x: layerX,\n        y: layerY,\n        width,\n        height,\n      } = layer.div.getBoundingClientRect();\n      if (\n        x >= layerX &&\n        x <= layerX + width &&\n        y >= layerY &&\n        y <= layerY + height\n      ) {\n        return layer;\n      }\n    }\n    return null;\n  }\n\n  disableUserSelect(value = false) {\n    this.#viewer.classList.toggle(\"noUserSelect\", value);\n  }\n\n  addShouldRescale(editor) {\n    this.#editorsToRescale.add(editor);\n  }\n\n  removeShouldRescale(editor) {\n    this.#editorsToRescale.delete(editor);\n  }\n\n  onScaleChanging({ scale }) {\n    this.commitOrRemove();\n    this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n    for (const editor of this.#editorsToRescale) {\n      editor.onScaleChanging();\n    }\n  }\n\n  onRotationChanging({ pagesRotation }) {\n    this.commitOrRemove();\n    this.viewParameters.rotation = pagesRotation;\n  }\n\n  /**\n   * Add an editor in the annotation storage.\n   * @param {AnnotationEditor} editor\n   */\n  addToAnnotationStorage(editor) {\n    if (\n      !editor.isEmpty() &&\n      this.#annotationStorage &&\n      !this.#annotationStorage.has(editor.id)\n    ) {\n      this.#annotationStorage.setValue(editor.id, editor);\n    }\n  }\n\n  #addFocusManager() {\n    window.addEventListener(\"focus\", this.#boundFocus);\n    window.addEventListener(\"blur\", this.#boundBlur);\n  }\n\n  #removeFocusManager() {\n    window.removeEventListener(\"focus\", this.#boundFocus);\n    window.removeEventListener(\"blur\", this.#boundBlur);\n  }\n\n  blur() {\n    if (!this.hasSelection) {\n      return;\n    }\n    // When several editors are selected and the window loses focus, we want to\n    // keep the last active element in order to be able to focus it again when\n    // the window gets the focus back but we don't want to trigger any focus\n    // callbacks else only one editor will be selected.\n    const { activeElement } = document;\n    for (const editor of this.#selectedEditors) {\n      if (editor.div.contains(activeElement)) {\n        this.#lastActiveElement = [editor, activeElement];\n        editor._focusEventsAllowed = false;\n        break;\n      }\n    }\n  }\n\n  focus() {\n    if (!this.#lastActiveElement) {\n      return;\n    }\n    const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n    this.#lastActiveElement = null;\n    lastActiveElement.addEventListener(\n      \"focusin\",\n      () => {\n        lastEditor._focusEventsAllowed = true;\n      },\n      { once: true }\n    );\n    lastActiveElement.focus();\n  }\n\n  #addKeyboardManager() {\n    // The keyboard events are caught at the container level in order to be able\n    // to execute some callbacks even if the current page doesn't have focus.\n    window.addEventListener(\"keydown\", this.#boundKeydown);\n  }\n\n  #removeKeyboardManager() {\n    window.removeEventListener(\"keydown\", this.#boundKeydown);\n  }\n\n  #addCopyPasteListeners() {\n    document.addEventListener(\"copy\", this.#boundCopy);\n    document.addEventListener(\"cut\", this.#boundCut);\n    document.addEventListener(\"paste\", this.#boundPaste);\n  }\n\n  #removeCopyPasteListeners() {\n    document.removeEventListener(\"copy\", this.#boundCopy);\n    document.removeEventListener(\"cut\", this.#boundCut);\n    document.removeEventListener(\"paste\", this.#boundPaste);\n  }\n\n  addEditListeners() {\n    this.#addKeyboardManager();\n    this.#addCopyPasteListeners();\n  }\n\n  removeEditListeners() {\n    this.#removeKeyboardManager();\n    this.#removeCopyPasteListeners();\n  }\n\n  /**\n   * Copy callback.\n   * @param {ClipboardEvent} event\n   */\n  copy(event) {\n    event.preventDefault();\n\n    // An editor is being edited so just commit it.\n    this.#activeEditor?.commitOrRemove();\n\n    if (!this.hasSelection) {\n      return;\n    }\n\n    const editors = [];\n    for (const editor of this.#selectedEditors) {\n      const serialized = editor.serialize(/* isForCopying = */ true);\n      if (serialized) {\n        editors.push(serialized);\n      }\n    }\n    if (editors.length === 0) {\n      return;\n    }\n\n    event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n  }\n\n  /**\n   * Cut callback.\n   * @param {ClipboardEvent} event\n   */\n  cut(event) {\n    this.copy(event);\n    this.delete();\n  }\n\n  /**\n   * Paste callback.\n   * @param {ClipboardEvent} event\n   */\n  paste(event) {\n    event.preventDefault();\n    const { clipboardData } = event;\n    for (const item of clipboardData.items) {\n      for (const editorType of this.#editorTypes) {\n        if (editorType.isHandlingMimeForPasting(item.type)) {\n          editorType.paste(item, this.currentLayer);\n          return;\n        }\n      }\n    }\n\n    let data = clipboardData.getData(\"application/pdfjs\");\n    if (!data) {\n      return;\n    }\n\n    try {\n      data = JSON.parse(data);\n    } catch (ex) {\n      warn(`paste: \"${ex.message}\".`);\n      return;\n    }\n\n    if (!Array.isArray(data)) {\n      return;\n    }\n\n    this.unselectAll();\n    const layer = this.currentLayer;\n\n    try {\n      const newEditors = [];\n      for (const editor of data) {\n        const deserializedEditor = layer.deserialize(editor);\n        if (!deserializedEditor) {\n          return;\n        }\n        newEditors.push(deserializedEditor);\n      }\n\n      const cmd = () => {\n        for (const editor of newEditors) {\n          this.#addEditorToLayer(editor);\n        }\n        this.#selectEditors(newEditors);\n      };\n      const undo = () => {\n        for (const editor of newEditors) {\n          editor.remove();\n        }\n      };\n      this.addCommands({ cmd, undo, mustExec: true });\n    } catch (ex) {\n      warn(`paste: \"${ex.message}\".`);\n    }\n  }\n\n  /**\n   * Keydown callback.\n   * @param {KeyboardEvent} event\n   */\n  keydown(event) {\n    if (!this.isEditorHandlingKeyboard) {\n      AnnotationEditorUIManager._keyboardManager.exec(this, event);\n    }\n  }\n\n  /**\n   * Execute an action for a given name.\n   * For example, the user can click on the \"Undo\" entry in the context menu\n   * and it'll trigger the undo action.\n   * @param {Object} details\n   */\n  onEditingAction(details) {\n    if ([\"undo\", \"redo\", \"delete\", \"selectAll\"].includes(details.name)) {\n      this[details.name]();\n    }\n  }\n\n  /**\n   * Update the different possible states of this manager, e.g. is there\n   * something to undo, redo, ...\n   * @param {Object} details\n   */\n  #dispatchUpdateStates(details) {\n    const hasChanged = Object.entries(details).some(\n      ([key, value]) => this.#previousStates[key] !== value\n    );\n\n    if (hasChanged) {\n      this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n        source: this,\n        details: Object.assign(this.#previousStates, details),\n      });\n    }\n  }\n\n  #dispatchUpdateUI(details) {\n    this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n      source: this,\n      details,\n    });\n  }\n\n  /**\n   * Set the editing state.\n   * It can be useful to temporarily disable it when the user is editing a\n   * FreeText annotation.\n   * @param {boolean} isEditing\n   */\n  setEditingState(isEditing) {\n    if (isEditing) {\n      this.#addFocusManager();\n      this.#addKeyboardManager();\n      this.#addCopyPasteListeners();\n      this.#dispatchUpdateStates({\n        isEditing: this.#mode !== AnnotationEditorType.NONE,\n        isEmpty: this.#isEmpty(),\n        hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n        hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n        hasSelectedEditor: false,\n      });\n    } else {\n      this.#removeFocusManager();\n      this.#removeKeyboardManager();\n      this.#removeCopyPasteListeners();\n      this.#dispatchUpdateStates({\n        isEditing: false,\n      });\n      this.disableUserSelect(false);\n    }\n  }\n\n  registerEditorTypes(types) {\n    if (this.#editorTypes) {\n      return;\n    }\n    this.#editorTypes = types;\n    for (const editorType of this.#editorTypes) {\n      this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n    }\n  }\n\n  /**\n   * Get an id.\n   * @returns {string}\n   */\n  getId() {\n    return this.#idManager.getId();\n  }\n\n  get currentLayer() {\n    return this.#allLayers.get(this.#currentPageIndex);\n  }\n\n  getLayer(pageIndex) {\n    return this.#allLayers.get(pageIndex);\n  }\n\n  get currentPageIndex() {\n    return this.#currentPageIndex;\n  }\n\n  /**\n   * Add a new layer for a page which will contains the editors.\n   * @param {AnnotationEditorLayer} layer\n   */\n  addLayer(layer) {\n    this.#allLayers.set(layer.pageIndex, layer);\n    if (this.#isEnabled) {\n      layer.enable();\n    } else {\n      layer.disable();\n    }\n  }\n\n  /**\n   * Remove a layer.\n   * @param {AnnotationEditorLayer} layer\n   */\n  removeLayer(layer) {\n    this.#allLayers.delete(layer.pageIndex);\n  }\n\n  /**\n   * Change the editor mode (None, FreeText, Ink, ...)\n   * @param {number} mode\n   * @param {string|null} editId\n   * @param {boolean} [isFromKeyboard] - true if the mode change is due to a\n   *   keyboard action.\n   */\n  updateMode(mode, editId = null, isFromKeyboard = false) {\n    if (this.#mode === mode) {\n      return;\n    }\n    this.#mode = mode;\n    if (mode === AnnotationEditorType.NONE) {\n      this.setEditingState(false);\n      this.#disableAll();\n      return;\n    }\n    this.setEditingState(true);\n    this.#enableAll();\n    this.unselectAll();\n    for (const layer of this.#allLayers.values()) {\n      layer.updateMode(mode);\n    }\n    if (!editId && isFromKeyboard) {\n      this.addNewEditorFromKeyboard();\n      return;\n    }\n\n    if (!editId) {\n      return;\n    }\n    for (const editor of this.#allEditors.values()) {\n      if (editor.annotationElementId === editId) {\n        this.setSelected(editor);\n        editor.enterInEditMode();\n        break;\n      }\n    }\n  }\n\n  addNewEditorFromKeyboard() {\n    this.currentLayer.addNewEditor();\n  }\n\n  /**\n   * Update the toolbar if it's required to reflect the tool currently used.\n   * @param {number} mode\n   * @returns {undefined}\n   */\n  updateToolbar(mode) {\n    if (mode === this.#mode) {\n      return;\n    }\n    this._eventBus.dispatch(\"switchannotationeditormode\", {\n      source: this,\n      mode,\n    });\n  }\n\n  /**\n   * Update a parameter in the current editor or globally.\n   * @param {number} type\n   * @param {*} value\n   */\n  updateParams(type, value) {\n    if (!this.#editorTypes) {\n      return;\n    }\n    if (type === AnnotationEditorParamsType.CREATE) {\n      this.currentLayer.addNewEditor();\n      return;\n    }\n\n    for (const editor of this.#selectedEditors) {\n      editor.updateParams(type, value);\n    }\n\n    for (const editorType of this.#editorTypes) {\n      editorType.updateDefaultParams(type, value);\n    }\n  }\n\n  enableWaiting(mustWait = false) {\n    if (this.#isWaiting === mustWait) {\n      return;\n    }\n    this.#isWaiting = mustWait;\n    for (const layer of this.#allLayers.values()) {\n      if (mustWait) {\n        layer.disableClick();\n      } else {\n        layer.enableClick();\n      }\n      layer.div.classList.toggle(\"waiting\", mustWait);\n    }\n  }\n\n  /**\n   * Enable all the layers.\n   */\n  #enableAll() {\n    if (!this.#isEnabled) {\n      this.#isEnabled = true;\n      for (const layer of this.#allLayers.values()) {\n        layer.enable();\n      }\n    }\n  }\n\n  /**\n   * Disable all the layers.\n   */\n  #disableAll() {\n    this.unselectAll();\n    if (this.#isEnabled) {\n      this.#isEnabled = false;\n      for (const layer of this.#allLayers.values()) {\n        layer.disable();\n      }\n    }\n  }\n\n  /**\n   * Get all the editors belonging to a given page.\n   * @param {number} pageIndex\n   * @returns {Array<AnnotationEditor>}\n   */\n  getEditors(pageIndex) {\n    const editors = [];\n    for (const editor of this.#allEditors.values()) {\n      if (editor.pageIndex === pageIndex) {\n        editors.push(editor);\n      }\n    }\n    return editors;\n  }\n\n  /**\n   * Get an editor with the given id.\n   * @param {string} id\n   * @returns {AnnotationEditor}\n   */\n  getEditor(id) {\n    return this.#allEditors.get(id);\n  }\n\n  /**\n   * Add a new editor.\n   * @param {AnnotationEditor} editor\n   */\n  addEditor(editor) {\n    this.#allEditors.set(editor.id, editor);\n  }\n\n  /**\n   * Remove an editor.\n   * @param {AnnotationEditor} editor\n   */\n  removeEditor(editor) {\n    if (editor.div.contains(document.activeElement)) {\n      if (this.#focusMainContainerTimeoutId) {\n        clearTimeout(this.#focusMainContainerTimeoutId);\n      }\n      this.#focusMainContainerTimeoutId = setTimeout(() => {\n        // When the div is removed from DOM the focus can move on the\n        // document.body, so we need to move it back to the main container.\n        this.focusMainContainer();\n        this.#focusMainContainerTimeoutId = null;\n      }, 0);\n    }\n    this.#allEditors.delete(editor.id);\n    this.unselect(editor);\n    if (\n      !editor.annotationElementId ||\n      !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)\n    ) {\n      this.#annotationStorage?.remove(editor.id);\n    }\n  }\n\n  /**\n   * The annotation element with the given id has been deleted.\n   * @param {AnnotationEditor} editor\n   */\n  addDeletedAnnotationElement(editor) {\n    this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n    editor.deleted = true;\n  }\n\n  /**\n   * Check if the annotation element with the given id has been deleted.\n   * @param {string} annotationElementId\n   * @returns {boolean}\n   */\n  isDeletedAnnotationElement(annotationElementId) {\n    return this.#deletedAnnotationsElementIds.has(annotationElementId);\n  }\n\n  /**\n   * The annotation element with the given id have been restored.\n   * @param {AnnotationEditor} editor\n   */\n  removeDeletedAnnotationElement(editor) {\n    this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n    editor.deleted = false;\n  }\n\n  /**\n   * Add an editor to the layer it belongs to or add it to the global map.\n   * @param {AnnotationEditor} editor\n   */\n  #addEditorToLayer(editor) {\n    const layer = this.#allLayers.get(editor.pageIndex);\n    if (layer) {\n      layer.addOrRebuild(editor);\n    } else {\n      this.addEditor(editor);\n    }\n  }\n\n  /**\n   * Set the given editor as the active one.\n   * @param {AnnotationEditor} editor\n   */\n  setActiveEditor(editor) {\n    if (this.#activeEditor === editor) {\n      return;\n    }\n\n    this.#activeEditor = editor;\n    if (editor) {\n      this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    }\n  }\n\n  /**\n   * Add or remove an editor the current selection.\n   * @param {AnnotationEditor} editor\n   */\n  toggleSelected(editor) {\n    if (this.#selectedEditors.has(editor)) {\n      this.#selectedEditors.delete(editor);\n      editor.unselect();\n      this.#dispatchUpdateStates({\n        hasSelectedEditor: this.hasSelection,\n      });\n      return;\n    }\n    this.#selectedEditors.add(editor);\n    editor.select();\n    this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: true,\n    });\n  }\n\n  /**\n   * Set the last selected editor.\n   * @param {AnnotationEditor} editor\n   */\n  setSelected(editor) {\n    for (const ed of this.#selectedEditors) {\n      if (ed !== editor) {\n        ed.unselect();\n      }\n    }\n    this.#selectedEditors.clear();\n\n    this.#selectedEditors.add(editor);\n    editor.select();\n    this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: true,\n    });\n  }\n\n  /**\n   * Check if the editor is selected.\n   * @param {AnnotationEditor} editor\n   */\n  isSelected(editor) {\n    return this.#selectedEditors.has(editor);\n  }\n\n  get firstSelectedEditor() {\n    return this.#selectedEditors.values().next().value;\n  }\n\n  /**\n   * Unselect an editor.\n   * @param {AnnotationEditor} editor\n   */\n  unselect(editor) {\n    editor.unselect();\n    this.#selectedEditors.delete(editor);\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: this.hasSelection,\n    });\n  }\n\n  get hasSelection() {\n    return this.#selectedEditors.size !== 0;\n  }\n\n  get isEnterHandled() {\n    return (\n      this.#selectedEditors.size === 1 &&\n      this.firstSelectedEditor.isEnterHandled\n    );\n  }\n\n  /**\n   * Undo the last command.\n   */\n  undo() {\n    this.#commandManager.undo();\n    this.#dispatchUpdateStates({\n      hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n      hasSomethingToRedo: true,\n      isEmpty: this.#isEmpty(),\n    });\n  }\n\n  /**\n   * Redo the last undoed command.\n   */\n  redo() {\n    this.#commandManager.redo();\n    this.#dispatchUpdateStates({\n      hasSomethingToUndo: true,\n      hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n      isEmpty: this.#isEmpty(),\n    });\n  }\n\n  /**\n   * Add a command to execute (cmd) and another one to undo it.\n   * @param {Object} params\n   */\n  addCommands(params) {\n    this.#commandManager.add(params);\n    this.#dispatchUpdateStates({\n      hasSomethingToUndo: true,\n      hasSomethingToRedo: false,\n      isEmpty: this.#isEmpty(),\n    });\n  }\n\n  #isEmpty() {\n    if (this.#allEditors.size === 0) {\n      return true;\n    }\n\n    if (this.#allEditors.size === 1) {\n      for (const editor of this.#allEditors.values()) {\n        return editor.isEmpty();\n      }\n    }\n\n    return false;\n  }\n\n  /**\n   * Delete the current editor or all.\n   */\n  delete() {\n    this.commitOrRemove();\n    if (!this.hasSelection) {\n      return;\n    }\n\n    const editors = [...this.#selectedEditors];\n    const cmd = () => {\n      for (const editor of editors) {\n        editor.remove();\n      }\n    };\n    const undo = () => {\n      for (const editor of editors) {\n        this.#addEditorToLayer(editor);\n      }\n    };\n\n    this.addCommands({ cmd, undo, mustExec: true });\n  }\n\n  commitOrRemove() {\n    // An editor is being edited so just commit it.\n    this.#activeEditor?.commitOrRemove();\n  }\n\n  hasSomethingToControl() {\n    return this.#activeEditor || this.hasSelection;\n  }\n\n  /**\n   * Select the editors.\n   * @param {Array<AnnotationEditor>} editors\n   */\n  #selectEditors(editors) {\n    this.#selectedEditors.clear();\n    for (const editor of editors) {\n      if (editor.isEmpty()) {\n        continue;\n      }\n      this.#selectedEditors.add(editor);\n      editor.select();\n    }\n    this.#dispatchUpdateStates({ hasSelectedEditor: true });\n  }\n\n  /**\n   * Select all the editors.\n   */\n  selectAll() {\n    for (const editor of this.#selectedEditors) {\n      editor.commit();\n    }\n    this.#selectEditors(this.#allEditors.values());\n  }\n\n  /**\n   * Unselect all the selected editors.\n   */\n  unselectAll() {\n    if (this.#activeEditor) {\n      // An editor is being edited so just commit it.\n      this.#activeEditor.commitOrRemove();\n      return;\n    }\n\n    if (!this.hasSelection) {\n      return;\n    }\n    for (const editor of this.#selectedEditors) {\n      editor.unselect();\n    }\n    this.#selectedEditors.clear();\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: false,\n    });\n  }\n\n  translateSelectedEditors(x, y, noCommit = false) {\n    if (!noCommit) {\n      this.commitOrRemove();\n    }\n    if (!this.hasSelection) {\n      return;\n    }\n\n    this.#translation[0] += x;\n    this.#translation[1] += y;\n    const [totalX, totalY] = this.#translation;\n    const editors = [...this.#selectedEditors];\n\n    // We don't want to have an undo/redo for each translation so we wait a bit\n    // before adding the command to the command manager.\n    const TIME_TO_WAIT = 1000;\n\n    if (this.#translationTimeoutId) {\n      clearTimeout(this.#translationTimeoutId);\n    }\n\n    this.#translationTimeoutId = setTimeout(() => {\n      this.#translationTimeoutId = null;\n      this.#translation[0] = this.#translation[1] = 0;\n\n      this.addCommands({\n        cmd: () => {\n          for (const editor of editors) {\n            if (this.#allEditors.has(editor.id)) {\n              editor.translateInPage(totalX, totalY);\n            }\n          }\n        },\n        undo: () => {\n          for (const editor of editors) {\n            if (this.#allEditors.has(editor.id)) {\n              editor.translateInPage(-totalX, -totalY);\n            }\n          }\n        },\n        mustExec: false,\n      });\n    }, TIME_TO_WAIT);\n\n    for (const editor of editors) {\n      editor.translateInPage(x, y);\n    }\n  }\n\n  /**\n   * Set up the drag session for moving the selected editors.\n   */\n  setUpDragSession() {\n    // Note: don't use any references to the editor's parent which can be null\n    // if the editor belongs to a destroyed page.\n    if (!this.hasSelection) {\n      return;\n    }\n    // Avoid to have spurious text selection in the text layer when dragging.\n    this.disableUserSelect(true);\n    this.#draggingEditors = new Map();\n    for (const editor of this.#selectedEditors) {\n      this.#draggingEditors.set(editor, {\n        savedX: editor.x,\n        savedY: editor.y,\n        savedPageIndex: editor.pageIndex,\n        newX: 0,\n        newY: 0,\n        newPageIndex: -1,\n      });\n    }\n  }\n\n  /**\n   * Ends the drag session.\n   * @returns {boolean} true if at least one editor has been moved.\n   */\n  endDragSession() {\n    if (!this.#draggingEditors) {\n      return false;\n    }\n    this.disableUserSelect(false);\n    const map = this.#draggingEditors;\n    this.#draggingEditors = null;\n    let mustBeAddedInUndoStack = false;\n\n    for (const [{ x, y, pageIndex }, value] of map) {\n      value.newX = x;\n      value.newY = y;\n      value.newPageIndex = pageIndex;\n      mustBeAddedInUndoStack ||=\n        x !== value.savedX ||\n        y !== value.savedY ||\n        pageIndex !== value.savedPageIndex;\n    }\n\n    if (!mustBeAddedInUndoStack) {\n      return false;\n    }\n\n    const move = (editor, x, y, pageIndex) => {\n      if (this.#allEditors.has(editor.id)) {\n        // The editor can be undone/redone on a page which is not visible (and\n        // which potentially has no annotation editor layer), hence we need to\n        // use the pageIndex instead of the parent.\n        const parent = this.#allLayers.get(pageIndex);\n        if (parent) {\n          editor._setParentAndPosition(parent, x, y);\n        } else {\n          editor.pageIndex = pageIndex;\n          editor.x = x;\n          editor.y = y;\n        }\n      }\n    };\n\n    this.addCommands({\n      cmd: () => {\n        for (const [editor, { newX, newY, newPageIndex }] of map) {\n          move(editor, newX, newY, newPageIndex);\n        }\n      },\n      undo: () => {\n        for (const [editor, { savedX, savedY, savedPageIndex }] of map) {\n          move(editor, savedX, savedY, savedPageIndex);\n        }\n      },\n      mustExec: true,\n    });\n\n    return true;\n  }\n\n  /**\n   * Drag the set of selected editors.\n   * @param {number} tx\n   * @param {number} ty\n   */\n  dragSelectedEditors(tx, ty) {\n    if (!this.#draggingEditors) {\n      return;\n    }\n    for (const editor of this.#draggingEditors.keys()) {\n      editor.drag(tx, ty);\n    }\n  }\n\n  /**\n   * Rebuild the editor (usually on undo/redo actions) on a potentially\n   * non-rendered page.\n   * @param {AnnotationEditor} editor\n   */\n  rebuild(editor) {\n    if (editor.parent === null) {\n      const parent = this.getLayer(editor.pageIndex);\n      if (parent) {\n        parent.changeParent(editor);\n        parent.addOrRebuild(editor);\n      } else {\n        this.addEditor(editor);\n        this.addToAnnotationStorage(editor);\n        editor.rebuild();\n      }\n    } else {\n      editor.parent.addOrRebuild(editor);\n    }\n  }\n\n  get isEditorHandlingKeyboard() {\n    return (\n      this.getActive()?.shouldGetKeyboardEvents() ||\n      (this.#selectedEditors.size === 1 &&\n        this.firstSelectedEditor.shouldGetKeyboardEvents())\n    );\n  }\n\n  /**\n   * Is the current editor the one passed as argument?\n   * @param {AnnotationEditor} editor\n   * @returns\n   */\n  isActive(editor) {\n    return this.#activeEditor === editor;\n  }\n\n  /**\n   * Get the current active editor.\n   * @returns {AnnotationEditor|null}\n   */\n  getActive() {\n    return this.#activeEditor;\n  }\n\n  /**\n   * Get the current editor mode.\n   * @returns {number}\n   */\n  getMode() {\n    return this.#mode;\n  }\n\n  get imageManager() {\n    return shadow(this, \"imageManager\", new ImageManager());\n  }\n}\n\nexport {\n  AnnotationEditorUIManager,\n  bindEvents,\n  ColorManager,\n  CommandManager,\n  KeyboardManager,\n  opacityToHex,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AbortException,\n  assert,\n  PromiseCapability,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  createResponseStatusError,\n  extractFilenameFromHeader,\n  validateRangeRequestCapabilities,\n  validateResponseStatus,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n  throw new Error(\n    'Module \"./fetch_stream.js\" shall not be used with MOZCENTRAL builds.'\n  );\n}\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n  return {\n    method: \"GET\",\n    headers,\n    signal: abortController.signal,\n    mode: \"cors\",\n    credentials: withCredentials ? \"include\" : \"same-origin\",\n    redirect: \"follow\",\n  };\n}\n\nfunction createHeaders(httpHeaders) {\n  const headers = new Headers();\n  for (const property in httpHeaders) {\n    const value = httpHeaders[property];\n    if (value === undefined) {\n      continue;\n    }\n    headers.append(property, value);\n  }\n  return headers;\n}\n\nfunction getArrayBuffer(val) {\n  if (val instanceof Uint8Array) {\n    return val.buffer;\n  }\n  if (val instanceof ArrayBuffer) {\n    return val;\n  }\n  warn(`getArrayBuffer - unexpected data format: ${val}`);\n  return new Uint8Array(val).buffer;\n}\n\n/** @implements {IPDFStream} */\nclass PDFFetchStream {\n  constructor(source) {\n    this.source = source;\n    this.isHttp = /^https?:/i.test(source.url);\n    this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n\n  getFullReader() {\n    assert(\n      !this._fullRequestReader,\n      \"PDFFetchStream.getFullReader can only be called once.\"\n    );\n    this._fullRequestReader = new PDFFetchStreamReader(this);\n    return this._fullRequestReader;\n  }\n\n  getRangeReader(begin, end) {\n    if (end <= this._progressiveDataLength) {\n      return null;\n    }\n    const reader = new PDFFetchStreamRangeReader(this, begin, end);\n    this._rangeRequestReaders.push(reader);\n    return reader;\n  }\n\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFFetchStreamReader {\n  constructor(stream) {\n    this._stream = stream;\n    this._reader = null;\n    this._loaded = 0;\n    this._filename = null;\n    const source = stream.source;\n    this._withCredentials = source.withCredentials || false;\n    this._contentLength = source.length;\n    this._headersCapability = new PromiseCapability();\n    this._disableRange = source.disableRange || false;\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n\n    this._abortController = new AbortController();\n    this._isStreamingSupported = !source.disableStream;\n    this._isRangeSupported = !source.disableRange;\n\n    this._headers = createHeaders(this._stream.httpHeaders);\n\n    const url = source.url;\n    fetch(\n      url,\n      createFetchOptions(\n        this._headers,\n        this._withCredentials,\n        this._abortController\n      )\n    )\n      .then(response => {\n        if (!validateResponseStatus(response.status)) {\n          throw createResponseStatusError(response.status, url);\n        }\n        this._reader = response.body.getReader();\n        this._headersCapability.resolve();\n\n        const getResponseHeader = name => {\n          return response.headers.get(name);\n        };\n        const { allowRangeRequests, suggestedLength } =\n          validateRangeRequestCapabilities({\n            getResponseHeader,\n            isHttp: this._stream.isHttp,\n            rangeChunkSize: this._rangeChunkSize,\n            disableRange: this._disableRange,\n          });\n\n        this._isRangeSupported = allowRangeRequests;\n        // Setting right content length.\n        this._contentLength = suggestedLength || this._contentLength;\n\n        this._filename = extractFilenameFromHeader(getResponseHeader);\n\n        // We need to stop reading when range is supported and streaming is\n        // disabled.\n        if (!this._isStreamingSupported && this._isRangeSupported) {\n          this.cancel(new AbortException(\"Streaming is disabled.\"));\n        }\n      })\n      .catch(this._headersCapability.reject);\n\n    this.onProgress = null;\n  }\n\n  get headersReady() {\n    return this._headersCapability.promise;\n  }\n\n  get filename() {\n    return this._filename;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._headersCapability.promise;\n    const { value, done } = await this._reader.read();\n    if (done) {\n      return { value, done };\n    }\n    this._loaded += value.byteLength;\n    this.onProgress?.({\n      loaded: this._loaded,\n      total: this._contentLength,\n    });\n\n    return { value: getArrayBuffer(value), done: false };\n  }\n\n  cancel(reason) {\n    this._reader?.cancel(reason);\n    this._abortController.abort();\n  }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFFetchStreamRangeReader {\n  constructor(stream, begin, end) {\n    this._stream = stream;\n    this._reader = null;\n    this._loaded = 0;\n    const source = stream.source;\n    this._withCredentials = source.withCredentials || false;\n    this._readCapability = new PromiseCapability();\n    this._isStreamingSupported = !source.disableStream;\n\n    this._abortController = new AbortController();\n    this._headers = createHeaders(this._stream.httpHeaders);\n    this._headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n\n    const url = source.url;\n    fetch(\n      url,\n      createFetchOptions(\n        this._headers,\n        this._withCredentials,\n        this._abortController\n      )\n    )\n      .then(response => {\n        if (!validateResponseStatus(response.status)) {\n          throw createResponseStatusError(response.status, url);\n        }\n        this._readCapability.resolve();\n        this._reader = response.body.getReader();\n      })\n      .catch(this._readCapability.reject);\n\n    this.onProgress = null;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._readCapability.promise;\n    const { value, done } = await this._reader.read();\n    if (done) {\n      return { value, done };\n    }\n    this._loaded += value.byteLength;\n    this.onProgress?.({ loaded: this._loaded });\n\n    return { value: getArrayBuffer(value), done: false };\n  }\n\n  cancel(reason) {\n    this._reader?.cancel(reason);\n    this._abortController.abort();\n  }\n}\n\nexport { PDFFetchStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  bytesToString,\n  FeatureTest,\n  isNodeJS,\n  shadow,\n  string32,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\n\nclass FontLoader {\n  #systemFonts = new Set();\n\n  constructor({\n    ownerDocument = globalThis.document,\n    styleElement = null, // For testing only.\n  }) {\n    this._document = ownerDocument;\n\n    this.nativeFontFaces = new Set();\n    this.styleElement =\n      typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")\n        ? styleElement\n        : null;\n\n    if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n      this.loadingRequests = [];\n      this.loadTestFontId = 0;\n    }\n  }\n\n  addNativeFontFace(nativeFontFace) {\n    this.nativeFontFaces.add(nativeFontFace);\n    this._document.fonts.add(nativeFontFace);\n  }\n\n  removeNativeFontFace(nativeFontFace) {\n    this.nativeFontFaces.delete(nativeFontFace);\n    this._document.fonts.delete(nativeFontFace);\n  }\n\n  insertRule(rule) {\n    if (!this.styleElement) {\n      this.styleElement = this._document.createElement(\"style\");\n      this._document.documentElement\n        .getElementsByTagName(\"head\")[0]\n        .append(this.styleElement);\n    }\n    const styleSheet = this.styleElement.sheet;\n    styleSheet.insertRule(rule, styleSheet.cssRules.length);\n  }\n\n  clear() {\n    for (const nativeFontFace of this.nativeFontFaces) {\n      this._document.fonts.delete(nativeFontFace);\n    }\n    this.nativeFontFaces.clear();\n    this.#systemFonts.clear();\n\n    if (this.styleElement) {\n      // Note: ChildNode.remove doesn't throw if the parentNode is undefined.\n      this.styleElement.remove();\n      this.styleElement = null;\n    }\n  }\n\n  async loadSystemFont({ systemFontInfo: info, _inspectFont }) {\n    if (!info || this.#systemFonts.has(info.loadedName)) {\n      return;\n    }\n    assert(\n      !this.disableFontFace,\n      \"loadSystemFont shouldn't be called when `disableFontFace` is set.\"\n    );\n\n    if (this.isFontLoadingAPISupported) {\n      const { loadedName, src, style } = info;\n      const fontFace = new FontFace(loadedName, src, style);\n      this.addNativeFontFace(fontFace);\n      try {\n        await fontFace.load();\n        this.#systemFonts.add(loadedName);\n        _inspectFont?.(info);\n      } catch {\n        warn(\n          `Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`\n        );\n\n        this.removeNativeFontFace(fontFace);\n      }\n      return;\n    }\n\n    unreachable(\n      \"Not implemented: loadSystemFont without the Font Loading API.\"\n    );\n  }\n\n  async bind(font) {\n    // Add the font to the DOM only once; skip if the font is already loaded.\n    if (font.attached || (font.missingFile && !font.systemFontInfo)) {\n      return;\n    }\n    font.attached = true;\n\n    if (font.systemFontInfo) {\n      await this.loadSystemFont(font);\n      return;\n    }\n\n    if (this.isFontLoadingAPISupported) {\n      const nativeFontFace = font.createNativeFontFace();\n      if (nativeFontFace) {\n        this.addNativeFontFace(nativeFontFace);\n        try {\n          await nativeFontFace.loaded;\n        } catch (ex) {\n          warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n\n          // When font loading failed, fall back to the built-in font renderer.\n          font.disableFontFace = true;\n          throw ex;\n        }\n      }\n      return; // The font was, asynchronously, loaded.\n    }\n\n    // !this.isFontLoadingAPISupported\n    const rule = font.createFontFaceRule();\n    if (rule) {\n      this.insertRule(rule);\n\n      if (this.isSyncFontLoadingSupported) {\n        return; // The font was, synchronously, loaded.\n      }\n      if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n        throw new Error(\"Not implemented: async font loading\");\n      }\n      await new Promise(resolve => {\n        const request = this._queueLoadingCallback(resolve);\n        this._prepareFontLoadEvent(font, request);\n      });\n      // The font was, asynchronously, loaded.\n    }\n  }\n\n  get isFontLoadingAPISupported() {\n    const hasFonts = !!this._document?.fonts;\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      return shadow(\n        this,\n        \"isFontLoadingAPISupported\",\n        hasFonts && !this.styleElement\n      );\n    }\n    return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n  }\n\n  get isSyncFontLoadingSupported() {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n      return shadow(this, \"isSyncFontLoadingSupported\", true);\n    }\n\n    let supported = false;\n    if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"CHROME\")) {\n      if (isNodeJS) {\n        // Node.js - we can pretend that sync font loading is supported.\n        supported = true;\n      } else if (\n        typeof navigator !== \"undefined\" &&\n        typeof navigator?.userAgent === \"string\" &&\n        // User agent string sniffing is bad, but there is no reliable way to\n        // tell if the font is fully loaded and ready to be used with canvas.\n        /Mozilla\\/5.0.*?rv:\\d+.*? Gecko/.test(navigator.userAgent)\n      ) {\n        // Firefox, from version 14, supports synchronous font loading.\n        supported = true;\n      }\n    }\n    return shadow(this, \"isSyncFontLoadingSupported\", supported);\n  }\n\n  _queueLoadingCallback(callback) {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n      throw new Error(\"Not implemented: _queueLoadingCallback\");\n    }\n\n    function completeRequest() {\n      assert(!request.done, \"completeRequest() cannot be called twice.\");\n      request.done = true;\n\n      // Sending all completed requests in order of how they were queued.\n      while (loadingRequests.length > 0 && loadingRequests[0].done) {\n        const otherRequest = loadingRequests.shift();\n        setTimeout(otherRequest.callback, 0);\n      }\n    }\n\n    const { loadingRequests } = this;\n    const request = {\n      done: false,\n      complete: completeRequest,\n      callback,\n    };\n    loadingRequests.push(request);\n    return request;\n  }\n\n  get _loadTestFont() {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n      throw new Error(\"Not implemented: _loadTestFont\");\n    }\n\n    // This is a CFF font with 1 glyph for '.' that fills its entire width\n    // and height.\n    const testFont = atob(\n      \"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" +\n        \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" +\n        \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" +\n        \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" +\n        \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" +\n        \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" +\n        \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" +\n        \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" +\n        \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" +\n        \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" +\n        \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" +\n        \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" +\n        \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n        \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n        \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n        \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n        \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n        \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" +\n        \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" +\n        \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" +\n        \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" +\n        \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\"\n    );\n    return shadow(this, \"_loadTestFont\", testFont);\n  }\n\n  _prepareFontLoadEvent(font, request) {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n      throw new Error(\"Not implemented: _prepareFontLoadEvent\");\n    }\n\n    /** Hack begin */\n    // There's currently no event when a font has finished downloading so the\n    // following code is a dirty hack to 'guess' when a font is ready.\n    // It's assumed fonts are loaded in order, so add a known test font after\n    // the desired fonts and then test for the loading of that test font.\n\n    function int32(data, offset) {\n      return (\n        (data.charCodeAt(offset) << 24) |\n        (data.charCodeAt(offset + 1) << 16) |\n        (data.charCodeAt(offset + 2) << 8) |\n        (data.charCodeAt(offset + 3) & 0xff)\n      );\n    }\n    function spliceString(s, offset, remove, insert) {\n      const chunk1 = s.substring(0, offset);\n      const chunk2 = s.substring(offset + remove);\n      return chunk1 + insert + chunk2;\n    }\n    let i, ii;\n\n    // The temporary canvas is used to determine if fonts are loaded.\n    const canvas = this._document.createElement(\"canvas\");\n    canvas.width = 1;\n    canvas.height = 1;\n    const ctx = canvas.getContext(\"2d\");\n\n    let called = 0;\n    function isFontReady(name, callback) {\n      // With setTimeout clamping this gives the font ~100ms to load.\n      if (++called > 30) {\n        warn(\"Load test font never loaded.\");\n        callback();\n        return;\n      }\n      ctx.font = \"30px \" + name;\n      ctx.fillText(\".\", 0, 20);\n      const imageData = ctx.getImageData(0, 0, 1, 1);\n      if (imageData.data[3] > 0) {\n        callback();\n        return;\n      }\n      setTimeout(isFontReady.bind(null, name, callback));\n    }\n\n    const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n    // Chromium seems to cache fonts based on a hash of the actual font data,\n    // so the font must be modified for each load test else it will appear to\n    // be loaded already.\n    // TODO: This could maybe be made faster by avoiding the btoa of the full\n    // font by splitting it in chunks before hand and padding the font id.\n    let data = this._loadTestFont;\n    const COMMENT_OFFSET = 976; // has to be on 4 byte boundary (for checksum)\n    data = spliceString(\n      data,\n      COMMENT_OFFSET,\n      loadTestFontId.length,\n      loadTestFontId\n    );\n    // CFF checksum is important for IE, adjusting it\n    const CFF_CHECKSUM_OFFSET = 16;\n    const XXXX_VALUE = 0x58585858; // the \"comment\" filled with 'X'\n    let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n    for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n      checksum = (checksum - XXXX_VALUE + int32(loadTestFontId, i)) | 0;\n    }\n    if (i < loadTestFontId.length) {\n      // align to 4 bytes boundary\n      checksum = (checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i)) | 0;\n    }\n    data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n\n    const url = `url(data:font/opentype;base64,${btoa(data)});`;\n    const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n    this.insertRule(rule);\n\n    const div = this._document.createElement(\"div\");\n    div.style.visibility = \"hidden\";\n    div.style.width = div.style.height = \"10px\";\n    div.style.position = \"absolute\";\n    div.style.top = div.style.left = \"0px\";\n\n    for (const name of [font.loadedName, loadTestFontId]) {\n      const span = this._document.createElement(\"span\");\n      span.textContent = \"Hi\";\n      span.style.fontFamily = name;\n      div.append(span);\n    }\n    this._document.body.append(div);\n\n    isFontReady(loadTestFontId, () => {\n      div.remove();\n      request.complete();\n    });\n    /** Hack end */\n  }\n}\n\nclass FontFaceObject {\n  constructor(\n    translatedData,\n    {\n      isEvalSupported = true,\n      disableFontFace = false,\n      ignoreErrors = false,\n      inspectFont = null,\n    }\n  ) {\n    this.compiledGlyphs = Object.create(null);\n    // importing translated data\n    for (const i in translatedData) {\n      this[i] = translatedData[i];\n    }\n    this.isEvalSupported = isEvalSupported !== false;\n    this.disableFontFace = disableFontFace === true;\n    this.ignoreErrors = ignoreErrors === true;\n    this._inspectFont = inspectFont;\n  }\n\n  createNativeFontFace() {\n    if (!this.data || this.disableFontFace) {\n      return null;\n    }\n    let nativeFontFace;\n    if (!this.cssFontInfo) {\n      nativeFontFace = new FontFace(this.loadedName, this.data, {});\n    } else {\n      const css = {\n        weight: this.cssFontInfo.fontWeight,\n      };\n      if (this.cssFontInfo.italicAngle) {\n        css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n      }\n      nativeFontFace = new FontFace(\n        this.cssFontInfo.fontFamily,\n        this.data,\n        css\n      );\n    }\n\n    this._inspectFont?.(this);\n    return nativeFontFace;\n  }\n\n  createFontFaceRule() {\n    if (!this.data || this.disableFontFace) {\n      return null;\n    }\n    const data = bytesToString(this.data);\n    // Add the @font-face rule to the document.\n    const url = `url(data:${this.mimetype};base64,${btoa(data)});`;\n    let rule;\n    if (!this.cssFontInfo) {\n      rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n    } else {\n      let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n      if (this.cssFontInfo.italicAngle) {\n        css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n      }\n      rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n    }\n\n    this._inspectFont?.(this, url);\n    return rule;\n  }\n\n  getPathGenerator(objs, character) {\n    if (this.compiledGlyphs[character] !== undefined) {\n      return this.compiledGlyphs[character];\n    }\n\n    let cmds;\n    try {\n      cmds = objs.get(this.loadedName + \"_path_\" + character);\n    } catch (ex) {\n      if (!this.ignoreErrors) {\n        throw ex;\n      }\n      warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n\n      return (this.compiledGlyphs[character] = function (c, size) {\n        // No-op function, to allow rendering to continue.\n      });\n    }\n\n    // If we can, compile cmds into JS for MAXIMUM SPEED...\n    if (this.isEvalSupported && FeatureTest.isEvalSupported) {\n      const jsBuf = [];\n      for (const current of cmds) {\n        const args = current.args !== undefined ? current.args.join(\",\") : \"\";\n        jsBuf.push(\"c.\", current.cmd, \"(\", args, \");\\n\");\n      }\n      // eslint-disable-next-line no-new-func\n      return (this.compiledGlyphs[character] = new Function(\n        \"c\",\n        \"size\",\n        jsBuf.join(\"\")\n      ));\n    }\n    // ... but fall back on using Function.prototype.apply() if we're\n    // blocked from using eval() for whatever reason (like CSP policies).\n    return (this.compiledGlyphs[character] = function (c, size) {\n      for (const current of cmds) {\n        if (current.cmd === \"scale\") {\n          current.args = [size, -size];\n        }\n        // eslint-disable-next-line prefer-spread\n        c[current.cmd].apply(c, current.args);\n      }\n    });\n  }\n}\n\nexport { FontFaceObject, FontLoader };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { objectFromMap } from \"../shared/util.js\";\n\nclass Metadata {\n  #metadataMap;\n\n  #data;\n\n  constructor({ parsedData, rawData }) {\n    this.#metadataMap = parsedData;\n    this.#data = rawData;\n  }\n\n  getRaw() {\n    return this.#data;\n  }\n\n  get(name) {\n    return this.#metadataMap.get(name) ?? null;\n  }\n\n  getAll() {\n    return objectFromMap(this.#metadataMap);\n  }\n\n  has(name) {\n    return this.#metadataMap.has(name);\n  }\n}\n\nexport { Metadata };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, PromiseCapability, stringToBytes } from \"../shared/util.js\";\nimport {\n  createResponseStatusError,\n  extractFilenameFromHeader,\n  validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n  throw new Error(\n    'Module \"./network.js\" shall not be used with MOZCENTRAL builds.'\n  );\n}\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction getArrayBuffer(xhr) {\n  const data = xhr.response;\n  if (typeof data !== \"string\") {\n    return data;\n  }\n  return stringToBytes(data).buffer;\n}\n\nclass NetworkManager {\n  constructor(url, args = {}) {\n    this.url = url;\n    this.isHttp = /^https?:/i.test(url);\n    this.httpHeaders = (this.isHttp && args.httpHeaders) || Object.create(null);\n    this.withCredentials = args.withCredentials || false;\n\n    this.currXhrId = 0;\n    this.pendingRequests = Object.create(null);\n  }\n\n  requestRange(begin, end, listeners) {\n    const args = {\n      begin,\n      end,\n    };\n    for (const prop in listeners) {\n      args[prop] = listeners[prop];\n    }\n    return this.request(args);\n  }\n\n  requestFull(listeners) {\n    return this.request(listeners);\n  }\n\n  request(args) {\n    const xhr = new XMLHttpRequest();\n    const xhrId = this.currXhrId++;\n    const pendingRequest = (this.pendingRequests[xhrId] = { xhr });\n\n    xhr.open(\"GET\", this.url);\n    xhr.withCredentials = this.withCredentials;\n    for (const property in this.httpHeaders) {\n      const value = this.httpHeaders[property];\n      if (value === undefined) {\n        continue;\n      }\n      xhr.setRequestHeader(property, value);\n    }\n    if (this.isHttp && \"begin\" in args && \"end\" in args) {\n      xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n      pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n    } else {\n      pendingRequest.expectedStatus = OK_RESPONSE;\n    }\n    xhr.responseType = \"arraybuffer\";\n\n    if (args.onError) {\n      xhr.onerror = function (evt) {\n        args.onError(xhr.status);\n      };\n    }\n    xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n    xhr.onprogress = this.onProgress.bind(this, xhrId);\n\n    pendingRequest.onHeadersReceived = args.onHeadersReceived;\n    pendingRequest.onDone = args.onDone;\n    pendingRequest.onError = args.onError;\n    pendingRequest.onProgress = args.onProgress;\n\n    xhr.send(null);\n\n    return xhrId;\n  }\n\n  onProgress(xhrId, evt) {\n    const pendingRequest = this.pendingRequests[xhrId];\n    if (!pendingRequest) {\n      return; // Maybe abortRequest was called...\n    }\n    pendingRequest.onProgress?.(evt);\n  }\n\n  onStateChange(xhrId, evt) {\n    const pendingRequest = this.pendingRequests[xhrId];\n    if (!pendingRequest) {\n      return; // Maybe abortRequest was called...\n    }\n\n    const xhr = pendingRequest.xhr;\n    if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n      pendingRequest.onHeadersReceived();\n      delete pendingRequest.onHeadersReceived;\n    }\n\n    if (xhr.readyState !== 4) {\n      return;\n    }\n\n    if (!(xhrId in this.pendingRequests)) {\n      // The XHR request might have been aborted in onHeadersReceived()\n      // callback, in which case we should abort request.\n      return;\n    }\n\n    delete this.pendingRequests[xhrId];\n\n    // Success status == 0 can be on ftp, file and other protocols.\n    if (xhr.status === 0 && this.isHttp) {\n      pendingRequest.onError?.(xhr.status);\n      return;\n    }\n    const xhrStatus = xhr.status || OK_RESPONSE;\n\n    // From http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2:\n    // \"A server MAY ignore the Range header\". This means it's possible to\n    // get a 200 rather than a 206 response from a range request.\n    const ok_response_on_range_request =\n      xhrStatus === OK_RESPONSE &&\n      pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n    if (\n      !ok_response_on_range_request &&\n      xhrStatus !== pendingRequest.expectedStatus\n    ) {\n      pendingRequest.onError?.(xhr.status);\n      return;\n    }\n\n    const chunk = getArrayBuffer(xhr);\n    if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n      const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n      const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n      pendingRequest.onDone({\n        begin: parseInt(matches[1], 10),\n        chunk,\n      });\n    } else if (chunk) {\n      pendingRequest.onDone({\n        begin: 0,\n        chunk,\n      });\n    } else {\n      pendingRequest.onError?.(xhr.status);\n    }\n  }\n\n  getRequestXhr(xhrId) {\n    return this.pendingRequests[xhrId].xhr;\n  }\n\n  isPendingRequest(xhrId) {\n    return xhrId in this.pendingRequests;\n  }\n\n  abortRequest(xhrId) {\n    const xhr = this.pendingRequests[xhrId].xhr;\n    delete this.pendingRequests[xhrId];\n    xhr.abort();\n  }\n}\n\n/** @implements {IPDFStream} */\nclass PDFNetworkStream {\n  constructor(source) {\n    this._source = source;\n    this._manager = new NetworkManager(source.url, {\n      httpHeaders: source.httpHeaders,\n      withCredentials: source.withCredentials,\n    });\n    this._rangeChunkSize = source.rangeChunkSize;\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  _onRangeRequestReaderClosed(reader) {\n    const i = this._rangeRequestReaders.indexOf(reader);\n    if (i >= 0) {\n      this._rangeRequestReaders.splice(i, 1);\n    }\n  }\n\n  getFullReader() {\n    assert(\n      !this._fullRequestReader,\n      \"PDFNetworkStream.getFullReader can only be called once.\"\n    );\n    this._fullRequestReader = new PDFNetworkStreamFullRequestReader(\n      this._manager,\n      this._source\n    );\n    return this._fullRequestReader;\n  }\n\n  getRangeReader(begin, end) {\n    const reader = new PDFNetworkStreamRangeRequestReader(\n      this._manager,\n      begin,\n      end\n    );\n    reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n    this._rangeRequestReaders.push(reader);\n    return reader;\n  }\n\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFNetworkStreamFullRequestReader {\n  constructor(manager, source) {\n    this._manager = manager;\n\n    const args = {\n      onHeadersReceived: this._onHeadersReceived.bind(this),\n      onDone: this._onDone.bind(this),\n      onError: this._onError.bind(this),\n      onProgress: this._onProgress.bind(this),\n    };\n    this._url = source.url;\n    this._fullRequestId = manager.requestFull(args);\n    this._headersReceivedCapability = new PromiseCapability();\n    this._disableRange = source.disableRange || false;\n    this._contentLength = source.length; // Optional\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n\n    this._isStreamingSupported = false;\n    this._isRangeSupported = false;\n\n    this._cachedChunks = [];\n    this._requests = [];\n    this._done = false;\n    this._storedError = undefined;\n    this._filename = null;\n\n    this.onProgress = null;\n  }\n\n  _onHeadersReceived() {\n    const fullRequestXhrId = this._fullRequestId;\n    const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n\n    const getResponseHeader = name => {\n      return fullRequestXhr.getResponseHeader(name);\n    };\n    const { allowRangeRequests, suggestedLength } =\n      validateRangeRequestCapabilities({\n        getResponseHeader,\n        isHttp: this._manager.isHttp,\n        rangeChunkSize: this._rangeChunkSize,\n        disableRange: this._disableRange,\n      });\n\n    if (allowRangeRequests) {\n      this._isRangeSupported = true;\n    }\n    // Setting right content length.\n    this._contentLength = suggestedLength || this._contentLength;\n\n    this._filename = extractFilenameFromHeader(getResponseHeader);\n\n    if (this._isRangeSupported) {\n      // NOTE: by cancelling the full request, and then issuing range\n      // requests, there will be an issue for sites where you can only\n      // request the pdf once. However, if this is the case, then the\n      // server should not be returning that it can support range requests.\n      this._manager.abortRequest(fullRequestXhrId);\n    }\n\n    this._headersReceivedCapability.resolve();\n  }\n\n  _onDone(data) {\n    if (data) {\n      if (this._requests.length > 0) {\n        const requestCapability = this._requests.shift();\n        requestCapability.resolve({ value: data.chunk, done: false });\n      } else {\n        this._cachedChunks.push(data.chunk);\n      }\n    }\n    this._done = true;\n    if (this._cachedChunks.length > 0) {\n      return;\n    }\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n  }\n\n  _onError(status) {\n    this._storedError = createResponseStatusError(status, this._url);\n    this._headersReceivedCapability.reject(this._storedError);\n    for (const requestCapability of this._requests) {\n      requestCapability.reject(this._storedError);\n    }\n    this._requests.length = 0;\n    this._cachedChunks.length = 0;\n  }\n\n  _onProgress(evt) {\n    this.onProgress?.({\n      loaded: evt.loaded,\n      total: evt.lengthComputable ? evt.total : this._contentLength,\n    });\n  }\n\n  get filename() {\n    return this._filename;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get headersReady() {\n    return this._headersReceivedCapability.promise;\n  }\n\n  async read() {\n    if (this._storedError) {\n      throw this._storedError;\n    }\n    if (this._cachedChunks.length > 0) {\n      const chunk = this._cachedChunks.shift();\n      return { value: chunk, done: false };\n    }\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    const requestCapability = new PromiseCapability();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n\n  cancel(reason) {\n    this._done = true;\n    this._headersReceivedCapability.reject(reason);\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n    if (this._manager.isPendingRequest(this._fullRequestId)) {\n      this._manager.abortRequest(this._fullRequestId);\n    }\n    this._fullRequestReader = null;\n  }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFNetworkStreamRangeRequestReader {\n  constructor(manager, begin, end) {\n    this._manager = manager;\n\n    const args = {\n      onDone: this._onDone.bind(this),\n      onError: this._onError.bind(this),\n      onProgress: this._onProgress.bind(this),\n    };\n    this._url = manager.url;\n    this._requestId = manager.requestRange(begin, end, args);\n    this._requests = [];\n    this._queuedChunk = null;\n    this._done = false;\n    this._storedError = undefined;\n\n    this.onProgress = null;\n    this.onClosed = null;\n  }\n\n  _close() {\n    this.onClosed?.(this);\n  }\n\n  _onDone(data) {\n    const chunk = data.chunk;\n    if (this._requests.length > 0) {\n      const requestCapability = this._requests.shift();\n      requestCapability.resolve({ value: chunk, done: false });\n    } else {\n      this._queuedChunk = chunk;\n    }\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n    this._close();\n  }\n\n  _onError(status) {\n    this._storedError = createResponseStatusError(status, this._url);\n    for (const requestCapability of this._requests) {\n      requestCapability.reject(this._storedError);\n    }\n    this._requests.length = 0;\n    this._queuedChunk = null;\n  }\n\n  _onProgress(evt) {\n    if (!this.isStreamingSupported) {\n      this.onProgress?.({ loaded: evt.loaded });\n    }\n  }\n\n  get isStreamingSupported() {\n    return false;\n  }\n\n  async read() {\n    if (this._storedError) {\n      throw this._storedError;\n    }\n    if (this._queuedChunk !== null) {\n      const chunk = this._queuedChunk;\n      this._queuedChunk = null;\n      return { value: chunk, done: false };\n    }\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    const requestCapability = new PromiseCapability();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n\n  cancel(reason) {\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n    if (this._manager.isPendingRequest(this._requestId)) {\n      this._manager.abortRequest(this._requestId);\n    }\n    this._close();\n  }\n}\n\nexport { PDFNetworkStream };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { stringToBytes } from \"../shared/util.js\";\n\n// This getFilenameFromContentDispositionHeader function is adapted from\n// https://github.com/Rob--W/open-in-browser/blob/7e2e35a38b8b4e981b11da7b2f01df0149049e92/extension/content-disposition.js\n// with the following changes:\n// - Modified to conform to PDF.js's coding style.\n// - Move return to the end of the function to prevent Babel from dropping the\n//   function declarations.\n\n/**\n * Extract file name from the Content-Disposition HTTP response header.\n *\n * @param {string} contentDisposition\n * @returns {string} Filename, if found in the Content-Disposition header.\n */\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n  let needsEncodingFixup = true;\n\n  // filename*=ext-value (\"ext-value\" from RFC 5987, referenced by RFC 6266).\n  let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n  if (tmp) {\n    tmp = tmp[1];\n    let filename = rfc2616unquote(tmp);\n    filename = unescape(filename);\n    filename = rfc5987decode(filename);\n    filename = rfc2047decode(filename);\n    return fixupEncoding(filename);\n  }\n\n  // Continuations (RFC 2231 section 3, referenced by RFC 5987 section 3.1).\n  // filename*n*=part\n  // filename*n=part\n  tmp = rfc2231getparam(contentDisposition);\n  if (tmp) {\n    // RFC 2047, section\n    const filename = rfc2047decode(tmp);\n    return fixupEncoding(filename);\n  }\n\n  // filename=value (RFC 5987, section 4.1).\n  tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n  if (tmp) {\n    tmp = tmp[1];\n    let filename = rfc2616unquote(tmp);\n    filename = rfc2047decode(filename);\n    return fixupEncoding(filename);\n  }\n\n  // After this line there are only function declarations. We cannot put\n  // \"return\" here for readability because babel would then drop the function\n  // declarations...\n  function toParamRegExp(attributePattern, flags) {\n    return new RegExp(\n      \"(?:^|;)\\\\s*\" +\n        attributePattern +\n        \"\\\\s*=\\\\s*\" +\n        // Captures: value = token | quoted-string\n        // (RFC 2616, section 3.6 and referenced by RFC 6266 4.1)\n        \"(\" +\n        '[^\";\\\\s][^;\\\\s]*' +\n        \"|\" +\n        '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' +\n        \")\",\n      flags\n    );\n  }\n  function textdecode(encoding, value) {\n    if (encoding) {\n      if (!/^[\\x00-\\xFF]+$/.test(value)) {\n        return value;\n      }\n      try {\n        const decoder = new TextDecoder(encoding, { fatal: true });\n        const buffer = stringToBytes(value);\n        value = decoder.decode(buffer);\n        needsEncodingFixup = false;\n      } catch {\n        // TextDecoder constructor threw - unrecognized encoding.\n      }\n    }\n    return value;\n  }\n  function fixupEncoding(value) {\n    if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n      // Maybe multi-byte UTF-8.\n      value = textdecode(\"utf-8\", value);\n      if (needsEncodingFixup) {\n        // Try iso-8859-1 encoding.\n        value = textdecode(\"iso-8859-1\", value);\n      }\n    }\n    return value;\n  }\n  function rfc2231getparam(contentDispositionStr) {\n    const matches = [];\n    let match;\n    // Iterate over all filename*n= and filename*n*= with n being an integer\n    // of at least zero. Any non-zero number must not start with '0'.\n    const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n    while ((match = iter.exec(contentDispositionStr)) !== null) {\n      let [, n, quot, part] = match; // eslint-disable-line prefer-const\n      n = parseInt(n, 10);\n      if (n in matches) {\n        // Ignore anything after the invalid second filename*0.\n        if (n === 0) {\n          break;\n        }\n        continue;\n      }\n      matches[n] = [quot, part];\n    }\n    const parts = [];\n    for (let n = 0; n < matches.length; ++n) {\n      if (!(n in matches)) {\n        // Numbers must be consecutive. Truncate when there is a hole.\n        break;\n      }\n      let [quot, part] = matches[n]; // eslint-disable-line prefer-const\n      part = rfc2616unquote(part);\n      if (quot) {\n        part = unescape(part);\n        if (n === 0) {\n          part = rfc5987decode(part);\n        }\n      }\n      parts.push(part);\n    }\n    return parts.join(\"\");\n  }\n  function rfc2616unquote(value) {\n    if (value.startsWith('\"')) {\n      const parts = value.slice(1).split('\\\\\"');\n      // Find the first unescaped \" and terminate there.\n      for (let i = 0; i < parts.length; ++i) {\n        const quotindex = parts[i].indexOf('\"');\n        if (quotindex !== -1) {\n          parts[i] = parts[i].slice(0, quotindex);\n          parts.length = i + 1; // Truncates and stop the iteration.\n        }\n        parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n      }\n      value = parts.join('\"');\n    }\n    return value;\n  }\n  function rfc5987decode(extvalue) {\n    // Decodes \"ext-value\" from RFC 5987.\n    const encodingend = extvalue.indexOf(\"'\");\n    if (encodingend === -1) {\n      // Some servers send \"filename*=\" without encoding 'language' prefix,\n      // e.g. in https://github.com/Rob--W/open-in-browser/issues/26\n      // Let's accept the value like Firefox (57) (Chrome 62 rejects it).\n      return extvalue;\n    }\n    const encoding = extvalue.slice(0, encodingend);\n    const langvalue = extvalue.slice(encodingend + 1);\n    // Ignore language (RFC 5987 section 3.2.1, and RFC 6266 section 4.1 ).\n    const value = langvalue.replace(/^[^']*'/, \"\");\n    return textdecode(encoding, value);\n  }\n  function rfc2047decode(value) {\n    // RFC 2047-decode the result. Firefox tried to drop support for it, but\n    // backed out because some servers use it - https://bugzil.la/875615\n    // Firefox's condition for decoding is here: https://searchfox.org/mozilla-central/rev/4a590a5a15e35d88a3b23dd6ac3c471cf85b04a8/netwerk/mime/nsMIMEHeaderParamImpl.cpp#742-748\n\n    // We are more strict and only recognize RFC 2047-encoding if the value\n    // starts with \"=?\", since then it is likely that the full value is\n    // RFC 2047-encoded.\n\n    // Firefox also decodes words even where RFC 2047 section 5 states:\n    // \"An 'encoded-word' MUST NOT appear within a 'quoted-string'.\"\n    if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n      return value;\n    }\n    // RFC 2047, section 2.4\n    // encoded-word = \"=?\" charset \"?\" encoding \"?\" encoded-text \"?=\"\n    // charset = token (but let's restrict to characters that denote a\n    //       possibly valid encoding).\n    // encoding = q or b\n    // encoded-text = any printable ASCII character other than ? or space.\n    //        ... but Firefox permits ? and space.\n    return value.replaceAll(\n      /=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g,\n      function (matches, charset, encoding, text) {\n        if (encoding === \"q\" || encoding === \"Q\") {\n          // RFC 2047 section 4.2.\n          text = text.replaceAll(\"_\", \" \");\n          text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n            return String.fromCharCode(parseInt(hex, 16));\n          });\n          return textdecode(charset, text);\n        } // else encoding is b or B - base64 (RFC 2047 section 4.1)\n        try {\n          text = atob(text);\n        } catch {}\n        return textdecode(charset, text);\n      }\n    );\n  }\n\n  return \"\";\n}\n\nexport { getFilenameFromContentDispositionHeader };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  MissingPDFException,\n  UnexpectedResponseException,\n} from \"../shared/util.js\";\nimport { getFilenameFromContentDispositionHeader } from \"./content_disposition.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\nfunction validateRangeRequestCapabilities({\n  getResponseHeader,\n  isHttp,\n  rangeChunkSize,\n  disableRange,\n}) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n    assert(\n      Number.isInteger(rangeChunkSize) && rangeChunkSize > 0,\n      \"rangeChunkSize must be an integer larger than zero.\"\n    );\n  }\n  const returnValues = {\n    allowRangeRequests: false,\n    suggestedLength: undefined,\n  };\n\n  const length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n  if (!Number.isInteger(length)) {\n    return returnValues;\n  }\n\n  returnValues.suggestedLength = length;\n\n  if (length <= 2 * rangeChunkSize) {\n    // The file size is smaller than the size of two chunks, so it does not\n    // make any sense to abort the request and retry with a range request.\n    return returnValues;\n  }\n\n  if (disableRange || !isHttp) {\n    return returnValues;\n  }\n  if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n    return returnValues;\n  }\n\n  const contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n  if (contentEncoding !== \"identity\") {\n    return returnValues;\n  }\n\n  returnValues.allowRangeRequests = true;\n  return returnValues;\n}\n\nfunction extractFilenameFromHeader(getResponseHeader) {\n  const contentDisposition = getResponseHeader(\"Content-Disposition\");\n  if (contentDisposition) {\n    let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n    if (filename.includes(\"%\")) {\n      try {\n        filename = decodeURIComponent(filename);\n      } catch {}\n    }\n    if (isPdfFile(filename)) {\n      return filename;\n    }\n  }\n  return null;\n}\n\nfunction createResponseStatusError(status, url) {\n  if (status === 404 || (status === 0 && url.startsWith(\"file:\"))) {\n    return new MissingPDFException('Missing PDF \"' + url + '\".');\n  }\n  return new UnexpectedResponseException(\n    `Unexpected server response (${status}) while retrieving PDF \"${url}\".`,\n    status\n  );\n}\n\nfunction validateResponseStatus(status) {\n  return status === 200 || status === 206;\n}\n\nexport {\n  createResponseStatusError,\n  extractFilenameFromHeader,\n  validateRangeRequestCapabilities,\n  validateResponseStatus,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AbortException,\n  assert,\n  isNodeJS,\n  MissingPDFException,\n  PromiseCapability,\n} from \"../shared/util.js\";\nimport {\n  extractFilenameFromHeader,\n  validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n  throw new Error(\n    'Module \"./node_stream.js\" shall not be used with MOZCENTRAL builds.'\n  );\n}\n\nlet fs, http, https, url;\nif (isNodeJS) {\n  // Native packages.\n  fs = await import(/* webpackIgnore: true */ \"fs\");\n  http = await import(/* webpackIgnore: true */ \"http\");\n  https = await import(/* webpackIgnore: true */ \"https\");\n  url = await import(/* webpackIgnore: true */ \"url\");\n}\n\nconst fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n\nfunction parseUrl(sourceUrl) {\n  const parsedUrl = url.parse(sourceUrl);\n  if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n    return parsedUrl;\n  }\n  // Prepending 'file:///' to Windows absolute path.\n  if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n    return url.parse(`file:///${sourceUrl}`);\n  }\n  // Changes protocol to 'file:' if url refers to filesystem.\n  if (!parsedUrl.host) {\n    parsedUrl.protocol = \"file:\";\n  }\n  return parsedUrl;\n}\n\nclass PDFNodeStream {\n  constructor(source) {\n    this.source = source;\n    this.url = parseUrl(source.url);\n    this.isHttp =\n      this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n    // Check if url refers to filesystem.\n    this.isFsUrl = this.url.protocol === \"file:\";\n    this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n\n  getFullReader() {\n    assert(\n      !this._fullRequestReader,\n      \"PDFNodeStream.getFullReader can only be called once.\"\n    );\n    this._fullRequestReader = this.isFsUrl\n      ? new PDFNodeStreamFsFullReader(this)\n      : new PDFNodeStreamFullReader(this);\n    return this._fullRequestReader;\n  }\n\n  getRangeReader(start, end) {\n    if (end <= this._progressiveDataLength) {\n      return null;\n    }\n    const rangeReader = this.isFsUrl\n      ? new PDFNodeStreamFsRangeReader(this, start, end)\n      : new PDFNodeStreamRangeReader(this, start, end);\n    this._rangeRequestReaders.push(rangeReader);\n    return rangeReader;\n  }\n\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\n\nclass BaseFullReader {\n  constructor(stream) {\n    this._url = stream.url;\n    this._done = false;\n    this._storedError = null;\n    this.onProgress = null;\n    const source = stream.source;\n    this._contentLength = source.length; // optional\n    this._loaded = 0;\n    this._filename = null;\n\n    this._disableRange = source.disableRange || false;\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n\n    this._isStreamingSupported = !source.disableStream;\n    this._isRangeSupported = !source.disableRange;\n\n    this._readableStream = null;\n    this._readCapability = new PromiseCapability();\n    this._headersCapability = new PromiseCapability();\n  }\n\n  get headersReady() {\n    return this._headersCapability.promise;\n  }\n\n  get filename() {\n    return this._filename;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._readCapability.promise;\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    if (this._storedError) {\n      throw this._storedError;\n    }\n\n    const chunk = this._readableStream.read();\n    if (chunk === null) {\n      this._readCapability = new PromiseCapability();\n      return this.read();\n    }\n    this._loaded += chunk.length;\n    this.onProgress?.({\n      loaded: this._loaded,\n      total: this._contentLength,\n    });\n\n    // Ensure that `read()` method returns ArrayBuffer.\n    const buffer = new Uint8Array(chunk).buffer;\n    return { value: buffer, done: false };\n  }\n\n  cancel(reason) {\n    // Call `this._error()` method when cancel is called\n    // before _readableStream is set.\n    if (!this._readableStream) {\n      this._error(reason);\n      return;\n    }\n    this._readableStream.destroy(reason);\n  }\n\n  _error(reason) {\n    this._storedError = reason;\n    this._readCapability.resolve();\n  }\n\n  _setReadableStream(readableStream) {\n    this._readableStream = readableStream;\n    readableStream.on(\"readable\", () => {\n      this._readCapability.resolve();\n    });\n\n    readableStream.on(\"end\", () => {\n      // Destroy readable to minimize resource usage.\n      readableStream.destroy();\n      this._done = true;\n      this._readCapability.resolve();\n    });\n\n    readableStream.on(\"error\", reason => {\n      this._error(reason);\n    });\n\n    // We need to stop reading when range is supported and streaming is\n    // disabled.\n    if (!this._isStreamingSupported && this._isRangeSupported) {\n      this._error(new AbortException(\"streaming is disabled\"));\n    }\n\n    // Destroy ReadableStream if already in errored state.\n    if (this._storedError) {\n      this._readableStream.destroy(this._storedError);\n    }\n  }\n}\n\nclass BaseRangeReader {\n  constructor(stream) {\n    this._url = stream.url;\n    this._done = false;\n    this._storedError = null;\n    this.onProgress = null;\n    this._loaded = 0;\n    this._readableStream = null;\n    this._readCapability = new PromiseCapability();\n    const source = stream.source;\n    this._isStreamingSupported = !source.disableStream;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._readCapability.promise;\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    if (this._storedError) {\n      throw this._storedError;\n    }\n\n    const chunk = this._readableStream.read();\n    if (chunk === null) {\n      this._readCapability = new PromiseCapability();\n      return this.read();\n    }\n    this._loaded += chunk.length;\n    this.onProgress?.({ loaded: this._loaded });\n\n    // Ensure that `read()` method returns ArrayBuffer.\n    const buffer = new Uint8Array(chunk).buffer;\n    return { value: buffer, done: false };\n  }\n\n  cancel(reason) {\n    // Call `this._error()` method when cancel is called\n    // before _readableStream is set.\n    if (!this._readableStream) {\n      this._error(reason);\n      return;\n    }\n    this._readableStream.destroy(reason);\n  }\n\n  _error(reason) {\n    this._storedError = reason;\n    this._readCapability.resolve();\n  }\n\n  _setReadableStream(readableStream) {\n    this._readableStream = readableStream;\n    readableStream.on(\"readable\", () => {\n      this._readCapability.resolve();\n    });\n\n    readableStream.on(\"end\", () => {\n      // Destroy readableStream to minimize resource usage.\n      readableStream.destroy();\n      this._done = true;\n      this._readCapability.resolve();\n    });\n\n    readableStream.on(\"error\", reason => {\n      this._error(reason);\n    });\n\n    // Destroy readableStream if already in errored state.\n    if (this._storedError) {\n      this._readableStream.destroy(this._storedError);\n    }\n  }\n}\n\nfunction createRequestOptions(parsedUrl, headers) {\n  return {\n    protocol: parsedUrl.protocol,\n    auth: parsedUrl.auth,\n    host: parsedUrl.hostname,\n    port: parsedUrl.port,\n    path: parsedUrl.path,\n    method: \"GET\",\n    headers,\n  };\n}\n\nclass PDFNodeStreamFullReader extends BaseFullReader {\n  constructor(stream) {\n    super(stream);\n\n    const handleResponse = response => {\n      if (response.statusCode === 404) {\n        const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n        this._storedError = error;\n        this._headersCapability.reject(error);\n        return;\n      }\n      this._headersCapability.resolve();\n      this._setReadableStream(response);\n\n      const getResponseHeader = name => {\n        // Make sure that headers name are in lower case, as mentioned\n        // here: https://nodejs.org/api/http.html#http_message_headers.\n        return this._readableStream.headers[name.toLowerCase()];\n      };\n      const { allowRangeRequests, suggestedLength } =\n        validateRangeRequestCapabilities({\n          getResponseHeader,\n          isHttp: stream.isHttp,\n          rangeChunkSize: this._rangeChunkSize,\n          disableRange: this._disableRange,\n        });\n\n      this._isRangeSupported = allowRangeRequests;\n      // Setting right content length.\n      this._contentLength = suggestedLength || this._contentLength;\n\n      this._filename = extractFilenameFromHeader(getResponseHeader);\n    };\n\n    this._request = null;\n    if (this._url.protocol === \"http:\") {\n      this._request = http.request(\n        createRequestOptions(this._url, stream.httpHeaders),\n        handleResponse\n      );\n    } else {\n      this._request = https.request(\n        createRequestOptions(this._url, stream.httpHeaders),\n        handleResponse\n      );\n    }\n\n    this._request.on(\"error\", reason => {\n      this._storedError = reason;\n      this._headersCapability.reject(reason);\n    });\n    // Note: `request.end(data)` is used to write `data` to request body\n    // and notify end of request. But one should always call `request.end()`\n    // even if there is no data to write -- (to notify the end of request).\n    this._request.end();\n  }\n}\n\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n  constructor(stream, start, end) {\n    super(stream);\n\n    this._httpHeaders = {};\n    for (const property in stream.httpHeaders) {\n      const value = stream.httpHeaders[property];\n      if (value === undefined) {\n        continue;\n      }\n      this._httpHeaders[property] = value;\n    }\n    this._httpHeaders.Range = `bytes=${start}-${end - 1}`;\n\n    const handleResponse = response => {\n      if (response.statusCode === 404) {\n        const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n        this._storedError = error;\n        return;\n      }\n      this._setReadableStream(response);\n    };\n\n    this._request = null;\n    if (this._url.protocol === \"http:\") {\n      this._request = http.request(\n        createRequestOptions(this._url, this._httpHeaders),\n        handleResponse\n      );\n    } else {\n      this._request = https.request(\n        createRequestOptions(this._url, this._httpHeaders),\n        handleResponse\n      );\n    }\n\n    this._request.on(\"error\", reason => {\n      this._storedError = reason;\n    });\n    this._request.end();\n  }\n}\n\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n  constructor(stream) {\n    super(stream);\n\n    let path = decodeURIComponent(this._url.path);\n\n    // Remove the extra slash to get right path from url like `file:///C:/`\n    if (fileUriRegex.test(this._url.href)) {\n      path = path.replace(/^\\//, \"\");\n    }\n\n    fs.lstat(path, (error, stat) => {\n      if (error) {\n        if (error.code === \"ENOENT\") {\n          error = new MissingPDFException(`Missing PDF \"${path}\".`);\n        }\n        this._storedError = error;\n        this._headersCapability.reject(error);\n        return;\n      }\n      // Setting right content length.\n      this._contentLength = stat.size;\n\n      this._setReadableStream(fs.createReadStream(path));\n      this._headersCapability.resolve();\n    });\n  }\n}\n\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n  constructor(stream, start, end) {\n    super(stream);\n\n    let path = decodeURIComponent(this._url.path);\n\n    // Remove the extra slash to get right path from url like `file:///C:/`\n    if (fileUriRegex.test(this._url.href)) {\n      path = path.replace(/^\\//, \"\");\n    }\n\n    this._setReadableStream(fs.createReadStream(path, { start, end: end - 1 }));\n  }\n}\n\nexport { PDFNodeStream };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  BaseCanvasFactory,\n  BaseCMapReaderFactory,\n  BaseFilterFactory,\n  BaseStandardFontDataFactory,\n} from \"./base_factory.js\";\nimport { isNodeJS, warn } from \"../shared/util.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n  throw new Error(\n    'Module \"./node_utils.js\" shall not be used with MOZCENTRAL builds.'\n  );\n}\n\nlet fs, canvas, path2d_polyfill;\nif (isNodeJS) {\n  // Native packages.\n  fs = await import(/* webpackIgnore: true */ \"fs\");\n  // Optional, third-party, packages.\n  try {\n    canvas = await import(/* webpackIgnore: true */ \"canvas\");\n  } catch {}\n  try {\n    path2d_polyfill = await import(/* webpackIgnore: true */ \"path2d-polyfill\");\n  } catch {}\n}\n\nif (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"SKIP_BABEL\")) {\n  (function checkDOMMatrix() {\n    if (globalThis.DOMMatrix || !isNodeJS) {\n      return;\n    }\n    const DOMMatrix = canvas?.DOMMatrix;\n\n    if (DOMMatrix) {\n      globalThis.DOMMatrix = DOMMatrix;\n    } else {\n      warn(\"Cannot polyfill `DOMMatrix`, rendering may be broken.\");\n    }\n  })();\n\n  (function checkPath2D() {\n    if (globalThis.Path2D || !isNodeJS) {\n      return;\n    }\n    const CanvasRenderingContext2D = canvas?.CanvasRenderingContext2D;\n    const polyfillPath2D = path2d_polyfill?.polyfillPath2D;\n\n    if (CanvasRenderingContext2D && polyfillPath2D) {\n      globalThis.CanvasRenderingContext2D = CanvasRenderingContext2D;\n      polyfillPath2D(globalThis);\n    } else {\n      warn(\"Cannot polyfill `Path2D`, rendering may be broken.\");\n    }\n  })();\n}\n\nconst fetchData = function (url) {\n  return new Promise((resolve, reject) => {\n    fs.readFile(url, (error, data) => {\n      if (error || !data) {\n        reject(new Error(error));\n        return;\n      }\n      resolve(new Uint8Array(data));\n    });\n  });\n};\n\nclass NodeFilterFactory extends BaseFilterFactory {}\n\nclass NodeCanvasFactory extends BaseCanvasFactory {\n  /**\n   * @ignore\n   */\n  _createCanvas(width, height) {\n    return canvas.createCanvas(width, height);\n  }\n}\n\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n  /**\n   * @ignore\n   */\n  _fetchData(url, compressionType) {\n    return fetchData(url).then(data => {\n      return { cMapData: data, compressionType };\n    });\n  }\n}\n\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n  /**\n   * @ignore\n   */\n  _fetchData(url) {\n    return fetchData(url);\n  }\n}\n\nexport {\n  NodeCanvasFactory,\n  NodeCMapReaderFactory,\n  NodeFilterFactory,\n  NodeStandardFontDataFactory,\n};\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { objectFromMap, unreachable, warn } from \"../shared/util.js\";\nimport { MurmurHash3_64 } from \"../shared/murmurhash3.js\";\n\nconst INTERNAL = Symbol(\"INTERNAL\");\n\nclass OptionalContentGroup {\n  #visible = true;\n\n  constructor(name, intent) {\n    this.name = name;\n    this.intent = intent;\n  }\n\n  /**\n   * @type {boolean}\n   */\n  get visible() {\n    return this.#visible;\n  }\n\n  /**\n   * @ignore\n   */\n  _setVisible(internal, visible) {\n    if (internal !== INTERNAL) {\n      unreachable(\"Internal method `_setVisible` called.\");\n    }\n    this.#visible = visible;\n  }\n}\n\nclass OptionalContentConfig {\n  #cachedGetHash = null;\n\n  #groups = new Map();\n\n  #initialHash = null;\n\n  #order = null;\n\n  constructor(data) {\n    this.name = null;\n    this.creator = null;\n\n    if (data === null) {\n      return;\n    }\n    this.name = data.name;\n    this.creator = data.creator;\n    this.#order = data.order;\n    for (const group of data.groups) {\n      this.#groups.set(\n        group.id,\n        new OptionalContentGroup(group.name, group.intent)\n      );\n    }\n\n    if (data.baseState === \"OFF\") {\n      for (const group of this.#groups.values()) {\n        group._setVisible(INTERNAL, false);\n      }\n    }\n\n    for (const on of data.on) {\n      this.#groups.get(on)._setVisible(INTERNAL, true);\n    }\n\n    for (const off of data.off) {\n      this.#groups.get(off)._setVisible(INTERNAL, false);\n    }\n\n    // The following code must always run *last* in the constructor.\n    this.#initialHash = this.getHash();\n  }\n\n  #evaluateVisibilityExpression(array) {\n    const length = array.length;\n    if (length < 2) {\n      return true;\n    }\n    const operator = array[0];\n    for (let i = 1; i < length; i++) {\n      const element = array[i];\n      let state;\n      if (Array.isArray(element)) {\n        state = this.#evaluateVisibilityExpression(element);\n      } else if (this.#groups.has(element)) {\n        state = this.#groups.get(element).visible;\n      } else {\n        warn(`Optional content group not found: ${element}`);\n        return true;\n      }\n      switch (operator) {\n        case \"And\":\n          if (!state) {\n            return false;\n          }\n          break;\n        case \"Or\":\n          if (state) {\n            return true;\n          }\n          break;\n        case \"Not\":\n          return !state;\n        default:\n          return true;\n      }\n    }\n    return operator === \"And\";\n  }\n\n  isVisible(group) {\n    if (this.#groups.size === 0) {\n      return true;\n    }\n    if (!group) {\n      warn(\"Optional content group not defined.\");\n      return true;\n    }\n    if (group.type === \"OCG\") {\n      if (!this.#groups.has(group.id)) {\n        warn(`Optional content group not found: ${group.id}`);\n        return true;\n      }\n      return this.#groups.get(group.id).visible;\n    } else if (group.type === \"OCMD\") {\n      // Per the spec, the expression should be preferred if available.\n      if (group.expression) {\n        return this.#evaluateVisibilityExpression(group.expression);\n      }\n      if (!group.policy || group.policy === \"AnyOn\") {\n        // Default\n        for (const id of group.ids) {\n          if (!this.#groups.has(id)) {\n            warn(`Optional content group not found: ${id}`);\n            return true;\n          }\n          if (this.#groups.get(id).visible) {\n            return true;\n          }\n        }\n        return false;\n      } else if (group.policy === \"AllOn\") {\n        for (const id of group.ids) {\n          if (!this.#groups.has(id)) {\n            warn(`Optional content group not found: ${id}`);\n            return true;\n          }\n          if (!this.#groups.get(id).visible) {\n            return false;\n          }\n        }\n        return true;\n      } else if (group.policy === \"AnyOff\") {\n        for (const id of group.ids) {\n          if (!this.#groups.has(id)) {\n            warn(`Optional content group not found: ${id}`);\n            return true;\n          }\n          if (!this.#groups.get(id).visible) {\n            return true;\n          }\n        }\n        return false;\n      } else if (group.policy === \"AllOff\") {\n        for (const id of group.ids) {\n          if (!this.#groups.has(id)) {\n            warn(`Optional content group not found: ${id}`);\n            return true;\n          }\n          if (this.#groups.get(id).visible) {\n            return false;\n          }\n        }\n        return true;\n      }\n      warn(`Unknown optional content policy ${group.policy}.`);\n      return true;\n    }\n    warn(`Unknown group type ${group.type}.`);\n    return true;\n  }\n\n  setVisibility(id, visible = true) {\n    if (!this.#groups.has(id)) {\n      warn(`Optional content group not found: ${id}`);\n      return;\n    }\n    this.#groups.get(id)._setVisible(INTERNAL, !!visible);\n\n    this.#cachedGetHash = null;\n  }\n\n  get hasInitialVisibility() {\n    return this.#initialHash === null || this.getHash() === this.#initialHash;\n  }\n\n  getOrder() {\n    if (!this.#groups.size) {\n      return null;\n    }\n    if (this.#order) {\n      return this.#order.slice();\n    }\n    return [...this.#groups.keys()];\n  }\n\n  getGroups() {\n    return this.#groups.size > 0 ? objectFromMap(this.#groups) : null;\n  }\n\n  getGroup(id) {\n    return this.#groups.get(id) || null;\n  }\n\n  getHash() {\n    if (this.#cachedGetHash !== null) {\n      return this.#cachedGetHash;\n    }\n    const hash = new MurmurHash3_64();\n\n    for (const [id, group] of this.#groups) {\n      hash.update(`${id}:${group.visible}`);\n    }\n    return (this.#cachedGetHash = hash.hexdigest());\n  }\n}\n\nexport { OptionalContentConfig };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./api\").TextContent} TextContent */\n\nimport {\n  AbortException,\n  FeatureTest,\n  PromiseCapability,\n  Util,\n} from \"../shared/util.js\";\nimport { setLayerDimensions } from \"./display_utils.js\";\n\n/**\n * Text layer render parameters.\n *\n * @typedef {Object} TextLayerRenderParameters\n * @property {ReadableStream | TextContent} textContentSource - Text content to\n *   render, i.e. the value returned by the page's `streamTextContent` or\n *   `getTextContent` method.\n * @property {HTMLElement} container - The DOM node that will contain the text\n *   runs.\n * @property {PageViewport} viewport - The target viewport to properly layout\n *   the text runs.\n * @property {Array<HTMLElement>} [textDivs] - HTML elements that correspond to\n *   the text items of the textContent input.\n *   This is output and shall initially be set to an empty array.\n * @property {WeakMap<HTMLElement,Object>} [textDivProperties] - Some properties\n *   weakly mapped to the HTML elements used to render the text.\n * @property {Array<string>} [textContentItemsStr] - Strings that correspond to\n *   the `str` property of the text items of the textContent input.\n *   This is output and shall initially be set to an empty array.\n * @property {boolean} [isOffscreenCanvasSupported] true if we can use\n *   OffscreenCanvas to measure string widths.\n */\n\n/**\n * Text layer update parameters.\n *\n * @typedef {Object} TextLayerUpdateParameters\n * @property {HTMLElement} container - The DOM node that will contain the text\n *   runs.\n * @property {PageViewport} viewport - The target viewport to properly layout\n *   the text runs.\n * @property {Array<HTMLElement>} [textDivs] - HTML elements that correspond to\n *   the text items of the textContent input.\n *   This is output and shall initially be set to an empty array.\n * @property {WeakMap<HTMLElement,Object>} [textDivProperties] - Some properties\n *   weakly mapped to the HTML elements used to render the text.\n * @property {boolean} [isOffscreenCanvasSupported] true if we can use\n *   OffscreenCanvas to measure string widths.\n * @property {boolean} [mustRotate] true if the text layer must be rotated.\n * @property {boolean} [mustRescale] true if the text layer contents must be\n *   rescaled.\n */\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nconst ascentCache = new Map();\n\nfunction getCtx(size, isOffscreenCanvasSupported) {\n  let ctx;\n  if (isOffscreenCanvasSupported && FeatureTest.isOffscreenCanvasSupported) {\n    ctx = new OffscreenCanvas(size, size).getContext(\"2d\", { alpha: false });\n  } else {\n    const canvas = document.createElement(\"canvas\");\n    canvas.width = canvas.height = size;\n    ctx = canvas.getContext(\"2d\", { alpha: false });\n  }\n\n  return ctx;\n}\n\nfunction getAscent(fontFamily, isOffscreenCanvasSupported) {\n  const cachedAscent = ascentCache.get(fontFamily);\n  if (cachedAscent) {\n    return cachedAscent;\n  }\n\n  const ctx = getCtx(DEFAULT_FONT_SIZE, isOffscreenCanvasSupported);\n\n  ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;\n  const metrics = ctx.measureText(\"\");\n\n  // Both properties aren't available by default in Firefox.\n  let ascent = metrics.fontBoundingBoxAscent;\n  let descent = Math.abs(metrics.fontBoundingBoxDescent);\n  if (ascent) {\n    const ratio = ascent / (ascent + descent);\n    ascentCache.set(fontFamily, ratio);\n\n    ctx.canvas.width = ctx.canvas.height = 0;\n    return ratio;\n  }\n\n  // Try basic heuristic to guess ascent/descent.\n  // Draw a g with baseline at 0,0 and then get the line\n  // number where a pixel has non-null red component (starting\n  // from bottom).\n  ctx.strokeStyle = \"red\";\n  ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n  ctx.strokeText(\"g\", 0, 0);\n  let pixels = ctx.getImageData(\n    0,\n    0,\n    DEFAULT_FONT_SIZE,\n    DEFAULT_FONT_SIZE\n  ).data;\n  descent = 0;\n  for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n    if (pixels[i] > 0) {\n      descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);\n      break;\n    }\n  }\n\n  // Draw an A with baseline at 0,DEFAULT_FONT_SIZE and then get the line\n  // number where a pixel has non-null red component (starting\n  // from top).\n  ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n  ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n  pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n  ascent = 0;\n  for (let i = 0, ii = pixels.length; i < ii; i += 4) {\n    if (pixels[i] > 0) {\n      ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);\n      break;\n    }\n  }\n\n  ctx.canvas.width = ctx.canvas.height = 0;\n\n  if (ascent) {\n    const ratio = ascent / (ascent + descent);\n    ascentCache.set(fontFamily, ratio);\n    return ratio;\n  }\n\n  ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT);\n  return DEFAULT_FONT_ASCENT;\n}\n\nfunction appendText(task, geom, styles) {\n  // Initialize all used properties to keep the caches monomorphic.\n  const textDiv = document.createElement(\"span\");\n  const textDivProperties = {\n    angle: 0,\n    canvasWidth: 0,\n    hasText: geom.str !== \"\",\n    hasEOL: geom.hasEOL,\n    fontSize: 0,\n  };\n  task._textDivs.push(textDiv);\n\n  const tx = Util.transform(task._transform, geom.transform);\n  let angle = Math.atan2(tx[1], tx[0]);\n  const style = styles[geom.fontName];\n  if (style.vertical) {\n    angle += Math.PI / 2;\n  }\n\n  const fontFamily =\n    (task._fontInspectorEnabled && style.fontSubstitution) || style.fontFamily;\n  const fontHeight = Math.hypot(tx[2], tx[3]);\n  const fontAscent =\n    fontHeight * getAscent(fontFamily, task._isOffscreenCanvasSupported);\n\n  let left, top;\n  if (angle === 0) {\n    left = tx[4];\n    top = tx[5] - fontAscent;\n  } else {\n    left = tx[4] + fontAscent * Math.sin(angle);\n    top = tx[5] - fontAscent * Math.cos(angle);\n  }\n\n  const scaleFactorStr = \"calc(var(--scale-factor)*\";\n  const divStyle = textDiv.style;\n  // Setting the style properties individually, rather than all at once,\n  // should be OK since the `textDiv` isn't appended to the document yet.\n  if (task._container === task._rootContainer) {\n    divStyle.left = `${((100 * left) / task._pageWidth).toFixed(2)}%`;\n    divStyle.top = `${((100 * top) / task._pageHeight).toFixed(2)}%`;\n  } else {\n    // We're in a marked content span, hence we can't use percents.\n    divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n    divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n  }\n  divStyle.fontSize = `${scaleFactorStr}${fontHeight.toFixed(2)}px)`;\n  divStyle.fontFamily = fontFamily;\n\n  textDivProperties.fontSize = fontHeight;\n\n  // Keeps screen readers from pausing on every new text span.\n  textDiv.setAttribute(\"role\", \"presentation\");\n\n  textDiv.textContent = geom.str;\n  // geom.dir may be 'ttb' for vertical texts.\n  textDiv.dir = geom.dir;\n\n  // `fontName` is only used by the FontInspector, and we only use `dataset`\n  // here to make the font name available in the debugger.\n  if (task._fontInspectorEnabled) {\n    textDiv.dataset.fontName =\n      style.fontSubstitutionLoadedName || geom.fontName;\n  }\n  if (angle !== 0) {\n    textDivProperties.angle = angle * (180 / Math.PI);\n  }\n  // We don't bother scaling single-char text divs, because it has very\n  // little effect on text highlighting. This makes scrolling on docs with\n  // lots of such divs a lot faster.\n  let shouldScaleText = false;\n  if (geom.str.length > 1) {\n    shouldScaleText = true;\n  } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n    const absScaleX = Math.abs(geom.transform[0]),\n      absScaleY = Math.abs(geom.transform[3]);\n    // When the horizontal/vertical scaling differs significantly, also scale\n    // even single-char text to improve highlighting (fixes issue11713.pdf).\n    if (\n      absScaleX !== absScaleY &&\n      Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5\n    ) {\n      shouldScaleText = true;\n    }\n  }\n  if (shouldScaleText) {\n    textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n  }\n  task._textDivProperties.set(textDiv, textDivProperties);\n  if (task._isReadableStream) {\n    task._layoutText(textDiv);\n  }\n}\n\nfunction layout(params) {\n  const { div, scale, properties, ctx, prevFontSize, prevFontFamily } = params;\n  const { style } = div;\n  let transform = \"\";\n  if (properties.canvasWidth !== 0 && properties.hasText) {\n    const { fontFamily } = style;\n    const { canvasWidth, fontSize } = properties;\n\n    if (prevFontSize !== fontSize || prevFontFamily !== fontFamily) {\n      ctx.font = `${fontSize * scale}px ${fontFamily}`;\n      params.prevFontSize = fontSize;\n      params.prevFontFamily = fontFamily;\n    }\n\n    // Only measure the width for multi-char text divs, see `appendText`.\n    const { width } = ctx.measureText(div.textContent);\n\n    if (width > 0) {\n      transform = `scaleX(${(canvasWidth * scale) / width})`;\n    }\n  }\n  if (properties.angle !== 0) {\n    transform = `rotate(${properties.angle}deg) ${transform}`;\n  }\n  if (transform.length > 0) {\n    style.transform = transform;\n  }\n}\n\nfunction render(task) {\n  if (task._canceled) {\n    return;\n  }\n  const textDivs = task._textDivs;\n  const capability = task._capability;\n  const textDivsLength = textDivs.length;\n\n  // No point in rendering many divs as it would make the browser\n  // unusable even after the divs are rendered.\n  if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n    capability.resolve();\n    return;\n  }\n\n  if (!task._isReadableStream) {\n    for (const textDiv of textDivs) {\n      task._layoutText(textDiv);\n    }\n  }\n  capability.resolve();\n}\n\nclass TextLayerRenderTask {\n  constructor({\n    textContentSource,\n    container,\n    viewport,\n    textDivs,\n    textDivProperties,\n    textContentItemsStr,\n    isOffscreenCanvasSupported,\n  }) {\n    this._textContentSource = textContentSource;\n    this._isReadableStream = textContentSource instanceof ReadableStream;\n    this._container = this._rootContainer = container;\n    this._textDivs = textDivs || [];\n    this._textContentItemsStr = textContentItemsStr || [];\n    this._isOffscreenCanvasSupported = isOffscreenCanvasSupported;\n    this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n\n    this._reader = null;\n    this._textDivProperties = textDivProperties || new WeakMap();\n    this._canceled = false;\n    this._capability = new PromiseCapability();\n    this._layoutTextParams = {\n      prevFontSize: null,\n      prevFontFamily: null,\n      div: null,\n      scale: viewport.scale * (globalThis.devicePixelRatio || 1),\n      properties: null,\n      ctx: getCtx(0, isOffscreenCanvasSupported),\n    };\n    const { pageWidth, pageHeight, pageX, pageY } = viewport.rawDims;\n    this._transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n    this._pageWidth = pageWidth;\n    this._pageHeight = pageHeight;\n\n    setLayerDimensions(container, viewport);\n\n    // Always clean-up the temporary canvas once rendering is no longer pending.\n    this._capability.promise\n      .finally(() => {\n        this._layoutTextParams = null;\n      })\n      .catch(() => {\n        // Avoid \"Uncaught promise\" messages in the console.\n      });\n  }\n\n  /**\n   * Promise for textLayer rendering task completion.\n   * @type {Promise<void>}\n   */\n  get promise() {\n    return this._capability.promise;\n  }\n\n  /**\n   * Cancel rendering of the textLayer.\n   */\n  cancel() {\n    this._canceled = true;\n    if (this._reader) {\n      this._reader\n        .cancel(new AbortException(\"TextLayer task cancelled.\"))\n        .catch(() => {\n          // Avoid \"Uncaught promise\" messages in the console.\n        });\n      this._reader = null;\n    }\n    this._capability.reject(new AbortException(\"TextLayer task cancelled.\"));\n  }\n\n  /**\n   * @private\n   */\n  _processItems(items, styleCache) {\n    for (const item of items) {\n      if (item.str === undefined) {\n        if (\n          item.type === \"beginMarkedContentProps\" ||\n          item.type === \"beginMarkedContent\"\n        ) {\n          const parent = this._container;\n          this._container = document.createElement(\"span\");\n          this._container.classList.add(\"markedContent\");\n          if (item.id !== null) {\n            this._container.setAttribute(\"id\", `${item.id}`);\n          }\n          parent.append(this._container);\n        } else if (item.type === \"endMarkedContent\") {\n          this._container = this._container.parentNode;\n        }\n        continue;\n      }\n      this._textContentItemsStr.push(item.str);\n      appendText(this, item, styleCache);\n    }\n  }\n\n  /**\n   * @private\n   */\n  _layoutText(textDiv) {\n    const textDivProperties = (this._layoutTextParams.properties =\n      this._textDivProperties.get(textDiv));\n    this._layoutTextParams.div = textDiv;\n    layout(this._layoutTextParams);\n\n    if (textDivProperties.hasText) {\n      this._container.append(textDiv);\n    }\n    if (textDivProperties.hasEOL) {\n      const br = document.createElement(\"br\");\n      br.setAttribute(\"role\", \"presentation\");\n      this._container.append(br);\n    }\n  }\n\n  /**\n   * @private\n   */\n  _render() {\n    const capability = new PromiseCapability();\n    let styleCache = Object.create(null);\n\n    if (this._isReadableStream) {\n      const pump = () => {\n        this._reader.read().then(({ value, done }) => {\n          if (done) {\n            capability.resolve();\n            return;\n          }\n\n          Object.assign(styleCache, value.styles);\n          this._processItems(value.items, styleCache);\n          pump();\n        }, capability.reject);\n      };\n\n      this._reader = this._textContentSource.getReader();\n      pump();\n    } else if (this._textContentSource) {\n      const { items, styles } = this._textContentSource;\n      this._processItems(items, styles);\n      capability.resolve();\n    } else {\n      throw new Error('No \"textContentSource\" parameter specified.');\n    }\n\n    capability.promise.then(() => {\n      styleCache = null;\n      render(this);\n    }, this._capability.reject);\n  }\n}\n\n/**\n * @param {TextLayerRenderParameters} params\n * @returns {TextLayerRenderTask}\n */\nfunction renderTextLayer(params) {\n  const task = new TextLayerRenderTask(params);\n  task._render();\n  return task;\n}\n\n/**\n * @param {TextLayerUpdateParameters} params\n * @returns {undefined}\n */\nfunction updateTextLayer({\n  container,\n  viewport,\n  textDivs,\n  textDivProperties,\n  isOffscreenCanvasSupported,\n  mustRotate = true,\n  mustRescale = true,\n}) {\n  if (mustRotate) {\n    setLayerDimensions(container, { rotation: viewport.rotation });\n  }\n\n  if (mustRescale) {\n    const ctx = getCtx(0, isOffscreenCanvasSupported);\n    const scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n    const params = {\n      prevFontSize: null,\n      prevFontFamily: null,\n      div: null,\n      scale,\n      properties: null,\n      ctx,\n    };\n    for (const div of textDivs) {\n      params.properties = textDivProperties.get(div);\n      params.div = div;\n      layout(params);\n    }\n  }\n}\n\nexport { renderTextLayer, TextLayerRenderTask, updateTextLayer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../interfaces\").IPDFStream} IPDFStream */\n/** @typedef {import(\"../interfaces\").IPDFStreamReader} IPDFStreamReader */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../interfaces\").IPDFStreamRangeReader} IPDFStreamRangeReader */\n\nimport { assert, PromiseCapability } from \"../shared/util.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\n/** @implements {IPDFStream} */\nclass PDFDataTransportStream {\n  constructor(\n    {\n      length,\n      initialData,\n      progressiveDone = false,\n      contentDispositionFilename = null,\n      disableRange = false,\n      disableStream = false,\n    },\n    pdfDataRangeTransport\n  ) {\n    assert(\n      pdfDataRangeTransport,\n      'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.'\n    );\n\n    this._queuedChunks = [];\n    this._progressiveDone = progressiveDone;\n    this._contentDispositionFilename = contentDispositionFilename;\n\n    if (initialData?.length > 0) {\n      // Prevent any possible issues by only transferring a Uint8Array that\n      // completely \"utilizes\" its underlying ArrayBuffer.\n      const buffer =\n        initialData instanceof Uint8Array &&\n        initialData.byteLength === initialData.buffer.byteLength\n          ? initialData.buffer\n          : new Uint8Array(initialData).buffer;\n      this._queuedChunks.push(buffer);\n    }\n\n    this._pdfDataRangeTransport = pdfDataRangeTransport;\n    this._isStreamingSupported = !disableStream;\n    this._isRangeSupported = !disableRange;\n    this._contentLength = length;\n\n    this._fullRequestReader = null;\n    this._rangeReaders = [];\n\n    this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n      this._onReceiveData({ begin, chunk });\n    });\n\n    this._pdfDataRangeTransport.addProgressListener((loaded, total) => {\n      this._onProgress({ loaded, total });\n    });\n\n    this._pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n      this._onReceiveData({ chunk });\n    });\n\n    this._pdfDataRangeTransport.addProgressiveDoneListener(() => {\n      this._onProgressiveDone();\n    });\n\n    this._pdfDataRangeTransport.transportReady();\n  }\n\n  _onReceiveData({ begin, chunk }) {\n    // Prevent any possible issues by only transferring a Uint8Array that\n    // completely \"utilizes\" its underlying ArrayBuffer.\n    const buffer =\n      chunk instanceof Uint8Array &&\n      chunk.byteLength === chunk.buffer.byteLength\n        ? chunk.buffer\n        : new Uint8Array(chunk).buffer;\n\n    if (begin === undefined) {\n      if (this._fullRequestReader) {\n        this._fullRequestReader._enqueue(buffer);\n      } else {\n        this._queuedChunks.push(buffer);\n      }\n    } else {\n      const found = this._rangeReaders.some(function (rangeReader) {\n        if (rangeReader._begin !== begin) {\n          return false;\n        }\n        rangeReader._enqueue(buffer);\n        return true;\n      });\n      assert(\n        found,\n        \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\"\n      );\n    }\n  }\n\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n\n  _onProgress(evt) {\n    if (evt.total === undefined) {\n      // Reporting to first range reader, if it exists.\n      this._rangeReaders[0]?.onProgress?.({ loaded: evt.loaded });\n    } else {\n      this._fullRequestReader?.onProgress?.({\n        loaded: evt.loaded,\n        total: evt.total,\n      });\n    }\n  }\n\n  _onProgressiveDone() {\n    this._fullRequestReader?.progressiveDone();\n    this._progressiveDone = true;\n  }\n\n  _removeRangeReader(reader) {\n    const i = this._rangeReaders.indexOf(reader);\n    if (i >= 0) {\n      this._rangeReaders.splice(i, 1);\n    }\n  }\n\n  getFullReader() {\n    assert(\n      !this._fullRequestReader,\n      \"PDFDataTransportStream.getFullReader can only be called once.\"\n    );\n    const queuedChunks = this._queuedChunks;\n    this._queuedChunks = null;\n    return new PDFDataTransportStreamReader(\n      this,\n      queuedChunks,\n      this._progressiveDone,\n      this._contentDispositionFilename\n    );\n  }\n\n  getRangeReader(begin, end) {\n    if (end <= this._progressiveDataLength) {\n      return null;\n    }\n    const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n    this._pdfDataRangeTransport.requestDataRange(begin, end);\n    this._rangeReaders.push(reader);\n    return reader;\n  }\n\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n\n    for (const reader of this._rangeReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n    this._pdfDataRangeTransport.abort();\n  }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFDataTransportStreamReader {\n  constructor(\n    stream,\n    queuedChunks,\n    progressiveDone = false,\n    contentDispositionFilename = null\n  ) {\n    this._stream = stream;\n    this._done = progressiveDone || false;\n    this._filename = isPdfFile(contentDispositionFilename)\n      ? contentDispositionFilename\n      : null;\n    this._queuedChunks = queuedChunks || [];\n    this._loaded = 0;\n    for (const chunk of this._queuedChunks) {\n      this._loaded += chunk.byteLength;\n    }\n    this._requests = [];\n    this._headersReady = Promise.resolve();\n    stream._fullRequestReader = this;\n\n    this.onProgress = null;\n  }\n\n  _enqueue(chunk) {\n    if (this._done) {\n      return; // Ignore new data.\n    }\n    if (this._requests.length > 0) {\n      const requestCapability = this._requests.shift();\n      requestCapability.resolve({ value: chunk, done: false });\n    } else {\n      this._queuedChunks.push(chunk);\n    }\n    this._loaded += chunk.byteLength;\n  }\n\n  get headersReady() {\n    return this._headersReady;\n  }\n\n  get filename() {\n    return this._filename;\n  }\n\n  get isRangeSupported() {\n    return this._stream._isRangeSupported;\n  }\n\n  get isStreamingSupported() {\n    return this._stream._isStreamingSupported;\n  }\n\n  get contentLength() {\n    return this._stream._contentLength;\n  }\n\n  async read() {\n    if (this._queuedChunks.length > 0) {\n      const chunk = this._queuedChunks.shift();\n      return { value: chunk, done: false };\n    }\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    const requestCapability = new PromiseCapability();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n\n  cancel(reason) {\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n  }\n\n  progressiveDone() {\n    if (this._done) {\n      return;\n    }\n    this._done = true;\n  }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFDataTransportStreamRangeReader {\n  constructor(stream, begin, end) {\n    this._stream = stream;\n    this._begin = begin;\n    this._end = end;\n    this._queuedChunk = null;\n    this._requests = [];\n    this._done = false;\n\n    this.onProgress = null;\n  }\n\n  _enqueue(chunk) {\n    if (this._done) {\n      return; // ignore new data\n    }\n    if (this._requests.length === 0) {\n      this._queuedChunk = chunk;\n    } else {\n      const requestsCapability = this._requests.shift();\n      requestsCapability.resolve({ value: chunk, done: false });\n      for (const requestCapability of this._requests) {\n        requestCapability.resolve({ value: undefined, done: true });\n      }\n      this._requests.length = 0;\n    }\n    this._done = true;\n    this._stream._removeRangeReader(this);\n  }\n\n  get isStreamingSupported() {\n    return false;\n  }\n\n  async read() {\n    if (this._queuedChunk) {\n      const chunk = this._queuedChunk;\n      this._queuedChunk = null;\n      return { value: chunk, done: false };\n    }\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    const requestCapability = new PromiseCapability();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n\n  cancel(reason) {\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n    this._stream._removeRangeReader(this);\n  }\n}\n\nexport { PDFDataTransportStream };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @typedef {Object} GlobalWorkerOptionsType\n * @property {Worker | null} workerPort - Defines global port for worker\n *   process. Overrides the `workerSrc` option.\n * @property {string} workerSrc - A string containing the path and filename\n *   of the worker file.\n *\n *   NOTE: The `workerSrc` option should always be set, in order to prevent any\n *         issues when using the PDF.js library.\n */\n\n/** @type {GlobalWorkerOptionsType} */\nconst GlobalWorkerOptions = Object.create(null);\n\nGlobalWorkerOptions.workerPort = null;\nGlobalWorkerOptions.workerSrc = \"\";\n\nexport { GlobalWorkerOptions };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_storage\").AnnotationStorage} AnnotationStorage */\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { XfaText } from \"./xfa_text.js\";\n\n/**\n * @typedef {Object} XfaLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Object} xfaHtml\n * @property {AnnotationStorage} [annotationStorage]\n * @property {IPDFLinkService} linkService\n * @property {string} [intent] - (default value is 'display').\n */\n\nclass XfaLayer {\n  static setupStorage(html, id, element, storage, intent) {\n    const storedData = storage.getValue(id, { value: null });\n    switch (element.name) {\n      case \"textarea\":\n        if (storedData.value !== null) {\n          html.textContent = storedData.value;\n        }\n        if (intent === \"print\") {\n          break;\n        }\n        html.addEventListener(\"input\", event => {\n          storage.setValue(id, { value: event.target.value });\n        });\n        break;\n      case \"input\":\n        if (\n          element.attributes.type === \"radio\" ||\n          element.attributes.type === \"checkbox\"\n        ) {\n          if (storedData.value === element.attributes.xfaOn) {\n            html.setAttribute(\"checked\", true);\n          } else if (storedData.value === element.attributes.xfaOff) {\n            // The checked attribute may have been set when opening the file,\n            // unset through the UI and we're here because of printing.\n            html.removeAttribute(\"checked\");\n          }\n          if (intent === \"print\") {\n            break;\n          }\n          html.addEventListener(\"change\", event => {\n            storage.setValue(id, {\n              value: event.target.checked\n                ? event.target.getAttribute(\"xfaOn\")\n                : event.target.getAttribute(\"xfaOff\"),\n            });\n          });\n        } else {\n          if (storedData.value !== null) {\n            html.setAttribute(\"value\", storedData.value);\n          }\n          if (intent === \"print\") {\n            break;\n          }\n          html.addEventListener(\"input\", event => {\n            storage.setValue(id, { value: event.target.value });\n          });\n        }\n        break;\n      case \"select\":\n        if (storedData.value !== null) {\n          html.setAttribute(\"value\", storedData.value);\n          for (const option of element.children) {\n            if (option.attributes.value === storedData.value) {\n              option.attributes.selected = true;\n            } else if (option.attributes.hasOwnProperty(\"selected\")) {\n              delete option.attributes.selected;\n            }\n          }\n        }\n        html.addEventListener(\"input\", event => {\n          const options = event.target.options;\n          const value =\n            options.selectedIndex === -1\n              ? \"\"\n              : options[options.selectedIndex].value;\n          storage.setValue(id, { value });\n        });\n        break;\n    }\n  }\n\n  static setAttributes({ html, element, storage = null, intent, linkService }) {\n    const { attributes } = element;\n    const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n\n    if (attributes.type === \"radio\") {\n      // Avoid to have a radio group when printing with the same as one\n      // already displayed.\n      attributes.name = `${attributes.name}-${intent}`;\n    }\n    for (const [key, value] of Object.entries(attributes)) {\n      if (value === null || value === undefined) {\n        continue;\n      }\n\n      switch (key) {\n        case \"class\":\n          if (value.length) {\n            html.setAttribute(key, value.join(\" \"));\n          }\n          break;\n        case \"dataId\":\n          // We don't need to add dataId in the html object but it can\n          // be useful to know its value when writing printing tests:\n          // in this case, don't skip dataId to have its value.\n          break;\n        case \"id\":\n          html.setAttribute(\"data-element-id\", value);\n          break;\n        case \"style\":\n          Object.assign(html.style, value);\n          break;\n        case \"textContent\":\n          html.textContent = value;\n          break;\n        default:\n          if (!isHTMLAnchorElement || (key !== \"href\" && key !== \"newWindow\")) {\n            html.setAttribute(key, value);\n          }\n      }\n    }\n\n    if (isHTMLAnchorElement) {\n      linkService.addLinkAttributes(\n        html,\n        attributes.href,\n        attributes.newWindow\n      );\n    }\n\n    // Set the value after the others to be sure to overwrite any other values.\n    if (storage && attributes.dataId) {\n      this.setupStorage(html, attributes.dataId, element, storage);\n    }\n  }\n\n  /**\n   * Render the XFA layer.\n   *\n   * @param {XfaLayerParameters} parameters\n   */\n  static render(parameters) {\n    const storage = parameters.annotationStorage;\n    const linkService = parameters.linkService;\n    const root = parameters.xfaHtml;\n    const intent = parameters.intent || \"display\";\n    const rootHtml = document.createElement(root.name);\n    if (root.attributes) {\n      this.setAttributes({\n        html: rootHtml,\n        element: root,\n        intent,\n        linkService,\n      });\n    }\n\n    const isNotForRichText = intent !== \"richText\";\n    const rootDiv = parameters.div;\n    rootDiv.append(rootHtml);\n\n    if (parameters.viewport) {\n      const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n      rootDiv.style.transform = transform;\n    }\n\n    // Set defaults.\n    if (isNotForRichText) {\n      rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n    }\n\n    // Text nodes used for the text highlighter.\n    const textDivs = [];\n\n    // In the rich text context, it's possible to just have a text node without\n    // a root element, so we handle this case here (see issue 17215).\n    if (root.children.length === 0) {\n      if (root.value) {\n        const node = document.createTextNode(root.value);\n        rootHtml.append(node);\n        if (isNotForRichText && XfaText.shouldBuildText(root.name)) {\n          textDivs.push(node);\n        }\n      }\n      return { textDivs };\n    }\n\n    const stack = [[root, -1, rootHtml]];\n\n    while (stack.length > 0) {\n      const [parent, i, html] = stack.at(-1);\n      if (i + 1 === parent.children.length) {\n        stack.pop();\n        continue;\n      }\n\n      const child = parent.children[++stack.at(-1)[1]];\n      if (child === null) {\n        continue;\n      }\n\n      const { name } = child;\n      if (name === \"#text\") {\n        const node = document.createTextNode(child.value);\n        textDivs.push(node);\n        html.append(node);\n        continue;\n      }\n\n      const childHtml = child?.attributes?.xmlns\n        ? document.createElementNS(child.attributes.xmlns, name)\n        : document.createElement(name);\n\n      html.append(childHtml);\n      if (child.attributes) {\n        this.setAttributes({\n          html: childHtml,\n          element: child,\n          storage,\n          intent,\n          linkService,\n        });\n      }\n\n      if (child.children?.length > 0) {\n        stack.push([child, -1, childHtml]);\n      } else if (child.value) {\n        const node = document.createTextNode(child.value);\n        if (isNotForRichText && XfaText.shouldBuildText(name)) {\n          textDivs.push(node);\n        }\n        childHtml.append(node);\n      }\n    }\n\n    /**\n     * TODO: re-enable that stuff once we've JS implementation.\n     * See https://bugzilla.mozilla.org/show_bug.cgi?id=1719465.\n     *\n     * for (const el of rootDiv.querySelectorAll(\n     * \".xfaDisabled input, .xfaDisabled textarea\"\n     * )) {\n     * el.setAttribute(\"disabled\", true);\n     * }\n     * for (const el of rootDiv.querySelectorAll(\n     * \".xfaReadOnly input, .xfaReadOnly textarea\"\n     * )) {\n     * el.setAttribute(\"readOnly\", true);\n     * }\n     */\n\n    for (const el of rootDiv.querySelectorAll(\n      \".xfaNonInteractive input, .xfaNonInteractive textarea\"\n    )) {\n      el.setAttribute(\"readOnly\", true);\n    }\n\n    return {\n      textDivs,\n    };\n  }\n\n  /**\n   * Update the XFA layer.\n   *\n   * @param {XfaLayerParameters} parameters\n   */\n  static update(parameters) {\n    const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n    parameters.div.style.transform = transform;\n    parameters.div.hidden = false;\n  }\n}\n\nexport { XfaLayer };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./api\").TextContent} TextContent */\n\nclass XfaText {\n  /**\n   * Walk an XFA tree and create an array of text nodes that is compatible\n   * with a regular PDFs TextContent. Currently, only TextItem.str is supported,\n   * all other fields and styles haven't been implemented.\n   *\n   * @param {Object} xfa - An XFA fake DOM object.\n   *\n   * @returns {TextContent}\n   */\n  static textContent(xfa) {\n    const items = [];\n    const output = {\n      items,\n      styles: Object.create(null),\n    };\n    function walk(node) {\n      if (!node) {\n        return;\n      }\n      let str = null;\n      const name = node.name;\n      if (name === \"#text\") {\n        str = node.value;\n      } else if (!XfaText.shouldBuildText(name)) {\n        return;\n      } else if (node?.attributes?.textContent) {\n        str = node.attributes.textContent;\n      } else if (node.value) {\n        str = node.value;\n      }\n      if (str !== null) {\n        items.push({\n          str,\n        });\n      }\n      if (!node.children) {\n        return;\n      }\n      for (const child of node.children) {\n        walk(child);\n      }\n    }\n    walk(xfa);\n    return output;\n  }\n\n  /**\n   * @param {string} name - DOM node name. (lower case)\n   *\n   * @returns {boolean} true if the DOM node should have a corresponding text\n   * node.\n   */\n  static shouldBuildText(name) {\n    return !(\n      name === \"textarea\" ||\n      name === \"input\" ||\n      name === \"option\" ||\n      name === \"select\"\n    );\n  }\n}\n\nexport { XfaText };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/api\").OnProgressParameters} OnProgressParameters */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/api\").PDFDocumentLoadingTask} PDFDocumentLoadingTask */\n/** @typedef {import(\"./display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"./display/api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display/api\").RenderTask} RenderTask */\n/** @typedef {import(\"./display/display_utils\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/text_layer\").TextLayerRenderTask} TextLayerRenderTask */\n\nimport {\n  AbortException,\n  AnnotationEditorParamsType,\n  AnnotationEditorType,\n  AnnotationMode,\n  CMapCompressionType,\n  createValidAbsoluteUrl,\n  FeatureTest,\n  ImageKind,\n  InvalidPDFException,\n  MissingPDFException,\n  normalizeUnicode,\n  OPS,\n  PasswordResponses,\n  PermissionFlag,\n  PromiseCapability,\n  shadow,\n  UnexpectedResponseException,\n  Util,\n  VerbosityLevel,\n} from \"./shared/util.js\";\nimport {\n  build,\n  getDocument,\n  PDFDataRangeTransport,\n  PDFWorker,\n  version,\n} from \"./display/api.js\";\nimport {\n  DOMSVGFactory,\n  getFilenameFromUrl,\n  getPdfFilenameFromUrl,\n  getXfaPageViewport,\n  isDataScheme,\n  isPdfFile,\n  noContextMenu,\n  PDFDateString,\n  PixelsPerInch,\n  RenderingCancelledException,\n  setLayerDimensions,\n} from \"./display/display_utils.js\";\nimport { renderTextLayer, updateTextLayer } from \"./display/text_layer.js\";\nimport { AnnotationEditorLayer } from \"./display/editor/annotation_editor_layer.js\";\nimport { AnnotationEditorUIManager } from \"./display/editor/tools.js\";\nimport { AnnotationLayer } from \"./display/annotation_layer.js\";\nimport { GlobalWorkerOptions } from \"./display/worker_options.js\";\nimport { XfaLayer } from \"./display/xfa_layer.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion =\n  typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : void 0;\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild =\n  typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : void 0;\n\nexport {\n  AbortException,\n  AnnotationEditorLayer,\n  AnnotationEditorParamsType,\n  AnnotationEditorType,\n  AnnotationEditorUIManager,\n  AnnotationLayer,\n  AnnotationMode,\n  build,\n  CMapCompressionType,\n  createValidAbsoluteUrl,\n  DOMSVGFactory,\n  FeatureTest,\n  getDocument,\n  getFilenameFromUrl,\n  getPdfFilenameFromUrl,\n  getXfaPageViewport,\n  GlobalWorkerOptions,\n  ImageKind,\n  InvalidPDFException,\n  isDataScheme,\n  isPdfFile,\n  MissingPDFException,\n  noContextMenu,\n  normalizeUnicode,\n  OPS,\n  PasswordResponses,\n  PDFDataRangeTransport,\n  PDFDateString,\n  PDFWorker,\n  PermissionFlag,\n  PixelsPerInch,\n  PromiseCapability,\n  RenderingCancelledException,\n  renderTextLayer,\n  setLayerDimensions,\n  shadow,\n  UnexpectedResponseException,\n  updateTextLayer,\n  Util,\n  VerbosityLevel,\n  version,\n  XfaLayer,\n};\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AbortException,\n  assert,\n  MissingPDFException,\n  PasswordException,\n  PromiseCapability,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  unreachable,\n} from \"./util.js\";\n\nconst CallbackKind = {\n  UNKNOWN: 0,\n  DATA: 1,\n  ERROR: 2,\n};\n\nconst StreamKind = {\n  UNKNOWN: 0,\n  CANCEL: 1,\n  CANCEL_COMPLETE: 2,\n  CLOSE: 3,\n  ENQUEUE: 4,\n  ERROR: 5,\n  PULL: 6,\n  PULL_COMPLETE: 7,\n  START_COMPLETE: 8,\n};\n\nfunction wrapReason(reason) {\n  if (\n    !(\n      reason instanceof Error ||\n      (typeof reason === \"object\" && reason !== null)\n    )\n  ) {\n    unreachable(\n      'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n    );\n  }\n  switch (reason.name) {\n    case \"AbortException\":\n      return new AbortException(reason.message);\n    case \"MissingPDFException\":\n      return new MissingPDFException(reason.message);\n    case \"PasswordException\":\n      return new PasswordException(reason.message, reason.code);\n    case \"UnexpectedResponseException\":\n      return new UnexpectedResponseException(reason.message, reason.status);\n    case \"UnknownErrorException\":\n      return new UnknownErrorException(reason.message, reason.details);\n    default:\n      return new UnknownErrorException(reason.message, reason.toString());\n  }\n}\n\nclass MessageHandler {\n  constructor(sourceName, targetName, comObj) {\n    this.sourceName = sourceName;\n    this.targetName = targetName;\n    this.comObj = comObj;\n    this.callbackId = 1;\n    this.streamId = 1;\n    this.streamSinks = Object.create(null);\n    this.streamControllers = Object.create(null);\n    this.callbackCapabilities = Object.create(null);\n    this.actionHandler = Object.create(null);\n\n    this._onComObjOnMessage = event => {\n      const data = event.data;\n      if (data.targetName !== this.sourceName) {\n        return;\n      }\n      if (data.stream) {\n        this.#processStreamMessage(data);\n        return;\n      }\n      if (data.callback) {\n        const callbackId = data.callbackId;\n        const capability = this.callbackCapabilities[callbackId];\n        if (!capability) {\n          throw new Error(`Cannot resolve callback ${callbackId}`);\n        }\n        delete this.callbackCapabilities[callbackId];\n\n        if (data.callback === CallbackKind.DATA) {\n          capability.resolve(data.data);\n        } else if (data.callback === CallbackKind.ERROR) {\n          capability.reject(wrapReason(data.reason));\n        } else {\n          throw new Error(\"Unexpected callback case\");\n        }\n        return;\n      }\n      const action = this.actionHandler[data.action];\n      if (!action) {\n        throw new Error(`Unknown action from worker: ${data.action}`);\n      }\n      if (data.callbackId) {\n        const cbSourceName = this.sourceName;\n        const cbTargetName = data.sourceName;\n\n        new Promise(function (resolve) {\n          resolve(action(data.data));\n        }).then(\n          function (result) {\n            comObj.postMessage({\n              sourceName: cbSourceName,\n              targetName: cbTargetName,\n              callback: CallbackKind.DATA,\n              callbackId: data.callbackId,\n              data: result,\n            });\n          },\n          function (reason) {\n            comObj.postMessage({\n              sourceName: cbSourceName,\n              targetName: cbTargetName,\n              callback: CallbackKind.ERROR,\n              callbackId: data.callbackId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        return;\n      }\n      if (data.streamId) {\n        this.#createStreamSink(data);\n        return;\n      }\n      action(data.data);\n    };\n    comObj.addEventListener(\"message\", this._onComObjOnMessage);\n  }\n\n  on(actionName, handler) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        typeof handler === \"function\",\n        'MessageHandler.on: Expected \"handler\" to be a function.'\n      );\n    }\n    const ah = this.actionHandler;\n    if (ah[actionName]) {\n      throw new Error(`There is already an actionName called \"${actionName}\"`);\n    }\n    ah[actionName] = handler;\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   */\n  send(actionName, data, transfers) {\n    this.comObj.postMessage(\n      {\n        sourceName: this.sourceName,\n        targetName: this.targetName,\n        action: actionName,\n        data,\n      },\n      transfers\n    );\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * Expects that the other side will callback with the response.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   * @returns {Promise} Promise to be resolved with response data.\n   */\n  sendWithPromise(actionName, data, transfers) {\n    const callbackId = this.callbackId++;\n    const capability = new PromiseCapability();\n    this.callbackCapabilities[callbackId] = capability;\n    try {\n      this.comObj.postMessage(\n        {\n          sourceName: this.sourceName,\n          targetName: this.targetName,\n          action: actionName,\n          callbackId,\n          data,\n        },\n        transfers\n      );\n    } catch (ex) {\n      capability.reject(ex);\n    }\n    return capability.promise;\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * Expect that the other side will callback to signal 'start_complete'.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n   *                 internal queue.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   * @returns {ReadableStream} ReadableStream to read data in chunks.\n   */\n  sendWithStream(actionName, data, queueingStrategy, transfers) {\n    const streamId = this.streamId++,\n      sourceName = this.sourceName,\n      targetName = this.targetName,\n      comObj = this.comObj;\n\n    return new ReadableStream(\n      {\n        start: controller => {\n          const startCapability = new PromiseCapability();\n          this.streamControllers[streamId] = {\n            controller,\n            startCall: startCapability,\n            pullCall: null,\n            cancelCall: null,\n            isClosed: false,\n          };\n          comObj.postMessage(\n            {\n              sourceName,\n              targetName,\n              action: actionName,\n              streamId,\n              data,\n              desiredSize: controller.desiredSize,\n            },\n            transfers\n          );\n          // Return Promise for Async process, to signal success/failure.\n          return startCapability.promise;\n        },\n\n        pull: controller => {\n          const pullCapability = new PromiseCapability();\n          this.streamControllers[streamId].pullCall = pullCapability;\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL,\n            streamId,\n            desiredSize: controller.desiredSize,\n          });\n          // Returning Promise will not call \"pull\"\n          // again until current pull is resolved.\n          return pullCapability.promise;\n        },\n\n        cancel: reason => {\n          assert(reason instanceof Error, \"cancel must have a valid reason\");\n          const cancelCapability = new PromiseCapability();\n          this.streamControllers[streamId].cancelCall = cancelCapability;\n          this.streamControllers[streamId].isClosed = true;\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.CANCEL,\n            streamId,\n            reason: wrapReason(reason),\n          });\n          // Return Promise to signal success or failure.\n          return cancelCapability.promise;\n        },\n      },\n      queueingStrategy\n    );\n  }\n\n  #createStreamSink(data) {\n    const streamId = data.streamId,\n      sourceName = this.sourceName,\n      targetName = data.sourceName,\n      comObj = this.comObj;\n    const self = this,\n      action = this.actionHandler[data.action];\n\n    const streamSink = {\n      enqueue(chunk, size = 1, transfers) {\n        if (this.isCancelled) {\n          return;\n        }\n        const lastDesiredSize = this.desiredSize;\n        this.desiredSize -= size;\n        // Enqueue decreases the desiredSize property of sink,\n        // so when it changes from positive to negative,\n        // set ready as unresolved promise.\n        if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n          this.sinkCapability = new PromiseCapability();\n          this.ready = this.sinkCapability.promise;\n        }\n        comObj.postMessage(\n          {\n            sourceName,\n            targetName,\n            stream: StreamKind.ENQUEUE,\n            streamId,\n            chunk,\n          },\n          transfers\n        );\n      },\n\n      close() {\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.CLOSE,\n          streamId,\n        });\n        delete self.streamSinks[streamId];\n      },\n\n      error(reason) {\n        assert(reason instanceof Error, \"error must have a valid reason\");\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.ERROR,\n          streamId,\n          reason: wrapReason(reason),\n        });\n      },\n\n      sinkCapability: new PromiseCapability(),\n      onPull: null,\n      onCancel: null,\n      isCancelled: false,\n      desiredSize: data.desiredSize,\n      ready: null,\n    };\n\n    streamSink.sinkCapability.resolve();\n    streamSink.ready = streamSink.sinkCapability.promise;\n    this.streamSinks[streamId] = streamSink;\n\n    new Promise(function (resolve) {\n      resolve(action(data.data, streamSink));\n    }).then(\n      function () {\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.START_COMPLETE,\n          streamId,\n          success: true,\n        });\n      },\n      function (reason) {\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.START_COMPLETE,\n          streamId,\n          reason: wrapReason(reason),\n        });\n      }\n    );\n  }\n\n  #processStreamMessage(data) {\n    const streamId = data.streamId,\n      sourceName = this.sourceName,\n      targetName = data.sourceName,\n      comObj = this.comObj;\n    const streamController = this.streamControllers[streamId],\n      streamSink = this.streamSinks[streamId];\n\n    switch (data.stream) {\n      case StreamKind.START_COMPLETE:\n        if (data.success) {\n          streamController.startCall.resolve();\n        } else {\n          streamController.startCall.reject(wrapReason(data.reason));\n        }\n        break;\n      case StreamKind.PULL_COMPLETE:\n        if (data.success) {\n          streamController.pullCall.resolve();\n        } else {\n          streamController.pullCall.reject(wrapReason(data.reason));\n        }\n        break;\n      case StreamKind.PULL:\n        // Ignore any pull after close is called.\n        if (!streamSink) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL_COMPLETE,\n            streamId,\n            success: true,\n          });\n          break;\n        }\n        // Pull increases the desiredSize property of sink, so when it changes\n        // from negative to positive, set ready property as resolved promise.\n        if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n          streamSink.sinkCapability.resolve();\n        }\n        // Reset desiredSize property of sink on every pull.\n        streamSink.desiredSize = data.desiredSize;\n\n        new Promise(function (resolve) {\n          resolve(streamSink.onPull?.());\n        }).then(\n          function () {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.PULL_COMPLETE,\n              streamId,\n              success: true,\n            });\n          },\n          function (reason) {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.PULL_COMPLETE,\n              streamId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        break;\n      case StreamKind.ENQUEUE:\n        assert(streamController, \"enqueue should have stream controller\");\n        if (streamController.isClosed) {\n          break;\n        }\n        streamController.controller.enqueue(data.chunk);\n        break;\n      case StreamKind.CLOSE:\n        assert(streamController, \"close should have stream controller\");\n        if (streamController.isClosed) {\n          break;\n        }\n        streamController.isClosed = true;\n        streamController.controller.close();\n        this.#deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.ERROR:\n        assert(streamController, \"error should have stream controller\");\n        streamController.controller.error(wrapReason(data.reason));\n        this.#deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.CANCEL_COMPLETE:\n        if (data.success) {\n          streamController.cancelCall.resolve();\n        } else {\n          streamController.cancelCall.reject(wrapReason(data.reason));\n        }\n        this.#deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.CANCEL:\n        if (!streamSink) {\n          break;\n        }\n\n        new Promise(function (resolve) {\n          resolve(streamSink.onCancel?.(wrapReason(data.reason)));\n        }).then(\n          function () {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.CANCEL_COMPLETE,\n              streamId,\n              success: true,\n            });\n          },\n          function (reason) {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.CANCEL_COMPLETE,\n              streamId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        streamSink.sinkCapability.reject(wrapReason(data.reason));\n        streamSink.isCancelled = true;\n        delete this.streamSinks[streamId];\n        break;\n      default:\n        throw new Error(\"Unexpected stream case\");\n    }\n  }\n\n  async #deleteStreamController(streamController, streamId) {\n    // Delete the `streamController` only when the start, pull, and cancel\n    // capabilities have settled, to prevent `TypeError`s.\n    await Promise.allSettled([\n      streamController.startCall?.promise,\n      streamController.pullCall?.promise,\n      streamController.cancelCall?.promise,\n    ]);\n    delete this.streamControllers[streamId];\n  }\n\n  destroy() {\n    this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n  }\n}\n\nexport { MessageHandler };\n","/* Copyright 2014 Opera Software ASA\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\n */\n\nimport { isArrayBuffer } from \"./util.js\";\n\nconst SEED = 0xc3d2e1f0;\n// Workaround for missing math precision in JS.\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\n\nclass MurmurHash3_64 {\n  constructor(seed) {\n    this.h1 = seed ? seed & 0xffffffff : SEED;\n    this.h2 = seed ? seed & 0xffffffff : SEED;\n  }\n\n  update(input) {\n    let data, length;\n    if (typeof input === \"string\") {\n      data = new Uint8Array(input.length * 2);\n      length = 0;\n      for (let i = 0, ii = input.length; i < ii; i++) {\n        const code = input.charCodeAt(i);\n        if (code <= 0xff) {\n          data[length++] = code;\n        } else {\n          data[length++] = code >>> 8;\n          data[length++] = code & 0xff;\n        }\n      }\n    } else if (isArrayBuffer(input)) {\n      data = input.slice();\n      length = data.byteLength;\n    } else {\n      throw new Error(\n        \"Wrong data format in MurmurHash3_64_update. \" +\n          \"Input must be a string or array.\"\n      );\n    }\n\n    const blockCounts = length >> 2;\n    const tailLength = length - blockCounts * 4;\n    // We don't care about endianness here.\n    const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n    let k1 = 0,\n      k2 = 0;\n    let h1 = this.h1,\n      h2 = this.h2;\n    const C1 = 0xcc9e2d51,\n      C2 = 0x1b873593;\n    const C1_LOW = C1 & MASK_LOW,\n      C2_LOW = C2 & MASK_LOW;\n\n    for (let i = 0; i < blockCounts; i++) {\n      if (i & 1) {\n        k1 = dataUint32[i];\n        k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n        k1 = (k1 << 15) | (k1 >>> 17);\n        k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n        h1 ^= k1;\n        h1 = (h1 << 13) | (h1 >>> 19);\n        h1 = h1 * 5 + 0xe6546b64;\n      } else {\n        k2 = dataUint32[i];\n        k2 = ((k2 * C1) & MASK_HIGH) | ((k2 * C1_LOW) & MASK_LOW);\n        k2 = (k2 << 15) | (k2 >>> 17);\n        k2 = ((k2 * C2) & MASK_HIGH) | ((k2 * C2_LOW) & MASK_LOW);\n        h2 ^= k2;\n        h2 = (h2 << 13) | (h2 >>> 19);\n        h2 = h2 * 5 + 0xe6546b64;\n      }\n    }\n\n    k1 = 0;\n\n    switch (tailLength) {\n      case 3:\n        k1 ^= data[blockCounts * 4 + 2] << 16;\n      /* falls through */\n      case 2:\n        k1 ^= data[blockCounts * 4 + 1] << 8;\n      /* falls through */\n      case 1:\n        k1 ^= data[blockCounts * 4];\n        /* falls through */\n\n        k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n        k1 = (k1 << 15) | (k1 >>> 17);\n        k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n        if (blockCounts & 1) {\n          h1 ^= k1;\n        } else {\n          h2 ^= k1;\n        }\n    }\n\n    this.h1 = h1;\n    this.h2 = h2;\n  }\n\n  hexdigest() {\n    let h1 = this.h1,\n      h2 = this.h2;\n\n    h1 ^= h2 >>> 1;\n    h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\n    h2 =\n      ((h2 * 0xff51afd7) & MASK_HIGH) |\n      (((((h2 << 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\n    h1 ^= h2 >>> 1;\n    h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\n    h2 =\n      ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\n      (((((h2 << 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\n    h1 ^= h2 >>> 1;\n\n    return (\n      (h1 >>> 0).toString(16).padStart(8, \"0\") +\n      (h2 >>> 0).toString(16).padStart(8, \"0\")\n    );\n  }\n}\n\nexport { MurmurHash3_64 };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n  (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n  typeof process === \"object\" &&\n  process + \"\" === \"[object process]\" &&\n  !process.versions.nw &&\n  !(process.versions.electron && process.type && process.type !== \"browser\");\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\nconst MAX_IMAGE_SIZE_TO_CACHE = 10e6; // Ten megabytes.\n\n// Represent the percentage of the height of a single-line field over\n// the font size. Acrobat seems to use this value.\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n *  - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n *    `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n *  - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n *    annotations are rendered onto the canvas (i.e. by being included in the\n *    operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n *    and their `annotationMode`-option.\n *  - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n *    `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n  ANY: 0x01,\n  DISPLAY: 0x02,\n  PRINT: 0x04,\n  SAVE: 0x08,\n  ANNOTATIONS_FORMS: 0x10,\n  ANNOTATIONS_STORAGE: 0x20,\n  ANNOTATIONS_DISABLE: 0x40,\n  OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n  DISABLE: 0,\n  ENABLE: 1,\n  ENABLE_FORMS: 2,\n  ENABLE_STORAGE: 3,\n};\n\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\n\nconst AnnotationEditorType = {\n  DISABLE: -1,\n  NONE: 0,\n  FREETEXT: 3,\n  STAMP: 13,\n  INK: 15,\n};\n\nconst AnnotationEditorParamsType = {\n  RESIZE: 1,\n  CREATE: 2,\n  FREETEXT_SIZE: 11,\n  FREETEXT_COLOR: 12,\n  FREETEXT_OPACITY: 13,\n  INK_COLOR: 21,\n  INK_THICKNESS: 22,\n  INK_OPACITY: 23,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n  PRINT: 0x04,\n  MODIFY_CONTENTS: 0x08,\n  COPY: 0x10,\n  MODIFY_ANNOTATIONS: 0x20,\n  FILL_INTERACTIVE_FORMS: 0x100,\n  COPY_FOR_ACCESSIBILITY: 0x200,\n  ASSEMBLE: 0x400,\n  PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n  FILL: 0,\n  STROKE: 1,\n  FILL_STROKE: 2,\n  INVISIBLE: 3,\n  FILL_ADD_TO_PATH: 4,\n  STROKE_ADD_TO_PATH: 5,\n  FILL_STROKE_ADD_TO_PATH: 6,\n  ADD_TO_PATH: 7,\n  FILL_STROKE_MASK: 3,\n  ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n  GRAYSCALE_1BPP: 1,\n  RGB_24BPP: 2,\n  RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n  TEXT: 1,\n  LINK: 2,\n  FREETEXT: 3,\n  LINE: 4,\n  SQUARE: 5,\n  CIRCLE: 6,\n  POLYGON: 7,\n  POLYLINE: 8,\n  HIGHLIGHT: 9,\n  UNDERLINE: 10,\n  SQUIGGLY: 11,\n  STRIKEOUT: 12,\n  STAMP: 13,\n  CARET: 14,\n  INK: 15,\n  POPUP: 16,\n  FILEATTACHMENT: 17,\n  SOUND: 18,\n  MOVIE: 19,\n  WIDGET: 20,\n  SCREEN: 21,\n  PRINTERMARK: 22,\n  TRAPNET: 23,\n  WATERMARK: 24,\n  THREED: 25,\n  REDACT: 26,\n};\n\nconst AnnotationReplyType = {\n  GROUP: \"Group\",\n  REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n  INVISIBLE: 0x01,\n  HIDDEN: 0x02,\n  PRINT: 0x04,\n  NOZOOM: 0x08,\n  NOROTATE: 0x10,\n  NOVIEW: 0x20,\n  READONLY: 0x40,\n  LOCKED: 0x80,\n  TOGGLENOVIEW: 0x100,\n  LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n  READONLY: 0x0000001,\n  REQUIRED: 0x0000002,\n  NOEXPORT: 0x0000004,\n  MULTILINE: 0x0001000,\n  PASSWORD: 0x0002000,\n  NOTOGGLETOOFF: 0x0004000,\n  RADIO: 0x0008000,\n  PUSHBUTTON: 0x0010000,\n  COMBO: 0x0020000,\n  EDIT: 0x0040000,\n  SORT: 0x0080000,\n  FILESELECT: 0x0100000,\n  MULTISELECT: 0x0200000,\n  DONOTSPELLCHECK: 0x0400000,\n  DONOTSCROLL: 0x0800000,\n  COMB: 0x1000000,\n  RICHTEXT: 0x2000000,\n  RADIOSINUNISON: 0x2000000,\n  COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n  SOLID: 1,\n  DASHED: 2,\n  BEVELED: 3,\n  INSET: 4,\n  UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n  E: \"Mouse Enter\",\n  X: \"Mouse Exit\",\n  D: \"Mouse Down\",\n  U: \"Mouse Up\",\n  Fo: \"Focus\",\n  Bl: \"Blur\",\n  PO: \"PageOpen\",\n  PC: \"PageClose\",\n  PV: \"PageVisible\",\n  PI: \"PageInvisible\",\n  K: \"Keystroke\",\n  F: \"Format\",\n  V: \"Validate\",\n  C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n  WC: \"WillClose\",\n  WS: \"WillSave\",\n  DS: \"DidSave\",\n  WP: \"WillPrint\",\n  DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n  O: \"PageOpen\",\n  C: \"PageClose\",\n};\n\nconst VerbosityLevel = {\n  ERRORS: 0,\n  WARNINGS: 1,\n  INFOS: 5,\n};\n\nconst CMapCompressionType = {\n  NONE: 0,\n  BINARY: 1,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n  // Intentionally start from 1 so it is easy to spot bad operators that will be\n  // 0's.\n  // PLEASE NOTE: We purposely keep any removed operators commented out, since\n  //              re-numbering the list would risk breaking third-party users.\n  dependency: 1,\n  setLineWidth: 2,\n  setLineCap: 3,\n  setLineJoin: 4,\n  setMiterLimit: 5,\n  setDash: 6,\n  setRenderingIntent: 7,\n  setFlatness: 8,\n  setGState: 9,\n  save: 10,\n  restore: 11,\n  transform: 12,\n  moveTo: 13,\n  lineTo: 14,\n  curveTo: 15,\n  curveTo2: 16,\n  curveTo3: 17,\n  closePath: 18,\n  rectangle: 19,\n  stroke: 20,\n  closeStroke: 21,\n  fill: 22,\n  eoFill: 23,\n  fillStroke: 24,\n  eoFillStroke: 25,\n  closeFillStroke: 26,\n  closeEOFillStroke: 27,\n  endPath: 28,\n  clip: 29,\n  eoClip: 30,\n  beginText: 31,\n  endText: 32,\n  setCharSpacing: 33,\n  setWordSpacing: 34,\n  setHScale: 35,\n  setLeading: 36,\n  setFont: 37,\n  setTextRenderingMode: 38,\n  setTextRise: 39,\n  moveText: 40,\n  setLeadingMoveText: 41,\n  setTextMatrix: 42,\n  nextLine: 43,\n  showText: 44,\n  showSpacedText: 45,\n  nextLineShowText: 46,\n  nextLineSetSpacingShowText: 47,\n  setCharWidth: 48,\n  setCharWidthAndBounds: 49,\n  setStrokeColorSpace: 50,\n  setFillColorSpace: 51,\n  setStrokeColor: 52,\n  setStrokeColorN: 53,\n  setFillColor: 54,\n  setFillColorN: 55,\n  setStrokeGray: 56,\n  setFillGray: 57,\n  setStrokeRGBColor: 58,\n  setFillRGBColor: 59,\n  setStrokeCMYKColor: 60,\n  setFillCMYKColor: 61,\n  shadingFill: 62,\n  beginInlineImage: 63,\n  beginImageData: 64,\n  endInlineImage: 65,\n  paintXObject: 66,\n  markPoint: 67,\n  markPointProps: 68,\n  beginMarkedContent: 69,\n  beginMarkedContentProps: 70,\n  endMarkedContent: 71,\n  beginCompat: 72,\n  endCompat: 73,\n  paintFormXObjectBegin: 74,\n  paintFormXObjectEnd: 75,\n  beginGroup: 76,\n  endGroup: 77,\n  // beginAnnotations: 78,\n  // endAnnotations: 79,\n  beginAnnotation: 80,\n  endAnnotation: 81,\n  // paintJpegXObject: 82,\n  paintImageMaskXObject: 83,\n  paintImageMaskXObjectGroup: 84,\n  paintImageXObject: 85,\n  paintInlineImageXObject: 86,\n  paintInlineImageXObjectGroup: 87,\n  paintImageXObjectRepeat: 88,\n  paintImageMaskXObjectRepeat: 89,\n  paintSolidColorImageMask: 90,\n  constructPath: 91,\n};\n\nconst PasswordResponses = {\n  NEED_PASSWORD: 1,\n  INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n  if (Number.isInteger(level)) {\n    verbosity = level;\n  }\n}\n\nfunction getVerbosityLevel() {\n  return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n  if (verbosity >= VerbosityLevel.INFOS) {\n    console.log(`Info: ${msg}`);\n  }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n  if (verbosity >= VerbosityLevel.WARNINGS) {\n    console.log(`Warning: ${msg}`);\n  }\n}\n\nfunction unreachable(msg) {\n  throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n  if (!cond) {\n    unreachable(msg);\n  }\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n  switch (url?.protocol) {\n    case \"http:\":\n    case \"https:\":\n    case \"ftp:\":\n    case \"mailto:\":\n    case \"tel:\":\n      return true;\n    default:\n      return false;\n  }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n  if (!url) {\n    return null;\n  }\n  try {\n    if (options && typeof url === \"string\") {\n      // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n      if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n        const dots = url.match(/\\./g);\n        // Avoid accidentally matching a *relative* URL pointing to a file named\n        // e.g. \"www.pdf\" or similar.\n        if (dots?.length >= 2) {\n          url = `http://${url}`;\n        }\n      }\n\n      // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n      // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n      if (options.tryConvertEncoding) {\n        try {\n          url = stringToUTF8String(url);\n        } catch {}\n      }\n    }\n\n    const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n    if (_isValidProtocol(absoluteUrl)) {\n      return absoluteUrl;\n    }\n  } catch {\n    /* `new URL()` will throw on incorrect data. */\n  }\n  return null;\n}\n\nfunction shadow(obj, prop, value, nonSerializable = false) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n    assert(\n      prop in obj,\n      `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n    );\n  }\n  Object.defineProperty(obj, prop, {\n    value,\n    enumerable: !nonSerializable,\n    configurable: true,\n    writable: false,\n  });\n  return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n  // eslint-disable-next-line no-shadow\n  function BaseException(message, name) {\n    if (this.constructor === BaseException) {\n      unreachable(\"Cannot initialize BaseException.\");\n    }\n    this.message = message;\n    this.name = name;\n  }\n  BaseException.prototype = new Error();\n  BaseException.constructor = BaseException;\n\n  return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n  constructor(msg, code) {\n    super(msg, \"PasswordException\");\n    this.code = code;\n  }\n}\n\nclass UnknownErrorException extends BaseException {\n  constructor(msg, details) {\n    super(msg, \"UnknownErrorException\");\n    this.details = details;\n  }\n}\n\nclass InvalidPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"InvalidPDFException\");\n  }\n}\n\nclass MissingPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"MissingPDFException\");\n  }\n}\n\nclass UnexpectedResponseException extends BaseException {\n  constructor(msg, status) {\n    super(msg, \"UnexpectedResponseException\");\n    this.status = status;\n  }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n  constructor(msg) {\n    super(msg, \"FormatError\");\n  }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n  constructor(msg) {\n    super(msg, \"AbortException\");\n  }\n}\n\nfunction bytesToString(bytes) {\n  if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n    unreachable(\"Invalid argument for bytesToString\");\n  }\n  const length = bytes.length;\n  const MAX_ARGUMENT_COUNT = 8192;\n  if (length < MAX_ARGUMENT_COUNT) {\n    return String.fromCharCode.apply(null, bytes);\n  }\n  const strBuf = [];\n  for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n    const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n    const chunk = bytes.subarray(i, chunkEnd);\n    strBuf.push(String.fromCharCode.apply(null, chunk));\n  }\n  return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n  if (typeof str !== \"string\") {\n    unreachable(\"Invalid argument for stringToBytes\");\n  }\n  const length = str.length;\n  const bytes = new Uint8Array(length);\n  for (let i = 0; i < length; ++i) {\n    bytes[i] = str.charCodeAt(i) & 0xff;\n  }\n  return bytes;\n}\n\nfunction string32(value) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n    assert(\n      typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n      `string32: Unexpected input \"${value}\".`\n    );\n  }\n  return String.fromCharCode(\n    (value >> 24) & 0xff,\n    (value >> 16) & 0xff,\n    (value >> 8) & 0xff,\n    value & 0xff\n  );\n}\n\nfunction objectSize(obj) {\n  return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n  const obj = Object.create(null);\n  for (const [key, value] of map) {\n    obj[key] = value;\n  }\n  return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n  const buffer8 = new Uint8Array(4);\n  buffer8[0] = 1;\n  const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n  return view32[0] === 1;\n}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n  try {\n    new Function(\"\"); // eslint-disable-line no-new, no-new-func\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nclass FeatureTest {\n  static get isLittleEndian() {\n    return shadow(this, \"isLittleEndian\", isLittleEndian());\n  }\n\n  static get isEvalSupported() {\n    return shadow(this, \"isEvalSupported\", isEvalSupported());\n  }\n\n  static get isOffscreenCanvasSupported() {\n    return shadow(\n      this,\n      \"isOffscreenCanvasSupported\",\n      typeof OffscreenCanvas !== \"undefined\"\n    );\n  }\n\n  static get platform() {\n    if (\n      (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n      (typeof navigator !== \"undefined\" &&\n        typeof navigator?.platform === \"string\")\n    ) {\n      return shadow(this, \"platform\", {\n        isMac: navigator.platform.includes(\"Mac\"),\n      });\n    }\n    return shadow(this, \"platform\", { isMac: false });\n  }\n\n  static get isCSSRoundSupported() {\n    return shadow(\n      this,\n      \"isCSSRoundSupported\",\n      globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\")\n    );\n  }\n}\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n  n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n  static makeHexColor(r, g, b) {\n    return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n  }\n\n  // Apply a scaling matrix to some min/max values.\n  // If a scaling factor is negative then min and max must be\n  // swaped.\n  static scaleMinMax(transform, minMax) {\n    let temp;\n    if (transform[0]) {\n      if (transform[0] < 0) {\n        temp = minMax[0];\n        minMax[0] = minMax[1];\n        minMax[1] = temp;\n      }\n      minMax[0] *= transform[0];\n      minMax[1] *= transform[0];\n\n      if (transform[3] < 0) {\n        temp = minMax[2];\n        minMax[2] = minMax[3];\n        minMax[3] = temp;\n      }\n      minMax[2] *= transform[3];\n      minMax[3] *= transform[3];\n    } else {\n      temp = minMax[0];\n      minMax[0] = minMax[2];\n      minMax[2] = temp;\n      temp = minMax[1];\n      minMax[1] = minMax[3];\n      minMax[3] = temp;\n\n      if (transform[1] < 0) {\n        temp = minMax[2];\n        minMax[2] = minMax[3];\n        minMax[3] = temp;\n      }\n      minMax[2] *= transform[1];\n      minMax[3] *= transform[1];\n\n      if (transform[2] < 0) {\n        temp = minMax[0];\n        minMax[0] = minMax[1];\n        minMax[1] = temp;\n      }\n      minMax[0] *= transform[2];\n      minMax[1] *= transform[2];\n    }\n    minMax[0] += transform[4];\n    minMax[1] += transform[4];\n    minMax[2] += transform[5];\n    minMax[3] += transform[5];\n  }\n\n  // Concatenates two transformation matrices together and returns the result.\n  static transform(m1, m2) {\n    return [\n      m1[0] * m2[0] + m1[2] * m2[1],\n      m1[1] * m2[0] + m1[3] * m2[1],\n      m1[0] * m2[2] + m1[2] * m2[3],\n      m1[1] * m2[2] + m1[3] * m2[3],\n      m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n      m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n    ];\n  }\n\n  // For 2d affine transforms\n  static applyTransform(p, m) {\n    const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n    const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n    return [xt, yt];\n  }\n\n  static applyInverseTransform(p, m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n    const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n    return [xt, yt];\n  }\n\n  // Applies the transform to the rectangle and finds the minimum axially\n  // aligned bounding box.\n  static getAxialAlignedBoundingBox(r, m) {\n    const p1 = this.applyTransform(r, m);\n    const p2 = this.applyTransform(r.slice(2, 4), m);\n    const p3 = this.applyTransform([r[0], r[3]], m);\n    const p4 = this.applyTransform([r[2], r[1]], m);\n    return [\n      Math.min(p1[0], p2[0], p3[0], p4[0]),\n      Math.min(p1[1], p2[1], p3[1], p4[1]),\n      Math.max(p1[0], p2[0], p3[0], p4[0]),\n      Math.max(p1[1], p2[1], p3[1], p4[1]),\n    ];\n  }\n\n  static inverseTransform(m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    return [\n      m[3] / d,\n      -m[1] / d,\n      -m[2] / d,\n      m[0] / d,\n      (m[2] * m[5] - m[4] * m[3]) / d,\n      (m[4] * m[1] - m[5] * m[0]) / d,\n    ];\n  }\n\n  // This calculation uses Singular Value Decomposition.\n  // The SVD can be represented with formula A = USV. We are interested in the\n  // matrix S here because it represents the scale values.\n  static singularValueDecompose2dScale(m) {\n    const transpose = [m[0], m[2], m[1], m[3]];\n\n    // Multiply matrix m with its transpose.\n    const a = m[0] * transpose[0] + m[1] * transpose[2];\n    const b = m[0] * transpose[1] + m[1] * transpose[3];\n    const c = m[2] * transpose[0] + m[3] * transpose[2];\n    const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n    // Solve the second degree polynomial to get roots.\n    const first = (a + d) / 2;\n    const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n    const sx = first + second || 1;\n    const sy = first - second || 1;\n\n    // Scale values are the square roots of the eigenvalues.\n    return [Math.sqrt(sx), Math.sqrt(sy)];\n  }\n\n  // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n  // For coordinate systems whose origin lies in the bottom-left, this\n  // means normalization to (BL,TR) ordering. For systems with origin in the\n  // top-left, this means (TL,BR) ordering.\n  static normalizeRect(rect) {\n    const r = rect.slice(0); // clone rect\n    if (rect[0] > rect[2]) {\n      r[0] = rect[2];\n      r[2] = rect[0];\n    }\n    if (rect[1] > rect[3]) {\n      r[1] = rect[3];\n      r[3] = rect[1];\n    }\n    return r;\n  }\n\n  // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n  // intersection of rect1 and rect2. If no intersection, returns 'null'\n  // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n  static intersect(rect1, rect2) {\n    const xLow = Math.max(\n      Math.min(rect1[0], rect1[2]),\n      Math.min(rect2[0], rect2[2])\n    );\n    const xHigh = Math.min(\n      Math.max(rect1[0], rect1[2]),\n      Math.max(rect2[0], rect2[2])\n    );\n    if (xLow > xHigh) {\n      return null;\n    }\n    const yLow = Math.max(\n      Math.min(rect1[1], rect1[3]),\n      Math.min(rect2[1], rect2[3])\n    );\n    const yHigh = Math.min(\n      Math.max(rect1[1], rect1[3]),\n      Math.max(rect2[1], rect2[3])\n    );\n    if (yLow > yHigh) {\n      return null;\n    }\n\n    return [xLow, yLow, xHigh, yHigh];\n  }\n\n  // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n  static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n    const tvalues = [],\n      bounds = [[], []];\n    let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n    for (let i = 0; i < 2; ++i) {\n      if (i === 0) {\n        b = 6 * x0 - 12 * x1 + 6 * x2;\n        a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n        c = 3 * x1 - 3 * x0;\n      } else {\n        b = 6 * y0 - 12 * y1 + 6 * y2;\n        a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n        c = 3 * y1 - 3 * y0;\n      }\n      if (Math.abs(a) < 1e-12) {\n        if (Math.abs(b) < 1e-12) {\n          continue;\n        }\n        t = -c / b;\n        if (0 < t && t < 1) {\n          tvalues.push(t);\n        }\n        continue;\n      }\n      b2ac = b * b - 4 * c * a;\n      sqrtb2ac = Math.sqrt(b2ac);\n      if (b2ac < 0) {\n        continue;\n      }\n      t1 = (-b + sqrtb2ac) / (2 * a);\n      if (0 < t1 && t1 < 1) {\n        tvalues.push(t1);\n      }\n      t2 = (-b - sqrtb2ac) / (2 * a);\n      if (0 < t2 && t2 < 1) {\n        tvalues.push(t2);\n      }\n    }\n\n    let j = tvalues.length,\n      mt;\n    const jlen = j;\n    while (j--) {\n      t = tvalues[j];\n      mt = 1 - t;\n      bounds[0][j] =\n        mt * mt * mt * x0 +\n        3 * mt * mt * t * x1 +\n        3 * mt * t * t * x2 +\n        t * t * t * x3;\n      bounds[1][j] =\n        mt * mt * mt * y0 +\n        3 * mt * mt * t * y1 +\n        3 * mt * t * t * y2 +\n        t * t * t * y3;\n    }\n\n    bounds[0][jlen] = x0;\n    bounds[1][jlen] = y0;\n    bounds[0][jlen + 1] = x3;\n    bounds[1][jlen + 1] = y3;\n    bounds[0].length = bounds[1].length = jlen + 2;\n\n    return [\n      Math.min(...bounds[0]),\n      Math.min(...bounds[1]),\n      Math.max(...bounds[0]),\n      Math.max(...bounds[1]),\n    ];\n  }\n}\n\nconst PDFStringTranslateTable = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n  0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n  0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n  0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n  0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n  if (str[0] >= \"\\xEF\") {\n    let encoding;\n    if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n      encoding = \"utf-16be\";\n    } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n      encoding = \"utf-16le\";\n    } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n      encoding = \"utf-8\";\n    }\n\n    if (encoding) {\n      try {\n        const decoder = new TextDecoder(encoding, { fatal: true });\n        const buffer = stringToBytes(str);\n        return decoder.decode(buffer);\n      } catch (ex) {\n        warn(`stringToPDFString: \"${ex}\".`);\n      }\n    }\n  }\n  // ISO Latin 1\n  const strBuf = [];\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const code = PDFStringTranslateTable[str.charCodeAt(i)];\n    strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n  }\n  return strBuf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n  return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n  return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n  return typeof v === \"object\" && v?.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n  if (arr1.length !== arr2.length) {\n    return false;\n  }\n  for (let i = 0, ii = arr1.length; i < ii; i++) {\n    if (arr1[i] !== arr2[i]) {\n      return false;\n    }\n  }\n  return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n  const buffer = [\n    date.getUTCFullYear().toString(),\n    (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n    date.getUTCDate().toString().padStart(2, \"0\"),\n    date.getUTCHours().toString().padStart(2, \"0\"),\n    date.getUTCMinutes().toString().padStart(2, \"0\"),\n    date.getUTCSeconds().toString().padStart(2, \"0\"),\n  ];\n\n  return buffer.join(\"\");\n}\n\nclass PromiseCapability {\n  #settled = false;\n\n  constructor() {\n    /**\n     * @type {Promise<any>} The Promise object.\n     */\n    this.promise = new Promise((resolve, reject) => {\n      /**\n       * @type {function} Fulfills the Promise.\n       */\n      this.resolve = data => {\n        this.#settled = true;\n        resolve(data);\n      };\n\n      /**\n       * @type {function} Rejects the Promise.\n       */\n      this.reject = reason => {\n        if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n          assert(reason instanceof Error, 'Expected valid \"reason\" argument.');\n        }\n        this.#settled = true;\n        reject(reason);\n      };\n    });\n  }\n\n  /**\n   * @type {boolean} If the Promise has been fulfilled/rejected.\n   */\n  get settled() {\n    return this.#settled;\n  }\n}\n\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n  if (!NormalizeRegex) {\n    // In order to generate the following regex:\n    //  - create a PDF containing all the chars in the range 0000-FFFF with\n    //    a NFKC which is different of the char.\n    //  - copy and paste all those chars and get the ones where NFKC is\n    //    required.\n    // It appears that most the chars here contain some ligatures.\n    NormalizeRegex =\n      /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n    NormalizationMap = new Map([[\"ﬅ\", \"ſt\"]]);\n  }\n  return str.replaceAll(NormalizeRegex, (_, p1, p2) => {\n    return p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2);\n  });\n}\n\nfunction getUuid() {\n  if (\n    (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n    (typeof crypto !== \"undefined\" && typeof crypto?.randomUUID === \"function\")\n  ) {\n    return crypto.randomUUID();\n  }\n  const buf = new Uint8Array(32);\n  if (\n    typeof crypto !== \"undefined\" &&\n    typeof crypto?.getRandomValues === \"function\"\n  ) {\n    crypto.getRandomValues(buf);\n  } else {\n    for (let i = 0; i < 32; i++) {\n      buf[i] = Math.floor(Math.random() * 255);\n    }\n  }\n  return bytesToString(buf);\n}\n\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\n\nexport {\n  AbortException,\n  AnnotationActionEventType,\n  AnnotationBorderStyleType,\n  AnnotationEditorParamsType,\n  AnnotationEditorPrefix,\n  AnnotationEditorType,\n  AnnotationFieldFlag,\n  AnnotationFlag,\n  AnnotationMode,\n  AnnotationPrefix,\n  AnnotationReplyType,\n  AnnotationType,\n  assert,\n  BaseException,\n  BASELINE_FACTOR,\n  bytesToString,\n  CMapCompressionType,\n  createValidAbsoluteUrl,\n  DocumentActionEventType,\n  FeatureTest,\n  FONT_IDENTITY_MATRIX,\n  FormatError,\n  getModificationDate,\n  getUuid,\n  getVerbosityLevel,\n  IDENTITY_MATRIX,\n  ImageKind,\n  info,\n  InvalidPDFException,\n  isArrayBuffer,\n  isArrayEqual,\n  isNodeJS,\n  LINE_DESCENT_FACTOR,\n  LINE_FACTOR,\n  MAX_IMAGE_SIZE_TO_CACHE,\n  MissingPDFException,\n  normalizeUnicode,\n  objectFromMap,\n  objectSize,\n  OPS,\n  PageActionEventType,\n  PasswordException,\n  PasswordResponses,\n  PermissionFlag,\n  PromiseCapability,\n  RenderingIntentFlag,\n  setVerbosityLevel,\n  shadow,\n  string32,\n  stringToBytes,\n  stringToPDFString,\n  stringToUTF8String,\n  TextRenderingMode,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  unreachable,\n  utf8StringToString,\n  Util,\n  VerbosityLevel,\n  warn,\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","var webpackQueues = typeof Symbol === \"function\" ? Symbol(\"webpack queues\") : \"__webpack_queues__\";\nvar webpackExports = typeof Symbol === \"function\" ? Symbol(\"webpack exports\") : \"__webpack_exports__\";\nvar webpackError = typeof Symbol === \"function\" ? Symbol(\"webpack error\") : \"__webpack_error__\";\nvar resolveQueue = (queue) => {\n\tif(queue && queue.d < 1) {\n\t\tqueue.d = 1;\n\t\tqueue.forEach((fn) => (fn.r--));\n\t\tqueue.forEach((fn) => (fn.r-- ? fn.r++ : fn()));\n\t}\n}\nvar wrapDeps = (deps) => (deps.map((dep) => {\n\tif(dep !== null && typeof dep === \"object\") {\n\t\tif(dep[webpackQueues]) return dep;\n\t\tif(dep.then) {\n\t\t\tvar queue = [];\n\t\t\tqueue.d = 0;\n\t\t\tdep.then((r) => {\n\t\t\t\tobj[webpackExports] = r;\n\t\t\t\tresolveQueue(queue);\n\t\t\t}, (e) => {\n\t\t\t\tobj[webpackError] = e;\n\t\t\t\tresolveQueue(queue);\n\t\t\t});\n\t\t\tvar obj = {};\n\t\t\tobj[webpackQueues] = (fn) => (fn(queue));\n\t\t\treturn obj;\n\t\t}\n\t}\n\tvar ret = {};\n\tret[webpackQueues] = x => {};\n\tret[webpackExports] = dep;\n\treturn ret;\n}));\n__webpack_require__.a = (module, body, hasAwait) => {\n\tvar queue;\n\thasAwait && ((queue = []).d = -1);\n\tvar depQueues = new Set();\n\tvar exports = module.exports;\n\tvar currentDeps;\n\tvar outerResolve;\n\tvar reject;\n\tvar promise = new Promise((resolve, rej) => {\n\t\treject = rej;\n\t\touterResolve = resolve;\n\t});\n\tpromise[webpackExports] = exports;\n\tpromise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise[\"catch\"](x => {}));\n\tmodule.exports = promise;\n\tbody((deps) => {\n\t\tcurrentDeps = wrapDeps(deps);\n\t\tvar fn;\n\t\tvar getResult = () => (currentDeps.map((d) => {\n\t\t\tif(d[webpackError]) throw d[webpackError];\n\t\t\treturn d[webpackExports];\n\t\t}))\n\t\tvar promise = new Promise((resolve) => {\n\t\t\tfn = () => (resolve(getResult));\n\t\t\tfn.r = 0;\n\t\t\tvar fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))));\n\t\t\tcurrentDeps.map((dep) => (dep[webpackQueues](fnQueue)));\n\t\t});\n\t\treturn fn.r ? promise : getResult();\n\t}, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue)));\n\tqueue && queue.d < 0 && (queue.d = 0);\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","","// startup\n// Load entry module and return exports\n// This entry module used 'module' so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(9907);\n",""],"names":["isCallable","require","tryToString","$TypeError","TypeError","module","exports","argument","$String","String","has","it","isPrototypeOf","Prototype","isObject","ArrayBuffer","DataView","uncurryThisAccessor","classof","prototype","O","byteLength","uncurryThis","arrayBufferByteLength","slice","error","global","toIndex","isDetached","detachTransferable","PROPER_STRUCTURED_CLONE_TRANSFER","structuredClone","min","Math","ArrayBufferPrototype","DataViewPrototype","isResizable","maxByteLength","getInt8","setInt8","arrayBuffer","newLength","preserveResizability","newByteLength","undefined","fixedLength","newBuffer","transfer","options","a","b","copyLength","i","NATIVE_ARRAY_BUFFER","DESCRIPTORS","hasOwn","createNonEnumerableProperty","defineBuiltIn","defineBuiltInAccessor","getPrototypeOf","setPrototypeOf","wellKnownSymbol","uid","InternalStateModule","enforceInternalState","enforce","getInternalState","get","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","Object","TO_STRING_TAG","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQUIRED","NAME","Constructor","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","isView","klass","getTypedArrayConstructor","proto","state","isTypedArray","aTypedArray","aTypedArrayConstructor","C","exportTypedArrayMethod","KEY","property","forced","ARRAY","TypedArrayConstructor","error2","exportTypedArrayStaticMethod","Function","configurable","lengthOfArrayLike","list","index","length","result","toIndexedObject","toAbsoluteIndex","createMethod","IS_INCLUDES","$this","el","fromIndex","value","includes","indexOf","bind","IndexedObject","toObject","TYPE","IS_FIND_LAST_INDEX","callbackfn","that","self","boundFunction","findLast","findLastIndex","isArray","getOwnPropertyDescriptor","SILENT_ON_NON_WRITABLE_LENGTH_SET","defineProperty","writable","len","A","k","toIntegerOrInfinity","$RangeError","RangeError","relativeIndex","actualIndex","anObject","iteratorClose","iterator","fn","ENTRIES","toString","stringSlice","TO_STRING_TAG_SUPPORT","classofRaw","$Object","CORRECT_ARGUMENTS","arguments","tryGet","key","tag","callee","ownKeys","getOwnPropertyDescriptorModule","definePropertyModule","target","source","exceptions","keys","f","fails","F","constructor","done","createPropertyDescriptor","object","bitmap","enumerable","toPropertyKey","propertyKey","makeBuiltIn","name","descriptor","getter","set","setter","defineGlobalProperty","simple","unsafe","nonConfigurable","nonWritable","src","tryNodeRequire","$ArrayBuffer","$MessageChannel","MessageChannel","detach","WorkerThreads","channel","buffer","$detach","transferable","port1","postMessage","documentAll","document","all","IS_HTMLDDA","EXISTS","createElement","MAX_SAFE_INTEGER","IndexSizeError","s","c","m","DOMStringSizeError","HierarchyRequestError","WrongDocumentError","InvalidCharacterError","NoDataAllowedError","NoModificationAllowedError","NotFoundError","NotSupportedError","InUseAttributeError","InvalidStateError","SyntaxError","InvalidModificationError","NamespaceError","InvalidAccessError","ValidationError","TypeMismatchError","SecurityError","NetworkError","AbortError","URLMismatchError","QuotaExceededError","TimeoutError","InvalidNodeTypeError","DataCloneError","IS_DENO","IS_NODE","window","Deno","version","process","navigator","userAgent","versions","v8","match","split","$Error","Error","replace","TEST","arg","stack","V8_OR_CHAKRA_STACK_ENTRY","IS_V8_OR_CHAKRA_STACK","test","dropEntries","prepareStackTrace","clearErrorStack","ERROR_STACK_INSTALLABLE","captureStackTrace","copyConstructorProperties","isForced","TARGET","GLOBAL","STATIC","stat","FORCED","targetProperty","sourceProperty","dontCallGetSet","sham","exec","NATIVE_BIND","FunctionPrototype","apply","call","Reflect","aCallable","hasOwnProperty","getDescriptor","PROPER","something","CONFIGURABLE","method","uncurryThisWithBind","aFunction","namespace","obj","next","getIteratorDirect","getIteratorMethod","stringHandling","getMethod","isNullOrUndefined","Iterators","ITERATOR","usingIterator","iteratorMethod","V","P","func","INVALID_SIZE","max","SetRecord","size","getIterator","numSize","intSize","check","globalThis","getBuiltIn","propertyIsEnumerable","dummy","Wrapper","NewTarget","NewTargetPrototype","store","functionToString","inspectSource","cause","NATIVE_WEAK_MAP","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","getterFor","type","metadata","facade","STATE","ArrayPrototype","Array","$documentAll","replacement","feature","detection","data","normalize","POLYFILL","NATIVE","string","toLowerCase","USE_SYMBOL_AS_UID","$Symbol","record","ITERATOR_INSTEAD_OF_RECORD","step","isArrayIteratorMethod","Result","stopped","ResultPrototype","iterable","unboundFunction","AS_ENTRIES","IS_RECORD","IS_ITERATOR","INTERRUPTED","iterFn","stop","condition","callFn","kind","innerResult","innerError","create","defineBuiltIns","IteratorPrototype","createIterResultObject","ITERATOR_HELPER","WRAP_FOR_VALID_ITERATOR","setInternalState","createIteratorProxyPrototype","nextHandler","returnMethod","inner","WrapForValidIteratorPrototype","IteratorHelperPrototype","IteratorProxy","Iterator","counter","createIteratorProxy","callWithSafeIterationClosing","mapper","map","IS_PURE","BUGGY_SAFARI_ITERATORS","PrototypeOfArrayIteratorPrototype","arrayIterator","NEW_ITERATOR_PROTOTYPE","toLength","CONFIGURABLE_FUNCTION_NAME","join","CONFIGURABLE_LENGTH","TEMPLATE","arity","ceil","floor","trunc","x","n","$default","definePropertiesModule","enumBugKeys","html","documentCreateElement","GT","LT","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","content","NullProtoObjectViaActiveX","activeXDocument","write","close","temp","parentWindow","NullProtoObjectViaIFrame","iframe","JS","iframeDocument","style","display","appendChild","contentWindow","open","NullProtoObject","ActiveXObject","domain","Properties","V8_PROTOTYPE_DEFINE_BUG","objectKeys","defineProperties","props","IE8_DOM_DEFINE","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","Attributes","current","propertyIsEnumerableModule","internalObjectKeys","concat","getOwnPropertyNames","getOwnPropertySymbols","CORRECT_PROTOTYPE_GETTER","push","names","$propertyIsEnumerable","NASHORN_BUG","aPossiblePrototype","CORRECT_SETTER","__proto__","input","pref","val","valueOf","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","$SyntaxError","$parseInt","parseInt","fromCharCode","at","charAt","codePoints","IS_4_HEX_DIGITS","IS_C0_CONTROL_CODE","unterminated","chr","twoChars","fourHexDigits","end","Target","Source","SetHelpers","iterate","Set","add","aSet","clone","getSetRecord","iterateSet","iterateSimple","remove","difference","other","otherRec","e","SetPrototype","intersection","isDisjointFrom","isSubsetOf","isSupersetOf","forEach","interruptible","createSetLike","symmetricDifference","keysIter","union","SHARED","mode","copyright","license","V8","IS_BROWSER","V8_VERSION","symbol","Symbol","integer","toPrimitive","prim","BigInt","number","requireObjectCoercible","toPositiveInteger","BYTES","offset","isSymbol","ordinaryToPrimitive","TO_PRIMITIVE","exoticToPrim","id","postfix","random","NATIVE_SYMBOL","passed","required","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","proxyAccessor","inheritIfRequired","normalizeStringArgument","installErrorCause","installErrorStack","FULL_NAME","wrapper","IS_AGGREGATE_ERROR","STACK_TRACE_LIMIT","OPTIONS_POSITION","path","ERROR_NAME","OriginalError","OriginalErrorPrototype","BaseError","WrappedError","message","$","setArrayLength","doesNotExceedSafeInteger","INCORRECT_TO_LENGTH","properErrorOnNonWritableLength","item","argCount","wrapErrorConstructorWithCause","WEB_ASSEMBLY","WebAssembly","exportGlobalErrorCauseWrapper","exportWebAssemblyErrorCauseWrapper","init","EvalError","ReferenceError","URIError","CompileError","LinkError","RuntimeError","ArrayBufferViewCore","$findLastIndex","predicate","$findLast","toOffset","$set","WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS","array","TO_OBJECT_BUG","arrayLike","arrayToReversed","toReversed","arrayFromConstructorAndList","sort","toSorted","compareFn","arrayWith","isBigIntArray","toBigInt","PROPER_ORDER","actualValue","detached","$transfer","transferToFixedLength","anInstance","NativeIterator","IteratorConstructor","real","every","filter","getIteratorFlattenable","flatMap","some","createProperty","parseJSONString","JSON","Number","nativeParse","parse","enumerableOwnProperties","IS_DIGIT","IS_NON_ZERO_DIGIT","IS_NUMBER_START","IS_WHITESPACE","PRIMITIVE","OBJECT","$parse","reviver","context","Context","root","endIndex","skip","internalize","holder","node","unmodified","elementRecordsLen","nodeIsArray","nodes","internalizeProperty","Node","fork","nextIndex","keyword","start","expectKeypair","until","expectElement","parsed","startIndex","exponentStartIndex","regex","j","NO_SOURCE_SUPPORT","unsafeInt","PROPER_BASE_PARSE","Infinity","text","setMethodAcceptSetLike","INCORRECT","from","DOMExceptionConstants","DOM_EXCEPTION","NativeDOMException","$DOMException","DOMException","DOMExceptionPrototype","argumentsLength","ERROR_HAS_STACK","DOM_EXCEPTION_HAS_STACK","BUGGY_DESCRIPTOR","FORCED_CONSTRUCTOR","PolyfilledDOMException","PolyfilledDOMExceptionPrototype","constant","constantName","validateArgumentsLength","$URLSearchParams","URLSearchParams","URLSearchParamsPrototype","append","$delete","params","$value","entries","v","dindex","found","entriesLength","entry","getAll","$has","values","count","makeColorComp","padStart","scaleAndClamp","ColorConverters","CMYK_G","_ref","y","G_CMYK","_ref2","g","G_RGB","_ref3","G_rgb","_ref4","G_HTML","_ref5","G","RGB_G","_ref6","r","RGB_rgb","color","RGB_HTML","T_HTML","T_rgb","CMYK_RGB","_ref7","CMYK_rgb","_ref8","CMYK_HTML","components","rgb","RGB_CMYK","_ref9","AnnotationBorderStyleType","AnnotationEditorType","AnnotationPrefix","AnnotationType","FeatureTest","LINE_FACTOR","shadow","unreachable","Util","warn","DOMSVGFactory","getFilenameFromUrl","PDFDateString","setLayerDimensions","AnnotationStorage","XfaLayer","DEFAULT_TAB_INDEX","DEFAULT_FONT_SIZE","GetElementsByNameSet","WeakSet","getRectDims","rect","width","height","AnnotationElementFactory","parameters","subtype","annotationType","LINK","LinkAnnotationElement","TEXT","TextAnnotationElement","WIDGET","fieldType","TextWidgetAnnotationElement","radioButton","RadioButtonWidgetAnnotationElement","checkBox","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","SignatureWidgetAnnotationElement","WidgetAnnotationElement","POPUP","PopupAnnotationElement","FREETEXT","FreeTextAnnotationElement","LINE","LineAnnotationElement","SQUARE","SquareAnnotationElement","CIRCLE","CircleAnnotationElement","POLYLINE","PolylineAnnotationElement","CARET","CaretAnnotationElement","INK","InkAnnotationElement","POLYGON","PolygonAnnotationElement","HIGHLIGHT","HighlightAnnotationElement","UNDERLINE","UnderlineAnnotationElement","SQUIGGLY","SquigglyAnnotationElement","STRIKEOUT","StrikeOutAnnotationElement","STAMP","StampAnnotationElement","FILEATTACHMENT","FileAttachmentAnnotationElement","AnnotationElement","hasBorder","isRenderable","ignoreBorder","createQuadrilaterals","layer","linkService","downloadManager","imageResourcesPath","renderForms","svgFactory","annotationStorage","enableScripting","hasJSActions","_fieldObjects","fieldObjects","parent","container","_createContainer","_createQuadrilaterals","_hasPopupData","titleObj","contentsObj","richText","str","hasPopupData","page","viewport","setAttribute","tabIndex","zIndex","popupRef","noRotate","classList","pageWidth","pageHeight","pageX","pageY","rawDims","rotation","hasOwnCanvas","setRotation","normalizeRect","view","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","radius","borderRadius","SOLID","DASHED","BEVELED","INSET","borderBottomStyle","borderColor","makeHexColor","left","top","angle","elementWidth","elementHeight","_commonActions","setColor","jsName","styleName","event","detail","colorType","colorArray","setValue","hidden","visibility","noView","noPrint","print","focus","setTimeout","preventScroll","userName","title","readonly","disabled","_setRequired","bgColor","fillColor","fgColor","textColor","strokeColor","_dispatchEventFromSandbox","actions","jsEvent","commonActions","action","_setDefaultPropertiesFromJS","element","storedData","getRawValue","actionName","eventProxy","quadPoints","rectBlX","rectBlY","rectTrX","rectTrY","trX","trY","blX","blY","svgBuffer","svg","defs","clipPath","rectWidth","rectHeight","backgroundImage","_createPopup","popup","modificationDate","parentRect","elements","div","render","_getElementsByName","skipId","fields","fieldObj","exportValues","exportValue","domElement","querySelector","getElementsByName","getAttribute","show","maybeShow","hide","forceHide","getElementsToTriggerPopup","addHighlightArea","triggers","_isEditable","_editOnDoubleClick","annotationEditorType","editId","addEventListener","eventBus","dispatch","isTooltipOnly","link","isBound","url","addLinkAttributes","newWindow","_bindNamedAction","attachment","bindAttachment","attachmentDest","setOCGState","bindSetOCGState","dest","_bindLink","Action","_bindJSAction","resetForm","_bindResetFormAction","setInternalLink","destination","href","getDestinationHash","onclick","goToDestination","getAnchorUrl","executeNamedAction","openOrDownloadData","filename","executeSetOCGState","Map","otherClickAction","resetFormFields","refs","resetFormRefs","include","allFields","fieldIds","fieldName","field","storage","allIds","defaultValue","dispatchEvent","Event","ids","image","stringify","alternativeText","showElementAndHideCanvas","previousSibling","nodeName","_getKeyModifier","platform","isMac","metaKey","ctrlKey","_setEventListener","elementData","baseName","eventName","valueGetter","shift","shiftKey","modifier","focused","relatedTarget","_setEventListeners","Blur","Focus","_setBackgroundColor","backgroundColor","_setTextStyle","TEXT_ALIGNMENT","fontColor","defaultAppearanceData","fontSize","computedFontSize","BORDER_SIZE","roundToOneDecimal","round","multiLine","abs","numberOfLines","lineHeight","textAlignment","textAlign","isRequired","removeAttribute","hasAppearance","fieldValue","setPropertyOnSiblings","base","keyInStorage","getValue","textContent","maxLen","charLimit","fieldFormattedValues","formattedValue","comb","replaceAll","userValue","lastCommittedValue","commitKey","doNotScroll","overflowY","overflowX","readOnly","maxLength","defaultFieldValue","blurListener","scrollLeft","activeElement","selRange","setSelectionRange","willCommit","selStart","selectionStart","selEnd","selectionEnd","_blurListener","Keystroke","inputType","substring","preventDefault","change","fieldWidth","combWidth","letterSpacing","verticalAlign","checked","checkbox","curChecked","buttonValue","radio","pdfButtonValue","linkElement","lastChild","selectElement","addAnEmptyEntry","combo","multiSelect","multiple","option","selected","optionElement","displayValue","removeEmptyEntry","noneOptionElement","prepend","removeEventListener","isExport","selectedIndex","selectedValues","getItems","multipleSelection","findIndex","items","clear","insert","selectChild","children","before","indices","editable","changeEx","keyDown","PopupElement","elementIds","boundKeyDown","boundHide","boundShow","boundToggle","toggle","dateObj","pinned","wasVisible","toDateObject","trigger","className","baseColor","outlineColor","CSS","supports","BACKGROUND_ENLIGHT","header","dir","date","toLocaleDateString","time","toLocaleTimeString","xfaHtml","intent","contents","_formatContents","useParentRect","intersect","normalizedRect","HORIZONTAL_SPACE_AFTER_ANNOTATION","parentWidth","popupLeft","popupTop","p","lines","ii","line","createTextNode","altKey","isVisible","textPosition","lineSpan","lineCoordinates","square","circle","polyline","containerClassName","svgElementName","points","coordinate","vertices","polylines","inkList","inkLists","file","fillAlpha","download","evt","AnnotationLayer","accessibilityManager","annotationCanvasMap","editableAnnotations","appendElement","contentElement","firstChild","moveElementInDOM","annotations","popupToElements","elementParams","noHTML","isPopupAnnotation","rendered","setAnnotationCanvasMap","update","canvas","replaceWith","getEditableAnnotations","getEditableAnnotation","objectFromMap","AnnotationEditor","MurmurHash3_64","SerializableEmpty","freeze","hash","modified","onSetModified","onResetModified","onAnnotationEditor","assign","delete","resetModified","setModified","_type","setAll","PrintAnnotationStorage","serializable","hasBitmap","serialized","serialize","hexdigest","AbortException","AnnotationMode","assert","getVerbosityLevel","info","InvalidPDFException","isArrayBuffer","isNodeJS","MAX_IMAGE_SIZE_TO_CACHE","MissingPDFException","PasswordException","PromiseCapability","RenderingIntentFlag","setVerbosityLevel","stringToBytes","UnexpectedResponseException","UnknownErrorException","DOMCanvasFactory","DOMCMapReaderFactory","DOMFilterFactory","DOMStandardFontDataFactory","isDataScheme","isValidFetchUrl","PageViewport","RenderingCancelledException","StatTimer","FontFaceObject","FontLoader","NodeCanvasFactory","NodeCMapReaderFactory","NodeFilterFactory","NodeStandardFontDataFactory","CanvasGraphics","GlobalWorkerOptions","MessageHandler","Metadata","OptionalContentConfig","PDFDataTransportStream","PDFFetchStream","PDFNetworkStream","PDFNodeStream","XfaText","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","DELAYED_CLEANUP_TIMEOUT","DefaultCanvasFactory","DefaultCMapReaderFactory","DefaultFilterFactory","DefaultStandardFontDataFactory","getDocument","URL","range","task","PDFDocumentLoadingTask","docId","getUrlProp","getDataProp","httpHeaders","withCredentials","password","rangeTransport","PDFDataRangeTransport","rangeChunkSize","isInteger","worker","PDFWorker","verbosity","docBaseUrl","cMapUrl","cMapPacked","CMapReaderFactory","standardFontDataUrl","StandardFontDataFactory","ignoreErrors","stopAtErrors","maxImageSize","isEvalSupported","isOffscreenCanvasSupported","canvasMaxAreaInBytes","disableFontFace","fontExtraProperties","enableXfa","ownerDocument","disableRange","disableStream","disableAutoFetch","pdfBug","NaN","useSystemFonts","useWorkerFetch","baseURI","canvasFactory","filterFactory","styleElement","transportFactory","cMapReaderFactory","baseUrl","isCompressed","standardFontDataFactory","workerParams","port","workerPort","fromPort","_worker","fetchDocParams","apiVersion","evaluatorOptions","transportParams","promise","then","destroyed","workerIdPromise","_fetchDocument","networkStreamPromise","Promise","resolve","networkStream","initialData","progressiveDone","contentDispositionFilename","createPDFNetworkStream","workerId","messageHandler","transport","WorkerTransport","_transport","send","catch","_capability","reject","sendWithPromise","location","Buffer","isNaN","onPassword","onProgress","destroy","_pendingDestroy","ex","_rangeListeners","_progressListeners","_progressiveReadListeners","_progressiveDoneListeners","_readyCapability","addRangeListener","listener","addProgressListener","addProgressiveReadListener","addProgressiveDoneListener","onDataRange","begin","chunk","onDataProgress","loaded","total","onDataProgressiveRead","onDataProgressiveDone","transportReady","requestDataRange","abort","PDFDocumentProxy","pdfInfo","_pdfInfo","numPages","fingerprints","isPureXfa","_htmlForXfa","allXfaHtml","getPage","pageNumber","getPageIndex","ref","getDestinations","getDestination","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","getJSActions","getDocJSActions","getOutline","getOptionalContentConfig","getPermissions","getMetadata","getMarkInfo","getData","saveDocument","getDownloadInfo","downloadInfoCapability","cleanup","keepLoadedFonts","startCleanup","loadingTask","loadingParams","getFieldObjects","getCalculationOrderIds","PDFPageProxy","delayedCleanupTimeout","pendingCleanup","pageIndex","pageInfo","_pageIndex","_pageInfo","_stats","_pdfBug","commonObjs","objs","PDFObjects","_maybeCleanupAfterRender","_intentStates","rotate","userUnit","getViewport","scale","offsetX","offsetY","dontFlip","viewBox","getAnnotations","intentArgs","getRenderingIntent","renderingIntent","getPageJSActions","getXfa","canvasContext","annotationMode","ENABLE","transform","background","optionalContentConfigPromise","pageColors","printAnnotationStorage","abortDelayedCleanup","intentState","cacheKey","streamReaderCancelTimeout","clearTimeout","intentPrint","PRINT","displayReadyCapability","operatorList","fnArray","argsArray","lastChunk","separateAnnots","_pumpOperatorList","complete","renderTasks","internalRenderTask","tryCleanup","capability","_abortOperatorList","reason","timeEnd","InternalRenderTask","callback","useRequestAnimationFrame","renderTask","transparency","optionalContentConfig","initializeGraphics","operatorListChanged","getOperatorList","opListReadCapability","opListTask","streamTextContent","includeMarkedContent","disableNormalization","TEXT_CONTENT_CHUNK_SIZE","sendWithStream","highWaterMark","getTextContent","xfa","readableStream","pump","reader","read","styles","getReader","getStructTree","_destroy","waitOn","force","completed","cancel","resetStats","success","delayed","_startRenderPage","_renderPageChunk","operatorListChunk","annotationStorageSerializable","streamReader","delay","extraDelay","curCacheKey","curIntentState","stats","LoopbackPort","listeners","deferred","terminate","PDFWorkerUtil","isWorkerDisabled","fakeWorkerId","workerSrc","isSameOrigin","otherUrl","origin","createCDNWrapper","createObjectURL","Blob","workerPorts","_port","_webWorker","_messageHandler","_initializeFromPort","_initialize","on","mainThreadWorkerMessageHandler","Worker","terminateEarly","onWorkerError","_setupFakeWorker","sendTest","testObj","_setupFakeWorkerGlobal","WorkerMessageHandler","workerHandler","setup","cachedPort","pdfjsWorker","loader","__non_webpack_import__","methodPromises","pageCache","pagePromises","passwordCapability","factory","fontLoader","_params","destroyCapability","_networkStream","_fullReader","_lastProgress","setupMessageHandler","cacheSimpleMethod","cachedPromise","isOpList","DISPLAY","ANY","DISABLE","ANNOTATIONS_DISABLE","ENABLE_FORMS","ANNOTATIONS_FORMS","ENABLE_STORAGE","ANNOTATIONS_STORAGE","OPLIST","terminated","cancelAllRequests","sink","getFullReader","onPull","enqueue","onCancel","ready","readyReason","headersCapability","fullReader","headersReady","isStreamingSupported","isRangeSupported","contentLength","rangeReader","getRangeReader","_ref10","_numPages","htmlForXfa","code","status","details","exception","updatePassword","_ref11","exportedData","exportedError","inspectFont","FontInspector","enabled","font","fontAdded","finally","_ref12","imageData","pageProxy","fetch","num","gen","results","cleanupSuccessful","ensureObj","objId","settled","RenderTask","onContinue","form","canvasInUse","_ref13","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_cancelBound","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","_next","_canvas","_ref14","StepperManager","stepper","nextBreakPoint","getNextBreakPoint","gfx","beginDrawing","endDrawing","updateOperatorList","requestAnimationFrame","executeOperatorList","build","CMapCompressionType","BaseFilterFactory","addFilter","maps","addHCMFilter","addHighlightHCMFilter","newFgColor","newBgColor","keepHCM","BaseCanvasFactory","_createCanvas","getContext","reset","canvasAndContext","BaseCMapReaderFactory","compressionType","BINARY","NONE","_fetchData","BaseStandardFontDataFactory","BaseSVGFactory","skipDimensions","_createSVG","FormatError","getCurrentTransform","PathType","FILL","STROKE","SHADING","applyBoundingBox","ctx","bbox","region","Path2D","clip","BaseShadingPattern","getPattern","RadialAxialShadingPattern","IR","_bbox","_colorStops","_p0","_p1","_r0","_r1","matrix","_createGradient","grad","createLinearGradient","createRadialGradient","colorStop","addColorStop","owner","inverse","pathType","pattern","ownerBBox","getClippedPathBoundingBox","tmpCanvas","cachedCanvases","getCanvas","tmpCtx","clearRect","beginPath","translate","baseTransform","fillStyle","fill","createPattern","domMatrix","DOMMatrix","setTransform","drawTriangle","p1","p2","p3","c1","c2","c3","coords","colors","bytes","rowSize","tmp","x1","scaleX","y1","scaleY","x2","y2","x3","y3","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","minY","maxY","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","drawFigure","figure","ps","cs","verticesPerRow","rows","cols","q","MeshShadingPattern","_coords","_colors","_figures","_bounds","_background","_createMeshCanvas","combinedScale","EXPECTED_SCALE","MAX_PATTERN_SIZE","boundsWidth","boundsHeight","paddedWidth","paddedHeight","createImageData","putImageData","singularValueDecompose2dScale","matrixScale","temporaryPatternCanvas","DummyShadingPattern","getShadingPattern","PaintType","COLORED","UNCOLORED","TilingPattern","canvasGraphicsFactory","xstep","ystep","paintType","tilingType","createPatternCanvas","x0","y0","curMatrixScale","dimx","getSizeAndScale","dimy","graphics","createCanvasGraphics","groupLevel","setFillAndStrokeStyleToContext","adjustedX0","adjustedY0","adjustedX1","adjustedY1","save","clipBbox","realOutputSize","maxSize","bboxWidth","bboxHeight","updateRectMinMax","endPath","strokeStyle","cssColor","ImageKind","convertToRGBA","GRAYSCALE_1BPP","convertBlackAndWhiteToRGBA","RGB_24BPP","convertRGBToRGBA","srcPos","nonBlackColor","inverseDecode","black","isLittleEndian","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","destPos","elem","len32","src32","s1","s2","s3","jj","grayToRGBA","FONT_IDENTITY_MATRIX","IDENTITY_MATRIX","OPS","TextRenderingMode","getCurrentTransformInverse","PixelsPerInch","MIN_FONT_SIZE","MAX_FONT_SIZE","MAX_GROUP_SIZE","EXECUTION_TIME","EXECUTION_STEPS","MAX_SIZE_TO_COMPILE","FULL_CHUNK_HEIGHT","mirrorContextOperations","destCtx","_removeMirroring","__originalSave","__originalRestore","restore","__originalRotate","__originalScale","__originalTranslate","__originalTransform","__originalSetTransform","__originalResetTransform","resetTransform","__originalClip","__originalMoveTo","moveTo","__originalLineTo","lineTo","__originalBezierCurveTo","bezierCurveTo","__originalRect","__originalClosePath","closePath","__originalBeginPath","ctxSave","ctxRestore","ctxTranslate","ctxScale","ctxTransform","d","ctxSetTransform","ctxResetTransform","ctxRotate","rule","cp1x","cp1y","cp2x","cp2y","CachedCanvases","cache","canvasEntry","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tx","ty","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","sign","drawImage","hypot","compileType3Glyph","imgData","POINT_TO_PROCESS_LIMIT","POINT_TYPES","width1","j0","lineSize","pos","mask","sum","steps","p0","pp","drawOutline","CanvasExtraState","alphaIsShape","fontSizeScale","textMatrix","textMatrixScale","fontMatrix","leading","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","patternFill","strokeAlpha","lineWidth","activeSMask","transferMaps","startNewPathAndClipBox","clipBox","setCurrentPoint","updatePathMinMax","applyTransform","minX","maxX","p4","updateScalingPathMinMax","minMax","scaleMinMax","updateCurvePathMinMax","box","bezierBoundingBox","getPathBoundingBox","xStrokePad","yStrokePad","updateClipFromPath","isEmptyClip","putBinaryImageData","ImageData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","thisChunkHeight","elemsInThisChunk","dest32","dest32DataLength","fullSrcDiff","white","srcDiff","kEnd","kEndUnrolled","srcByte","RGBA_32BPP","subarray","putBinaryImageMask","copyCtxState","sourceCtx","properties","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","composeSMaskBackdrop","r0","g0","b0","alpha","alpha_","composeSMaskAlpha","maskData","layerData","transferMap","composeSMaskLuminosity","genericComposeSMask","maskCtx","layerCtx","backdrop","layerOffsetX","layerOffsetY","maskOffsetX","maskOffsetY","hasBackdrop","composeFn","PIXELS_TO_PROCESS","chunkSize","row","chunkHeight","getImageData","composeSMask","smask","layerBox","layerWidth","layerHeight","getImageSmoothingEnabled","interpolate","fround","actualScale","devicePixelRatio","PDF_TO_CSS_UNITS","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","canvasCtx","markedContentStack","stateStack","pendingClip","pendingEOFill","res","xobjs","groupStack","processingType3","baseTransformStack","smaskStack","smaskCounter","tempSMask","suspendedCtx","contentVisible","cachedPatterns","viewportScale","outputScaleX","outputScaleY","_cachedScaleForStroking","_cachedGetSinglePixelWidth","_cachedBitmapsMap","getObject","fallback","startsWith","savedFillStyle","fillRect","transparentCanvas","compositeCtx","executionStartIdx","continueCallback","argsArrayLen","chunkOperations","endTime","Date","now","fnId","breakIt","dependency","depObjId","objsPool","restoreInitialState","inSMaskMode","HTMLCanvasElement","drawFilter","hcmFilterId","foreground","savedFilter","_scaleImage","img","inverseTransform","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","newWidth","newHeight","_createMaskCanvas","isPatternFill","currentTransform","scaled","maskCanvas","mainKey","cachedImage","maskToCanvas","getAxialAlignedBoundingBox","drawnWidth","drawnHeight","fillCanvas","fillCtx","imageSmoothingEnabled","setLineWidth","setLineCap","setLineJoin","setMiterLimit","limit","setDash","dashArray","dashPhase","setRenderingIntent","setFlatness","flatness","setGState","states","setFont","checkSMaskState","beginSMaskMode","endSMaskMode","cacheId","scratchCanvas","compose","dirtyBox","old","pop","constructPath","ops","args","startX","startY","isScalingMatrix","minMaxForBezier","rectangle","xw","yh","curveTo","curveTo2","curveTo3","stroke","consumePath","rescaleAndStroke","closeStroke","needRestore","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","eoClip","beginText","endText","paths","pendingTextPaths","addToPath","setCharSpacing","spacing","setWordSpacing","setHScale","setLeading","fontRefName","fontObj","fontDirection","isType3Font","loadedName","typeface","systemFontInfo","css","fallbackName","bold","italic","browserFontSize","setTextRenderingMode","setTextRise","rise","moveText","setLeadingMoveText","setTextMatrix","nextLine","paintChar","character","patternTransform","fillStrokeMode","FILL_STROKE_MASK","isAddToPathSet","ADD_TO_PATH_FLAG","missingFile","getPathGenerator","FILL_STROKE","fillText","strokeText","isFontSubpixelAAEnabled","showText","glyphs","showType3Text","glyphsLength","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","getSinglePixelWidth","isInvalidPDFjsFont","chars","glyph","unicode","restoreNeeded","isSpace","fontChar","accent","scaledX","scaledY","vmetric","vx","vy","remeasure","measuredWidth","measureText","characterScaleX","isInFont","scaledAccentX","scaledAccentY","charWidth","isTextInvisible","INVISIBLE","spacingLength","charProcOperatorList","operatorListId","transformed","setCharWidth","xWidth","yWidth","setCharWidthAndBounds","llx","lly","urx","ury","getColorN_Pattern","_getPattern","setStrokeColorN","setFillColorN","setStrokeRGBColor","setFillRGBColor","shadingFill","inv","beginInlineImage","beginImageData","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","group","currentCtx","isolated","knockout","bounds","canvasBounds","groupCtx","startTransformInverse","endGroup","currentMtx","beginAnnotation","canvasWidth","canvasHeight","annotationCanvas","savedCtx","endAnnotation","paintImageMaskXObject","compiled","paintImageMaskXObjectRepeat","skewX","skewY","positions","trans","paintImageMaskXObjectGroup","images","paintImageXObject","paintInlineImageXObject","paintImageXObjectRepeat","w","h","paintInlineImageXObjectGroup","applyTransferMapsToCanvas","applyTransferMapsToBitmap","imgToPaint","HTMLElement","paintSolidColorImageMask","markPoint","markPointProps","beginMarkedContent","visible","beginMarkedContentProps","isContentVisible","endMarkedContent","beginCompat","endCompat","isEmpty","absDet","normX","normY","getScaleForStroking","getTransform","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","dashes","op","BaseException","SVG_NS","PDF","_cache","_defs","hcmFilter","hcmKey","hcmUrl","hcmHighlightFilter","hcmHighlightKey","hcmHighlightUrl","contain","position","createElementNS","body","tableR","tableG","tableB","mapR","mapG","mapB","bufferR","bufferG","bufferB","createFilter","addTransferMapConversion","fgRGB","getRGB","bgRGB","table","addGrayConversion","getSteps","arr","fgGray","bgGray","newFgRGB","newBgRGB","fg","bg","newStart","newStep","prev","parentNode","feColorMatrix","appendFeFunc","feComponentTransfer","feFunc","rTable","gTable","bTable","getComputedStyle","getPropertyValue","_document","fetchData","asTypedArray","response","ok","statusText","request","XMLHttpRequest","responseType","onreadystatechange","readyState","DONE","responseText","cMapData","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","convertToViewportPoint","convertToViewportRectangle","topLeft","bottomRight","convertToPdfPoint","applyInverseTransform","msg","trim","isPdfFile","onlyStripPath","lastIndexOf","getPdfFilenameFromUrl","defaultFilename","reURI","reFilename","splitURI","suggestedFilename","decodeURIComponent","started","times","outBuf","longest","padEnd","protocol","noContextMenu","deprecated","console","log","pdfDateStringRegex","RegExp","matches","year","month","day","hour","minute","second","universalTimeRelation","offsetHour","offsetMinute","UTC","getXfaPageViewport","xfaPage","attributes","colorRGB","getColorValues","span","computedColor","invertSelf","mustFlip","mustRotate","useRound","isCSSRoundSupported","widthStr","heightStr","AnnotationEditorParamsType","AnnotationEditorUIManager","bindEvents","KeyboardManager","FreeTextEditor","boundEditorDivBlur","editorDivBlur","boundEditorDivFocus","editorDivFocus","boundEditorDivInput","editorDivInput","boundEditorDivKeydown","editorDivKeydown","editorDivId","_freeTextDefaultContent","_internalPadding","_defaultColor","_defaultFontSize","_keyboardManager","arrowChecker","small","TRANSLATE_SMALL","big","TRANSLATE_BIG","commitOrRemove","bubbles","_translateEmpty","checker","_editorType","_defaultLineColor","initialize","l10n","strings","documentElement","parseFloat","updateDefaultParams","FREETEXT_SIZE","FREETEXT_COLOR","updateParams","updateFontSize","updateColor","defaultPropertiesToUpdate","propertiesToUpdate","setFontsize","editorDiv","parentScale","setEditorDimensions","savedFontsize","addCommands","cmd","undo","mustExec","overwriteIfSameType","keepUndo","savedColor","_uiManager","translateSelectedEditors","getInitialTranslation","rebuild","isAttachedToDOM","enableEditMode","isInEditMode","setEditingState","updateToolbar","overlayDiv","contentEditable","_isDraggable","disableEditMode","isEditing","focusin","_focusEventsAllowed","onceAdded","cheatInitialRect","_initialOptions","isCentered","center","innerText","extractText","divs","getElementsByTagName","parentHeight","parentDimensions","getBoundingClientRect","currentLayer","savedDisplay","parentRotation","fixAndSetPosition","commit","savedText","newText","trimEnd","setText","setContent","shouldGetKeyboardEvents","enterInEditMode","dblclick","keydown","disableEditing","enableEditing","baseX","baseY","_l10nPromise","annotationElementId","pageTranslationToScreen","pageDimensions","pageTranslation","posX","posY","setAt","replaceChildren","contentDiv","deserialize","uiManager","deleted","editor","isForCopying","padding","getRect","_colorManager","convert","structTreeParentId","_structTreeParentId","hasElementChanged","opacityToHex","InkEditor","baseHeight","baseWidth","boundCanvasPointermove","canvasPointermove","boundCanvasPointerleave","canvasPointerleave","boundCanvasPointerup","canvasPointerup","boundCanvasPointerdown","canvasPointerdown","canvasContextMenuTimeoutId","currentPath2D","hasSomethingToDraw","isCanvasInitialized","observer","realWidth","realHeight","requestFrameCallback","_defaultOpacity","_defaultThickness","thickness","opacity","bezierPath2D","allRawPaths","currentPath","scaleFactor","translationX","translationY","_willKeepAspectRatio","INK_THICKNESS","INK_COLOR","INK_OPACITY","updateThickness","updateOpacity","savedThickness","fitToContent","redraw","savedOpacity","createCanvas","createObserver","setCanvasDims","disconnect","setParent","removeShouldRescale","addShouldRescale","onScaleChanging","setDimensions","getInitialBBox","setStroke","startDrawing","drawPoints","draw","lastX","lastY","path2D","makeBezierCurve","lastPoint","stopDrawing","bezier","generateBezierPoints","xy","lastPoints","xMin","xMax","yMin","yMax","prevX","prevY","bezierPoints","control1","control2","updateTransform","setInForeground","makeResizable","addInkEditorIfNeeded","moveInDOM","button","addToAnnotationStorage","setInBackground","ResizeObserver","contentRect","observe","setDims","setAspectRatio","roundedWidth","roundedHeight","setScaleFactor","fixDims","getPadding","scaleFactorW","scaleFactorH","buildPath2D","first","toPDFCoordinates","fromPDFCoordinates","serializePaths","shiftX","shiftY","p10","p11","p20","p21","p30","p31","p40","p41","getBbox","firstTime","MIN_SIZE","prevTranslationX","prevTranslationY","unscaledPadding","StampEditor","bitmapId","bitmapPromise","bitmapUrl","bitmapFile","bitmapFileName","resizeTimeoutId","isSvg","hasBeenAddedInUndoStack","supportedTypes","types","supportedTypesStr","isHandlingMimeForPasting","mime","paste","pasteEditor","getAsFile","getBitmapFetched","fromId","getBitmapDone","enableWaiting","getBitmap","imageManager","getFromId","getFromUrl","getFromFile","accept","files","click","deleteId","MAX_RATIO","factor","drawBitmap","addUndoableEditor","_eventBus","editorType","addAltTextButton","TIME_TO_WAIT","scaleBitmap","bitmapWidth","bitmapHeight","prevWidth","prevHeight","offscreen","OffscreenCanvas","transferToImageBitmap","getImageForAltText","serializeBitmap","toUrl","getSvgUrl","toDataURL","accessibilityData","isValidId","altTextData","decorative","altText","alt","stamps","area","prevData","AnnotationEditorLayer","allowClick","annotationLayer","boundPointerup","pointerup","boundPointerdown","pointerdown","editorFocusTimeoutId","editors","hadPointerDown","isCleaningUp","isDisabling","_initialized","editorTypes","registerEditorTypes","addLayer","updateMode","getMode","disableClick","enableClick","isCommitting","createAndAddNewEditor","togglePointerEvents","enable","annotationElementIds","editables","isDeletedAnnotationElement","addOrRebuild","disable","hiddenAnnotationIds","setActiveEditor","currentActive","getActive","attach","removeDeletedAnnotationElement","removePointerInTextLayer","addDeletedAnnotationElement","removeEditor","changeParent","deleteAnnotationElement","addEditor","moveEditorInDOM","contains","once","needsToBeRebuilt","getNextId","getId","createNewEditor","getCenterPoint","innerWidth","innerHeight","addNewEditor","setSelected","toggleSelected","isSelected","unselect","unselectAll","findNewParent","findParent","removeLayer","getEditors","ColorManager","allResizerDivs","altTextDecorative","altTextButton","altTextTooltip","altTextTooltipTimeout","altTextWasFromKeyBoard","keepAspectRatio","resizersDiv","savedDimensions","boundFocusin","boundFocusout","focusout","focusedResizerName","hasBeenClicked","isResizerEnabledForKeyboard","moveInDOMTimeout","isDraggable","_zIndex","_borderLineWidth","SMALL_EDITOR_SIZE","_resizerKeyboardManager","resize","_resizeWithKeyboard","_stopResizingWithKeyboard","pageRotation","viewParameters","getHexCode","fakeEditor","FakeEditor","_value","isEnterHandled","stopResizing","closest","isMultipleSelection","screenToPageTranslation","translateInPage","scrollIntoView","block","drag","bx","by","getBaseTranslation","toFixed","rotatePoint","getRotationMatrix","realScale","scaledWidth","scaledHeight","widthPercent","endsWith","heightPercent","createResizers","classes","resizerPointerdown","toggleAltTextButton","boundResizerPointermove","resizerPointermove","savedDraggable","pointerMoveOptions","passive","capture","savedX","savedY","savedWidth","savedHeight","savedParentCursor","cursor","savedCursor","pointerUpCallback","addResizeToUndoStack","newX","newY","minWidth","minHeight","rotationMatrix","transf","invRotationMatrix","invTransf","getPoint","getOpposite","isDiagonal","isHorizontal","point","oppositePoint","transfOppositePoint","oppositeX","oppositeY","ratioX","ratioY","deltaX","deltaY","movementX","movementY","oldDiag","stopPropagation","onClick","editAltText","setAltTextButtonState","PERCENT","tooltip","DELAY_TO_SHOW_TOOLTIP","altTextFinish","focusVisible","getClientDimensions","maxWidth","maxHeight","setUpDragSession","pointerMoveCallback","dragSelectedEditors","endDragSession","_setParentAndPosition","getRectInCurrentCoords","boundResizerKeydown","resizerKeydown","boundResizerBlur","resizerBlur","resizerFocus","firstPosition","nextFirstPosition","child","setResizerTabIndex","stopImmediatePropagation","select","aspectRatio","AnnotationEditorPrefix","getUuid","IdManager","ImageManager","baseId","_isSVGFittingCanvas","Image","decode","rawData","refCounter","blob","mustRemoveAspectRatioPromise","fileReader","FileReader","imageElement","imagePromise","onload","svgUrl","onerror","readAsDataURL","createImageBitmap","lastModified","CommandManager","commands","locked","splice","redo","hasSomethingToUndo","hasSomethingToRedo","callbacks","allKeys","isMacKey","_colorsMapping","matchMedia","RGB","activeEditor","allEditors","allLayers","altTextManager","commandManager","currentPageIndex","deletedAnnotationsElementIds","draggingEditors","editorsToRescale","focusMainContainerTimeoutId","idManager","isEnabled","isWaiting","lastActiveElement","selectedEditors","boundBlur","blur","boundFocus","boundCopy","copy","boundCut","cut","boundPaste","boundKeydown","boundOnEditingAction","onEditingAction","boundOnPageChanging","onPageChanging","boundOnScaleChanging","boundOnRotationChanging","onRotationChanging","previousStates","hasSelectedEditor","translation","translationTimeoutId","viewer","hasSomethingToControl","textInputChecker","_self","HTMLInputElement","selectAll","addNewEditorFromKeyboard","pdfDocument","_on","removeKeyboardManager","removeFocusManager","_off","direction","focusMainContainer","layerX","layerY","disableUserSelect","pagesRotation","addFocusManager","hasSelection","lastEditor","addKeyboardManager","addCopyPasteListeners","removeCopyPasteListeners","addEditListeners","removeEditListeners","clipboardData","setData","newEditors","deserializedEditor","addEditorToLayer","selectEditors","isEditorHandlingKeyboard","dispatchUpdateStates","hasChanged","dispatchUpdateUI","getLayer","isFromKeyboard","disableAll","enableAll","CREATE","mustWait","getEditor","ed","firstSelectedEditor","noCommit","totalX","totalY","savedPageIndex","newPageIndex","mustBeAddedInUndoStack","move","isActive","createResponseStatusError","extractFilenameFromHeader","validateRangeRequestCapabilities","validateResponseStatus","createFetchOptions","headers","abortController","signal","credentials","redirect","createHeaders","Headers","getArrayBuffer","isHttp","_fullRequestReader","_rangeRequestReaders","_progressiveDataLength","_loaded","PDFFetchStreamReader","PDFFetchStreamRangeReader","stream","_stream","_reader","_filename","_withCredentials","_contentLength","_headersCapability","_disableRange","_rangeChunkSize","_abortController","AbortController","_isStreamingSupported","_isRangeSupported","_headers","getResponseHeader","allowRangeRequests","suggestedLength","_readCapability","bytesToString","string32","systemFonts","nativeFontFaces","loadingRequests","loadTestFontId","addNativeFontFace","nativeFontFace","fonts","removeNativeFontFace","insertRule","styleSheet","sheet","cssRules","loadSystemFont","_inspectFont","isFontLoadingAPISupported","fontFace","FontFace","load","baseFontName","attached","createNativeFontFace","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","hasFonts","supported","completeRequest","otherRequest","_loadTestFont","testFont","atob","int32","charCodeAt","spliceString","chunk1","chunk2","called","isFontReady","COMMENT_OFFSET","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","btoa","fontFamily","translatedData","compiledGlyphs","cssFontInfo","weight","fontWeight","italicAngle","mimetype","cmds","jsBuf","metadataMap","parsedData","getRaw","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","xhr","NetworkManager","currXhrId","pendingRequests","requestRange","prop","requestFull","xhrId","pendingRequest","setRequestHeader","expectedStatus","onError","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","ok_response_on_range_request","rangeHeader","getRequestXhr","isPendingRequest","abortRequest","_source","_manager","_onRangeRequestReaderClosed","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","manager","_onHeadersReceived","_onDone","_onError","_onProgress","_url","_fullRequestId","_headersReceivedCapability","_cachedChunks","_requests","_done","_storedError","fullRequestXhrId","fullRequestXhr","requestCapability","lengthComputable","_requestId","_queuedChunk","_close","getFilenameFromContentDispositionHeader","contentDisposition","needsEncodingFixup","toParamRegExp","rfc2616unquote","unescape","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","attributePattern","flags","textdecode","encoding","decoder","TextDecoder","fatal","contentDispositionStr","iter","quot","part","parts","quotindex","extvalue","encodingend","langvalue","charset","hex","returnValues","contentEncoding","fs","http","https","fileUriRegex","parseUrl","sourceUrl","parsedUrl","host","isFsUrl","PDFNodeStreamFsFullReader","PDFNodeStreamFullReader","PDFNodeStreamFsRangeReader","PDFNodeStreamRangeReader","BaseFullReader","_readableStream","_error","_setReadableStream","BaseRangeReader","createRequestOptions","auth","hostname","handleResponse","statusCode","_request","_httpHeaders","Range","lstat","createReadStream","path2d_polyfill","checkDOMMatrix","checkPath2D","CanvasRenderingContext2D","polyfillPath2D","readFile","INTERNAL","OptionalContentGroup","_setVisible","internal","cachedGetHash","groups","initialHash","order","creator","baseState","off","getHash","evaluateVisibilityExpression","operator","expression","policy","setVisibility","hasInitialVisibility","getOrder","getGroups","getGroup","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_ASCENT","ascentCache","getCtx","getAscent","cachedAscent","metrics","ascent","fontBoundingBoxAscent","descent","fontBoundingBoxDescent","ratio","pixels","appendText","geom","textDiv","textDivProperties","hasText","hasEOL","_textDivs","_transform","atan2","fontName","PI","_fontInspectorEnabled","fontSubstitution","fontHeight","fontAscent","_isOffscreenCanvasSupported","sin","cos","scaleFactorStr","divStyle","_container","_rootContainer","_pageWidth","_pageHeight","dataset","fontSubstitutionLoadedName","shouldScaleText","absScaleX","absScaleY","_textDivProperties","_isReadableStream","_layoutText","layout","prevFontSize","prevFontFamily","_canceled","textDivs","textDivsLength","TextLayerRenderTask","textContentSource","textContentItemsStr","_textContentSource","ReadableStream","_textContentItemsStr","_layoutTextParams","_processItems","styleCache","br","_render","renderTextLayer","updateTextLayer","mustRescale","pdfDataRangeTransport","_queuedChunks","_progressiveDone","_contentDispositionFilename","_pdfDataRangeTransport","_rangeReaders","_onReceiveData","_onProgressiveDone","_enqueue","_begin","_removeRangeReader","queuedChunks","PDFDataTransportStreamReader","PDFDataTransportStreamRangeReader","_headersReady","_end","requestsCapability","setupStorage","xfaOn","xfaOff","setAttributes","isHTMLAnchorElement","HTMLAnchorElement","dataId","rootHtml","isNotForRichText","rootDiv","shouldBuildText","childHtml","xmlns","querySelectorAll","output","walk","createValidAbsoluteUrl","normalizeUnicode","PasswordResponses","PermissionFlag","VerbosityLevel","pdfjsVersion","pdfjsBuild","CallbackKind","UNKNOWN","DATA","ERROR","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","wrapReason","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","_onComObjOnMessage","processStreamMessage","cbSourceName","cbTargetName","createStreamSink","handler","ah","transfers","queueingStrategy","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","cancelCapability","streamSink","isCancelled","lastDesiredSize","sinkCapability","streamController","deleteStreamController","allSettled","SEED","MASK_HIGH","MASK_LOW","seed","h1","h2","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","nw","electron","LINE_DESCENT_FACTOR","BASELINE_FACTOR","SAVE","RESIZE","FREETEXT_OPACITY","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","SOUND","MOVIE","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationReplyType","GROUP","REPLY","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationActionEventType","E","X","D","U","Fo","Bl","PO","PC","PV","K","DocumentActionEventType","WC","WS","DS","WP","DP","PageActionEventType","ERRORS","WARNINGS","INFOS","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setFillColor","setStrokeGray","setFillGray","setStrokeCMYKColor","setFillCMYKColor","endInlineImage","paintXObject","NEED_PASSWORD","INCORRECT_PASSWORD","level","cond","_isValidProtocol","addDefaultProtocol","dots","tryConvertEncoding","stringToUTF8String","absoluteUrl","nonSerializable","BaseExceptionClosure","MAX_ARGUMENT_COUNT","strBuf","chunkEnd","objectSize","buffer8","view32","hexNumbers","m1","m2","xt","yt","transpose","sqrt","sx","sy","rect1","rect2","xLow","xHigh","yLow","yHigh","tvalues","t","t1","t2","b2ac","sqrtb2ac","mt","jlen","PDFStringTranslateTable","stringToPDFString","escape","utf8StringToString","encodeURIComponent","isArrayEqual","arr1","arr2","getModificationDate","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","NormalizeRegex","NormalizationMap","_","crypto","randomUUID","buf","getRandomValues"],"sourceRoot":""}