{"version":3,"file":"pdf-tAdSYmIk.cjs","sources":["../node_modules/pdfjs-dist/build/pdf.mjs"],"sourcesContent":["/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2024 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 * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n/******/ // The require scope\n/******/ var __webpack_require__ = {};\n/******/ \n/************************************************************************/\n/******/ /* webpack/runtime/define property getters */\n/******/ (() => {\n/******/ \t// define getter functions for harmony exports\n/******/ \t__webpack_require__.d = (exports, definition) => {\n/******/ \t\tfor(var key in definition) {\n/******/ \t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t};\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/hasOwnProperty shorthand */\n/******/ (() => {\n/******/ \t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ })();\n/******/ \n/************************************************************************/\nvar __webpack_exports__ = globalThis.pdfjsLib = {};\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  AbortException: () => (/* reexport */ AbortException),\n  AnnotationEditorLayer: () => (/* reexport */ AnnotationEditorLayer),\n  AnnotationEditorParamsType: () => (/* reexport */ AnnotationEditorParamsType),\n  AnnotationEditorType: () => (/* reexport */ AnnotationEditorType),\n  AnnotationEditorUIManager: () => (/* reexport */ AnnotationEditorUIManager),\n  AnnotationLayer: () => (/* reexport */ AnnotationLayer),\n  AnnotationMode: () => (/* reexport */ AnnotationMode),\n  ColorPicker: () => (/* reexport */ ColorPicker),\n  DOMSVGFactory: () => (/* reexport */ DOMSVGFactory),\n  DrawLayer: () => (/* reexport */ DrawLayer),\n  FeatureTest: () => (/* reexport */ util_FeatureTest),\n  GlobalWorkerOptions: () => (/* reexport */ GlobalWorkerOptions),\n  ImageKind: () => (/* reexport */ util_ImageKind),\n  InvalidPDFException: () => (/* reexport */ InvalidPDFException),\n  MissingPDFException: () => (/* reexport */ MissingPDFException),\n  OPS: () => (/* reexport */ OPS),\n  OutputScale: () => (/* reexport */ OutputScale),\n  PDFDataRangeTransport: () => (/* reexport */ PDFDataRangeTransport),\n  PDFDateString: () => (/* reexport */ PDFDateString),\n  PDFWorker: () => (/* reexport */ PDFWorker),\n  PasswordResponses: () => (/* reexport */ PasswordResponses),\n  PermissionFlag: () => (/* reexport */ PermissionFlag),\n  PixelsPerInch: () => (/* reexport */ PixelsPerInch),\n  RenderingCancelledException: () => (/* reexport */ RenderingCancelledException),\n  TextLayer: () => (/* reexport */ TextLayer),\n  TouchManager: () => (/* reexport */ TouchManager),\n  UnexpectedResponseException: () => (/* reexport */ UnexpectedResponseException),\n  Util: () => (/* reexport */ Util),\n  VerbosityLevel: () => (/* reexport */ VerbosityLevel),\n  XfaLayer: () => (/* reexport */ XfaLayer),\n  build: () => (/* reexport */ build),\n  createValidAbsoluteUrl: () => (/* reexport */ createValidAbsoluteUrl),\n  fetchData: () => (/* reexport */ fetchData),\n  getDocument: () => (/* reexport */ getDocument),\n  getFilenameFromUrl: () => (/* reexport */ getFilenameFromUrl),\n  getPdfFilenameFromUrl: () => (/* reexport */ getPdfFilenameFromUrl),\n  getXfaPageViewport: () => (/* reexport */ getXfaPageViewport),\n  isDataScheme: () => (/* reexport */ isDataScheme),\n  isPdfFile: () => (/* reexport */ isPdfFile),\n  noContextMenu: () => (/* reexport */ noContextMenu),\n  normalizeUnicode: () => (/* reexport */ normalizeUnicode),\n  setLayerDimensions: () => (/* reexport */ setLayerDimensions),\n  shadow: () => (/* reexport */ shadow),\n  stopEvent: () => (/* reexport */ stopEvent),\n  version: () => (/* reexport */ version)\n});\n\n;// ./src/shared/util.js\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nconst MAX_IMAGE_SIZE_TO_CACHE = 10e6;\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\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  IS_EDITING: 0x80,\n  OPLIST: 0x100\n};\nconst AnnotationMode = {\n  DISABLE: 0,\n  ENABLE: 1,\n  ENABLE_FORMS: 2,\n  ENABLE_STORAGE: 3\n};\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nconst AnnotationEditorType = {\n  DISABLE: -1,\n  NONE: 0,\n  FREETEXT: 3,\n  HIGHLIGHT: 9,\n  STAMP: 13,\n  INK: 15\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  HIGHLIGHT_COLOR: 31,\n  HIGHLIGHT_DEFAULT_COLOR: 32,\n  HIGHLIGHT_THICKNESS: 33,\n  HIGHLIGHT_FREE: 34,\n  HIGHLIGHT_SHOW_ALL: 35,\n  DRAW_STEP: 41\n};\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};\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};\nconst util_ImageKind = {\n  GRAYSCALE_1BPP: 1,\n  RGB_24BPP: 2,\n  RGBA_32BPP: 3\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};\nconst AnnotationReplyType = {\n  GROUP: \"Group\",\n  REPLY: \"R\"\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};\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};\nconst AnnotationBorderStyleType = {\n  SOLID: 1,\n  DASHED: 2,\n  BEVELED: 3,\n  INSET: 4,\n  UNDERLINE: 5\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};\nconst DocumentActionEventType = {\n  WC: \"WillClose\",\n  WS: \"WillSave\",\n  DS: \"DidSave\",\n  WP: \"WillPrint\",\n  DP: \"DidPrint\"\n};\nconst PageActionEventType = {\n  O: \"PageOpen\",\n  C: \"PageClose\"\n};\nconst VerbosityLevel = {\n  ERRORS: 0,\n  WARNINGS: 1,\n  INFOS: 5\n};\nconst OPS = {\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  beginAnnotation: 80,\n  endAnnotation: 81,\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  setStrokeTransparent: 92,\n  setFillTransparent: 93\n};\nconst PasswordResponses = {\n  NEED_PASSWORD: 1,\n  INCORRECT_PASSWORD: 2\n};\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n  if (Number.isInteger(level)) {\n    verbosity = level;\n  }\n}\nfunction getVerbosityLevel() {\n  return verbosity;\n}\nfunction info(msg) {\n  if (verbosity >= VerbosityLevel.INFOS) {\n    console.log(`Info: ${msg}`);\n  }\n}\nfunction warn(msg) {\n  if (verbosity >= VerbosityLevel.WARNINGS) {\n    console.log(`Warning: ${msg}`);\n  }\n}\nfunction unreachable(msg) {\n  throw new Error(msg);\n}\nfunction assert(cond, msg) {\n  if (!cond) {\n    unreachable(msg);\n  }\n}\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}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n  if (!url) {\n    return null;\n  }\n  try {\n    if (options && typeof url === \"string\") {\n      if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n        const dots = url.match(/\\./g);\n        if (dots?.length >= 2) {\n          url = `http://${url}`;\n        }\n      }\n      if (options.tryConvertEncoding) {\n        try {\n          url = stringToUTF8String(url);\n        } catch {}\n      }\n    }\n    const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n    if (_isValidProtocol(absoluteUrl)) {\n      return absoluteUrl;\n    }\n  } catch {}\n  return null;\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n  Object.defineProperty(obj, prop, {\n    value,\n    enumerable: !nonSerializable,\n    configurable: true,\n    writable: false\n  });\n  return value;\n}\nconst BaseException = function BaseExceptionClosure() {\n  function BaseException(message, name) {\n    this.message = message;\n    this.name = name;\n  }\n  BaseException.prototype = new Error();\n  BaseException.constructor = BaseException;\n  return BaseException;\n}();\nclass PasswordException extends BaseException {\n  constructor(msg, code) {\n    super(msg, \"PasswordException\");\n    this.code = code;\n  }\n}\nclass UnknownErrorException extends BaseException {\n  constructor(msg, details) {\n    super(msg, \"UnknownErrorException\");\n    this.details = details;\n  }\n}\nclass InvalidPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"InvalidPDFException\");\n  }\n}\nclass MissingPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"MissingPDFException\");\n  }\n}\nclass UnexpectedResponseException extends BaseException {\n  constructor(msg, status) {\n    super(msg, \"UnexpectedResponseException\");\n    this.status = status;\n  }\n}\nclass FormatError extends BaseException {\n  constructor(msg) {\n    super(msg, \"FormatError\");\n  }\n}\nclass AbortException extends BaseException {\n  constructor(msg) {\n    super(msg, \"AbortException\");\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}\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}\nfunction string32(value) {\n  return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\nfunction objectSize(obj) {\n  return Object.keys(obj).length;\n}\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}\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}\nfunction isEvalSupported() {\n  try {\n    new Function(\"\");\n    return true;\n  } catch {\n    return false;\n  }\n}\nclass util_FeatureTest {\n  static get isLittleEndian() {\n    return shadow(this, \"isLittleEndian\", isLittleEndian());\n  }\n  static get isEvalSupported() {\n    return shadow(this, \"isEvalSupported\", isEvalSupported());\n  }\n  static get isOffscreenCanvasSupported() {\n    return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n  }\n  static get isImageDecoderSupported() {\n    return shadow(this, \"isImageDecoderSupported\", typeof ImageDecoder !== \"undefined\");\n  }\n  static get platform() {\n    if (typeof navigator !== \"undefined\" && typeof navigator?.platform === \"string\") {\n      return shadow(this, \"platform\", {\n        isMac: navigator.platform.includes(\"Mac\"),\n        isWindows: navigator.platform.includes(\"Win\"),\n        isFirefox: typeof navigator?.userAgent === \"string\" && navigator.userAgent.includes(\"Firefox\")\n      });\n    }\n    return shadow(this, \"platform\", {\n      isMac: false,\n      isWindows: false,\n      isFirefox: false\n    });\n  }\n  static get isCSSRoundSupported() {\n    return shadow(this, \"isCSSRoundSupported\", globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\"));\n  }\n}\nconst hexNumbers = Array.from(Array(256).keys(), n => n.toString(16).padStart(2, \"0\"));\nclass Util {\n  static makeHexColor(r, g, b) {\n    return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n  }\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[2];\n        minMax[2] = temp;\n      }\n      minMax[0] *= transform[0];\n      minMax[2] *= transform[0];\n      if (transform[3] < 0) {\n        temp = minMax[1];\n        minMax[1] = minMax[3];\n        minMax[3] = temp;\n      }\n      minMax[1] *= transform[3];\n      minMax[3] *= transform[3];\n    } else {\n      temp = minMax[0];\n      minMax[0] = minMax[1];\n      minMax[1] = temp;\n      temp = minMax[2];\n      minMax[2] = minMax[3];\n      minMax[3] = temp;\n      if (transform[1] < 0) {\n        temp = minMax[1];\n        minMax[1] = minMax[3];\n        minMax[3] = temp;\n      }\n      minMax[1] *= transform[1];\n      minMax[3] *= transform[1];\n      if (transform[2] < 0) {\n        temp = minMax[0];\n        minMax[0] = minMax[2];\n        minMax[2] = temp;\n      }\n      minMax[0] *= transform[2];\n      minMax[2] *= transform[2];\n    }\n    minMax[0] += transform[4];\n    minMax[1] += transform[5];\n    minMax[2] += transform[4];\n    minMax[3] += transform[5];\n  }\n  static transform(m1, m2) {\n    return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n  }\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  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  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 [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n  }\n  static inverseTransform(m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n  }\n  static singularValueDecompose2dScale(m) {\n    const transpose = [m[0], m[2], m[1], m[3]];\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    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    return [Math.sqrt(sx), Math.sqrt(sy)];\n  }\n  static normalizeRect(rect) {\n    const r = rect.slice(0);\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  static intersect(rect1, rect2) {\n    const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n    const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n    if (xLow > xHigh) {\n      return null;\n    }\n    const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n    const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n    if (yLow > yHigh) {\n      return null;\n    }\n    return [xLow, yLow, xHigh, yHigh];\n  }\n  static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n    if (t <= 0 || t >= 1) {\n      return;\n    }\n    const mt = 1 - t;\n    const tt = t * t;\n    const ttt = tt * t;\n    const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n    const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n    minMax[0] = Math.min(minMax[0], x);\n    minMax[1] = Math.min(minMax[1], y);\n    minMax[2] = Math.max(minMax[2], x);\n    minMax[3] = Math.max(minMax[3], y);\n  }\n  static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n    if (Math.abs(a) < 1e-12) {\n      if (Math.abs(b) >= 1e-12) {\n        this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, -c / b, minMax);\n      }\n      return;\n    }\n    const delta = b ** 2 - 4 * c * a;\n    if (delta < 0) {\n      return;\n    }\n    const sqrtDelta = Math.sqrt(delta);\n    const a2 = 2 * a;\n    this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b + sqrtDelta) / a2, minMax);\n    this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) / a2, minMax);\n  }\n  static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n    if (minMax) {\n      minMax[0] = Math.min(minMax[0], x0, x3);\n      minMax[1] = Math.min(minMax[1], y0, y3);\n      minMax[2] = Math.max(minMax[2], x0, x3);\n      minMax[3] = Math.max(minMax[3], y0, y3);\n    } else {\n      minMax = [Math.min(x0, x3), Math.min(y0, y3), Math.max(x0, x3), Math.max(y0, y3)];\n    }\n    this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n    this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n    return minMax;\n  }\n}\nconst PDFStringTranslateTable = (/* unused pure expression or super */ null && ([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, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]));\nfunction stringToPDFString(str) {\n  if (str[0] >= \"\\xEF\") {\n    let encoding;\n    if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n      encoding = \"utf-16be\";\n      if (str.length % 2 === 1) {\n        str = str.slice(0, -1);\n      }\n    } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n      encoding = \"utf-16le\";\n      if (str.length % 2 === 1) {\n        str = str.slice(0, -1);\n      }\n    } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n      encoding = \"utf-8\";\n    }\n    if (encoding) {\n      try {\n        const decoder = new TextDecoder(encoding, {\n          fatal: true\n        });\n        const buffer = stringToBytes(str);\n        const decoded = decoder.decode(buffer);\n        if (!decoded.includes(\"\\x1b\")) {\n          return decoded;\n        }\n        return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\n      } catch (ex) {\n        warn(`stringToPDFString: \"${ex}\".`);\n      }\n    }\n  }\n  const strBuf = [];\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const charCode = str.charCodeAt(i);\n    if (charCode === 0x1b) {\n      while (++i < ii && str.charCodeAt(i) !== 0x1b) {}\n      continue;\n    }\n    const code = PDFStringTranslateTable[charCode];\n    strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n  }\n  return strBuf.join(\"\");\n}\nfunction stringToUTF8String(str) {\n  return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n  return unescape(encodeURIComponent(str));\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}\nfunction getModificationDate(date = new Date()) {\n  const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n  return buffer.join(\"\");\n}\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n  if (!NormalizeRegex) {\n    NormalizeRegex = /([\\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) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n}\nfunction getUuid() {\n  if (typeof crypto.randomUUID === \"function\") {\n    return crypto.randomUUID();\n  }\n  const buf = new Uint8Array(32);\n  crypto.getRandomValues(buf);\n  return bytesToString(buf);\n}\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nfunction toHexUtil(arr) {\n  if (Uint8Array.prototype.toHex) {\n    return arr.toHex();\n  }\n  return Array.from(arr, num => hexNumbers[num]).join(\"\");\n}\nfunction toBase64Util(arr) {\n  if (Uint8Array.prototype.toBase64) {\n    return arr.toBase64();\n  }\n  return btoa(bytesToString(arr));\n}\nfunction fromBase64Util(str) {\n  if (Uint8Array.fromBase64) {\n    return Uint8Array.fromBase64(str);\n  }\n  return stringToBytes(atob(str));\n}\nif (typeof Promise.try !== \"function\") {\n  Promise.try = function (fn, ...args) {\n    return new Promise(resolve => {\n      resolve(fn(...args));\n    });\n  };\n}\n\n;// ./src/display/display_utils.js\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nclass PixelsPerInch {\n  static CSS = 96.0;\n  static PDF = 72.0;\n  static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\nasync function fetchData(url, type = \"text\") {\n  if (isValidFetchUrl(url, document.baseURI)) {\n    const response = await fetch(url);\n    if (!response.ok) {\n      throw new Error(response.statusText);\n    }\n    switch (type) {\n      case \"arraybuffer\":\n        return response.arrayBuffer();\n      case \"blob\":\n        return response.blob();\n      case \"json\":\n        return response.json();\n    }\n    return response.text();\n  }\n  return new Promise((resolve, reject) => {\n    const request = new XMLHttpRequest();\n    request.open(\"GET\", url, true);\n    request.responseType = type;\n    request.onreadystatechange = () => {\n      if (request.readyState !== XMLHttpRequest.DONE) {\n        return;\n      }\n      if (request.status === 200 || request.status === 0) {\n        switch (type) {\n          case \"arraybuffer\":\n          case \"blob\":\n          case \"json\":\n            resolve(request.response);\n            return;\n        }\n        resolve(request.responseText);\n        return;\n      }\n      reject(new Error(request.statusText));\n    };\n    request.send(null);\n  });\n}\nclass PageViewport {\n  constructor({\n    viewBox,\n    userUnit,\n    scale,\n    rotation,\n    offsetX = 0,\n    offsetY = 0,\n    dontFlip = false\n  }) {\n    this.viewBox = viewBox;\n    this.userUnit = userUnit;\n    this.scale = scale;\n    this.rotation = rotation;\n    this.offsetX = offsetX;\n    this.offsetY = offsetY;\n    scale *= userUnit;\n    const centerX = (viewBox[2] + viewBox[0]) / 2;\n    const centerY = (viewBox[3] + viewBox[1]) / 2;\n    let rotateA, rotateB, rotateC, rotateD;\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(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n    }\n    if (dontFlip) {\n      rotateC = -rotateC;\n      rotateD = -rotateD;\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    this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n    this.width = width;\n    this.height = height;\n  }\n  get rawDims() {\n    const {\n      userUnit,\n      viewBox\n    } = this;\n    const dims = viewBox.map(x => x * userUnit);\n    return shadow(this, \"rawDims\", {\n      pageWidth: dims[2] - dims[0],\n      pageHeight: dims[3] - dims[1],\n      pageX: dims[0],\n      pageY: dims[1]\n    });\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      userUnit: this.userUnit,\n      scale,\n      rotation,\n      offsetX,\n      offsetY,\n      dontFlip\n    });\n  }\n  convertToViewportPoint(x, y) {\n    return Util.applyTransform([x, y], this.transform);\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  convertToPdfPoint(x, y) {\n    return Util.applyInverseTransform([x, y], this.transform);\n  }\n}\nclass RenderingCancelledException extends BaseException {\n  constructor(msg, extraDelay = 0) {\n    super(msg, \"RenderingCancelledException\");\n    this.extraDelay = extraDelay;\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}\nfunction isPdfFile(filename) {\n  return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\nfunction getFilenameFromUrl(url) {\n  [url] = url.split(/[#?]/, 1);\n  return url.substring(url.lastIndexOf(\"/\") + 1);\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  const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n  const splitURI = reURI.exec(url);\n  let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);\n  if (suggestedFilename) {\n    suggestedFilename = suggestedFilename[0];\n    if (suggestedFilename.includes(\"%\")) {\n      try {\n        suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];\n      } catch {}\n    }\n  }\n  return suggestedFilename || defaultFilename;\n}\nclass StatTimer {\n  started = Object.create(null);\n  times = [];\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  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    delete this.started[name];\n  }\n  toString() {\n    const outBuf = [];\n    let longest = 0;\n    for (const {\n      name\n    } of this.times) {\n      longest = Math.max(name.length, longest);\n    }\n    for (const {\n      name,\n      start,\n      end\n    } of this.times) {\n      outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n    }\n    return outBuf.join(\"\");\n  }\n}\nfunction isValidFetchUrl(url, baseUrl) {\n  try {\n    const {\n      protocol\n    } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n    return protocol === \"http:\" || protocol === \"https:\";\n  } catch {\n    return false;\n  }\n}\nfunction noContextMenu(e) {\n  e.preventDefault();\n}\nfunction stopEvent(e) {\n  e.preventDefault();\n  e.stopPropagation();\n}\nfunction deprecated(details) {\n  console.log(\"Deprecated API usage: \" + details);\n}\nclass PDFDateString {\n  static #regex;\n  static toDateObject(input) {\n    if (!input || typeof input !== \"string\") {\n      return null;\n    }\n    this.#regex ||= new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n    const matches = this.#regex.exec(input);\n    if (!matches) {\n      return null;\n    }\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    if (universalTimeRelation === \"-\") {\n      hour += offsetHour;\n      minute += offsetMinute;\n    } else if (universalTimeRelation === \"+\") {\n      hour -= offsetHour;\n      minute -= offsetMinute;\n    }\n    return new Date(Date.UTC(year, month, day, hour, minute, second));\n  }\n}\nfunction getXfaPageViewport(xfaPage, {\n  scale = 1,\n  rotation = 0\n}) {\n  const {\n    width,\n    height\n  } = xfaPage.attributes.style;\n  const viewBox = [0, 0, parseInt(width), parseInt(height)];\n  return new PageViewport({\n    viewBox,\n    userUnit: 1,\n    scale,\n    rotation\n  });\n}\nfunction getRGB(color) {\n  if (color.startsWith(\"#\")) {\n    const colorRGB = parseInt(color.slice(1), 16);\n    return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff];\n  }\n  if (color.startsWith(\"rgb(\")) {\n    return color.slice(4, -1).split(\",\").map(x => parseInt(x));\n  }\n  if (color.startsWith(\"rgba(\")) {\n    return color.slice(5, -1).split(\",\").map(x => parseInt(x)).slice(0, 3);\n  }\n  warn(`Not a valid color format: \"${color}\"`);\n  return [0, 0, 0];\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}\nfunction getCurrentTransform(ctx) {\n  const {\n    a,\n    b,\n    c,\n    d,\n    e,\n    f\n  } = ctx.getTransform();\n  return [a, b, c, d, e, f];\n}\nfunction getCurrentTransformInverse(ctx) {\n  const {\n    a,\n    b,\n    c,\n    d,\n    e,\n    f\n  } = ctx.getTransform().invertSelf();\n  return [a, b, c, d, e, f];\n}\nfunction setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) {\n  if (viewport instanceof PageViewport) {\n    const {\n      pageWidth,\n      pageHeight\n    } = viewport.rawDims;\n    const {\n      style\n    } = div;\n    const useRound = util_FeatureTest.isCSSRoundSupported;\n    const w = `var(--scale-factor) * ${pageWidth}px`,\n      h = `var(--scale-factor) * ${pageHeight}px`;\n    const widthStr = useRound ? `round(down, ${w}, var(--scale-round-x, 1px))` : `calc(${w})`,\n      heightStr = useRound ? `round(down, ${h}, var(--scale-round-y, 1px))` : `calc(${h})`;\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  if (mustRotate) {\n    div.setAttribute(\"data-main-rotation\", viewport.rotation);\n  }\n}\nclass OutputScale {\n  constructor() {\n    const pixelRatio = window.devicePixelRatio || 1;\n    this.sx = pixelRatio;\n    this.sy = pixelRatio;\n  }\n  get scaled() {\n    return this.sx !== 1 || this.sy !== 1;\n  }\n  get symmetric() {\n    return this.sx === this.sy;\n  }\n}\n\n;// ./src/display/editor/toolbar.js\n\nclass EditorToolbar {\n  #toolbar = null;\n  #colorPicker = null;\n  #editor;\n  #buttons = null;\n  #altText = null;\n  static #l10nRemove = null;\n  constructor(editor) {\n    this.#editor = editor;\n    EditorToolbar.#l10nRemove ||= Object.freeze({\n      freetext: \"pdfjs-editor-remove-freetext-button\",\n      highlight: \"pdfjs-editor-remove-highlight-button\",\n      ink: \"pdfjs-editor-remove-ink-button\",\n      stamp: \"pdfjs-editor-remove-stamp-button\"\n    });\n  }\n  render() {\n    const editToolbar = this.#toolbar = document.createElement(\"div\");\n    editToolbar.classList.add(\"editToolbar\", \"hidden\");\n    editToolbar.setAttribute(\"role\", \"toolbar\");\n    const signal = this.#editor._uiManager._signal;\n    editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n      signal\n    });\n    editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown, {\n      signal\n    });\n    const buttons = this.#buttons = document.createElement(\"div\");\n    buttons.className = \"buttons\";\n    editToolbar.append(buttons);\n    const position = this.#editor.toolbarPosition;\n    if (position) {\n      const {\n        style\n      } = editToolbar;\n      const x = this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0];\n      style.insetInlineEnd = `${100 * x}%`;\n      style.top = `calc(${100 * position[1]}% + var(--editor-toolbar-vert-offset))`;\n    }\n    this.#addDeleteButton();\n    return editToolbar;\n  }\n  get div() {\n    return this.#toolbar;\n  }\n  static #pointerDown(e) {\n    e.stopPropagation();\n  }\n  #focusIn(e) {\n    this.#editor._focusEventsAllowed = false;\n    stopEvent(e);\n  }\n  #focusOut(e) {\n    this.#editor._focusEventsAllowed = true;\n    stopEvent(e);\n  }\n  #addListenersToElement(element) {\n    const signal = this.#editor._uiManager._signal;\n    element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n      capture: true,\n      signal\n    });\n    element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n      capture: true,\n      signal\n    });\n    element.addEventListener(\"contextmenu\", noContextMenu, {\n      signal\n    });\n  }\n  hide() {\n    this.#toolbar.classList.add(\"hidden\");\n    this.#colorPicker?.hideDropdown();\n  }\n  show() {\n    this.#toolbar.classList.remove(\"hidden\");\n    this.#altText?.shown();\n  }\n  #addDeleteButton() {\n    const {\n      editorType,\n      _uiManager\n    } = this.#editor;\n    const button = document.createElement(\"button\");\n    button.className = \"delete\";\n    button.tabIndex = 0;\n    button.setAttribute(\"data-l10n-id\", EditorToolbar.#l10nRemove[editorType]);\n    this.#addListenersToElement(button);\n    button.addEventListener(\"click\", e => {\n      _uiManager.delete();\n    }, {\n      signal: _uiManager._signal\n    });\n    this.#buttons.append(button);\n  }\n  get #divider() {\n    const divider = document.createElement(\"div\");\n    divider.className = \"divider\";\n    return divider;\n  }\n  async addAltText(altText) {\n    const button = await altText.render();\n    this.#addListenersToElement(button);\n    this.#buttons.prepend(button, this.#divider);\n    this.#altText = altText;\n  }\n  addColorPicker(colorPicker) {\n    this.#colorPicker = colorPicker;\n    const button = colorPicker.renderButton();\n    this.#addListenersToElement(button);\n    this.#buttons.prepend(button, this.#divider);\n  }\n  remove() {\n    this.#toolbar.remove();\n    this.#colorPicker?.destroy();\n    this.#colorPicker = null;\n  }\n}\nclass HighlightToolbar {\n  #buttons = null;\n  #toolbar = null;\n  #uiManager;\n  constructor(uiManager) {\n    this.#uiManager = uiManager;\n  }\n  #render() {\n    const editToolbar = this.#toolbar = document.createElement(\"div\");\n    editToolbar.className = \"editToolbar\";\n    editToolbar.setAttribute(\"role\", \"toolbar\");\n    editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n      signal: this.#uiManager._signal\n    });\n    const buttons = this.#buttons = document.createElement(\"div\");\n    buttons.className = \"buttons\";\n    editToolbar.append(buttons);\n    this.#addHighlightButton();\n    return editToolbar;\n  }\n  #getLastPoint(boxes, isLTR) {\n    let lastY = 0;\n    let lastX = 0;\n    for (const box of boxes) {\n      const y = box.y + box.height;\n      if (y < lastY) {\n        continue;\n      }\n      const x = box.x + (isLTR ? box.width : 0);\n      if (y > lastY) {\n        lastX = x;\n        lastY = y;\n        continue;\n      }\n      if (isLTR) {\n        if (x > lastX) {\n          lastX = x;\n        }\n      } else if (x < lastX) {\n        lastX = x;\n      }\n    }\n    return [isLTR ? 1 - lastX : lastX, lastY];\n  }\n  show(parent, boxes, isLTR) {\n    const [x, y] = this.#getLastPoint(boxes, isLTR);\n    const {\n      style\n    } = this.#toolbar ||= this.#render();\n    parent.append(this.#toolbar);\n    style.insetInlineEnd = `${100 * x}%`;\n    style.top = `calc(${100 * y}% + var(--editor-toolbar-vert-offset))`;\n  }\n  hide() {\n    this.#toolbar.remove();\n  }\n  #addHighlightButton() {\n    const button = document.createElement(\"button\");\n    button.className = \"highlightButton\";\n    button.tabIndex = 0;\n    button.setAttribute(\"data-l10n-id\", `pdfjs-highlight-floating-button1`);\n    const span = document.createElement(\"span\");\n    button.append(span);\n    span.className = \"visuallyHidden\";\n    span.setAttribute(\"data-l10n-id\", \"pdfjs-highlight-floating-button-label\");\n    const signal = this.#uiManager._signal;\n    button.addEventListener(\"contextmenu\", noContextMenu, {\n      signal\n    });\n    button.addEventListener(\"click\", () => {\n      this.#uiManager.highlightSelection(\"floating_button\");\n    }, {\n      signal\n    });\n    this.#buttons.append(button);\n  }\n}\n\n;// ./src/display/editor/tools.js\n\n\n\nfunction bindEvents(obj, element, names) {\n  for (const name of names) {\n    element.addEventListener(name, obj[name].bind(obj));\n  }\n}\nfunction opacityToHex(opacity) {\n  return Math.round(Math.min(255, Math.max(1, 255 * opacity))).toString(16).padStart(2, \"0\");\n}\nclass IdManager {\n  #id = 0;\n  get id() {\n    return `${AnnotationEditorPrefix}${this.#id++}`;\n  }\n}\nclass ImageManager {\n  #baseId = getUuid();\n  #id = 0;\n  #cache = null;\n  static get _isSVGFittingCanvas() {\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      willReadFrequently: true\n    });\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    return shadow(this, \"_isSVGFittingCanvas\", promise);\n  }\n  async #get(key, rawData) {\n    this.#cache ||= new Map();\n    let data = this.#cache.get(key);\n    if (data === null) {\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        image = await fetchData(rawData, \"blob\");\n      } else if (rawData instanceof File) {\n        image = data.file = rawData;\n      } else if (rawData instanceof Blob) {\n        image = rawData;\n      }\n      if (image.type === \"image/svg+xml\") {\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            imageElement.src = (await mustRemoveAspectRatioPromise) ? `${url}#svgView(preserveAspectRatio(none))` : 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      warn(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  async getFromFile(file) {\n    const {\n      lastModified,\n      name,\n      size,\n      type\n    } = file;\n    return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n  }\n  async getFromUrl(url) {\n    return this.#get(url, url);\n  }\n  async getFromBlob(id, blobPromise) {\n    const blob = await blobPromise;\n    return this.#get(id, blob);\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    if (data.file) {\n      return this.getFromFile(data.file);\n    }\n    if (data.blobPromise) {\n      const {\n        blobPromise\n      } = data;\n      delete data.blobPromise;\n      return this.getFromBlob(data.id, blobPromise);\n    }\n    return this.getFromUrl(data.url);\n  }\n  getFromCanvas(id, canvas) {\n    this.#cache ||= new Map();\n    let data = this.#cache.get(id);\n    if (data?.bitmap) {\n      data.refCounter += 1;\n      return data;\n    }\n    const offscreen = new OffscreenCanvas(canvas.width, canvas.height);\n    const ctx = offscreen.getContext(\"2d\");\n    ctx.drawImage(canvas, 0, 0);\n    data = {\n      bitmap: offscreen.transferToImageBitmap(),\n      id: `image_${this.#baseId}_${this.#id++}`,\n      refCounter: 1,\n      isSvg: false\n    };\n    this.#cache.set(id, data);\n    this.#cache.set(data.id, data);\n    return data;\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  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    const {\n      bitmap\n    } = data;\n    if (!data.url && !data.file) {\n      const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n      const ctx = canvas.getContext(\"bitmaprenderer\");\n      ctx.transferFromImageBitmap(bitmap);\n      data.blobPromise = canvas.convertToBlob();\n    }\n    bitmap.close?.();\n    data.bitmap = null;\n  }\n  isValidId(id) {\n    return id.startsWith(`image_${this.#baseId}_`);\n  }\n}\nclass CommandManager {\n  #commands = [];\n  #locked = false;\n  #maxSize;\n  #position = -1;\n  constructor(maxSize = 128) {\n    this.#maxSize = maxSize;\n  }\n  add({\n    cmd,\n    undo,\n    post,\n    mustExec,\n    type = NaN,\n    overwriteIfSameType = false,\n    keepUndo = false\n  }) {\n    if (mustExec) {\n      cmd();\n    }\n    if (this.#locked) {\n      return;\n    }\n    const save = {\n      cmd,\n      undo,\n      post,\n      type\n    };\n    if (this.#position === -1) {\n      if (this.#commands.length > 0) {\n        this.#commands.length = 0;\n      }\n      this.#position = 0;\n      this.#commands.push(save);\n      return;\n    }\n    if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n      if (keepUndo) {\n        save.undo = this.#commands[this.#position].undo;\n      }\n      this.#commands[this.#position] = save;\n      return;\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    this.#commands.push(save);\n  }\n  undo() {\n    if (this.#position === -1) {\n      return;\n    }\n    this.#locked = true;\n    const {\n      undo,\n      post\n    } = this.#commands[this.#position];\n    undo();\n    post?.();\n    this.#locked = false;\n    this.#position -= 1;\n  }\n  redo() {\n    if (this.#position < this.#commands.length - 1) {\n      this.#position += 1;\n      this.#locked = true;\n      const {\n        cmd,\n        post\n      } = this.#commands[this.#position];\n      cmd();\n      post?.();\n      this.#locked = false;\n    }\n  }\n  hasSomethingToUndo() {\n    return this.#position !== -1;\n  }\n  hasSomethingToRedo() {\n    return this.#position < this.#commands.length - 1;\n  }\n  cleanType(type) {\n    if (this.#position === -1) {\n      return;\n    }\n    for (let i = this.#position; i >= 0; i--) {\n      if (this.#commands[i].type !== type) {\n        this.#commands.splice(i + 1, this.#position - i);\n        this.#position = i;\n        return;\n      }\n    }\n    this.#commands.length = 0;\n    this.#position = -1;\n  }\n  destroy() {\n    this.#commands = null;\n  }\n}\nclass KeyboardManager {\n  constructor(callbacks) {\n    this.buffer = [];\n    this.callbacks = new Map();\n    this.allKeys = new Set();\n    const {\n      isMac\n    } = util_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), {\n            callback,\n            options\n          });\n          this.allKeys.add(key.split(\"+\").at(-1));\n        } else if (!isMac && !isMacKey) {\n          this.callbacks.set(key, {\n            callback,\n            options\n          });\n          this.allKeys.add(key.split(\"+\").at(-1));\n        }\n      }\n    }\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    return str;\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: {\n        bubbles = false,\n        args = [],\n        checker = null\n      }\n    } = info;\n    if (checker && !checker(self, event)) {\n      return;\n    }\n    callback.bind(self, ...args, event)();\n    if (!bubbles) {\n      stopEvent(event);\n    }\n  }\n}\nclass ColorManager {\n  static _colorsMapping = new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]);\n  get _colors() {\n    const colors = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n    getColorValues(colors);\n    return shadow(this, \"_colors\", colors);\n  }\n  convert(color) {\n    const rgb = getRGB(color);\n    if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n      return rgb;\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  getHexCode(name) {\n    const rgb = this._colors.get(name);\n    if (!rgb) {\n      return name;\n    }\n    return Util.makeHexColor(...rgb);\n  }\n}\nclass AnnotationEditorUIManager {\n  #abortController = new AbortController();\n  #activeEditor = null;\n  #allEditors = new Map();\n  #allLayers = new Map();\n  #altTextManager = null;\n  #annotationStorage = null;\n  #changedExistingAnnotations = null;\n  #commandManager = new CommandManager();\n  #copyPasteAC = null;\n  #currentDrawingSession = null;\n  #currentPageIndex = 0;\n  #deletedAnnotationsElementIds = new Set();\n  #draggingEditors = null;\n  #editorTypes = null;\n  #editorsToRescale = new Set();\n  _editorUndoBar = null;\n  #enableHighlightFloatingButton = false;\n  #enableUpdatedAddImage = false;\n  #enableNewAltTextWhenAddingImage = false;\n  #filterFactory = null;\n  #focusMainContainerTimeoutId = null;\n  #focusManagerAC = null;\n  #highlightColors = null;\n  #highlightWhenShiftUp = false;\n  #highlightToolbar = null;\n  #idManager = new IdManager();\n  #isEnabled = false;\n  #isWaiting = false;\n  #keyboardManagerAC = null;\n  #lastActiveElement = null;\n  #mainHighlightColorPicker = null;\n  #mlManager = null;\n  #mode = AnnotationEditorType.NONE;\n  #selectedEditors = new Set();\n  #selectedTextNode = null;\n  #pageColors = null;\n  #showAllStates = null;\n  #previousStates = {\n    isEditing: false,\n    isEmpty: true,\n    hasSomethingToUndo: false,\n    hasSomethingToRedo: false,\n    hasSelectedEditor: false,\n    hasSelectedText: false\n  };\n  #translation = [0, 0];\n  #translationTimeoutId = null;\n  #container = null;\n  #viewer = null;\n  #updateModeCapability = null;\n  static TRANSLATE_SMALL = 1;\n  static TRANSLATE_BIG = 10;\n  static get _keyboardManager() {\n    const proto = AnnotationEditorUIManager.prototype;\n    const arrowChecker = self => self.#container.contains(document.activeElement) && document.activeElement.tagName !== \"BUTTON\" && self.hasSomethingToControl();\n    const textInputChecker = (_self, {\n      target: el\n    }) => {\n      if (el instanceof HTMLInputElement) {\n        const {\n          type\n        } = el;\n        return type !== \"text\" && type !== \"number\";\n      }\n      return true;\n    };\n    const small = this.TRANSLATE_SMALL;\n    const big = this.TRANSLATE_BIG;\n    return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], proto.selectAll, {\n      checker: textInputChecker\n    }], [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, {\n      checker: textInputChecker\n    }], [[\"ctrl+y\", \"ctrl+shift+z\", \"mac+meta+shift+z\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], proto.redo, {\n      checker: textInputChecker\n    }], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\", \"mac+Delete\"], proto.delete, {\n      checker: textInputChecker\n    }], [[\"Enter\", \"mac+Enter\"], proto.addNewEditorFromKeyboard, {\n      checker: (self, {\n        target: el\n      }) => !(el instanceof HTMLButtonElement) && self.#container.contains(el) && !self.isEnterHandled\n    }], [[\" \", \"mac+ \"], proto.addNewEditorFromKeyboard, {\n      checker: (self, {\n        target: el\n      }) => !(el instanceof HTMLButtonElement) && self.#container.contains(document.activeElement)\n    }], [[\"Escape\", \"mac+Escape\"], proto.unselectAll], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto.translateSelectedEditors, {\n      args: [-small, 0],\n      checker: arrowChecker\n    }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto.translateSelectedEditors, {\n      args: [-big, 0],\n      checker: arrowChecker\n    }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto.translateSelectedEditors, {\n      args: [small, 0],\n      checker: arrowChecker\n    }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto.translateSelectedEditors, {\n      args: [big, 0],\n      checker: arrowChecker\n    }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto.translateSelectedEditors, {\n      args: [0, -small],\n      checker: arrowChecker\n    }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto.translateSelectedEditors, {\n      args: [0, -big],\n      checker: arrowChecker\n    }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto.translateSelectedEditors, {\n      args: [0, small],\n      checker: arrowChecker\n    }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto.translateSelectedEditors, {\n      args: [0, big],\n      checker: arrowChecker\n    }]]));\n  }\n  constructor(container, viewer, altTextManager, eventBus, pdfDocument, pageColors, highlightColors, enableHighlightFloatingButton, enableUpdatedAddImage, enableNewAltTextWhenAddingImage, mlManager, editorUndoBar, supportsPinchToZoom) {\n    const signal = this._signal = this.#abortController.signal;\n    this.#container = container;\n    this.#viewer = viewer;\n    this.#altTextManager = altTextManager;\n    this._eventBus = eventBus;\n    eventBus._on(\"editingaction\", this.onEditingAction.bind(this), {\n      signal\n    });\n    eventBus._on(\"pagechanging\", this.onPageChanging.bind(this), {\n      signal\n    });\n    eventBus._on(\"scalechanging\", this.onScaleChanging.bind(this), {\n      signal\n    });\n    eventBus._on(\"rotationchanging\", this.onRotationChanging.bind(this), {\n      signal\n    });\n    eventBus._on(\"setpreference\", this.onSetPreference.bind(this), {\n      signal\n    });\n    eventBus._on(\"switchannotationeditorparams\", evt => this.updateParams(evt.type, evt.value), {\n      signal\n    });\n    this.#addSelectionListener();\n    this.#addDragAndDropListeners();\n    this.#addKeyboardManager();\n    this.#annotationStorage = pdfDocument.annotationStorage;\n    this.#filterFactory = pdfDocument.filterFactory;\n    this.#pageColors = pageColors;\n    this.#highlightColors = highlightColors || null;\n    this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\n    this.#enableUpdatedAddImage = enableUpdatedAddImage;\n    this.#enableNewAltTextWhenAddingImage = enableNewAltTextWhenAddingImage;\n    this.#mlManager = mlManager || null;\n    this.viewParameters = {\n      realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n      rotation: 0\n    };\n    this.isShiftKeyDown = false;\n    this._editorUndoBar = editorUndoBar || null;\n    this._supportsPinchToZoom = supportsPinchToZoom !== false;\n  }\n  destroy() {\n    this.#updateModeCapability?.resolve();\n    this.#updateModeCapability = null;\n    this.#abortController?.abort();\n    this.#abortController = null;\n    this._signal = null;\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    this.#highlightToolbar?.hide();\n    this.#highlightToolbar = null;\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    this._editorUndoBar?.destroy();\n  }\n  combinedSignal(ac) {\n    return AbortSignal.any([this._signal, ac.signal]);\n  }\n  get mlManager() {\n    return this.#mlManager;\n  }\n  get useNewAltTextFlow() {\n    return this.#enableUpdatedAddImage;\n  }\n  get useNewAltTextWhenAddingImage() {\n    return this.#enableNewAltTextWhenAddingImage;\n  }\n  get hcmFilter() {\n    return shadow(this, \"hcmFilter\", this.#pageColors ? this.#filterFactory.addHCMFilter(this.#pageColors.foreground, this.#pageColors.background) : \"none\");\n  }\n  get direction() {\n    return shadow(this, \"direction\", getComputedStyle(this.#container).direction);\n  }\n  get highlightColors() {\n    return shadow(this, \"highlightColors\", this.#highlightColors ? new Map(this.#highlightColors.split(\",\").map(pair => pair.split(\"=\").map(x => x.trim()))) : null);\n  }\n  get highlightColorNames() {\n    return shadow(this, \"highlightColorNames\", this.highlightColors ? new Map(Array.from(this.highlightColors, e => e.reverse())) : null);\n  }\n  setCurrentDrawingSession(layer) {\n    if (layer) {\n      this.unselectAll();\n      this.disableUserSelect(true);\n    } else {\n      this.disableUserSelect(false);\n    }\n    this.#currentDrawingSession = layer;\n  }\n  setMainHighlightColorPicker(colorPicker) {\n    this.#mainHighlightColorPicker = colorPicker;\n  }\n  editAltText(editor, firstTime = false) {\n    this.#altTextManager?.editAltText(this, editor, firstTime);\n  }\n  switchToMode(mode, callback) {\n    this._eventBus.on(\"annotationeditormodechanged\", callback, {\n      once: true,\n      signal: this._signal\n    });\n    this._eventBus.dispatch(\"showannotationeditorui\", {\n      source: this,\n      mode\n    });\n  }\n  setPreference(name, value) {\n    this._eventBus.dispatch(\"setpreference\", {\n      source: this,\n      name,\n      value\n    });\n  }\n  onSetPreference({\n    name,\n    value\n  }) {\n    switch (name) {\n      case \"enableNewAltTextWhenAddingImage\":\n        this.#enableNewAltTextWhenAddingImage = value;\n        break;\n    }\n  }\n  onPageChanging({\n    pageNumber\n  }) {\n    this.#currentPageIndex = pageNumber - 1;\n  }\n  focusMainContainer() {\n    this.#container.focus();\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 (x >= layerX && x <= layerX + width && y >= layerY && y <= layerY + height) {\n        return layer;\n      }\n    }\n    return null;\n  }\n  disableUserSelect(value = false) {\n    this.#viewer.classList.toggle(\"noUserSelect\", value);\n  }\n  addShouldRescale(editor) {\n    this.#editorsToRescale.add(editor);\n  }\n  removeShouldRescale(editor) {\n    this.#editorsToRescale.delete(editor);\n  }\n  onScaleChanging({\n    scale\n  }) {\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    this.#currentDrawingSession?.onScaleChanging();\n  }\n  onRotationChanging({\n    pagesRotation\n  }) {\n    this.commitOrRemove();\n    this.viewParameters.rotation = pagesRotation;\n  }\n  #getAnchorElementForSelection({\n    anchorNode\n  }) {\n    return anchorNode.nodeType === Node.TEXT_NODE ? anchorNode.parentElement : anchorNode;\n  }\n  #getLayerForTextLayer(textLayer) {\n    const {\n      currentLayer\n    } = this;\n    if (currentLayer.hasTextLayer(textLayer)) {\n      return currentLayer;\n    }\n    for (const layer of this.#allLayers.values()) {\n      if (layer.hasTextLayer(textLayer)) {\n        return layer;\n      }\n    }\n    return null;\n  }\n  highlightSelection(methodOfCreation = \"\") {\n    const selection = document.getSelection();\n    if (!selection || selection.isCollapsed) {\n      return;\n    }\n    const {\n      anchorNode,\n      anchorOffset,\n      focusNode,\n      focusOffset\n    } = selection;\n    const text = selection.toString();\n    const anchorElement = this.#getAnchorElementForSelection(selection);\n    const textLayer = anchorElement.closest(\".textLayer\");\n    const boxes = this.getSelectionBoxes(textLayer);\n    if (!boxes) {\n      return;\n    }\n    selection.empty();\n    const layer = this.#getLayerForTextLayer(textLayer);\n    const isNoneMode = this.#mode === AnnotationEditorType.NONE;\n    const callback = () => {\n      layer?.createAndAddNewEditor({\n        x: 0,\n        y: 0\n      }, false, {\n        methodOfCreation,\n        boxes,\n        anchorNode,\n        anchorOffset,\n        focusNode,\n        focusOffset,\n        text\n      });\n      if (isNoneMode) {\n        this.showAllEditors(\"highlight\", true, true);\n      }\n    };\n    if (isNoneMode) {\n      this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\n      return;\n    }\n    callback();\n  }\n  #displayHighlightToolbar() {\n    const selection = document.getSelection();\n    if (!selection || selection.isCollapsed) {\n      return;\n    }\n    const anchorElement = this.#getAnchorElementForSelection(selection);\n    const textLayer = anchorElement.closest(\".textLayer\");\n    const boxes = this.getSelectionBoxes(textLayer);\n    if (!boxes) {\n      return;\n    }\n    this.#highlightToolbar ||= new HighlightToolbar(this);\n    this.#highlightToolbar.show(textLayer, boxes, this.direction === \"ltr\");\n  }\n  addToAnnotationStorage(editor) {\n    if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) {\n      this.#annotationStorage.setValue(editor.id, editor);\n    }\n  }\n  #selectionChange() {\n    const selection = document.getSelection();\n    if (!selection || selection.isCollapsed) {\n      if (this.#selectedTextNode) {\n        this.#highlightToolbar?.hide();\n        this.#selectedTextNode = null;\n        this.#dispatchUpdateStates({\n          hasSelectedText: false\n        });\n      }\n      return;\n    }\n    const {\n      anchorNode\n    } = selection;\n    if (anchorNode === this.#selectedTextNode) {\n      return;\n    }\n    const anchorElement = this.#getAnchorElementForSelection(selection);\n    const textLayer = anchorElement.closest(\".textLayer\");\n    if (!textLayer) {\n      if (this.#selectedTextNode) {\n        this.#highlightToolbar?.hide();\n        this.#selectedTextNode = null;\n        this.#dispatchUpdateStates({\n          hasSelectedText: false\n        });\n      }\n      return;\n    }\n    this.#highlightToolbar?.hide();\n    this.#selectedTextNode = anchorNode;\n    this.#dispatchUpdateStates({\n      hasSelectedText: true\n    });\n    if (this.#mode !== AnnotationEditorType.HIGHLIGHT && this.#mode !== AnnotationEditorType.NONE) {\n      return;\n    }\n    if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n      this.showAllEditors(\"highlight\", true, true);\n    }\n    this.#highlightWhenShiftUp = this.isShiftKeyDown;\n    if (!this.isShiftKeyDown) {\n      const activeLayer = this.#mode === AnnotationEditorType.HIGHLIGHT ? this.#getLayerForTextLayer(textLayer) : null;\n      activeLayer?.toggleDrawing();\n      const ac = new AbortController();\n      const signal = this.combinedSignal(ac);\n      const pointerup = e => {\n        if (e.type === \"pointerup\" && e.button !== 0) {\n          return;\n        }\n        ac.abort();\n        activeLayer?.toggleDrawing(true);\n        if (e.type === \"pointerup\") {\n          this.#onSelectEnd(\"main_toolbar\");\n        }\n      };\n      window.addEventListener(\"pointerup\", pointerup, {\n        signal\n      });\n      window.addEventListener(\"blur\", pointerup, {\n        signal\n      });\n    }\n  }\n  #onSelectEnd(methodOfCreation = \"\") {\n    if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n      this.highlightSelection(methodOfCreation);\n    } else if (this.#enableHighlightFloatingButton) {\n      this.#displayHighlightToolbar();\n    }\n  }\n  #addSelectionListener() {\n    document.addEventListener(\"selectionchange\", this.#selectionChange.bind(this), {\n      signal: this._signal\n    });\n  }\n  #addFocusManager() {\n    if (this.#focusManagerAC) {\n      return;\n    }\n    this.#focusManagerAC = new AbortController();\n    const signal = this.combinedSignal(this.#focusManagerAC);\n    window.addEventListener(\"focus\", this.focus.bind(this), {\n      signal\n    });\n    window.addEventListener(\"blur\", this.blur.bind(this), {\n      signal\n    });\n  }\n  #removeFocusManager() {\n    this.#focusManagerAC?.abort();\n    this.#focusManagerAC = null;\n  }\n  blur() {\n    this.isShiftKeyDown = false;\n    if (this.#highlightWhenShiftUp) {\n      this.#highlightWhenShiftUp = false;\n      this.#onSelectEnd(\"main_toolbar\");\n    }\n    if (!this.hasSelection) {\n      return;\n    }\n    const {\n      activeElement\n    } = 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  focus() {\n    if (!this.#lastActiveElement) {\n      return;\n    }\n    const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n    this.#lastActiveElement = null;\n    lastActiveElement.addEventListener(\"focusin\", () => {\n      lastEditor._focusEventsAllowed = true;\n    }, {\n      once: true,\n      signal: this._signal\n    });\n    lastActiveElement.focus();\n  }\n  #addKeyboardManager() {\n    if (this.#keyboardManagerAC) {\n      return;\n    }\n    this.#keyboardManagerAC = new AbortController();\n    const signal = this.combinedSignal(this.#keyboardManagerAC);\n    window.addEventListener(\"keydown\", this.keydown.bind(this), {\n      signal\n    });\n    window.addEventListener(\"keyup\", this.keyup.bind(this), {\n      signal\n    });\n  }\n  #removeKeyboardManager() {\n    this.#keyboardManagerAC?.abort();\n    this.#keyboardManagerAC = null;\n  }\n  #addCopyPasteListeners() {\n    if (this.#copyPasteAC) {\n      return;\n    }\n    this.#copyPasteAC = new AbortController();\n    const signal = this.combinedSignal(this.#copyPasteAC);\n    document.addEventListener(\"copy\", this.copy.bind(this), {\n      signal\n    });\n    document.addEventListener(\"cut\", this.cut.bind(this), {\n      signal\n    });\n    document.addEventListener(\"paste\", this.paste.bind(this), {\n      signal\n    });\n  }\n  #removeCopyPasteListeners() {\n    this.#copyPasteAC?.abort();\n    this.#copyPasteAC = null;\n  }\n  #addDragAndDropListeners() {\n    const signal = this._signal;\n    document.addEventListener(\"dragover\", this.dragOver.bind(this), {\n      signal\n    });\n    document.addEventListener(\"drop\", this.drop.bind(this), {\n      signal\n    });\n  }\n  addEditListeners() {\n    this.#addKeyboardManager();\n    this.#addCopyPasteListeners();\n  }\n  removeEditListeners() {\n    this.#removeKeyboardManager();\n    this.#removeCopyPasteListeners();\n  }\n  dragOver(event) {\n    for (const {\n      type\n    } of event.dataTransfer.items) {\n      for (const editorType of this.#editorTypes) {\n        if (editorType.isHandlingMimeForPasting(type)) {\n          event.dataTransfer.dropEffect = \"copy\";\n          event.preventDefault();\n          return;\n        }\n      }\n    }\n  }\n  drop(event) {\n    for (const item of event.dataTransfer.items) {\n      for (const editorType of this.#editorTypes) {\n        if (editorType.isHandlingMimeForPasting(item.type)) {\n          editorType.paste(item, this.currentLayer);\n          event.preventDefault();\n          return;\n        }\n      }\n    }\n  }\n  copy(event) {\n    event.preventDefault();\n    this.#activeEditor?.commitOrRemove();\n    if (!this.hasSelection) {\n      return;\n    }\n    const editors = [];\n    for (const editor of this.#selectedEditors) {\n      const serialized = editor.serialize(true);\n      if (serialized) {\n        editors.push(serialized);\n      }\n    }\n    if (editors.length === 0) {\n      return;\n    }\n    event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n  }\n  cut(event) {\n    this.copy(event);\n    this.delete();\n  }\n  async paste(event) {\n    event.preventDefault();\n    const {\n      clipboardData\n    } = 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    let data = clipboardData.getData(\"application/pdfjs\");\n    if (!data) {\n      return;\n    }\n    try {\n      data = JSON.parse(data);\n    } catch (ex) {\n      warn(`paste: \"${ex.message}\".`);\n      return;\n    }\n    if (!Array.isArray(data)) {\n      return;\n    }\n    this.unselectAll();\n    const layer = this.currentLayer;\n    try {\n      const newEditors = [];\n      for (const editor of data) {\n        const deserializedEditor = await layer.deserialize(editor);\n        if (!deserializedEditor) {\n          return;\n        }\n        newEditors.push(deserializedEditor);\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({\n        cmd,\n        undo,\n        mustExec: true\n      });\n    } catch (ex) {\n      warn(`paste: \"${ex.message}\".`);\n    }\n  }\n  keydown(event) {\n    if (!this.isShiftKeyDown && event.key === \"Shift\") {\n      this.isShiftKeyDown = true;\n    }\n    if (this.#mode !== AnnotationEditorType.NONE && !this.isEditorHandlingKeyboard) {\n      AnnotationEditorUIManager._keyboardManager.exec(this, event);\n    }\n  }\n  keyup(event) {\n    if (this.isShiftKeyDown && event.key === \"Shift\") {\n      this.isShiftKeyDown = false;\n      if (this.#highlightWhenShiftUp) {\n        this.#highlightWhenShiftUp = false;\n        this.#onSelectEnd(\"main_toolbar\");\n      }\n    }\n  }\n  onEditingAction({\n    name\n  }) {\n    switch (name) {\n      case \"undo\":\n      case \"redo\":\n      case \"delete\":\n      case \"selectAll\":\n        this[name]();\n        break;\n      case \"highlightSelection\":\n        this.highlightSelection(\"context_menu\");\n        break;\n    }\n  }\n  #dispatchUpdateStates(details) {\n    const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);\n    if (hasChanged) {\n      this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n        source: this,\n        details: Object.assign(this.#previousStates, details)\n      });\n      if (this.#mode === AnnotationEditorType.HIGHLIGHT && details.hasSelectedEditor === false) {\n        this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_FREE, true]]);\n      }\n    }\n  }\n  #dispatchUpdateUI(details) {\n    this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n      source: this,\n      details\n    });\n  }\n  setEditingState(isEditing) {\n    if (isEditing) {\n      this.#addFocusManager();\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.#removeCopyPasteListeners();\n      this.#dispatchUpdateStates({\n        isEditing: false\n      });\n      this.disableUserSelect(false);\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  getId() {\n    return this.#idManager.id;\n  }\n  get currentLayer() {\n    return this.#allLayers.get(this.#currentPageIndex);\n  }\n  getLayer(pageIndex) {\n    return this.#allLayers.get(pageIndex);\n  }\n  get currentPageIndex() {\n    return this.#currentPageIndex;\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  removeLayer(layer) {\n    this.#allLayers.delete(layer.pageIndex);\n  }\n  async updateMode(mode, editId = null, isFromKeyboard = false) {\n    if (this.#mode === mode) {\n      return;\n    }\n    if (this.#updateModeCapability) {\n      await this.#updateModeCapability.promise;\n      if (!this.#updateModeCapability) {\n        return;\n      }\n    }\n    this.#updateModeCapability = Promise.withResolvers();\n    this.#mode = mode;\n    if (mode === AnnotationEditorType.NONE) {\n      this.setEditingState(false);\n      this.#disableAll();\n      this._editorUndoBar?.hide();\n      this.#updateModeCapability.resolve();\n      return;\n    }\n    this.setEditingState(true);\n    await this.#enableAll();\n    this.unselectAll();\n    for (const layer of this.#allLayers.values()) {\n      layer.updateMode(mode);\n    }\n    if (!editId) {\n      if (isFromKeyboard) {\n        this.addNewEditorFromKeyboard();\n      }\n      this.#updateModeCapability.resolve();\n      return;\n    }\n    for (const editor of this.#allEditors.values()) {\n      if (editor.annotationElementId === editId) {\n        this.setSelected(editor);\n        editor.enterInEditMode();\n      } else {\n        editor.unselect();\n      }\n    }\n    this.#updateModeCapability.resolve();\n  }\n  addNewEditorFromKeyboard() {\n    if (this.currentLayer.canCreateNewEmptyEditor()) {\n      this.currentLayer.addNewEditor();\n    }\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  updateParams(type, value) {\n    if (!this.#editorTypes) {\n      return;\n    }\n    switch (type) {\n      case AnnotationEditorParamsType.CREATE:\n        this.currentLayer.addNewEditor();\n        return;\n      case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n        this.#mainHighlightColorPicker?.updateColor(value);\n        break;\n      case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\n        this._eventBus.dispatch(\"reporttelemetry\", {\n          source: this,\n          details: {\n            type: \"editing\",\n            data: {\n              type: \"highlight\",\n              action: \"toggle_visibility\"\n            }\n          }\n        });\n        (this.#showAllStates ||= new Map()).set(type, value);\n        this.showAllEditors(\"highlight\", value);\n        break;\n    }\n    for (const editor of this.#selectedEditors) {\n      editor.updateParams(type, value);\n    }\n    for (const editorType of this.#editorTypes) {\n      editorType.updateDefaultParams(type, value);\n    }\n  }\n  showAllEditors(type, visible, updateButton = false) {\n    for (const editor of this.#allEditors.values()) {\n      if (editor.editorType === type) {\n        editor.show(visible);\n      }\n    }\n    const state = this.#showAllStates?.get(AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL) ?? true;\n    if (state !== visible) {\n      this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible]]);\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  async #enableAll() {\n    if (!this.#isEnabled) {\n      this.#isEnabled = true;\n      const promises = [];\n      for (const layer of this.#allLayers.values()) {\n        promises.push(layer.enable());\n      }\n      await Promise.all(promises);\n      for (const editor of this.#allEditors.values()) {\n        editor.enable();\n      }\n    }\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      for (const editor of this.#allEditors.values()) {\n        editor.disable();\n      }\n    }\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  getEditor(id) {\n    return this.#allEditors.get(id);\n  }\n  addEditor(editor) {\n    this.#allEditors.set(editor.id, 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        this.focusMainContainer();\n        this.#focusMainContainerTimeoutId = null;\n      }, 0);\n    }\n    this.#allEditors.delete(editor.id);\n    this.unselect(editor);\n    if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) {\n      this.#annotationStorage?.remove(editor.id);\n    }\n  }\n  addDeletedAnnotationElement(editor) {\n    this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n    this.addChangedExistingAnnotation(editor);\n    editor.deleted = true;\n  }\n  isDeletedAnnotationElement(annotationElementId) {\n    return this.#deletedAnnotationsElementIds.has(annotationElementId);\n  }\n  removeDeletedAnnotationElement(editor) {\n    this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n    this.removeChangedExistingAnnotation(editor);\n    editor.deleted = false;\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      this.addToAnnotationStorage(editor);\n    }\n  }\n  setActiveEditor(editor) {\n    if (this.#activeEditor === editor) {\n      return;\n    }\n    this.#activeEditor = editor;\n    if (editor) {\n      this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    }\n  }\n  get #lastSelectedEditor() {\n    let ed = null;\n    for (ed of this.#selectedEditors) {}\n    return ed;\n  }\n  updateUI(editor) {\n    if (this.#lastSelectedEditor === editor) {\n      this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    }\n  }\n  updateUIForDefaultProperties(editorType) {\n    this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\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  setSelected(editor) {\n    this.#currentDrawingSession?.commitOrRemove();\n    for (const ed of this.#selectedEditors) {\n      if (ed !== editor) {\n        ed.unselect();\n      }\n    }\n    this.#selectedEditors.clear();\n    this.#selectedEditors.add(editor);\n    editor.select();\n    this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: true\n    });\n  }\n  isSelected(editor) {\n    return this.#selectedEditors.has(editor);\n  }\n  get firstSelectedEditor() {\n    return this.#selectedEditors.values().next().value;\n  }\n  unselect(editor) {\n    editor.unselect();\n    this.#selectedEditors.delete(editor);\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: this.hasSelection\n    });\n  }\n  get hasSelection() {\n    return this.#selectedEditors.size !== 0;\n  }\n  get isEnterHandled() {\n    return this.#selectedEditors.size === 1 && this.firstSelectedEditor.isEnterHandled;\n  }\n  undo() {\n    this.#commandManager.undo();\n    this.#dispatchUpdateStates({\n      hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n      hasSomethingToRedo: true,\n      isEmpty: this.#isEmpty()\n    });\n    this._editorUndoBar?.hide();\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  addCommands(params) {\n    this.#commandManager.add(params);\n    this.#dispatchUpdateStates({\n      hasSomethingToUndo: true,\n      hasSomethingToRedo: false,\n      isEmpty: this.#isEmpty()\n    });\n  }\n  cleanUndoStack(type) {\n    this.#commandManager.cleanType(type);\n  }\n  #isEmpty() {\n    if (this.#allEditors.size === 0) {\n      return true;\n    }\n    if (this.#allEditors.size === 1) {\n      for (const editor of this.#allEditors.values()) {\n        return editor.isEmpty();\n      }\n    }\n    return false;\n  }\n  delete() {\n    this.commitOrRemove();\n    const drawingEditor = this.currentLayer?.endDrawingSession(true);\n    if (!this.hasSelection && !drawingEditor) {\n      return;\n    }\n    const editors = drawingEditor ? [drawingEditor] : [...this.#selectedEditors];\n    const cmd = () => {\n      this._editorUndoBar?.show(undo, editors.length === 1 ? editors[0].editorType : editors.length);\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    this.addCommands({\n      cmd,\n      undo,\n      mustExec: true\n    });\n  }\n  commitOrRemove() {\n    this.#activeEditor?.commitOrRemove();\n  }\n  hasSomethingToControl() {\n    return this.#activeEditor || this.hasSelection;\n  }\n  #selectEditors(editors) {\n    for (const editor of this.#selectedEditors) {\n      editor.unselect();\n    }\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({\n      hasSelectedEditor: this.hasSelection\n    });\n  }\n  selectAll() {\n    for (const editor of this.#selectedEditors) {\n      editor.commit();\n    }\n    this.#selectEditors(this.#allEditors.values());\n  }\n  unselectAll() {\n    if (this.#activeEditor) {\n      this.#activeEditor.commitOrRemove();\n      if (this.#mode !== AnnotationEditorType.NONE) {\n        return;\n      }\n    }\n    if (this.#currentDrawingSession?.commitOrRemove()) {\n      return;\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  translateSelectedEditors(x, y, noCommit = false) {\n    if (!noCommit) {\n      this.commitOrRemove();\n    }\n    if (!this.hasSelection) {\n      return;\n    }\n    this.#translation[0] += x;\n    this.#translation[1] += y;\n    const [totalX, totalY] = this.#translation;\n    const editors = [...this.#selectedEditors];\n    const TIME_TO_WAIT = 1000;\n    if (this.#translationTimeoutId) {\n      clearTimeout(this.#translationTimeoutId);\n    }\n    this.#translationTimeoutId = setTimeout(() => {\n      this.#translationTimeoutId = null;\n      this.#translation[0] = this.#translation[1] = 0;\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    for (const editor of editors) {\n      editor.translateInPage(x, y);\n    }\n  }\n  setUpDragSession() {\n    if (!this.hasSelection) {\n      return;\n    }\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  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    for (const [{\n      x,\n      y,\n      pageIndex\n    }, value] of map) {\n      value.newX = x;\n      value.newY = y;\n      value.newPageIndex = pageIndex;\n      mustBeAddedInUndoStack ||= x !== value.savedX || y !== value.savedY || pageIndex !== value.savedPageIndex;\n    }\n    if (!mustBeAddedInUndoStack) {\n      return false;\n    }\n    const move = (editor, x, y, pageIndex) => {\n      if (this.#allEditors.has(editor.id)) {\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    this.addCommands({\n      cmd: () => {\n        for (const [editor, {\n          newX,\n          newY,\n          newPageIndex\n        }] of map) {\n          move(editor, newX, newY, newPageIndex);\n        }\n      },\n      undo: () => {\n        for (const [editor, {\n          savedX,\n          savedY,\n          savedPageIndex\n        }] of map) {\n          move(editor, savedX, savedY, savedPageIndex);\n        }\n      },\n      mustExec: true\n    });\n    return true;\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  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  get isEditorHandlingKeyboard() {\n    return this.getActive()?.shouldGetKeyboardEvents() || this.#selectedEditors.size === 1 && this.firstSelectedEditor.shouldGetKeyboardEvents();\n  }\n  isActive(editor) {\n    return this.#activeEditor === editor;\n  }\n  getActive() {\n    return this.#activeEditor;\n  }\n  getMode() {\n    return this.#mode;\n  }\n  get imageManager() {\n    return shadow(this, \"imageManager\", new ImageManager());\n  }\n  getSelectionBoxes(textLayer) {\n    if (!textLayer) {\n      return null;\n    }\n    const selection = document.getSelection();\n    for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n      if (!textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)) {\n        return null;\n      }\n    }\n    const {\n      x: layerX,\n      y: layerY,\n      width: parentWidth,\n      height: parentHeight\n    } = textLayer.getBoundingClientRect();\n    let rotator;\n    switch (textLayer.getAttribute(\"data-main-rotation\")) {\n      case \"90\":\n        rotator = (x, y, w, h) => ({\n          x: (y - layerY) / parentHeight,\n          y: 1 - (x + w - layerX) / parentWidth,\n          width: h / parentHeight,\n          height: w / parentWidth\n        });\n        break;\n      case \"180\":\n        rotator = (x, y, w, h) => ({\n          x: 1 - (x + w - layerX) / parentWidth,\n          y: 1 - (y + h - layerY) / parentHeight,\n          width: w / parentWidth,\n          height: h / parentHeight\n        });\n        break;\n      case \"270\":\n        rotator = (x, y, w, h) => ({\n          x: 1 - (y + h - layerY) / parentHeight,\n          y: (x - layerX) / parentWidth,\n          width: h / parentHeight,\n          height: w / parentWidth\n        });\n        break;\n      default:\n        rotator = (x, y, w, h) => ({\n          x: (x - layerX) / parentWidth,\n          y: (y - layerY) / parentHeight,\n          width: w / parentWidth,\n          height: h / parentHeight\n        });\n        break;\n    }\n    const boxes = [];\n    for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n      const range = selection.getRangeAt(i);\n      if (range.collapsed) {\n        continue;\n      }\n      for (const {\n        x,\n        y,\n        width,\n        height\n      } of range.getClientRects()) {\n        if (width === 0 || height === 0) {\n          continue;\n        }\n        boxes.push(rotator(x, y, width, height));\n      }\n    }\n    return boxes.length === 0 ? null : boxes;\n  }\n  addChangedExistingAnnotation({\n    annotationElementId,\n    id\n  }) {\n    (this.#changedExistingAnnotations ||= new Map()).set(annotationElementId, id);\n  }\n  removeChangedExistingAnnotation({\n    annotationElementId\n  }) {\n    this.#changedExistingAnnotations?.delete(annotationElementId);\n  }\n  renderAnnotationElement(annotation) {\n    const editorId = this.#changedExistingAnnotations?.get(annotation.data.id);\n    if (!editorId) {\n      return;\n    }\n    const editor = this.#annotationStorage.getRawValue(editorId);\n    if (!editor) {\n      return;\n    }\n    if (this.#mode === AnnotationEditorType.NONE && !editor.hasBeenModified) {\n      return;\n    }\n    editor.renderAnnotationElement(annotation);\n  }\n}\n\n;// ./src/display/editor/alt_text.js\n\nclass AltText {\n  #altText = null;\n  #altTextDecorative = false;\n  #altTextButton = null;\n  #altTextButtonLabel = null;\n  #altTextTooltip = null;\n  #altTextTooltipTimeout = null;\n  #altTextWasFromKeyBoard = false;\n  #badge = null;\n  #editor = null;\n  #guessedText = null;\n  #textWithDisclaimer = null;\n  #useNewAltTextFlow = false;\n  static #l10nNewButton = null;\n  static _l10n = null;\n  constructor(editor) {\n    this.#editor = editor;\n    this.#useNewAltTextFlow = editor._uiManager.useNewAltTextFlow;\n    AltText.#l10nNewButton ||= Object.freeze({\n      added: \"pdfjs-editor-new-alt-text-added-button\",\n      \"added-label\": \"pdfjs-editor-new-alt-text-added-button-label\",\n      missing: \"pdfjs-editor-new-alt-text-missing-button\",\n      \"missing-label\": \"pdfjs-editor-new-alt-text-missing-button-label\",\n      review: \"pdfjs-editor-new-alt-text-to-review-button\",\n      \"review-label\": \"pdfjs-editor-new-alt-text-to-review-button-label\"\n    });\n  }\n  static initialize(l10n) {\n    AltText._l10n ??= l10n;\n  }\n  async render() {\n    const altText = this.#altTextButton = document.createElement(\"button\");\n    altText.className = \"altText\";\n    altText.tabIndex = \"0\";\n    const label = this.#altTextButtonLabel = document.createElement(\"span\");\n    altText.append(label);\n    if (this.#useNewAltTextFlow) {\n      altText.classList.add(\"new\");\n      altText.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton.missing);\n      label.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[\"missing-label\"]);\n    } else {\n      altText.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button\");\n      label.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button-label\");\n    }\n    const signal = this.#editor._uiManager._signal;\n    altText.addEventListener(\"contextmenu\", noContextMenu, {\n      signal\n    });\n    altText.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n      signal\n    });\n    const onClick = event => {\n      event.preventDefault();\n      this.#editor._uiManager.editAltText(this.#editor);\n      if (this.#useNewAltTextFlow) {\n        this.#editor._reportTelemetry({\n          action: \"pdfjs.image.alt_text.image_status_label_clicked\",\n          data: {\n            label: this.#label\n          }\n        });\n      }\n    };\n    altText.addEventListener(\"click\", onClick, {\n      capture: true,\n      signal\n    });\n    altText.addEventListener(\"keydown\", event => {\n      if (event.target === altText && event.key === \"Enter\") {\n        this.#altTextWasFromKeyBoard = true;\n        onClick(event);\n      }\n    }, {\n      signal\n    });\n    await this.#setState();\n    return altText;\n  }\n  get #label() {\n    return this.#altText && \"added\" || this.#altText === null && this.guessedText && \"review\" || \"missing\";\n  }\n  finish() {\n    if (!this.#altTextButton) {\n      return;\n    }\n    this.#altTextButton.focus({\n      focusVisible: this.#altTextWasFromKeyBoard\n    });\n    this.#altTextWasFromKeyBoard = false;\n  }\n  isEmpty() {\n    if (this.#useNewAltTextFlow) {\n      return this.#altText === null;\n    }\n    return !this.#altText && !this.#altTextDecorative;\n  }\n  hasData() {\n    if (this.#useNewAltTextFlow) {\n      return this.#altText !== null || !!this.#guessedText;\n    }\n    return this.isEmpty();\n  }\n  get guessedText() {\n    return this.#guessedText;\n  }\n  async setGuessedText(guessedText) {\n    if (this.#altText !== null) {\n      return;\n    }\n    this.#guessedText = guessedText;\n    this.#textWithDisclaimer = await AltText._l10n.get(\"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\", {\n      generatedAltText: guessedText\n    });\n    this.#setState();\n  }\n  toggleAltTextBadge(visibility = false) {\n    if (!this.#useNewAltTextFlow || this.#altText) {\n      this.#badge?.remove();\n      this.#badge = null;\n      return;\n    }\n    if (!this.#badge) {\n      const badge = this.#badge = document.createElement(\"div\");\n      badge.className = \"noAltTextBadge\";\n      this.#editor.div.append(badge);\n    }\n    this.#badge.classList.toggle(\"hidden\", !visibility);\n  }\n  serialize(isForCopying) {\n    let altText = this.#altText;\n    if (!isForCopying && this.#guessedText === altText) {\n      altText = this.#textWithDisclaimer;\n    }\n    return {\n      altText,\n      decorative: this.#altTextDecorative,\n      guessedText: this.#guessedText,\n      textWithDisclaimer: this.#textWithDisclaimer\n    };\n  }\n  get data() {\n    return {\n      altText: this.#altText,\n      decorative: this.#altTextDecorative\n    };\n  }\n  set data({\n    altText,\n    decorative,\n    guessedText,\n    textWithDisclaimer,\n    cancel = false\n  }) {\n    if (guessedText) {\n      this.#guessedText = guessedText;\n      this.#textWithDisclaimer = textWithDisclaimer;\n    }\n    if (this.#altText === altText && this.#altTextDecorative === decorative) {\n      return;\n    }\n    if (!cancel) {\n      this.#altText = altText;\n      this.#altTextDecorative = decorative;\n    }\n    this.#setState();\n  }\n  toggle(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  shown() {\n    this.#editor._reportTelemetry({\n      action: \"pdfjs.image.alt_text.image_status_label_displayed\",\n      data: {\n        label: this.#label\n      }\n    });\n  }\n  destroy() {\n    this.#altTextButton?.remove();\n    this.#altTextButton = null;\n    this.#altTextButtonLabel = null;\n    this.#altTextTooltip = null;\n    this.#badge?.remove();\n    this.#badge = null;\n  }\n  async #setState() {\n    const button = this.#altTextButton;\n    if (!button) {\n      return;\n    }\n    if (this.#useNewAltTextFlow) {\n      button.classList.toggle(\"done\", !!this.#altText);\n      button.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[this.#label]);\n      this.#altTextButtonLabel?.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[`${this.#label}-label`]);\n      if (!this.#altText) {\n        this.#altTextTooltip?.remove();\n        return;\n      }\n    } else {\n      if (!this.#altText && !this.#altTextDecorative) {\n        button.classList.remove(\"done\");\n        this.#altTextTooltip?.remove();\n        return;\n      }\n      button.classList.add(\"done\");\n      button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-edit-button\");\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      tooltip.id = `alt-text-tooltip-${this.#editor.id}`;\n      const DELAY_TO_SHOW_TOOLTIP = 100;\n      const signal = this.#editor._uiManager._signal;\n      signal.addEventListener(\"abort\", () => {\n        clearTimeout(this.#altTextTooltipTimeout);\n        this.#altTextTooltipTimeout = null;\n      }, {\n        once: true\n      });\n      button.addEventListener(\"mouseenter\", () => {\n        this.#altTextTooltipTimeout = setTimeout(() => {\n          this.#altTextTooltipTimeout = null;\n          this.#altTextTooltip.classList.add(\"show\");\n          this.#editor._reportTelemetry({\n            action: \"alt_text_tooltip\"\n          });\n        }, DELAY_TO_SHOW_TOOLTIP);\n      }, {\n        signal\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        signal\n      });\n    }\n    if (this.#altTextDecorative) {\n      tooltip.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-decorative-tooltip\");\n    } else {\n      tooltip.removeAttribute(\"data-l10n-id\");\n      tooltip.textContent = this.#altText;\n    }\n    if (!tooltip.parentNode) {\n      button.append(tooltip);\n    }\n    const element = this.#editor.getImageForAltText();\n    element?.setAttribute(\"aria-describedby\", tooltip.id);\n  }\n}\n\n;// ./src/display/touch_manager.js\n\n\nclass TouchManager {\n  #container;\n  #isPinching = false;\n  #isPinchingStopped = null;\n  #isPinchingDisabled;\n  #onPinchStart;\n  #onPinching;\n  #onPinchEnd;\n  #signal;\n  #touchInfo = null;\n  #touchManagerAC;\n  #touchMoveAC = null;\n  constructor({\n    container,\n    isPinchingDisabled = null,\n    isPinchingStopped = null,\n    onPinchStart = null,\n    onPinching = null,\n    onPinchEnd = null,\n    signal\n  }) {\n    this.#container = container;\n    this.#isPinchingStopped = isPinchingStopped;\n    this.#isPinchingDisabled = isPinchingDisabled;\n    this.#onPinchStart = onPinchStart;\n    this.#onPinching = onPinching;\n    this.#onPinchEnd = onPinchEnd;\n    this.#touchManagerAC = new AbortController();\n    this.#signal = AbortSignal.any([signal, this.#touchManagerAC.signal]);\n    container.addEventListener(\"touchstart\", this.#onTouchStart.bind(this), {\n      passive: false,\n      signal: this.#signal\n    });\n  }\n  get MIN_TOUCH_DISTANCE_TO_PINCH() {\n    return shadow(this, \"MIN_TOUCH_DISTANCE_TO_PINCH\", 35 / (window.devicePixelRatio || 1));\n  }\n  #onTouchStart(evt) {\n    if (this.#isPinchingDisabled?.() || evt.touches.length < 2) {\n      return;\n    }\n    if (!this.#touchMoveAC) {\n      this.#touchMoveAC = new AbortController();\n      const signal = AbortSignal.any([this.#signal, this.#touchMoveAC.signal]);\n      const container = this.#container;\n      const opt = {\n        signal,\n        passive: false\n      };\n      container.addEventListener(\"touchmove\", this.#onTouchMove.bind(this), opt);\n      container.addEventListener(\"touchend\", this.#onTouchEnd.bind(this), opt);\n      container.addEventListener(\"touchcancel\", this.#onTouchEnd.bind(this), opt);\n      this.#onPinchStart?.();\n    }\n    stopEvent(evt);\n    if (evt.touches.length !== 2 || this.#isPinchingStopped?.()) {\n      this.#touchInfo = null;\n      return;\n    }\n    let [touch0, touch1] = evt.touches;\n    if (touch0.identifier > touch1.identifier) {\n      [touch0, touch1] = [touch1, touch0];\n    }\n    this.#touchInfo = {\n      touch0X: touch0.screenX,\n      touch0Y: touch0.screenY,\n      touch1X: touch1.screenX,\n      touch1Y: touch1.screenY\n    };\n  }\n  #onTouchMove(evt) {\n    if (!this.#touchInfo || evt.touches.length !== 2) {\n      return;\n    }\n    let [touch0, touch1] = evt.touches;\n    if (touch0.identifier > touch1.identifier) {\n      [touch0, touch1] = [touch1, touch0];\n    }\n    const {\n      screenX: screen0X,\n      screenY: screen0Y\n    } = touch0;\n    const {\n      screenX: screen1X,\n      screenY: screen1Y\n    } = touch1;\n    const touchInfo = this.#touchInfo;\n    const {\n      touch0X: pTouch0X,\n      touch0Y: pTouch0Y,\n      touch1X: pTouch1X,\n      touch1Y: pTouch1Y\n    } = touchInfo;\n    const prevGapX = pTouch1X - pTouch0X;\n    const prevGapY = pTouch1Y - pTouch0Y;\n    const currGapX = screen1X - screen0X;\n    const currGapY = screen1Y - screen0Y;\n    const distance = Math.hypot(currGapX, currGapY) || 1;\n    const pDistance = Math.hypot(prevGapX, prevGapY) || 1;\n    if (!this.#isPinching && Math.abs(pDistance - distance) <= TouchManager.MIN_TOUCH_DISTANCE_TO_PINCH) {\n      return;\n    }\n    touchInfo.touch0X = screen0X;\n    touchInfo.touch0Y = screen0Y;\n    touchInfo.touch1X = screen1X;\n    touchInfo.touch1Y = screen1Y;\n    evt.preventDefault();\n    if (!this.#isPinching) {\n      this.#isPinching = true;\n      return;\n    }\n    const origin = [(screen0X + screen1X) / 2, (screen0Y + screen1Y) / 2];\n    this.#onPinching?.(origin, pDistance, distance);\n  }\n  #onTouchEnd(evt) {\n    this.#touchMoveAC.abort();\n    this.#touchMoveAC = null;\n    this.#onPinchEnd?.();\n    if (!this.#touchInfo) {\n      return;\n    }\n    evt.preventDefault();\n    this.#touchInfo = null;\n    this.#isPinching = false;\n  }\n  destroy() {\n    this.#touchManagerAC?.abort();\n    this.#touchManagerAC = null;\n  }\n}\n\n;// ./src/display/editor/editor.js\n\n\n\n\n\n\nclass AnnotationEditor {\n  #accessibilityData = null;\n  #allResizerDivs = null;\n  #altText = null;\n  #disabled = false;\n  #dragPointerId = null;\n  #dragPointerType = \"\";\n  #keepAspectRatio = false;\n  #resizersDiv = null;\n  #lastPointerCoords = null;\n  #savedDimensions = null;\n  #focusAC = null;\n  #focusedResizerName = \"\";\n  #hasBeenClicked = false;\n  #initialRect = null;\n  #isEditing = false;\n  #isInEditMode = false;\n  #isResizerEnabledForKeyboard = false;\n  #moveInDOMTimeout = null;\n  #prevDragX = 0;\n  #prevDragY = 0;\n  #telemetryTimeouts = null;\n  #touchManager = null;\n  _editToolbar = null;\n  _initialOptions = Object.create(null);\n  _initialData = null;\n  _isVisible = true;\n  _uiManager = null;\n  _focusEventsAllowed = true;\n  static _l10n = null;\n  static _l10nResizer = null;\n  #isDraggable = false;\n  #zIndex = AnnotationEditor._zIndex++;\n  static _borderLineWidth = -1;\n  static _colorManager = new ColorManager();\n  static _zIndex = 1;\n  static _telemetryTimeout = 1000;\n  static get _resizerKeyboardManager() {\n    const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n    const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n    const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n    return shadow(this, \"_resizerKeyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], resize, {\n      args: [-small, 0]\n    }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], resize, {\n      args: [-big, 0]\n    }], [[\"ArrowRight\", \"mac+ArrowRight\"], resize, {\n      args: [small, 0]\n    }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], resize, {\n      args: [big, 0]\n    }], [[\"ArrowUp\", \"mac+ArrowUp\"], resize, {\n      args: [0, -small]\n    }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, {\n      args: [0, -big]\n    }], [[\"ArrowDown\", \"mac+ArrowDown\"], resize, {\n      args: [0, small]\n    }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, {\n      args: [0, big]\n    }], [[\"Escape\", \"mac+Escape\"], AnnotationEditor.prototype._stopResizingWithKeyboard]]));\n  }\n  constructor(parameters) {\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    const {\n      rotation,\n      rawDims: {\n        pageWidth,\n        pageHeight,\n        pageX,\n        pageY\n      }\n    } = this.parent.viewport;\n    this.rotation = rotation;\n    this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n    this.pageDimensions = [pageWidth, pageHeight];\n    this.pageTranslation = [pageX, pageY];\n    const [width, height] = this.parentDimensions;\n    this.x = parameters.x / width;\n    this.y = parameters.y / height;\n    this.isAttachedToDOM = false;\n    this.deleted = false;\n  }\n  get editorType() {\n    return Object.getPrototypeOf(this).constructor._type;\n  }\n  static get isDrawer() {\n    return false;\n  }\n  static get _defaultLineColor() {\n    return shadow(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\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  static initialize(l10n, _uiManager) {\n    AnnotationEditor._l10n ??= l10n;\n    AnnotationEditor._l10nResizer ||= Object.freeze({\n      topLeft: \"pdfjs-editor-resizer-top-left\",\n      topMiddle: \"pdfjs-editor-resizer-top-middle\",\n      topRight: \"pdfjs-editor-resizer-top-right\",\n      middleRight: \"pdfjs-editor-resizer-middle-right\",\n      bottomRight: \"pdfjs-editor-resizer-bottom-right\",\n      bottomMiddle: \"pdfjs-editor-resizer-bottom-middle\",\n      bottomLeft: \"pdfjs-editor-resizer-bottom-left\",\n      middleLeft: \"pdfjs-editor-resizer-middle-left\"\n    });\n    if (AnnotationEditor._borderLineWidth !== -1) {\n      return;\n    }\n    const style = getComputedStyle(document.documentElement);\n    AnnotationEditor._borderLineWidth = parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n  }\n  static updateDefaultParams(_type, _value) {}\n  static get defaultPropertiesToUpdate() {\n    return [];\n  }\n  static isHandlingMimeForPasting(mime) {\n    return false;\n  }\n  static paste(item, parent) {\n    unreachable(\"Not implemented\");\n  }\n  get propertiesToUpdate() {\n    return [];\n  }\n  get _isDraggable() {\n    return this.#isDraggable;\n  }\n  set _isDraggable(value) {\n    this.#isDraggable = value;\n    this.div?.classList.toggle(\"draggable\", value);\n  }\n  get isEnterHandled() {\n    return true;\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  addCommands(params) {\n    this._uiManager.addCommands(params);\n  }\n  get currentLayer() {\n    return this._uiManager.currentLayer;\n  }\n  setInBackground() {\n    this.div.style.zIndex = 0;\n  }\n  setInForeground() {\n    this.div.style.zIndex = this.#zIndex;\n  }\n  setParent(parent) {\n    if (parent !== null) {\n      this.pageIndex = parent.pageIndex;\n      this.pageDimensions = parent.pageDimensions;\n    } else {\n      this.#stopResizing();\n    }\n    this.parent = parent;\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  focusout(event) {\n    if (!this._focusEventsAllowed) {\n      return;\n    }\n    if (!this.isAttachedToDOM) {\n      return;\n    }\n    const target = event.relatedTarget;\n    if (target?.closest(`#${this.id}`)) {\n      return;\n    }\n    event.preventDefault();\n    if (!this.parent?.isMultipleSelection) {\n      this.commitOrRemove();\n    }\n  }\n  commitOrRemove() {\n    if (this.isEmpty()) {\n      this.remove();\n    } else {\n      this.commit();\n    }\n  }\n  commit() {\n    this.addToAnnotationStorage();\n  }\n  addToAnnotationStorage() {\n    this._uiManager.addToAnnotationStorage(this);\n  }\n  setAt(x, y, tx, ty) {\n    const [width, height] = this.parentDimensions;\n    [tx, ty] = this.screenToPageTranslation(tx, ty);\n    this.x = (x + tx) / width;\n    this.y = (y + ty) / height;\n    this.fixAndSetPosition();\n  }\n  #translate([width, height], x, y) {\n    [x, y] = this.screenToPageTranslation(x, y);\n    this.x += x / width;\n    this.y += y / height;\n    this._onTranslating(this.x, this.y);\n    this.fixAndSetPosition();\n  }\n  translate(x, y) {\n    this.#translate(this.parentDimensions, x, y);\n  }\n  translateInPage(x, y) {\n    this.#initialRect ||= [this.x, this.y, this.width, this.height];\n    this.#translate(this.pageDimensions, x, y);\n    this.div.scrollIntoView({\n      block: \"nearest\"\n    });\n  }\n  drag(tx, ty) {\n    this.#initialRect ||= [this.x, this.y, this.width, this.height];\n    const {\n      div,\n      parentDimensions: [parentWidth, parentHeight]\n    } = this;\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      const {\n        x,\n        y\n      } = 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    let {\n      x,\n      y\n    } = this;\n    const [bx, by] = this.getBaseTranslation();\n    x += bx;\n    y += by;\n    const {\n      style\n    } = div;\n    style.left = `${(100 * x).toFixed(2)}%`;\n    style.top = `${(100 * y).toFixed(2)}%`;\n    this._onTranslating(x, y);\n    div.scrollIntoView({\n      block: \"nearest\"\n    });\n  }\n  _onTranslating(x, y) {}\n  _onTranslated(x, y) {}\n  get _hasBeenMoved() {\n    return !!this.#initialRect && (this.#initialRect[0] !== this.x || this.#initialRect[1] !== this.y);\n  }\n  get _hasBeenResized() {\n    return !!this.#initialRect && (this.#initialRect[2] !== this.width || this.#initialRect[3] !== this.height);\n  }\n  getBaseTranslation() {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    const {\n      _borderLineWidth\n    } = 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  get _mustFixPosition() {\n    return true;\n  }\n  fixAndSetPosition(rotation = this.rotation) {\n    const {\n      div: {\n        style\n      },\n      pageDimensions: [pageWidth, pageHeight]\n    } = this;\n    let {\n      x,\n      y,\n      width,\n      height\n    } = this;\n    width *= pageWidth;\n    height *= pageHeight;\n    x *= pageWidth;\n    y *= pageHeight;\n    if (this._mustFixPosition) {\n      switch (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    const [bx, by] = this.getBaseTranslation();\n    x += bx;\n    y += by;\n    style.left = `${(100 * x).toFixed(2)}%`;\n    style.top = `${(100 * y).toFixed(2)}%`;\n    this.moveInDOM();\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  screenToPageTranslation(x, y) {\n    return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n  }\n  pageTranslationToScreen(x, y) {\n    return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n  }\n  #getRotationMatrix(rotation) {\n    switch (rotation) {\n      case 90:\n        {\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        {\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  get parentScale() {\n    return this._uiManager.viewParameters.realScale;\n  }\n  get parentRotation() {\n    return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n  }\n  get parentDimensions() {\n    const {\n      parentScale,\n      pageDimensions: [pageWidth, pageHeight]\n    } = this;\n    return [pageWidth * parentScale, pageHeight * parentScale];\n  }\n  setDims(width, height) {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    const {\n      style\n    } = this.div;\n    style.width = `${(100 * width / parentWidth).toFixed(2)}%`;\n    if (!this.#keepAspectRatio) {\n      style.height = `${(100 * height / parentHeight).toFixed(2)}%`;\n    }\n  }\n  fixDims() {\n    const {\n      style\n    } = this.div;\n    const {\n      height,\n      width\n    } = style;\n    const widthPercent = width.endsWith(\"%\");\n    const heightPercent = !this.#keepAspectRatio && height.endsWith(\"%\");\n    if (widthPercent && heightPercent) {\n      return;\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(2)}%`;\n    }\n  }\n  getInitialTranslation() {\n    return [0, 0];\n  }\n  #createResizers() {\n    if (this.#resizersDiv) {\n      return;\n    }\n    this.#resizersDiv = document.createElement(\"div\");\n    this.#resizersDiv.classList.add(\"resizers\");\n    const classes = this._willKeepAspectRatio ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"] : [\"topLeft\", \"topMiddle\", \"topRight\", \"middleRight\", \"bottomRight\", \"bottomMiddle\", \"bottomLeft\", \"middleLeft\"];\n    const signal = this._uiManager._signal;\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(\"pointerdown\", this.#resizerPointerdown.bind(this, name), {\n        signal\n      });\n      div.addEventListener(\"contextmenu\", noContextMenu, {\n        signal\n      });\n      div.tabIndex = -1;\n    }\n    this.div.prepend(this.#resizersDiv);\n  }\n  #resizerPointerdown(name, event) {\n    event.preventDefault();\n    const {\n      isMac\n    } = util_FeatureTest.platform;\n    if (event.button !== 0 || event.ctrlKey && isMac) {\n      return;\n    }\n    this.#altText?.toggle(false);\n    const savedDraggable = this._isDraggable;\n    this._isDraggable = false;\n    this.#lastPointerCoords = [event.screenX, event.screenY];\n    const ac = new AbortController();\n    const signal = this._uiManager.combinedSignal(ac);\n    this.parent.togglePointerEvents(false);\n    window.addEventListener(\"pointermove\", this.#resizerPointermove.bind(this, name), {\n      passive: true,\n      capture: true,\n      signal\n    });\n    window.addEventListener(\"touchmove\", stopEvent, {\n      passive: false,\n      signal\n    });\n    window.addEventListener(\"contextmenu\", noContextMenu, {\n      signal\n    });\n    this.#savedDimensions = {\n      savedX: this.x,\n      savedY: this.y,\n      savedWidth: this.width,\n      savedHeight: this.height\n    };\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 = window.getComputedStyle(event.target).cursor;\n    const pointerUpCallback = () => {\n      ac.abort();\n      this.parent.togglePointerEvents(true);\n      this.#altText?.toggle(true);\n      this._isDraggable = savedDraggable;\n      this.parent.div.style.cursor = savedParentCursor;\n      this.div.style.cursor = savedCursor;\n      this.#addResizeToUndoStack();\n    };\n    window.addEventListener(\"pointerup\", pointerUpCallback, {\n      signal\n    });\n    window.addEventListener(\"blur\", pointerUpCallback, {\n      signal\n    });\n  }\n  #resize(x, y, width, height) {\n    this.width = width;\n    this.height = height;\n    this.x = x;\n    this.y = y;\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.setDims(parentWidth * width, parentHeight * height);\n    this.fixAndSetPosition();\n    this._onResized();\n  }\n  _onResized() {}\n  #addResizeToUndoStack() {\n    if (!this.#savedDimensions) {\n      return;\n    }\n    const {\n      savedX,\n      savedY,\n      savedWidth,\n      savedHeight\n    } = this.#savedDimensions;\n    this.#savedDimensions = null;\n    const newX = this.x;\n    const newY = this.y;\n    const newWidth = this.width;\n    const newHeight = this.height;\n    if (newX === savedX && newY === savedY && newWidth === savedWidth && newHeight === savedHeight) {\n      return;\n    }\n    this.addCommands({\n      cmd: this.#resize.bind(this, newX, newY, newWidth, newHeight),\n      undo: this.#resize.bind(this, savedX, savedY, savedWidth, savedHeight),\n      mustExec: true\n    });\n  }\n  static _round(x) {\n    return Math.round(x * 10000) / 10000;\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    const rotationMatrix = this.#getRotationMatrix(this.rotation);\n    const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n    const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n    const invTransf = (x, y) => [invRotationMatrix[0] * x + invRotationMatrix[2] * y, invRotationMatrix[1] * x + invRotationMatrix[3] * y];\n    let getPoint;\n    let getOpposite;\n    let isDiagonal = false;\n    let isHorizontal = false;\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    const point = getPoint(savedWidth, savedHeight);\n    const oppositePoint = getOpposite(savedWidth, savedHeight);\n    let transfOppositePoint = transf(...oppositePoint);\n    const oppositeX = AnnotationEditor._round(savedX + transfOppositePoint[0]);\n    const oppositeY = AnnotationEditor._round(savedY + transfOppositePoint[1]);\n    let ratioX = 1;\n    let ratioY = 1;\n    let deltaX, deltaY;\n    if (!event.fromKeyboard) {\n      const {\n        screenX,\n        screenY\n      } = event;\n      const [lastScreenX, lastScreenY] = this.#lastPointerCoords;\n      [deltaX, deltaY] = this.screenToPageTranslation(screenX - lastScreenX, screenY - lastScreenY);\n      this.#lastPointerCoords[0] = screenX;\n      this.#lastPointerCoords[1] = screenY;\n    } else {\n      ({\n        deltaX,\n        deltaY\n      } = event);\n    }\n    [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n    if (isDiagonal) {\n      const oldDiag = Math.hypot(savedWidth, savedHeight);\n      ratioX = ratioY = Math.max(Math.min(Math.hypot(oppositePoint[0] - point[0] - deltaX, oppositePoint[1] - point[1] - deltaY) / oldDiag, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n    } else if (isHorizontal) {\n      ratioX = Math.max(minWidth, Math.min(1, Math.abs(oppositePoint[0] - point[0] - deltaX))) / savedWidth;\n    } else {\n      ratioY = Math.max(minHeight, Math.min(1, Math.abs(oppositePoint[1] - point[1] - deltaY))) / savedHeight;\n    }\n    const newWidth = AnnotationEditor._round(savedWidth * ratioX);\n    const newHeight = AnnotationEditor._round(savedHeight * ratioY);\n    transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n    const newX = oppositeX - transfOppositePoint[0];\n    const newY = oppositeY - transfOppositePoint[1];\n    this.#initialRect ||= [this.x, this.y, this.width, this.height];\n    this.width = newWidth;\n    this.height = newHeight;\n    this.x = newX;\n    this.y = newY;\n    this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n    this.fixAndSetPosition();\n    this._onResizing();\n  }\n  _onResizing() {}\n  altTextFinish() {\n    this.#altText?.finish();\n  }\n  async addEditToolbar() {\n    if (this._editToolbar || this.#isInEditMode) {\n      return this._editToolbar;\n    }\n    this._editToolbar = new EditorToolbar(this);\n    this.div.append(this._editToolbar.render());\n    if (this.#altText) {\n      await this._editToolbar.addAltText(this.#altText);\n    }\n    return this._editToolbar;\n  }\n  removeEditToolbar() {\n    if (!this._editToolbar) {\n      return;\n    }\n    this._editToolbar.remove();\n    this._editToolbar = null;\n    this.#altText?.destroy();\n  }\n  addContainer(container) {\n    const editToolbarDiv = this._editToolbar?.div;\n    if (editToolbarDiv) {\n      editToolbarDiv.before(container);\n    } else {\n      this.div.append(container);\n    }\n  }\n  getClientDimensions() {\n    return this.div.getBoundingClientRect();\n  }\n  async addAltTextButton() {\n    if (this.#altText) {\n      return;\n    }\n    AltText.initialize(AnnotationEditor._l10n);\n    this.#altText = new AltText(this);\n    if (this.#accessibilityData) {\n      this.#altText.data = this.#accessibilityData;\n      this.#accessibilityData = null;\n    }\n    await this.addEditToolbar();\n  }\n  get altTextData() {\n    return this.#altText?.data;\n  }\n  set altTextData(data) {\n    if (!this.#altText) {\n      return;\n    }\n    this.#altText.data = data;\n  }\n  get guessedAltText() {\n    return this.#altText?.guessedText;\n  }\n  async setGuessedAltText(text) {\n    await this.#altText?.setGuessedText(text);\n  }\n  serializeAltText(isForCopying) {\n    return this.#altText?.serialize(isForCopying);\n  }\n  hasAltText() {\n    return !!this.#altText && !this.#altText.isEmpty();\n  }\n  hasAltTextData() {\n    return this.#altText?.hasData() ?? false;\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.tabIndex = this.#disabled ? -1 : 0;\n    if (!this._isVisible) {\n      this.div.classList.add(\"hidden\");\n    }\n    this.setInForeground();\n    this.#addFocusListeners();\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    if (this.parentRotation % 180 !== 0) {\n      this.div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`;\n      this.div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`;\n    }\n    const [tx, ty] = this.getInitialTranslation();\n    this.translate(tx, ty);\n    bindEvents(this, this.div, [\"pointerdown\"]);\n    if (this.isResizable && this._uiManager._supportsPinchToZoom) {\n      this.#touchManager ||= new TouchManager({\n        container: this.div,\n        isPinchingDisabled: () => !this.isSelected,\n        onPinchStart: this.#touchPinchStartCallback.bind(this),\n        onPinching: this.#touchPinchCallback.bind(this),\n        onPinchEnd: this.#touchPinchEndCallback.bind(this),\n        signal: this._uiManager._signal\n      });\n    }\n    this._uiManager._editorUndoBar?.hide();\n    return this.div;\n  }\n  #touchPinchStartCallback() {\n    this.#savedDimensions = {\n      savedX: this.x,\n      savedY: this.y,\n      savedWidth: this.width,\n      savedHeight: this.height\n    };\n    this.#altText?.toggle(false);\n    this.parent.togglePointerEvents(false);\n  }\n  #touchPinchCallback(_origin, prevDistance, distance) {\n    const slowDownFactor = 0.7;\n    let factor = slowDownFactor * (distance / prevDistance) + 1 - slowDownFactor;\n    if (factor === 1) {\n      return;\n    }\n    const rotationMatrix = this.#getRotationMatrix(this.rotation);\n    const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\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    factor = Math.max(Math.min(factor, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n    const newWidth = AnnotationEditor._round(savedWidth * factor);\n    const newHeight = AnnotationEditor._round(savedHeight * factor);\n    if (newWidth === savedWidth && newHeight === savedHeight) {\n      return;\n    }\n    this.#initialRect ||= [savedX, savedY, savedWidth, savedHeight];\n    const transfCenterPoint = transf(savedWidth / 2, savedHeight / 2);\n    const centerX = AnnotationEditor._round(savedX + transfCenterPoint[0]);\n    const centerY = AnnotationEditor._round(savedY + transfCenterPoint[1]);\n    const newTransfCenterPoint = transf(newWidth / 2, newHeight / 2);\n    this.x = centerX - newTransfCenterPoint[0];\n    this.y = centerY - newTransfCenterPoint[1];\n    this.width = newWidth;\n    this.height = newHeight;\n    this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n    this.fixAndSetPosition();\n    this._onResizing();\n  }\n  #touchPinchEndCallback() {\n    this.#altText?.toggle(true);\n    this.parent.togglePointerEvents(true);\n    this.#addResizeToUndoStack();\n  }\n  pointerdown(event) {\n    const {\n      isMac\n    } = util_FeatureTest.platform;\n    if (event.button !== 0 || event.ctrlKey && isMac) {\n      event.preventDefault();\n      return;\n    }\n    this.#hasBeenClicked = true;\n    if (this._isDraggable) {\n      this.#setUpDragSession(event);\n      return;\n    }\n    this.#selectOnPointerEvent(event);\n  }\n  get isSelected() {\n    return this._uiManager.isSelected(this);\n  }\n  #selectOnPointerEvent(event) {\n    const {\n      isMac\n    } = util_FeatureTest.platform;\n    if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {\n      this.parent.toggleSelected(this);\n    } else {\n      this.parent.setSelected(this);\n    }\n  }\n  #setUpDragSession(event) {\n    const {\n      isSelected\n    } = this;\n    this._uiManager.setUpDragSession();\n    let hasDraggingStarted = false;\n    const ac = new AbortController();\n    const signal = this._uiManager.combinedSignal(ac);\n    const opts = {\n      capture: true,\n      passive: false,\n      signal\n    };\n    const cancelDrag = e => {\n      ac.abort();\n      this.#dragPointerId = null;\n      this.#hasBeenClicked = false;\n      if (!this._uiManager.endDragSession()) {\n        this.#selectOnPointerEvent(e);\n      }\n      if (hasDraggingStarted) {\n        this._onStopDragging();\n      }\n    };\n    if (isSelected) {\n      this.#prevDragX = event.clientX;\n      this.#prevDragY = event.clientY;\n      this.#dragPointerId = event.pointerId;\n      this.#dragPointerType = event.pointerType;\n      window.addEventListener(\"pointermove\", e => {\n        if (!hasDraggingStarted) {\n          hasDraggingStarted = true;\n          this._onStartDragging();\n        }\n        const {\n          clientX: x,\n          clientY: y,\n          pointerId\n        } = e;\n        if (pointerId !== this.#dragPointerId) {\n          stopEvent(e);\n          return;\n        }\n        const [tx, ty] = this.screenToPageTranslation(x - this.#prevDragX, y - this.#prevDragY);\n        this.#prevDragX = x;\n        this.#prevDragY = y;\n        this._uiManager.dragSelectedEditors(tx, ty);\n      }, opts);\n      window.addEventListener(\"touchmove\", stopEvent, opts);\n      window.addEventListener(\"pointerdown\", e => {\n        if (e.pointerType === this.#dragPointerType) {\n          if (this.#touchManager || e.isPrimary) {\n            cancelDrag(e);\n          }\n        }\n        stopEvent(e);\n      }, opts);\n    }\n    const pointerUpCallback = e => {\n      if (!this.#dragPointerId || this.#dragPointerId === e.pointerId) {\n        cancelDrag(e);\n        return;\n      }\n      stopEvent(e);\n    };\n    window.addEventListener(\"pointerup\", pointerUpCallback, {\n      signal\n    });\n    window.addEventListener(\"blur\", pointerUpCallback, {\n      signal\n    });\n  }\n  _onStartDragging() {}\n  _onStopDragging() {}\n  moveInDOM() {\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  _setParentAndPosition(parent, x, y) {\n    parent.changeParent(this);\n    this.x = x;\n    this.y = y;\n    this.fixAndSetPosition();\n    this._onTranslated();\n  }\n  getRect(tx, ty, rotation = this.rotation) {\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    switch (rotation) {\n      case 0:\n        return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY];\n      case 90:\n        return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY];\n      case 180:\n        return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY];\n      case 270:\n        return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY];\n      default:\n        throw new Error(\"Invalid rotation\");\n    }\n  }\n  getRectInCurrentCoords(rect, pageHeight) {\n    const [x1, y1, x2, y2] = rect;\n    const width = x2 - x1;\n    const height = y2 - y1;\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  onceAdded(focus) {}\n  isEmpty() {\n    return false;\n  }\n  enableEditMode() {\n    this.#isInEditMode = true;\n  }\n  disableEditMode() {\n    this.#isInEditMode = false;\n  }\n  isInEditMode() {\n    return this.#isInEditMode;\n  }\n  shouldGetKeyboardEvents() {\n    return this.#isResizerEnabledForKeyboard;\n  }\n  needsToBeRebuilt() {\n    return this.div && !this.isAttachedToDOM;\n  }\n  get isOnScreen() {\n    const {\n      top,\n      left,\n      bottom,\n      right\n    } = this.getClientDimensions();\n    const {\n      innerHeight,\n      innerWidth\n    } = window;\n    return left < innerWidth && right > 0 && top < innerHeight && bottom > 0;\n  }\n  #addFocusListeners() {\n    if (this.#focusAC || !this.div) {\n      return;\n    }\n    this.#focusAC = new AbortController();\n    const signal = this._uiManager.combinedSignal(this.#focusAC);\n    this.div.addEventListener(\"focusin\", this.focusin.bind(this), {\n      signal\n    });\n    this.div.addEventListener(\"focusout\", this.focusout.bind(this), {\n      signal\n    });\n  }\n  rebuild() {\n    this.#addFocusListeners();\n  }\n  rotate(_angle) {}\n  resize() {}\n  serializeDeleted() {\n    return {\n      id: this.annotationElementId,\n      deleted: true,\n      pageIndex: this.pageIndex,\n      popupRef: this._initialData?.popupRef || \"\"\n    };\n  }\n  serialize(isForCopying = false, context = null) {\n    unreachable(\"An editor must be serializable\");\n  }\n  static async 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    editor.#accessibilityData = data.accessibilityData;\n    const [pageWidth, pageHeight] = editor.pageDimensions;\n    const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n    editor.x = x / pageWidth;\n    editor.y = y / pageHeight;\n    editor.width = width / pageWidth;\n    editor.height = height / pageHeight;\n    return editor;\n  }\n  get hasBeenModified() {\n    return !!this.annotationElementId && (this.deleted || this.serialize() !== null);\n  }\n  remove() {\n    this.#focusAC?.abort();\n    this.#focusAC = null;\n    if (!this.isEmpty()) {\n      this.commit();\n    }\n    if (this.parent) {\n      this.parent.remove(this);\n    } else {\n      this._uiManager.removeEditor(this);\n    }\n    if (this.#moveInDOMTimeout) {\n      clearTimeout(this.#moveInDOMTimeout);\n      this.#moveInDOMTimeout = null;\n    }\n    this.#stopResizing();\n    this.removeEditToolbar();\n    if (this.#telemetryTimeouts) {\n      for (const timeout of this.#telemetryTimeouts.values()) {\n        clearTimeout(timeout);\n      }\n      this.#telemetryTimeouts = null;\n    }\n    this.parent = null;\n    this.#touchManager?.destroy();\n    this.#touchManager = null;\n  }\n  get isResizable() {\n    return false;\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  get toolbarPosition() {\n    return null;\n  }\n  keydown(event) {\n    if (!this.isResizable || event.target !== this.div || event.key !== \"Enter\") {\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      const signal = this._uiManager._signal;\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          signal\n        });\n        div.addEventListener(\"blur\", boundResizerBlur, {\n          signal\n        });\n        div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name), {\n          signal\n        });\n        div.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n      }\n    }\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 = (360 - this.rotation + this.parentRotation) % 360 / 90 * (this.#allResizerDivs.length / 4);\n    if (nextFirstPosition !== firstPosition) {\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      let i = 0;\n      for (const child of children) {\n        const div = this.#allResizerDivs[i++];\n        const name = div.getAttribute(\"data-resizer-name\");\n        child.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n      }\n    }\n    this.#setResizerTabIndex(0);\n    this.#isResizerEnabledForKeyboard = true;\n    this.#resizersDiv.firstChild.focus({\n      focusVisible: true\n    });\n    event.preventDefault();\n    event.stopImmediatePropagation();\n  }\n  #resizerKeydown(event) {\n    AnnotationEditor._resizerKeyboardManager.exec(this, event);\n  }\n  #resizerBlur(event) {\n    if (this.#isResizerEnabledForKeyboard && event.relatedTarget?.parentNode !== this.#resizersDiv) {\n      this.#stopResizing();\n    }\n  }\n  #resizerFocus(name) {\n    this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\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  _resizeWithKeyboard(x, y) {\n    if (!this.#isResizerEnabledForKeyboard) {\n      return;\n    }\n    this.#resizerPointermove(this.#focusedResizerName, {\n      deltaX: x,\n      deltaY: y,\n      fromKeyboard: true\n    });\n  }\n  #stopResizing() {\n    this.#isResizerEnabledForKeyboard = false;\n    this.#setResizerTabIndex(-1);\n    this.#addResizeToUndoStack();\n  }\n  _stopResizingWithKeyboard() {\n    this.#stopResizing();\n    this.div.focus();\n  }\n  select() {\n    this.makeResizable();\n    this.div?.classList.add(\"selectedEditor\");\n    if (!this._editToolbar) {\n      this.addEditToolbar().then(() => {\n        if (this.div?.classList.contains(\"selectedEditor\")) {\n          this._editToolbar?.show();\n        }\n      });\n      return;\n    }\n    this._editToolbar?.show();\n    this.#altText?.toggleAltTextBadge(false);\n  }\n  unselect() {\n    this.#resizersDiv?.classList.add(\"hidden\");\n    this.div?.classList.remove(\"selectedEditor\");\n    if (this.div?.contains(document.activeElement)) {\n      this._uiManager.currentLayer.div.focus({\n        preventScroll: true\n      });\n    }\n    this._editToolbar?.hide();\n    this.#altText?.toggleAltTextBadge(true);\n  }\n  updateParams(type, value) {}\n  disableEditing() {}\n  enableEditing() {}\n  enterInEditMode() {}\n  getImageForAltText() {\n    return null;\n  }\n  get contentDiv() {\n    return this.div;\n  }\n  get isEditing() {\n    return this.#isEditing;\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  setAspectRatio(width, height) {\n    this.#keepAspectRatio = true;\n    const aspectRatio = width / height;\n    const {\n      style\n    } = this.div;\n    style.aspectRatio = aspectRatio;\n    style.height = \"auto\";\n  }\n  static get MIN_SIZE() {\n    return 16;\n  }\n  static canCreateNewEmptyEditor() {\n    return true;\n  }\n  get telemetryInitialData() {\n    return {\n      action: \"added\"\n    };\n  }\n  get telemetryFinalData() {\n    return null;\n  }\n  _reportTelemetry(data, mustWait = false) {\n    if (mustWait) {\n      this.#telemetryTimeouts ||= new Map();\n      const {\n        action\n      } = data;\n      let timeout = this.#telemetryTimeouts.get(action);\n      if (timeout) {\n        clearTimeout(timeout);\n      }\n      timeout = setTimeout(() => {\n        this._reportTelemetry(data);\n        this.#telemetryTimeouts.delete(action);\n        if (this.#telemetryTimeouts.size === 0) {\n          this.#telemetryTimeouts = null;\n        }\n      }, AnnotationEditor._telemetryTimeout);\n      this.#telemetryTimeouts.set(action, timeout);\n      return;\n    }\n    data.type ||= this.editorType;\n    this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n      source: this,\n      details: {\n        type: \"editing\",\n        data\n      }\n    });\n  }\n  show(visible = this._isVisible) {\n    this.div.classList.toggle(\"hidden\", !visible);\n    this._isVisible = visible;\n  }\n  enable() {\n    if (this.div) {\n      this.div.tabIndex = 0;\n    }\n    this.#disabled = false;\n  }\n  disable() {\n    if (this.div) {\n      this.div.tabIndex = -1;\n    }\n    this.#disabled = true;\n  }\n  renderAnnotationElement(annotation) {\n    let content = annotation.container.querySelector(\".annotationContent\");\n    if (!content) {\n      content = document.createElement(\"div\");\n      content.classList.add(\"annotationContent\", this.editorType);\n      annotation.container.prepend(content);\n    } else if (content.nodeName === \"CANVAS\") {\n      const canvas = content;\n      content = document.createElement(\"div\");\n      content.classList.add(\"annotationContent\", this.editorType);\n      canvas.before(content);\n    }\n    return content;\n  }\n  resetAnnotationElement(annotation) {\n    const {\n      firstChild\n    } = annotation.container;\n    if (firstChild?.nodeName === \"DIV\" && firstChild.classList.contains(\"annotationContent\")) {\n      firstChild.remove();\n    }\n  }\n}\nclass FakeEditor extends AnnotationEditor {\n  constructor(params) {\n    super(params);\n    this.annotationElementId = params.annotationElementId;\n    this.deleted = true;\n  }\n  serialize() {\n    return this.serializeDeleted();\n  }\n}\n\n;// ./src/shared/murmurhash3.js\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n  constructor(seed) {\n    this.h1 = seed ? seed & 0xffffffff : SEED;\n    this.h2 = seed ? seed & 0xffffffff : SEED;\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 (ArrayBuffer.isView(input)) {\n      data = input.slice();\n      length = data.byteLength;\n    } else {\n      throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n    }\n    const blockCounts = length >> 2;\n    const tailLength = length - blockCounts * 4;\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    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    k1 = 0;\n    switch (tailLength) {\n      case 3:\n        k1 ^= data[blockCounts * 4 + 2] << 16;\n      case 2:\n        k1 ^= data[blockCounts * 4 + 1] << 8;\n      case 1:\n        k1 ^= data[blockCounts * 4];\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    this.h1 = h1;\n    this.h2 = h2;\n  }\n  hexdigest() {\n    let h1 = this.h1,\n      h2 = this.h2;\n    h1 ^= h2 >>> 1;\n    h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n    h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n    h1 ^= h2 >>> 1;\n    h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n    h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n    h1 ^= h2 >>> 1;\n    return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n  }\n}\n\n;// ./src/display/annotation_storage.js\n\n\n\nconst SerializableEmpty = Object.freeze({\n  map: null,\n  hash: \"\",\n  transfer: undefined\n});\nclass AnnotationStorage {\n  #modified = false;\n  #modifiedIds = null;\n  #storage = new Map();\n  constructor() {\n    this.onSetModified = null;\n    this.onResetModified = null;\n    this.onAnnotationEditor = null;\n  }\n  getValue(key, defaultValue) {\n    const value = this.#storage.get(key);\n    if (value === undefined) {\n      return defaultValue;\n    }\n    return Object.assign(defaultValue, value);\n  }\n  getRawValue(key) {\n    return this.#storage.get(key);\n  }\n  remove(key) {\n    this.#storage.delete(key);\n    if (this.#storage.size === 0) {\n      this.resetModified();\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  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    if (value instanceof AnnotationEditor && typeof this.onAnnotationEditor === \"function\") {\n      this.onAnnotationEditor(value.constructor._type);\n    }\n  }\n  has(key) {\n    return this.#storage.has(key);\n  }\n  getAll() {\n    return this.#storage.size > 0 ? objectFromMap(this.#storage) : null;\n  }\n  setAll(obj) {\n    for (const [key, val] of Object.entries(obj)) {\n      this.setValue(key, val);\n    }\n  }\n  get size() {\n    return this.#storage.size;\n  }\n  #setModified() {\n    if (!this.#modified) {\n      this.#modified = true;\n      if (typeof this.onSetModified === \"function\") {\n        this.onSetModified();\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  get print() {\n    return new PrintAnnotationStorage(this);\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    for (const [key, val] of this.#storage) {\n      const serialized = val instanceof AnnotationEditor ? val.serialize(false, context) : val;\n      if (serialized) {\n        map.set(key, serialized);\n        hash.update(`${key}:${JSON.stringify(serialized)}`);\n        hasBitmap ||= !!serialized.bitmap;\n      }\n    }\n    if (hasBitmap) {\n      for (const value of map.values()) {\n        if (value.bitmap) {\n          transfer.push(value.bitmap);\n        }\n      }\n    }\n    return map.size > 0 ? {\n      map,\n      hash: hash.hexdigest(),\n      transfer\n    } : SerializableEmpty;\n  }\n  get editorStats() {\n    let stats = null;\n    const typeToEditor = new Map();\n    for (const value of this.#storage.values()) {\n      if (!(value instanceof AnnotationEditor)) {\n        continue;\n      }\n      const editorStats = value.telemetryFinalData;\n      if (!editorStats) {\n        continue;\n      }\n      const {\n        type\n      } = editorStats;\n      if (!typeToEditor.has(type)) {\n        typeToEditor.set(type, Object.getPrototypeOf(value).constructor);\n      }\n      stats ||= Object.create(null);\n      const map = stats[type] ||= new Map();\n      for (const [key, val] of Object.entries(editorStats)) {\n        if (key === \"type\") {\n          continue;\n        }\n        let counters = map.get(key);\n        if (!counters) {\n          counters = new Map();\n          map.set(key, counters);\n        }\n        const count = counters.get(val) ?? 0;\n        counters.set(val, count + 1);\n      }\n    }\n    for (const [type, editor] of typeToEditor) {\n      stats[type] = editor.computeTelemetryFinalData(stats[type]);\n    }\n    return stats;\n  }\n  resetModifiedIds() {\n    this.#modifiedIds = null;\n  }\n  get modifiedIds() {\n    if (this.#modifiedIds) {\n      return this.#modifiedIds;\n    }\n    const ids = [];\n    for (const value of this.#storage.values()) {\n      if (!(value instanceof AnnotationEditor) || !value.annotationElementId || !value.serialize()) {\n        continue;\n      }\n      ids.push(value.annotationElementId);\n    }\n    return this.#modifiedIds = {\n      ids: new Set(ids),\n      hash: ids.join(\",\")\n    };\n  }\n}\nclass PrintAnnotationStorage extends AnnotationStorage {\n  #serializable;\n  constructor(parent) {\n    super();\n    const {\n      map,\n      hash,\n      transfer\n    } = parent.serializable;\n    const clone = structuredClone(map, transfer ? {\n      transfer\n    } : null);\n    this.#serializable = {\n      map: clone,\n      hash,\n      transfer\n    };\n  }\n  get print() {\n    unreachable(\"Should not call PrintAnnotationStorage.print\");\n  }\n  get serializable() {\n    return this.#serializable;\n  }\n  get modifiedIds() {\n    return shadow(this, \"modifiedIds\", {\n      ids: new Set(),\n      hash: \"\"\n    });\n  }\n}\n\n;// ./src/display/font_loader.js\n\nclass FontLoader {\n  #systemFonts = new Set();\n  constructor({\n    ownerDocument = globalThis.document,\n    styleElement = null\n  }) {\n    this._document = ownerDocument;\n    this.nativeFontFaces = new Set();\n    this.styleElement = null;\n    this.loadingRequests = [];\n    this.loadTestFontId = 0;\n  }\n  addNativeFontFace(nativeFontFace) {\n    this.nativeFontFaces.add(nativeFontFace);\n    this._document.fonts.add(nativeFontFace);\n  }\n  removeNativeFontFace(nativeFontFace) {\n    this.nativeFontFaces.delete(nativeFontFace);\n    this._document.fonts.delete(nativeFontFace);\n  }\n  insertRule(rule) {\n    if (!this.styleElement) {\n      this.styleElement = this._document.createElement(\"style\");\n      this._document.documentElement.getElementsByTagName(\"head\")[0].append(this.styleElement);\n    }\n    const styleSheet = this.styleElement.sheet;\n    styleSheet.insertRule(rule, styleSheet.cssRules.length);\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    if (this.styleElement) {\n      this.styleElement.remove();\n      this.styleElement = null;\n    }\n  }\n  async loadSystemFont({\n    systemFontInfo: info,\n    _inspectFont\n  }) {\n    if (!info || this.#systemFonts.has(info.loadedName)) {\n      return;\n    }\n    assert(!this.disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n    if (this.isFontLoadingAPISupported) {\n      const {\n        loadedName,\n        src,\n        style\n      } = 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(`Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`);\n        this.removeNativeFontFace(fontFace);\n      }\n      return;\n    }\n    unreachable(\"Not implemented: loadSystemFont without the Font Loading API.\");\n  }\n  async bind(font) {\n    if (font.attached || font.missingFile && !font.systemFontInfo) {\n      return;\n    }\n    font.attached = true;\n    if (font.systemFontInfo) {\n      await this.loadSystemFont(font);\n      return;\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          font.disableFontFace = true;\n          throw ex;\n        }\n      }\n      return;\n    }\n    const rule = font.createFontFaceRule();\n    if (rule) {\n      this.insertRule(rule);\n      if (this.isSyncFontLoadingSupported) {\n        return;\n      }\n      await new Promise(resolve => {\n        const request = this._queueLoadingCallback(resolve);\n        this._prepareFontLoadEvent(font, request);\n      });\n    }\n  }\n  get isFontLoadingAPISupported() {\n    const hasFonts = !!this._document?.fonts;\n    return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n  }\n  get isSyncFontLoadingSupported() {\n    let supported = false;\n    if (isNodeJS) {\n      supported = true;\n    } else if (typeof navigator !== \"undefined\" && typeof navigator?.userAgent === \"string\" && /Mozilla\\/5.0.*?rv:\\d+.*? Gecko/.test(navigator.userAgent)) {\n      supported = true;\n    }\n    return shadow(this, \"isSyncFontLoadingSupported\", supported);\n  }\n  _queueLoadingCallback(callback) {\n    function completeRequest() {\n      assert(!request.done, \"completeRequest() cannot be called twice.\");\n      request.done = true;\n      while (loadingRequests.length > 0 && loadingRequests[0].done) {\n        const otherRequest = loadingRequests.shift();\n        setTimeout(otherRequest.callback, 0);\n      }\n    }\n    const {\n      loadingRequests\n    } = this;\n    const request = {\n      done: false,\n      complete: completeRequest,\n      callback\n    };\n    loadingRequests.push(request);\n    return request;\n  }\n  get _loadTestFont() {\n    const testFont = atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" + \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" + \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" + \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" + \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" + \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" + \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" + \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" + \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" + \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" + \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" + \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" + \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" + \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" + \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" + \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" + \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n    return shadow(this, \"_loadTestFont\", testFont);\n  }\n  _prepareFontLoadEvent(font, request) {\n    function int32(data, offset) {\n      return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\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    const canvas = this._document.createElement(\"canvas\");\n    canvas.width = 1;\n    canvas.height = 1;\n    const ctx = canvas.getContext(\"2d\");\n    let called = 0;\n    function isFontReady(name, callback) {\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    const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n    let data = this._loadTestFont;\n    const COMMENT_OFFSET = 976;\n    data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n    const CFF_CHECKSUM_OFFSET = 16;\n    const XXXX_VALUE = 0x58585858;\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      checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n    }\n    data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\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    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    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    isFontReady(loadTestFontId, () => {\n      div.remove();\n      request.complete();\n    });\n  }\n}\nclass FontFaceObject {\n  constructor(translatedData, {\n    disableFontFace = false,\n    fontExtraProperties = false,\n    inspectFont = null\n  }) {\n    this.compiledGlyphs = Object.create(null);\n    for (const i in translatedData) {\n      this[i] = translatedData[i];\n    }\n    this.disableFontFace = disableFontFace === true;\n    this.fontExtraProperties = fontExtraProperties === true;\n    this._inspectFont = inspectFont;\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(this.cssFontInfo.fontFamily, this.data, css);\n    }\n    this._inspectFont?.(this);\n    return nativeFontFace;\n  }\n  createFontFaceRule() {\n    if (!this.data || this.disableFontFace) {\n      return null;\n    }\n    const url = `url(data:${this.mimetype};base64,${toBase64Util(this.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    this._inspectFont?.(this, url);\n    return rule;\n  }\n  getPathGenerator(objs, character) {\n    if (this.compiledGlyphs[character] !== undefined) {\n      return this.compiledGlyphs[character];\n    }\n    const objId = this.loadedName + \"_path_\" + character;\n    let cmds;\n    try {\n      cmds = objs.get(objId);\n    } catch (ex) {\n      warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n    }\n    const path = new Path2D(cmds || \"\");\n    if (!this.fontExtraProperties) {\n      objs.delete(objId);\n    }\n    return this.compiledGlyphs[character] = path;\n  }\n}\n\n;// ./src/shared/message_handler.js\n\nconst CallbackKind = {\n  DATA: 1,\n  ERROR: 2\n};\nconst StreamKind = {\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};\nfunction onFn() {}\nfunction wrapReason(ex) {\n  if (ex instanceof AbortException || ex instanceof InvalidPDFException || ex instanceof MissingPDFException || ex instanceof PasswordException || ex instanceof UnexpectedResponseException || ex instanceof UnknownErrorException) {\n    return ex;\n  }\n  if (!(ex instanceof Error || typeof ex === \"object\" && ex !== null)) {\n    unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n  }\n  switch (ex.name) {\n    case \"AbortException\":\n      return new AbortException(ex.message);\n    case \"InvalidPDFException\":\n      return new InvalidPDFException(ex.message);\n    case \"MissingPDFException\":\n      return new MissingPDFException(ex.message);\n    case \"PasswordException\":\n      return new PasswordException(ex.message, ex.code);\n    case \"UnexpectedResponseException\":\n      return new UnexpectedResponseException(ex.message, ex.status);\n    case \"UnknownErrorException\":\n      return new UnknownErrorException(ex.message, ex.details);\n  }\n  return new UnknownErrorException(ex.message, ex.toString());\n}\nclass MessageHandler {\n  #messageAC = new AbortController();\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    comObj.addEventListener(\"message\", this.#onMessage.bind(this), {\n      signal: this.#messageAC.signal\n    });\n  }\n  #onMessage({\n    data\n  }) {\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      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 sourceName = this.sourceName,\n        targetName = data.sourceName,\n        comObj = this.comObj;\n      Promise.try(action, data.data).then(function (result) {\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          callback: CallbackKind.DATA,\n          callbackId: data.callbackId,\n          data: result\n        });\n      }, function (reason) {\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          callback: CallbackKind.ERROR,\n          callbackId: data.callbackId,\n          reason: wrapReason(reason)\n        });\n      });\n      return;\n    }\n    if (data.streamId) {\n      this.#createStreamSink(data);\n      return;\n    }\n    action(data.data);\n  }\n  on(actionName, handler) {\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  send(actionName, data, transfers) {\n    this.comObj.postMessage({\n      sourceName: this.sourceName,\n      targetName: this.targetName,\n      action: actionName,\n      data\n    }, transfers);\n  }\n  sendWithPromise(actionName, data, transfers) {\n    const callbackId = this.callbackId++;\n    const capability = Promise.withResolvers();\n    this.callbackCapabilities[callbackId] = capability;\n    try {\n      this.comObj.postMessage({\n        sourceName: this.sourceName,\n        targetName: this.targetName,\n        action: actionName,\n        callbackId,\n        data\n      }, transfers);\n    } catch (ex) {\n      capability.reject(ex);\n    }\n    return capability.promise;\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    return new ReadableStream({\n      start: controller => {\n        const startCapability = Promise.withResolvers();\n        this.streamControllers[streamId] = {\n          controller,\n          startCall: startCapability,\n          pullCall: null,\n          cancelCall: null,\n          isClosed: false\n        };\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          action: actionName,\n          streamId,\n          data,\n          desiredSize: controller.desiredSize\n        }, transfers);\n        return startCapability.promise;\n      },\n      pull: controller => {\n        const pullCapability = Promise.withResolvers();\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        return pullCapability.promise;\n      },\n      cancel: reason => {\n        assert(reason instanceof Error, \"cancel must have a valid reason\");\n        const cancelCapability = Promise.withResolvers();\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 cancelCapability.promise;\n      }\n    }, queueingStrategy);\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    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        if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n          this.sinkCapability = Promise.withResolvers();\n          this.ready = this.sinkCapability.promise;\n        }\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.ENQUEUE,\n          streamId,\n          chunk\n        }, transfers);\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      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      sinkCapability: Promise.withResolvers(),\n      onPull: null,\n      onCancel: null,\n      isCancelled: false,\n      desiredSize: data.desiredSize,\n      ready: null\n    };\n    streamSink.sinkCapability.resolve();\n    streamSink.ready = streamSink.sinkCapability.promise;\n    this.streamSinks[streamId] = streamSink;\n    Promise.try(action, data.data, streamSink).then(function () {\n      comObj.postMessage({\n        sourceName,\n        targetName,\n        stream: StreamKind.START_COMPLETE,\n        streamId,\n        success: true\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  #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    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        if (!streamSink) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL_COMPLETE,\n            streamId,\n            success: true\n          });\n          break;\n        }\n        if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n          streamSink.sinkCapability.resolve();\n        }\n        streamSink.desiredSize = data.desiredSize;\n        Promise.try(streamSink.onPull || onFn).then(function () {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL_COMPLETE,\n            streamId,\n            success: true\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        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        const dataReason = wrapReason(data.reason);\n        Promise.try(streamSink.onCancel || onFn, dataReason).then(function () {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.CANCEL_COMPLETE,\n            streamId,\n            success: true\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        streamSink.sinkCapability.reject(dataReason);\n        streamSink.isCancelled = true;\n        delete this.streamSinks[streamId];\n        break;\n      default:\n        throw new Error(\"Unexpected stream case\");\n    }\n  }\n  async #deleteStreamController(streamController, streamId) {\n    await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n    delete this.streamControllers[streamId];\n  }\n  destroy() {\n    this.#messageAC?.abort();\n    this.#messageAC = null;\n  }\n}\n\n;// ./src/display/canvas_factory.js\n\nclass BaseCanvasFactory {\n  #enableHWA = false;\n  constructor({\n    enableHWA = false\n  }) {\n    this.#enableHWA = enableHWA;\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        willReadFrequently: !this.#enableHWA\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  destroy(canvasAndContext) {\n    if (!canvasAndContext.canvas) {\n      throw new Error(\"Canvas is not specified\");\n    }\n    canvasAndContext.canvas.width = 0;\n    canvasAndContext.canvas.height = 0;\n    canvasAndContext.canvas = null;\n    canvasAndContext.context = null;\n  }\n  _createCanvas(width, height) {\n    unreachable(\"Abstract method `_createCanvas` called.\");\n  }\n}\nclass DOMCanvasFactory extends BaseCanvasFactory {\n  constructor({\n    ownerDocument = globalThis.document,\n    enableHWA = false\n  }) {\n    super({\n      enableHWA\n    });\n    this._document = ownerDocument;\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\n;// ./src/display/cmap_reader_factory.js\n\n\nclass BaseCMapReaderFactory {\n  constructor({\n    baseUrl = null,\n    isCompressed = true\n  }) {\n    this.baseUrl = baseUrl;\n    this.isCompressed = isCompressed;\n  }\n  async fetch({\n    name\n  }) {\n    if (!this.baseUrl) {\n      throw new Error(\"Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.\");\n    }\n    if (!name) {\n      throw new Error(\"CMap name must be specified.\");\n    }\n    const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n    return this._fetch(url).then(cMapData => ({\n      cMapData,\n      isCompressed: this.isCompressed\n    })).catch(reason => {\n      throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n    });\n  }\n  async _fetch(url) {\n    unreachable(\"Abstract method `_fetch` called.\");\n  }\n}\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n  async _fetch(url) {\n    const data = await fetchData(url, this.isCompressed ? \"arraybuffer\" : \"text\");\n    return data instanceof ArrayBuffer ? new Uint8Array(data) : stringToBytes(data);\n  }\n}\n\n;// ./src/display/filter_factory.js\n\n\nclass BaseFilterFactory {\n  addFilter(maps) {\n    return \"none\";\n  }\n  addHCMFilter(fgColor, bgColor) {\n    return \"none\";\n  }\n  addAlphaFilter(map) {\n    return \"none\";\n  }\n  addLuminosityFilter(map) {\n    return \"none\";\n  }\n  addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n    return \"none\";\n  }\n  destroy(keepHCM = false) {}\n}\nclass DOMFilterFactory extends BaseFilterFactory {\n  #baseUrl;\n  #_cache;\n  #_defs;\n  #docId;\n  #document;\n  #_hcmCache;\n  #id = 0;\n  constructor({\n    docId,\n    ownerDocument = globalThis.document\n  }) {\n    super();\n    this.#docId = docId;\n    this.#document = ownerDocument;\n  }\n  get #cache() {\n    return this.#_cache ||= new Map();\n  }\n  get #hcmCache() {\n    return this.#_hcmCache ||= new Map();\n  }\n  get #defs() {\n    if (!this.#_defs) {\n      const div = this.#document.createElement(\"div\");\n      const {\n        style\n      } = 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      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  #createTables(maps) {\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      const table = buffer.join(\",\");\n      return [table, table, table];\n    }\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    return [bufferR.join(\",\"), bufferG.join(\",\"), bufferB.join(\",\")];\n  }\n  #createUrl(id) {\n    if (this.#baseUrl === undefined) {\n      this.#baseUrl = \"\";\n      const url = this.#document.URL;\n      if (url !== this.#document.baseURI) {\n        if (isDataScheme(url)) {\n          warn('#createUrl: ignore \"data:\"-URL for performance reasons.');\n        } else {\n          this.#baseUrl = url.split(\"#\", 1)[0];\n        }\n      }\n    }\n    return `url(${this.#baseUrl}#${id})`;\n  }\n  addFilter(maps) {\n    if (!maps) {\n      return \"none\";\n    }\n    let value = this.#cache.get(maps);\n    if (value) {\n      return value;\n    }\n    const [tableR, tableG, tableB] = this.#createTables(maps);\n    const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\n    value = this.#cache.get(key);\n    if (value) {\n      this.#cache.set(maps, value);\n      return value;\n    }\n    const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n    const url = this.#createUrl(id);\n    this.#cache.set(maps, url);\n    this.#cache.set(key, url);\n    const filter = this.#createFilter(id);\n    this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n    return url;\n  }\n  addHCMFilter(fgColor, bgColor) {\n    const key = `${fgColor}-${bgColor}`;\n    const filterName = \"base\";\n    let info = this.#hcmCache.get(filterName);\n    if (info?.key === key) {\n      return info.url;\n    }\n    if (info) {\n      info.filter?.remove();\n      info.key = key;\n      info.url = \"none\";\n      info.filter = null;\n    } else {\n      info = {\n        key,\n        url: \"none\",\n        filter: null\n      };\n      this.#hcmCache.set(filterName, info);\n    }\n    if (!fgColor || !bgColor) {\n      return info.url;\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    if (fgColor === \"#000000\" && bgColor === \"#ffffff\" || fgColor === bgColor) {\n      return info.url;\n    }\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    const id = `g_${this.#docId}_hcm_filter`;\n    const filter = info.filter = this.#createFilter(id);\n    this.#addTransferMapConversion(table, table, table, filter);\n    this.#addGrayConversion(filter);\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(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter);\n    info.url = this.#createUrl(id);\n    return info.url;\n  }\n  addAlphaFilter(map) {\n    let value = this.#cache.get(map);\n    if (value) {\n      return value;\n    }\n    const [tableA] = this.#createTables([map]);\n    const key = `alpha_${tableA}`;\n    value = this.#cache.get(key);\n    if (value) {\n      this.#cache.set(map, value);\n      return value;\n    }\n    const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\n    const url = this.#createUrl(id);\n    this.#cache.set(map, url);\n    this.#cache.set(key, url);\n    const filter = this.#createFilter(id);\n    this.#addTransferMapAlphaConversion(tableA, filter);\n    return url;\n  }\n  addLuminosityFilter(map) {\n    let value = this.#cache.get(map || \"luminosity\");\n    if (value) {\n      return value;\n    }\n    let tableA, key;\n    if (map) {\n      [tableA] = this.#createTables([map]);\n      key = `luminosity_${tableA}`;\n    } else {\n      key = \"luminosity\";\n    }\n    value = this.#cache.get(key);\n    if (value) {\n      this.#cache.set(map, value);\n      return value;\n    }\n    const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\n    const url = this.#createUrl(id);\n    this.#cache.set(map, url);\n    this.#cache.set(key, url);\n    const filter = this.#createFilter(id);\n    this.#addLuminosityConversion(filter);\n    if (map) {\n      this.#addTransferMapAlphaConversion(tableA, filter);\n    }\n    return url;\n  }\n  addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n    const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n    let info = this.#hcmCache.get(filterName);\n    if (info?.key === key) {\n      return info.url;\n    }\n    if (info) {\n      info.filter?.remove();\n      info.key = key;\n      info.url = \"none\";\n      info.filter = null;\n    } else {\n      info = {\n        key,\n        url: \"none\",\n        filter: null\n      };\n      this.#hcmCache.set(filterName, info);\n    }\n    if (!fgColor || !bgColor) {\n      return info.url;\n    }\n    const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n    let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]);\n    let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]);\n    let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this));\n    if (bgGray < fgGray) {\n      [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB];\n    }\n    this.#defs.style.color = \"\";\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    const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n    const filter = info.filter = this.#createFilter(id);\n    this.#addGrayConversion(filter);\n    this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter);\n    info.url = this.#createUrl(id);\n    return info.url;\n  }\n  destroy(keepHCM = false) {\n    if (keepHCM && this.#_hcmCache?.size) {\n      return;\n    }\n    this.#_defs?.parentNode.parentNode.remove();\n    this.#_defs = null;\n    this.#_cache?.clear();\n    this.#_cache = null;\n    this.#_hcmCache?.clear();\n    this.#_hcmCache = null;\n    this.#id = 0;\n  }\n  #addLuminosityConversion(filter) {\n    const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n    feColorMatrix.setAttribute(\"type\", \"matrix\");\n    feColorMatrix.setAttribute(\"values\", \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\");\n    filter.append(feColorMatrix);\n  }\n  #addGrayConversion(filter) {\n    const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n    feColorMatrix.setAttribute(\"type\", \"matrix\");\n    feColorMatrix.setAttribute(\"values\", \"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    filter.append(feColorMatrix);\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    return filter;\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  #addTransferMapConversion(rTable, gTable, bTable, filter) {\n    const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n    filter.append(feComponentTransfer);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n  }\n  #addTransferMapAlphaConversion(aTable, filter) {\n    const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n    filter.append(feComponentTransfer);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncA\", aTable);\n  }\n  #getRGB(color) {\n    this.#defs.style.color = color;\n    return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n  }\n}\n\n;// ./src/display/standard_fontdata_factory.js\n\n\nclass BaseStandardFontDataFactory {\n  constructor({\n    baseUrl = null\n  }) {\n    this.baseUrl = baseUrl;\n  }\n  async fetch({\n    filename\n  }) {\n    if (!this.baseUrl) {\n      throw new Error(\"Ensure that the `standardFontDataUrl` API parameter is provided.\");\n    }\n    if (!filename) {\n      throw new Error(\"Font filename must be specified.\");\n    }\n    const url = `${this.baseUrl}${filename}`;\n    return this._fetch(url).catch(reason => {\n      throw new Error(`Unable to load font data at: ${url}`);\n    });\n  }\n  async _fetch(url) {\n    unreachable(\"Abstract method `_fetch` called.\");\n  }\n}\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n  async _fetch(url) {\n    const data = await fetchData(url, \"arraybuffer\");\n    return new Uint8Array(data);\n  }\n}\n\n;// ./src/display/node_utils.js\n\n\n\n\n\nif (isNodeJS) {\n  warn(\"Please use the `legacy` build in Node.js environments.\");\n}\nasync function node_utils_fetchData(url) {\n  const fs = process.getBuiltinModule(\"fs\");\n  const data = await fs.promises.readFile(url);\n  return new Uint8Array(data);\n}\nclass NodeFilterFactory extends BaseFilterFactory {}\nclass NodeCanvasFactory extends BaseCanvasFactory {\n  _createCanvas(width, height) {\n    const require = process.getBuiltinModule(\"module\").createRequire(import.meta.url);\n    const canvas = require(\"@napi-rs/canvas\");\n    return canvas.createCanvas(width, height);\n  }\n}\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n  async _fetch(url) {\n    return node_utils_fetchData(url);\n  }\n}\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n  async _fetch(url) {\n    return node_utils_fetchData(url);\n  }\n}\n\n;// ./src/display/pattern_helper.js\n\n\nconst PathType = {\n  FILL: \"Fill\",\n  STROKE: \"Stroke\",\n  SHADING: \"Shading\"\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}\nclass BaseShadingPattern {\n  getPattern() {\n    unreachable(\"Abstract method `getPattern` called.\");\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  _createGradient(ctx) {\n    let grad;\n    if (this._type === \"axial\") {\n      grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);\n    } else if (this._type === \"radial\") {\n      grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1);\n    }\n    for (const colorStop of this._colorStops) {\n      grad.addColorStop(colorStop[0], colorStop[1]);\n    }\n    return grad;\n  }\n  getPattern(ctx, owner, inverse, pathType) {\n    let pattern;\n    if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n      const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, getCurrentTransform(ctx)) || [0, 0, 0, 0];\n      const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n      const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n      const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", width, height);\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      tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n      inverse = Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n      tmpCtx.transform(...owner.baseTransform);\n      if (this.matrix) {\n        tmpCtx.transform(...this.matrix);\n      }\n      applyBoundingBox(tmpCtx, this._bbox);\n      tmpCtx.fillStyle = this._createGradient(tmpCtx);\n      tmpCtx.fill();\n      pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n      const domMatrix = new DOMMatrix(inverse);\n      pattern.setTransform(domMatrix);\n    } else {\n      applyBoundingBox(ctx, this._bbox);\n      pattern = this._createGradient(ctx);\n    }\n    return pattern;\n  }\n}\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\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  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    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}\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(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n          drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n        }\n      }\n      break;\n    case \"triangles\":\n      for (i = 0, ii = ps.length; i < ii; i += 3) {\n        drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n      }\n      break;\n    default:\n      throw new Error(\"illegal figure\");\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  _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n    const EXPECTED_SCALE = 1.1;\n    const MAX_PATTERN_SIZE = 3000;\n    const BORDER_SIZE = 2;\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    const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n    const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n    const scaleX = boundsWidth / width;\n    const scaleY = boundsHeight / height;\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    const paddedWidth = width + BORDER_SIZE * 2;\n    const paddedHeight = height + BORDER_SIZE * 2;\n    const tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight);\n    const tmpCtx = tmpCanvas.context;\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    return {\n      canvas,\n      offsetX: offsetX - BORDER_SIZE * scaleX,\n      offsetY: offsetY - BORDER_SIZE * scaleY,\n      scaleX,\n      scaleY\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      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    const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);\n    if (pathType !== PathType.SHADING) {\n      ctx.setTransform(...owner.baseTransform);\n      if (this.matrix) {\n        ctx.transform(...this.matrix);\n      }\n    }\n    ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n    ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n    return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n  }\n}\nclass DummyShadingPattern extends BaseShadingPattern {\n  getPattern() {\n    return \"hotpink\";\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}\nconst PaintType = {\n  COLORED: 1,\n  UNCOLORED: 2\n};\nclass TilingPattern {\n  static MAX_PATTERN_SIZE = 3000;\n  constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n    this.operatorList = IR[2];\n    this.matrix = IR[3];\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  createPatternCanvas(owner) {\n    const {\n      bbox,\n      operatorList,\n      paintType,\n      tilingType,\n      color,\n      canvasGraphicsFactory\n    } = this;\n    let {\n      xstep,\n      ystep\n    } = this;\n    xstep = Math.abs(xstep);\n    ystep = Math.abs(ystep);\n    info(\"TilingType: \" + tilingType);\n    const x0 = bbox[0],\n      y0 = bbox[1],\n      x1 = bbox[2],\n      y1 = bbox[3];\n    const width = x1 - x0;\n    const height = y1 - y0;\n    const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n    const curMatrixScale = Util.singularValueDecompose2dScale(this.baseTransform);\n    const combinedScaleX = matrixScale[0] * curMatrixScale[0];\n    const combinedScaleY = matrixScale[1] * curMatrixScale[1];\n    let canvasWidth = width,\n      canvasHeight = height,\n      redrawHorizontally = false,\n      redrawVertically = false;\n    const xScaledStep = Math.ceil(xstep * combinedScaleX);\n    const yScaledStep = Math.ceil(ystep * combinedScaleY);\n    const xScaledWidth = Math.ceil(width * combinedScaleX);\n    const yScaledHeight = Math.ceil(height * combinedScaleY);\n    if (xScaledStep >= xScaledWidth) {\n      canvasWidth = xstep;\n    } else {\n      redrawHorizontally = true;\n    }\n    if (yScaledStep >= yScaledHeight) {\n      canvasHeight = ystep;\n    } else {\n      redrawVertically = true;\n    }\n    const dimx = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n    const dimy = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n    const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size);\n    const tmpCtx = tmpCanvas.context;\n    const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n    graphics.groupLevel = owner.groupLevel;\n    this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n    tmpCtx.translate(-dimx.scale * x0, -dimy.scale * y0);\n    graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n    tmpCtx.save();\n    this.clipBbox(graphics, x0, y0, x1, y1);\n    graphics.baseTransform = getCurrentTransform(graphics.ctx);\n    graphics.executeOperatorList(operatorList);\n    graphics.endDrawing();\n    tmpCtx.restore();\n    if (redrawHorizontally || redrawVertically) {\n      const image = tmpCanvas.canvas;\n      if (redrawHorizontally) {\n        canvasWidth = xstep;\n      }\n      if (redrawVertically) {\n        canvasHeight = ystep;\n      }\n      const dimx2 = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n      const dimy2 = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n      const xSize = dimx2.size;\n      const ySize = dimy2.size;\n      const tmpCanvas2 = owner.cachedCanvases.getCanvas(\"pattern-workaround\", xSize, ySize);\n      const tmpCtx2 = tmpCanvas2.context;\n      const ii = redrawHorizontally ? Math.floor(width / xstep) : 0;\n      const jj = redrawVertically ? Math.floor(height / ystep) : 0;\n      for (let i = 0; i <= ii; i++) {\n        for (let j = 0; j <= jj; j++) {\n          tmpCtx2.drawImage(image, xSize * i, ySize * j, xSize, ySize, 0, 0, xSize, ySize);\n        }\n      }\n      return {\n        canvas: tmpCanvas2.canvas,\n        scaleX: dimx2.scale,\n        scaleY: dimy2.scale,\n        offsetX: x0,\n        offsetY: y0\n      };\n    }\n    return {\n      canvas: tmpCanvas.canvas,\n      scaleX: dimx.scale,\n      scaleY: dimy.scale,\n      offsetX: x0,\n      offsetY: y0\n    };\n  }\n  getSizeAndScale(step, realOutputSize, scale) {\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 {\n      scale,\n      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), [x0, y0, x1, y1]);\n    graphics.clip();\n    graphics.endPath();\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        current.fillColor = cssColor;\n        current.strokeColor = cssColor;\n        break;\n      default:\n        throw new FormatError(`Unsupported paint type: ${paintType}`);\n    }\n  }\n  getPattern(ctx, owner, inverse, pathType) {\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    const temporaryPatternCanvas = this.createPatternCanvas(owner);\n    let domMatrix = new DOMMatrix(matrix);\n    domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n    domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n    const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n    pattern.setTransform(domMatrix);\n    return pattern;\n  }\n}\n\n;// ./src/shared/image_utils.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  return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n  src,\n  srcPos = 0,\n  dest,\n  width,\n  height,\n  nonBlackColor = 0xffffffff,\n  inverseDecode = false\n}) {\n  const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n  const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [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  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 {\n    srcPos,\n    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 len = width * height * 3;\n  const len32 = len >> 2;\n  const src32 = new Uint32Array(src.buffer, srcPos, len32);\n  if (FeatureTest.isLittleEndian) {\n    for (; i < len32 - 2; i += 3, destPos += 4) {\n      const s1 = src32[i];\n      const s2 = src32[i + 1];\n      const s3 = src32[i + 2];\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    for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n      dest[destPos++] = 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];\n      const s2 = src32[i + 1];\n      const s3 = src32[i + 2];\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    for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n      dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff;\n    }\n  }\n  return {\n    srcPos: srcPos + len,\n    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\n;// ./src/display/canvas.js\n\n\n\n\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst MAX_SIZE_TO_COMPILE = 1000;\nconst FULL_CHUNK_HEIGHT = 16;\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  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    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  ctx.save = function ctxSave() {\n    destCtx.save();\n    this.__originalSave();\n  };\n  ctx.restore = function ctxRestore() {\n    destCtx.restore();\n    this.__originalRestore();\n  };\n  ctx.translate = function ctxTranslate(x, y) {\n    destCtx.translate(x, y);\n    this.__originalTranslate(x, y);\n  };\n  ctx.scale = function ctxScale(x, y) {\n    destCtx.scale(x, y);\n    this.__originalScale(x, y);\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  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  ctx.resetTransform = function ctxResetTransform() {\n    destCtx.resetTransform();\n    this.__originalResetTransform();\n  };\n  ctx.rotate = function ctxRotate(angle) {\n    destCtx.rotate(angle);\n    this.__originalRotate(angle);\n  };\n  ctx.clip = function ctxRotate(rule) {\n    destCtx.clip(rule);\n    this.__originalClip(rule);\n  };\n  ctx.moveTo = function (x, y) {\n    destCtx.moveTo(x, y);\n    this.__originalMoveTo(x, y);\n  };\n  ctx.lineTo = function (x, y) {\n    destCtx.lineTo(x, y);\n    this.__originalLineTo(x, y);\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  ctx.rect = function (x, y, width, height) {\n    destCtx.rect(x, y, width, height);\n    this.__originalRect(x, y, width, height);\n  };\n  ctx.closePath = function () {\n    destCtx.closePath();\n    this.__originalClosePath();\n  };\n  ctx.beginPath = function () {\n    destCtx.beginPath();\n    this.__originalBeginPath();\n  };\n}\nclass CachedCanvases {\n  constructor(canvasFactory) {\n    this.canvasFactory = canvasFactory;\n    this.cache = Object.create(null);\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  delete(id) {\n    delete this.cache[id];\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}\nfunction drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {\n  const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n  if (b === 0 && c === 0) {\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    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    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    return [rWidth, rHeight];\n  }\n  if (a === 0 && d === 0) {\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    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    return [rHeight, rWidth];\n  }\n  ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n  const scaleX = Math.hypot(a, b);\n  const scaleY = Math.hypot(c, d);\n  return [scaleX * destW, scaleY * destH];\n}\nfunction compileType3Glyph(imgData) {\n  const {\n    width,\n    height\n  } = imgData;\n  if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n    return null;\n  }\n  const POINT_TO_PROCESS_LIMIT = 1000;\n  const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n  const width1 = width + 1;\n  let points = new Uint8Array(width1 * (height + 1));\n  let i, j, j0;\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  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    let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n    for (j = 1; j < width; j++) {\n      sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (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    if (count > POINT_TO_PROCESS_LIMIT) {\n      return null;\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  const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n  const path = new Path2D();\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    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      const pp = points[p];\n      if (pp !== 5 && pp !== 10) {\n        type = pp;\n        points[p] = 0;\n      } else {\n        type = pp & 0x33 * type >> 4;\n        points[p] &= type >> 2 | type << 2;\n      }\n      path.lineTo(p % width1, p / width1 | 0);\n      if (!points[p]) {\n        --count;\n      }\n    } while (p0 !== p);\n    --i;\n  }\n  data = null;\n  points = null;\n  const drawOutline = function (c) {\n    c.save();\n    c.scale(1 / width, -1 / height);\n    c.translate(0, -height);\n    c.fill(path);\n    c.beginPath();\n    c.restore();\n  };\n  return drawOutline;\n}\nclass CanvasExtraState {\n  constructor(width, height) {\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    this.x = 0;\n    this.y = 0;\n    this.lineX = 0;\n    this.lineY = 0;\n    this.charSpacing = 0;\n    this.wordSpacing = 0;\n    this.textHScale = 1;\n    this.textRenderingMode = TextRenderingMode.FILL;\n    this.textRise = 0;\n    this.fillColor = \"#000000\";\n    this.strokeColor = \"#000000\";\n    this.patternFill = false;\n    this.patternStroke = false;\n    this.fillAlpha = 1;\n    this.strokeAlpha = 1;\n    this.lineWidth = 1;\n    this.activeSMask = null;\n    this.transferMaps = \"none\";\n    this.startNewPathAndClipBox([0, 0, width, height]);\n  }\n  clone() {\n    const clone = Object.create(this);\n    clone.clipBox = this.clipBox.slice();\n    return clone;\n  }\n  setCurrentPoint(x, y) {\n    this.x = x;\n    this.y = y;\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  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    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  updateScalingPathMinMax(transform, minMax) {\n    Util.scaleMinMax(transform, minMax);\n    this.minX = Math.min(this.minX, minMax[0]);\n    this.minY = Math.min(this.minY, minMax[1]);\n    this.maxX = Math.max(this.maxX, minMax[2]);\n    this.maxY = Math.max(this.maxY, minMax[3]);\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, minMax);\n    if (minMax) {\n      return;\n    }\n    this.updateRectMinMax(transform, box);\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      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  updateClipFromPath() {\n    const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n    this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n  }\n  isEmptyClip() {\n    return this.minX === Infinity;\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  getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n    return Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n  }\n}\nfunction putBinaryImageData(ctx, imgData) {\n  if (imgData instanceof ImageData) {\n    ctx.putImageData(imgData, 0, 0);\n    return;\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  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  if (imgData.kind === util_ImageKind.GRAYSCALE_1BPP) {\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 = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\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          dest32[destPos++] = srcByte & mask ? white : black;\n          mask >>= 1;\n        }\n      }\n      while (destPos < dest32DataLength) {\n        dest32[destPos++] = 0;\n      }\n      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n    }\n  } else if (imgData.kind === util_ImageKind.RGBA_32BPP) {\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      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      ctx.putImageData(chunkImgData, 0, j);\n    }\n  } else if (imgData.kind === util_ImageKind.RGB_24BPP) {\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      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      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n    }\n  } else {\n    throw new Error(`bad image kind: ${imgData.kind}`);\n  }\n}\nfunction putBinaryImageMask(ctx, imgData) {\n  if (imgData.bitmap) {\n    ctx.drawImage(imgData.bitmap, 0, 0);\n    return;\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  const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n  let srcPos = 0;\n  const src = imgData.data;\n  const dest = chunkImgData.data;\n  for (let i = 0; i < totalChunks; i++) {\n    const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n    ({\n      srcPos\n    } = convertBlackAndWhiteToRGBA({\n      src,\n      srcPos,\n      dest,\n      width,\n      height: thisChunkHeight,\n      nonBlackColor: 0\n    }));\n    ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n  }\n}\nfunction copyCtxState(sourceCtx, destCtx) {\n  const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\", \"filter\"];\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}\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 (!isNodeJS) {\n    const {\n      filter\n    } = ctx;\n    if (filter !== \"none\" && filter !== \"\") {\n      ctx.filter = \"none\";\n    }\n  }\n}\nfunction getImageSmoothingEnabled(transform, interpolate) {\n  if (interpolate) {\n    return true;\n  }\n  const scale = Util.singularValueDecompose2dScale(transform);\n  scale[0] = Math.fround(scale[0]);\n  scale[1] = Math.fround(scale[1]);\n  const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * PixelsPerInch.PDF_TO_CSS_UNITS);\n  return scale[0] <= actualScale && scale[1] <= actualScale;\n}\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\nclass CanvasGraphics {\n  constructor(canvasCtx, commonObjs, objs, canvasFactory, filterFactory, {\n    optionalContentConfig,\n    markedContentStack = null\n  }, annotationCanvasMap, pageColors) {\n    this.ctx = canvasCtx;\n    this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\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    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    this._cachedScaleForStroking = [-1, 0];\n    this._cachedGetSinglePixelWidth = null;\n    this._cachedBitmapsMap = new Map();\n  }\n  getObject(data, fallback = null) {\n    if (typeof data === \"string\") {\n      return data.startsWith(\"g_\") ? this.commonObjs.get(data) : this.objs.get(data);\n    }\n    return fallback;\n  }\n  beginDrawing({\n    transform,\n    viewport,\n    transparency = false,\n    background = null\n  }) {\n    const width = this.ctx.canvas.width;\n    const height = this.ctx.canvas.height;\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    if (transparency) {\n      const transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height);\n      this.compositeCtx = this.ctx;\n      this.transparentCanvas = transparentCanvas.canvas;\n      this.ctx = transparentCanvas.context;\n      this.ctx.save();\n      this.ctx.transform(...getCurrentTransform(this.compositeCtx));\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    this.baseTransform = getCurrentTransform(this.ctx);\n  }\n  executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {\n    const argsArray = operatorList.argsArray;\n    const fnArray = operatorList.fnArray;\n    let i = executionStartIdx || 0;\n    const argsArrayLen = argsArray.length;\n    if (argsArrayLen === i) {\n      return i;\n    }\n    const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n    const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n    let steps = 0;\n    const commonObjs = this.commonObjs;\n    const objs = this.objs;\n    let fnId;\n    while (true) {\n      if (stepper !== undefined && i === stepper.nextBreakPoint) {\n        stepper.breakIt(i, continueCallback);\n        return i;\n      }\n      fnId = fnArray[i];\n      if (fnId !== OPS.dependency) {\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          if (!objsPool.has(depObjId)) {\n            objsPool.get(depObjId, continueCallback);\n            return i;\n          }\n        }\n      }\n      i++;\n      if (i === argsArrayLen) {\n        return i;\n      }\n      if (chunkOperations && ++steps > EXECUTION_STEPS) {\n        if (Date.now() > endTime) {\n          continueCallback();\n          return i;\n        }\n        steps = 0;\n      }\n    }\n  }\n  #restoreInitialState() {\n    while (this.stateStack.length || this.inSMaskMode) {\n      this.restore();\n    }\n    this.current.activeSMask = null;\n    this.ctx.restore();\n    if (this.transparentCanvas) {\n      this.ctx = this.compositeCtx;\n      this.ctx.save();\n      this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n      this.ctx.drawImage(this.transparentCanvas, 0, 0);\n      this.ctx.restore();\n      this.transparentCanvas = null;\n    }\n  }\n  endDrawing() {\n    this.#restoreInitialState();\n    this.cachedCanvases.clear();\n    this.cachedPatterns.clear();\n    for (const cache of this._cachedBitmapsMap.values()) {\n      for (const canvas of cache.values()) {\n        if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement) {\n          canvas.width = canvas.height = 0;\n        }\n      }\n      cache.clear();\n    }\n    this._cachedBitmapsMap.clear();\n    this.#drawFilter();\n  }\n  #drawFilter() {\n    if (this.pageColors) {\n      const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\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  _scaleImage(img, inverseTransform) {\n    const width = img.width ?? img.displayWidth;\n    const height = img.height ?? img.displayHeight;\n    let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n    let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n    let paintWidth = width,\n      paintHeight = height;\n    let tmpCanvasId = \"prescale1\";\n    let tmpCanvas, tmpCtx;\n    while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n      let newWidth = paintWidth,\n        newHeight = paintHeight;\n      if (widthScale > 2 && paintWidth > 1) {\n        newWidth = paintWidth >= 16384 ? Math.floor(paintWidth / 2) - 1 || 1 : Math.ceil(paintWidth / 2);\n        widthScale /= paintWidth / newWidth;\n      }\n      if (heightScale > 2 && paintHeight > 1) {\n        newHeight = paintHeight >= 16384 ? Math.floor(paintHeight / 2) - 1 || 1 : Math.ceil(paintHeight) / 2;\n        heightScale /= paintHeight / newHeight;\n      }\n      tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n      tmpCtx = tmpCanvas.context;\n      tmpCtx.clearRect(0, 0, newWidth, newHeight);\n      tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\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  _createMaskCanvas(img) {\n    const ctx = this.ctx;\n    const {\n      width,\n      height\n    } = img;\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n    const currentTransform = getCurrentTransform(ctx);\n    let cache, cacheKey, scaled, maskCanvas;\n    if ((img.bitmap || img.data) && img.count > 1) {\n      const mainKey = img.bitmap || img.data.buffer;\n      cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), fillColor]);\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(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);\n        const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]);\n        return {\n          canvas: cachedImage,\n          offsetX,\n          offsetY\n        };\n      }\n      scaled = cachedImage;\n    }\n    if (!scaled) {\n      maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n      putBinaryImageMask(maskCanvas.context, img);\n    }\n    let maskToCanvas = Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);\n    maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n    const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox([0, 0, width, height], maskToCanvas);\n    const drawnWidth = Math.round(maxX - minX) || 1;\n    const drawnHeight = Math.round(maxY - minY) || 1;\n    const fillCanvas = this.cachedCanvases.getCanvas(\"fillCanvas\", drawnWidth, drawnHeight);\n    const fillCtx = fillCanvas.context;\n    const offsetX = minX;\n    const offsetY = minY;\n    fillCtx.translate(-offsetX, -offsetY);\n    fillCtx.transform(...maskToCanvas);\n    if (!scaled) {\n      scaled = this._scaleImage(maskCanvas.canvas, getCurrentTransformInverse(fillCtx));\n      scaled = scaled.img;\n      if (cache && isPatternFill) {\n        cache.set(cacheKey, scaled);\n      }\n    }\n    fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(fillCtx), img.interpolate);\n    drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height);\n    fillCtx.globalCompositeOperation = \"source-in\";\n    const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]);\n    fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, PathType.FILL) : fillColor;\n    fillCtx.fillRect(0, 0, width, height);\n    if (cache && !isPatternFill) {\n      this.cachedCanvases.delete(\"fillCanvas\");\n      cache.set(cacheKey, fillCanvas.canvas);\n    }\n    return {\n      canvas: fillCanvas.canvas,\n      offsetX: Math.round(offsetX),\n      offsetY: Math.round(offsetY)\n    };\n  }\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  setLineCap(style) {\n    this.ctx.lineCap = LINE_CAP_STYLES[style];\n  }\n  setLineJoin(style) {\n    this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n  }\n  setMiterLimit(limit) {\n    this.ctx.miterLimit = limit;\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  setRenderingIntent(intent) {}\n  setFlatness(flatness) {}\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 = this.filterFactory.addFilter(value);\n          break;\n      }\n    }\n  }\n  get inSMaskMode() {\n    return !!this.suspendedCtx;\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  }\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(cacheId, drawnWidth, drawnHeight);\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    this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n  }\n  endSMaskMode() {\n    if (!this.inSMaskMode) {\n      throw new Error(\"endSMaskMode called while not in smask mode\");\n    }\n    this.ctx._removeMirroring();\n    copyCtxState(this.ctx, this.suspendedCtx);\n    this.ctx = this.suspendedCtx;\n    this.suspendedCtx = null;\n  }\n  compose(dirtyBox) {\n    if (!this.current.activeSMask) {\n      return;\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    this.composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\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  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    this.genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);\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  genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n    let maskCanvas = maskCtx.canvas;\n    let maskX = layerOffsetX - maskOffsetX;\n    let maskY = layerOffsetY - maskOffsetY;\n    if (backdrop) {\n      const backdropRGB = Util.makeHexColor(...backdrop);\n      if (maskX < 0 || maskY < 0 || maskX + width > maskCanvas.width || maskY + height > maskCanvas.height) {\n        const canvas = this.cachedCanvases.getCanvas(\"maskExtension\", width, height);\n        const ctx = canvas.context;\n        ctx.drawImage(maskCanvas, -maskX, -maskY);\n        ctx.globalCompositeOperation = \"destination-atop\";\n        ctx.fillStyle = backdropRGB;\n        ctx.fillRect(0, 0, width, height);\n        ctx.globalCompositeOperation = \"source-over\";\n        maskCanvas = canvas.canvas;\n        maskX = maskY = 0;\n      } else {\n        maskCtx.save();\n        maskCtx.globalAlpha = 1;\n        maskCtx.setTransform(1, 0, 0, 1, 0, 0);\n        const clip = new Path2D();\n        clip.rect(maskX, maskY, width, height);\n        maskCtx.clip(clip);\n        maskCtx.globalCompositeOperation = \"destination-atop\";\n        maskCtx.fillStyle = backdropRGB;\n        maskCtx.fillRect(maskX, maskY, width, height);\n        maskCtx.restore();\n      }\n    }\n    layerCtx.save();\n    layerCtx.globalAlpha = 1;\n    layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n    if (subtype === \"Alpha\" && transferMap) {\n      layerCtx.filter = this.filterFactory.addAlphaFilter(transferMap);\n    } else if (subtype === \"Luminosity\") {\n      layerCtx.filter = this.filterFactory.addLuminosityFilter(transferMap);\n    }\n    const clip = new Path2D();\n    clip.rect(layerOffsetX, layerOffsetY, width, height);\n    layerCtx.clip(clip);\n    layerCtx.globalCompositeOperation = \"destination-in\";\n    layerCtx.drawImage(maskCanvas, maskX, maskY, width, height, layerOffsetX, layerOffsetY, width, height);\n    layerCtx.restore();\n  }\n  save() {\n    if (this.inSMaskMode) {\n      copyCtxState(this.ctx, this.suspendedCtx);\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  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        this.suspendedCtx.restore();\n        copyCtxState(this.suspendedCtx, this.ctx);\n      } else {\n        this.ctx.restore();\n      }\n      this.checkSMaskState();\n      this.pendingClip = null;\n      this._cachedScaleForStroking[0] = -1;\n      this._cachedGetSinglePixelWidth = null;\n    }\n  }\n  transform(a, b, c, d, e, f) {\n    this.ctx.transform(a, b, c, d, e, f);\n    this._cachedScaleForStroking[0] = -1;\n    this._cachedGetSinglePixelWidth = null;\n  }\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    const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0;\n    const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\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          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(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);\n          current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier);\n          j += 6;\n          break;\n        case OPS.curveTo2:\n          startX = x;\n          startY = y;\n          ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);\n          current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier);\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(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier);\n          j += 4;\n          break;\n        case OPS.closePath:\n          ctx.closePath();\n          break;\n      }\n    }\n    if (isScalingMatrix) {\n      current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\n    }\n    current.setCurrentPoint(x, y);\n  }\n  closePath() {\n    this.ctx.closePath();\n  }\n  stroke(consumePath = true) {\n    const ctx = this.ctx;\n    const strokeColor = this.current.strokeColor;\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(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE);\n        this.rescaleAndStroke(false);\n        ctx.restore();\n      } else {\n        this.rescaleAndStroke(true);\n      }\n    }\n    if (consumePath) {\n      this.consumePath(this.current.getClippedPathBoundingBox());\n    }\n    ctx.globalAlpha = this.current.fillAlpha;\n  }\n  closeStroke() {\n    this.closePath();\n    this.stroke();\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    if (isPatternFill) {\n      ctx.save();\n      ctx.fillStyle = fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n      needRestore = true;\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    if (needRestore) {\n      ctx.restore();\n    }\n    if (consumePath) {\n      this.consumePath(intersect);\n    }\n  }\n  eoFill() {\n    this.pendingEOFill = true;\n    this.fill();\n  }\n  fillStroke() {\n    this.fill(false);\n    this.stroke(false);\n    this.consumePath();\n  }\n  eoFillStroke() {\n    this.pendingEOFill = true;\n    this.fillStroke();\n  }\n  closeFillStroke() {\n    this.closePath();\n    this.fillStroke();\n  }\n  closeEOFillStroke() {\n    this.pendingEOFill = true;\n    this.closePath();\n    this.fillStroke();\n  }\n  endPath() {\n    this.consumePath();\n  }\n  clip() {\n    this.pendingClip = NORMAL_CLIP;\n  }\n  eoClip() {\n    this.pendingClip = EO_CLIP;\n  }\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  endText() {\n    const paths = this.pendingTextPaths;\n    const ctx = this.ctx;\n    if (paths === undefined) {\n      ctx.beginPath();\n      return;\n    }\n    const newPath = new Path2D();\n    const invTransf = ctx.getTransform().invertSelf();\n    for (const {\n      transform,\n      x,\n      y,\n      fontSize,\n      path\n    } of paths) {\n      newPath.addPath(path, new DOMMatrix(transform).preMultiplySelf(invTransf).translate(x, y).scale(fontSize, -fontSize));\n    }\n    ctx.clip(newPath);\n    ctx.beginPath();\n    delete this.pendingTextPaths;\n  }\n  setCharSpacing(spacing) {\n    this.current.charSpacing = spacing;\n  }\n  setWordSpacing(spacing) {\n    this.current.wordSpacing = spacing;\n  }\n  setHScale(scale) {\n    this.current.textHScale = scale / 100;\n  }\n  setLeading(leading) {\n    this.current.leading = -leading;\n  }\n  setFont(fontRefName, size) {\n    const fontObj = this.commonObjs.get(fontRefName);\n    const current = this.current;\n    if (!fontObj) {\n      throw new Error(`Can't find font for ${fontRefName}`);\n    }\n    current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n    if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n      warn(\"Invalid font matrix for font \" + fontRefName);\n    }\n    if (size < 0) {\n      size = -size;\n      current.fontDirection = -1;\n    } else {\n      current.fontDirection = 1;\n    }\n    this.current.font = fontObj;\n    this.current.fontSize = size;\n    if (fontObj.isType3Font) {\n      return;\n    }\n    const name = fontObj.loadedName || \"sans-serif\";\n    const typeface = fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\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    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    this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n  }\n  setTextRenderingMode(mode) {\n    this.current.textRenderingMode = mode;\n  }\n  setTextRise(rise) {\n    this.current.textRise = rise;\n  }\n  moveText(x, y) {\n    this.current.x = this.current.lineX += x;\n    this.current.y = this.current.lineY += y;\n  }\n  setLeadingMoveText(x, y) {\n    this.setLeading(-y);\n    this.moveText(x, y);\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    this.current.x = this.current.lineX = 0;\n    this.current.y = this.current.lineY = 0;\n  }\n  nextLine() {\n    this.moveText(0, this.current.leading);\n  }\n  #getScaledPath(path, currentTransform, transform) {\n    const newPath = new Path2D();\n    newPath.addPath(path, new DOMMatrix(transform).invertSelf().multiplySelf(currentTransform));\n    return newPath;\n  }\n  paintChar(character, x, y, patternFillTransform, patternStrokeTransform) {\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 = textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n    const isAddToPathSet = !!(textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n    const patternFill = current.patternFill && !font.missingFile;\n    const patternStroke = current.patternStroke && !font.missingFile;\n    let path;\n    if (font.disableFontFace || isAddToPathSet || patternFill || patternStroke) {\n      path = font.getPathGenerator(this.commonObjs, character);\n    }\n    if (font.disableFontFace || patternFill || patternStroke) {\n      ctx.save();\n      ctx.translate(x, y);\n      ctx.scale(fontSize, -fontSize);\n      if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n        if (patternFillTransform) {\n          const currentTransform = ctx.getTransform();\n          ctx.setTransform(...patternFillTransform);\n          ctx.fill(this.#getScaledPath(path, currentTransform, patternFillTransform));\n        } else {\n          ctx.fill(path);\n        }\n      }\n      if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n        if (patternStrokeTransform) {\n          const currentTransform = ctx.getTransform();\n          ctx.setTransform(...patternStrokeTransform);\n          ctx.stroke(this.#getScaledPath(path, currentTransform, patternStrokeTransform));\n        } else {\n          ctx.lineWidth /= fontSize;\n          ctx.stroke(path);\n        }\n      }\n      ctx.restore();\n    } else {\n      if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n        ctx.fillText(character, x, y);\n      }\n      if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n        ctx.strokeText(character, x, y);\n      }\n    }\n    if (isAddToPathSet) {\n      const paths = this.pendingTextPaths ||= [];\n      paths.push({\n        transform: getCurrentTransform(ctx),\n        x,\n        y,\n        fontSize,\n        path\n      });\n    }\n  }\n  get isFontSubpixelAAEnabled() {\n    const {\n      context: ctx\n    } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10);\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  showText(glyphs) {\n    const current = this.current;\n    const font = current.font;\n    if (font.isType3Font) {\n      return this.showType3Text(glyphs);\n    }\n    const fontSize = current.fontSize;\n    if (fontSize === 0) {\n      return undefined;\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    const simpleFillText = current.textRenderingMode === TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n    ctx.save();\n    ctx.transform(...current.textMatrix);\n    ctx.translate(current.x, current.y + current.textRise);\n    if (fontDirection > 0) {\n      ctx.scale(textHScale, -1);\n    } else {\n      ctx.scale(textHScale, 1);\n    }\n    let patternFillTransform, patternStrokeTransform;\n    if (current.patternFill) {\n      ctx.save();\n      const pattern = current.fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n      patternFillTransform = getCurrentTransform(ctx);\n      ctx.restore();\n      ctx.fillStyle = pattern;\n    }\n    if (current.patternStroke) {\n      ctx.save();\n      const pattern = current.strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE);\n      patternStrokeTransform = getCurrentTransform(ctx);\n      ctx.restore();\n      ctx.strokeStyle = pattern;\n    }\n    let lineWidth = current.lineWidth;\n    const scale = current.textMatrixScale;\n    if (scale === 0 || lineWidth === 0) {\n      const fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n      if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n        lineWidth = this.getSinglePixelWidth();\n      }\n    } else {\n      lineWidth /= scale;\n    }\n    if (fontSizeScale !== 1.0) {\n      ctx.scale(fontSizeScale, fontSizeScale);\n      lineWidth /= fontSizeScale;\n    }\n    ctx.lineWidth = lineWidth;\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      return undefined;\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      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 = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n        const vy = vmetric[2] * widthAdvanceScale;\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      if (font.remeasure && width > 0) {\n        const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * 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 += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n        }\n      }\n      if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n        if (simpleFillText && !accent) {\n          ctx.fillText(character, scaledX, scaledY);\n        } else {\n          this.paintChar(character, scaledX, scaledY, patternFillTransform, patternStrokeTransform);\n          if (accent) {\n            const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n            const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n            this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternFillTransform, patternStrokeTransform);\n          }\n        }\n      }\n      const charWidth = vertical ? width * widthAdvanceScale - spacing * fontDirection : width * widthAdvanceScale + spacing * fontDirection;\n      x += charWidth;\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    return undefined;\n  }\n  showType3Text(glyphs) {\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 = current.textRenderingMode === TextRenderingMode.INVISIBLE;\n    let i, glyph, width, spacingLength;\n    if (isTextInvisible || fontSize === 0) {\n      return;\n    }\n    this._cachedScaleForStroking[0] = -1;\n    this._cachedGetSinglePixelWidth = null;\n    ctx.save();\n    ctx.transform(...current.textMatrix);\n    ctx.translate(current.x, current.y);\n    ctx.scale(textHScale, fontDirection);\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      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      const transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n      width = transformed[0] * fontSize + spacing;\n      ctx.translate(width, 0);\n      current.x += width * textHScale;\n    }\n    ctx.restore();\n    this.processingType3 = null;\n  }\n  setCharWidth(xWidth, yWidth) {}\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  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 => new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n          optionalContentConfig: this.optionalContentConfig,\n          markedContentStack: this.markedContentStack\n        })\n      };\n      pattern = new TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);\n    } else {\n      pattern = this._getPattern(IR[1], IR[2]);\n    }\n    return pattern;\n  }\n  setStrokeColorN() {\n    this.current.strokeColor = this.getColorN_Pattern(arguments);\n    this.current.patternStroke = true;\n  }\n  setFillColorN() {\n    this.current.fillColor = this.getColorN_Pattern(arguments);\n    this.current.patternFill = true;\n  }\n  setStrokeRGBColor(r, g, b) {\n    this.ctx.strokeStyle = this.current.strokeColor = Util.makeHexColor(r, g, b);\n    this.current.patternStroke = false;\n  }\n  setStrokeTransparent() {\n    this.ctx.strokeStyle = this.current.strokeColor = \"transparent\";\n    this.current.patternStroke = false;\n  }\n  setFillRGBColor(r, g, b) {\n    this.ctx.fillStyle = this.current.fillColor = Util.makeHexColor(r, g, b);\n    this.current.patternFill = false;\n  }\n  setFillTransparent() {\n    this.ctx.fillStyle = this.current.fillColor = \"transparent\";\n    this.current.patternFill = false;\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  shadingFill(objId) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const ctx = this.ctx;\n    this.save();\n    const pattern = this._getPattern(objId);\n    ctx.fillStyle = pattern.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.SHADING);\n    const inv = getCurrentTransformInverse(ctx);\n    if (inv) {\n      const {\n        width,\n        height\n      } = ctx.canvas;\n      const [x0, y0, x1, y1] = Util.getAxialAlignedBoundingBox([0, 0, width, height], inv);\n      this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n    } else {\n      this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n    }\n    this.compose(this.current.getClippedPathBoundingBox());\n    this.restore();\n  }\n  beginInlineImage() {\n    unreachable(\"Should not call beginInlineImage\");\n  }\n  beginImageData() {\n    unreachable(\"Should not call beginImageData\");\n  }\n  paintFormXObjectBegin(matrix, bbox) {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.save();\n    this.baseTransformStack.push(this.baseTransform);\n    if (matrix) {\n      this.transform(...matrix);\n    }\n    this.baseTransform = getCurrentTransform(this.ctx);\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  paintFormXObjectEnd() {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.restore();\n    this.baseTransform = this.baseTransformStack.pop();\n  }\n  beginGroup(group) {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.save();\n    if (this.inSMaskMode) {\n      this.endSMaskMode();\n      this.current.activeSMask = null;\n    }\n    const currentCtx = this.ctx;\n    if (!group.isolated) {\n      info(\"TODO: Support non-isolated groups.\");\n    }\n    if (group.knockout) {\n      warn(\"Knockout groups not supported.\");\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    let bounds = Util.getAxialAlignedBoundingBox(group.bbox, getCurrentTransform(currentCtx));\n    const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n    bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n    const offsetX = Math.floor(bounds[0]);\n    const offsetY = Math.floor(bounds[1]);\n    const drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n    const drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n    this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n    let cacheId = \"groupAt\" + this.groupLevel;\n    if (group.smask) {\n      cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n    }\n    const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n    const groupCtx = scratchCanvas.context;\n    groupCtx.translate(-offsetX, -offsetY);\n    groupCtx.transform(...currentTransform);\n    if (group.smask) {\n      this.smaskStack.push({\n        canvas: scratchCanvas.canvas,\n        context: groupCtx,\n        offsetX,\n        offsetY,\n        subtype: group.smask.subtype,\n        backdrop: group.smask.backdrop,\n        transferMap: group.smask.transferMap || null,\n        startTransformInverse: null\n      });\n    } else {\n      currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n      currentCtx.translate(offsetX, offsetY);\n      currentCtx.save();\n    }\n    copyCtxState(currentCtx, groupCtx);\n    this.ctx = groupCtx;\n    this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n    this.groupStack.push(currentCtx);\n    this.groupLevel++;\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    this.ctx.imageSmoothingEnabled = false;\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([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx);\n      this.ctx.drawImage(groupCtx.canvas, 0, 0);\n      this.ctx.restore();\n      this.compose(dirtyBox);\n    }\n  }\n  beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n    this.#restoreInitialState();\n    resetCtxToDefault(this.ctx);\n    this.ctx.save();\n    this.save();\n    if (this.baseTransform) {\n      this.ctx.setTransform(...this.baseTransform);\n    }\n    if (rect) {\n      const width = rect[2] - rect[0];\n      const height = rect[3] - rect[1];\n      if (hasOwnCanvas && this.annotationCanvasMap) {\n        transform = transform.slice();\n        transform[4] -= rect[0];\n        transform[5] -= rect[1];\n        rect = rect.slice();\n        rect[0] = rect[1] = 0;\n        rect[2] = width;\n        rect[3] = height;\n        const [scaleX, scaleY] = Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx));\n        const {\n          viewportScale\n        } = this;\n        const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);\n        const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);\n        this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);\n        const {\n          canvas,\n          context\n        } = 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        resetCtxToDefault(this.ctx);\n      } else {\n        resetCtxToDefault(this.ctx);\n        this.endPath();\n        this.ctx.rect(rect[0], rect[1], width, height);\n        this.ctx.clip();\n        this.ctx.beginPath();\n      }\n    }\n    this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n    this.transform(...transform);\n    this.transform(...matrix);\n  }\n  endAnnotation() {\n    if (this.annotationCanvas) {\n      this.ctx.restore();\n      this.#drawFilter();\n      this.ctx = this.annotationCanvas.savedCtx;\n      delete this.annotationCanvas.savedCtx;\n      delete this.annotationCanvas;\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    const ctx = this.ctx;\n    const glyph = this.processingType3;\n    if (glyph) {\n      if (glyph.compiled === undefined) {\n        glyph.compiled = compileType3Glyph(img);\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    ctx.save();\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  paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n    if (!this.contentVisible) {\n      return;\n    }\n    img = this.getObject(img.data, img);\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    ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\n    for (let i = 0, ii = positions.length; i < ii; i += 2) {\n      const trans = Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\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  paintImageMaskXObjectGroup(images) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const ctx = this.ctx;\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n    for (const image of images) {\n      const {\n        data,\n        width,\n        height,\n        transform\n      } = image;\n      const maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n      const maskCtx = maskCanvas.context;\n      maskCtx.save();\n      const img = this.getObject(data, image);\n      putBinaryImageMask(maskCtx, img);\n      maskCtx.globalCompositeOperation = \"source-in\";\n      maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, getCurrentTransformInverse(ctx), PathType.FILL) : fillColor;\n      maskCtx.fillRect(0, 0, width, height);\n      maskCtx.restore();\n      ctx.save();\n      ctx.transform(...transform);\n      ctx.scale(1, -1);\n      drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n      ctx.restore();\n    }\n    this.compose();\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    this.paintInlineImageXObject(imgData);\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    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  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  applyTransferMapsToBitmap(imgData) {\n    if (this.current.transferMaps === \"none\") {\n      return imgData.bitmap;\n    }\n    const {\n      bitmap,\n      width,\n      height\n    } = imgData;\n    const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n    const tmpCtx = tmpCanvas.context;\n    tmpCtx.filter = this.current.transferMaps;\n    tmpCtx.drawImage(bitmap, 0, 0);\n    tmpCtx.filter = \"none\";\n    return tmpCanvas.canvas;\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    this.save();\n    if (!isNodeJS) {\n      const {\n        filter\n      } = ctx;\n      if (filter !== \"none\" && filter !== \"\") {\n        ctx.filter = \"none\";\n      }\n    }\n    ctx.scale(1 / width, -1 / height);\n    let imgToPaint;\n    if (imgData.bitmap) {\n      imgToPaint = this.applyTransferMapsToBitmap(imgData);\n    } else if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n      imgToPaint = imgData;\n    } else {\n      const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n      const tmpCtx = tmpCanvas.context;\n      putBinaryImageData(tmpCtx, imgData);\n      imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n    }\n    const scaled = this._scaleImage(imgToPaint, getCurrentTransformInverse(ctx));\n    ctx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(ctx), imgData.interpolate);\n    drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n    this.compose();\n    this.restore();\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      const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n      const tmpCtx = tmpCanvas.context;\n      putBinaryImageData(tmpCtx, imgData);\n      imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n    }\n    for (const entry of map) {\n      ctx.save();\n      ctx.transform(...entry.transform);\n      ctx.scale(1, -1);\n      drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n      ctx.restore();\n    }\n    this.compose();\n  }\n  paintSolidColorImageMask() {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.ctx.fillRect(0, 0, 1, 1);\n    this.compose();\n  }\n  markPoint(tag) {}\n  markPointProps(tag, properties) {}\n  beginMarkedContent(tag) {\n    this.markedContentStack.push({\n      visible: true\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  endMarkedContent() {\n    this.markedContentStack.pop();\n    this.contentVisible = this.isContentVisible();\n  }\n  beginCompat() {}\n  endCompat() {}\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  getSinglePixelWidth() {\n    if (!this._cachedGetSinglePixelWidth) {\n      const m = getCurrentTransform(this.ctx);\n      if (m[1] === 0 && m[2] === 0) {\n        this._cachedGetSinglePixelWidth = 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  getScaleForStroking() {\n    if (this._cachedScaleForStroking[0] === -1) {\n      const {\n        lineWidth\n      } = this.current;\n      const {\n        a,\n        b,\n        c,\n        d\n      } = this.ctx.getTransform();\n      let scaleX, scaleY;\n      if (b === 0 && c === 0) {\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        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  rescaleAndStroke(saveRestore) {\n    const {\n      ctx\n    } = this;\n    const {\n      lineWidth\n    } = this.current;\n    const [scaleX, scaleY] = this.getScaleForStroking();\n    ctx.lineWidth = lineWidth || 1;\n    if (scaleX === 1 && scaleY === 1) {\n      ctx.stroke();\n      return;\n    }\n    const dashes = ctx.getLineDash();\n    if (saveRestore) {\n      ctx.save();\n    }\n    ctx.scale(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    ctx.stroke();\n    if (saveRestore) {\n      ctx.restore();\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}\nfor (const op in OPS) {\n  if (CanvasGraphics.prototype[op] !== undefined) {\n    CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n  }\n}\n\n;// ./src/display/worker_options.js\nclass GlobalWorkerOptions {\n  static #port = null;\n  static #src = \"\";\n  static get workerPort() {\n    return this.#port;\n  }\n  static set workerPort(val) {\n    if (!(typeof Worker !== \"undefined\" && val instanceof Worker) && val !== null) {\n      throw new Error(\"Invalid `workerPort` type.\");\n    }\n    this.#port = val;\n  }\n  static get workerSrc() {\n    return this.#src;\n  }\n  static set workerSrc(val) {\n    if (typeof val !== \"string\") {\n      throw new Error(\"Invalid `workerSrc` type.\");\n    }\n    this.#src = val;\n  }\n}\n\n;// ./src/display/metadata.js\n\nclass Metadata {\n  #metadataMap;\n  #data;\n  constructor({\n    parsedData,\n    rawData\n  }) {\n    this.#metadataMap = parsedData;\n    this.#data = rawData;\n  }\n  getRaw() {\n    return this.#data;\n  }\n  get(name) {\n    return this.#metadataMap.get(name) ?? null;\n  }\n  getAll() {\n    return objectFromMap(this.#metadataMap);\n  }\n  has(name) {\n    return this.#metadataMap.has(name);\n  }\n}\n\n;// ./src/display/optional_content_config.js\n\n\nconst INTERNAL = Symbol(\"INTERNAL\");\nclass OptionalContentGroup {\n  #isDisplay = false;\n  #isPrint = false;\n  #userSet = false;\n  #visible = true;\n  constructor(renderingIntent, {\n    name,\n    intent,\n    usage,\n    rbGroups\n  }) {\n    this.#isDisplay = !!(renderingIntent & RenderingIntentFlag.DISPLAY);\n    this.#isPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n    this.name = name;\n    this.intent = intent;\n    this.usage = usage;\n    this.rbGroups = rbGroups;\n  }\n  get visible() {\n    if (this.#userSet) {\n      return this.#visible;\n    }\n    if (!this.#visible) {\n      return false;\n    }\n    const {\n      print,\n      view\n    } = this.usage;\n    if (this.#isDisplay) {\n      return view?.viewState !== \"OFF\";\n    } else if (this.#isPrint) {\n      return print?.printState !== \"OFF\";\n    }\n    return true;\n  }\n  _setVisible(internal, visible, userSet = false) {\n    if (internal !== INTERNAL) {\n      unreachable(\"Internal method `_setVisible` called.\");\n    }\n    this.#userSet = userSet;\n    this.#visible = visible;\n  }\n}\nclass OptionalContentConfig {\n  #cachedGetHash = null;\n  #groups = new Map();\n  #initialHash = null;\n  #order = null;\n  constructor(data, renderingIntent = RenderingIntentFlag.DISPLAY) {\n    this.renderingIntent = renderingIntent;\n    this.name = null;\n    this.creator = null;\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(group.id, new OptionalContentGroup(renderingIntent, group));\n    }\n    if (data.baseState === \"OFF\") {\n      for (const group of this.#groups.values()) {\n        group._setVisible(INTERNAL, false);\n      }\n    }\n    for (const on of data.on) {\n      this.#groups.get(on)._setVisible(INTERNAL, true);\n    }\n    for (const off of data.off) {\n      this.#groups.get(off)._setVisible(INTERNAL, false);\n    }\n    this.#initialHash = this.getHash();\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  isVisible(group) {\n    if (this.#groups.size === 0) {\n      return true;\n    }\n    if (!group) {\n      info(\"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      if (group.expression) {\n        return this.#evaluateVisibilityExpression(group.expression);\n      }\n      if (!group.policy || group.policy === \"AnyOn\") {\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  setVisibility(id, visible = true, preserveRB = true) {\n    const group = this.#groups.get(id);\n    if (!group) {\n      warn(`Optional content group not found: ${id}`);\n      return;\n    }\n    if (preserveRB && visible && group.rbGroups.length) {\n      for (const rbGroup of group.rbGroups) {\n        for (const otherId of rbGroup) {\n          if (otherId !== id) {\n            this.#groups.get(otherId)?._setVisible(INTERNAL, false, true);\n          }\n        }\n      }\n    }\n    group._setVisible(INTERNAL, !!visible, true);\n    this.#cachedGetHash = null;\n  }\n  setOCGState({\n    state,\n    preserveRB\n  }) {\n    let operator;\n    for (const elem of state) {\n      switch (elem) {\n        case \"ON\":\n        case \"OFF\":\n        case \"Toggle\":\n          operator = elem;\n          continue;\n      }\n      const group = this.#groups.get(elem);\n      if (!group) {\n        continue;\n      }\n      switch (operator) {\n        case \"ON\":\n          this.setVisibility(elem, true, preserveRB);\n          break;\n        case \"OFF\":\n          this.setVisibility(elem, false, preserveRB);\n          break;\n        case \"Toggle\":\n          this.setVisibility(elem, !group.visible, preserveRB);\n          break;\n      }\n    }\n    this.#cachedGetHash = null;\n  }\n  get hasInitialVisibility() {\n    return this.#initialHash === null || this.getHash() === this.#initialHash;\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  getGroups() {\n    return this.#groups.size > 0 ? objectFromMap(this.#groups) : null;\n  }\n  getGroup(id) {\n    return this.#groups.get(id) || null;\n  }\n  getHash() {\n    if (this.#cachedGetHash !== null) {\n      return this.#cachedGetHash;\n    }\n    const hash = new MurmurHash3_64();\n    for (const [id, group] of this.#groups) {\n      hash.update(`${id}:${group.visible}`);\n    }\n    return this.#cachedGetHash = hash.hexdigest();\n  }\n}\n\n;// ./src/display/transport_stream.js\n\n\nclass PDFDataTransportStream {\n  constructor(pdfDataRangeTransport, {\n    disableRange = false,\n    disableStream = false\n  }) {\n    assert(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n    const {\n      length,\n      initialData,\n      progressiveDone,\n      contentDispositionFilename\n    } = pdfDataRangeTransport;\n    this._queuedChunks = [];\n    this._progressiveDone = progressiveDone;\n    this._contentDispositionFilename = contentDispositionFilename;\n    if (initialData?.length > 0) {\n      const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer;\n      this._queuedChunks.push(buffer);\n    }\n    this._pdfDataRangeTransport = pdfDataRangeTransport;\n    this._isStreamingSupported = !disableStream;\n    this._isRangeSupported = !disableRange;\n    this._contentLength = length;\n    this._fullRequestReader = null;\n    this._rangeReaders = [];\n    pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n      this._onReceiveData({\n        begin,\n        chunk\n      });\n    });\n    pdfDataRangeTransport.addProgressListener((loaded, total) => {\n      this._onProgress({\n        loaded,\n        total\n      });\n    });\n    pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n      this._onReceiveData({\n        chunk\n      });\n    });\n    pdfDataRangeTransport.addProgressiveDoneListener(() => {\n      this._onProgressiveDone();\n    });\n    pdfDataRangeTransport.transportReady();\n  }\n  _onReceiveData({\n    begin,\n    chunk\n  }) {\n    const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer;\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(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n    }\n  }\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n  _onProgress(evt) {\n    if (evt.total === undefined) {\n      this._rangeReaders[0]?.onProgress?.({\n        loaded: evt.loaded\n      });\n    } else {\n      this._fullRequestReader?.onProgress?.({\n        loaded: evt.loaded,\n        total: evt.total\n      });\n    }\n  }\n  _onProgressiveDone() {\n    this._fullRequestReader?.progressiveDone();\n    this._progressiveDone = true;\n  }\n  _removeRangeReader(reader) {\n    const i = this._rangeReaders.indexOf(reader);\n    if (i >= 0) {\n      this._rangeReaders.splice(i, 1);\n    }\n  }\n  getFullReader() {\n    assert(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n    const queuedChunks = this._queuedChunks;\n    this._queuedChunks = null;\n    return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);\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  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n    for (const reader of this._rangeReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n    this._pdfDataRangeTransport.abort();\n  }\n}\nclass PDFDataTransportStreamReader {\n  constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {\n    this._stream = stream;\n    this._done = progressiveDone || false;\n    this._filename = isPdfFile(contentDispositionFilename) ? contentDispositionFilename : 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    this.onProgress = null;\n  }\n  _enqueue(chunk) {\n    if (this._done) {\n      return;\n    }\n    if (this._requests.length > 0) {\n      const requestCapability = this._requests.shift();\n      requestCapability.resolve({\n        value: chunk,\n        done: false\n      });\n    } else {\n      this._queuedChunks.push(chunk);\n    }\n    this._loaded += chunk.byteLength;\n  }\n  get headersReady() {\n    return this._headersReady;\n  }\n  get filename() {\n    return this._filename;\n  }\n  get isRangeSupported() {\n    return this._stream._isRangeSupported;\n  }\n  get isStreamingSupported() {\n    return this._stream._isStreamingSupported;\n  }\n  get contentLength() {\n    return this._stream._contentLength;\n  }\n  async read() {\n    if (this._queuedChunks.length > 0) {\n      const chunk = this._queuedChunks.shift();\n      return {\n        value: chunk,\n        done: false\n      };\n    }\n    if (this._done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n    const requestCapability = Promise.withResolvers();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n  cancel(reason) {\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\n    }\n    this._requests.length = 0;\n  }\n  progressiveDone() {\n    if (this._done) {\n      return;\n    }\n    this._done = true;\n  }\n}\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    this.onProgress = null;\n  }\n  _enqueue(chunk) {\n    if (this._done) {\n      return;\n    }\n    if (this._requests.length === 0) {\n      this._queuedChunk = chunk;\n    } else {\n      const requestsCapability = this._requests.shift();\n      requestsCapability.resolve({\n        value: chunk,\n        done: false\n      });\n      for (const requestCapability of this._requests) {\n        requestCapability.resolve({\n          value: undefined,\n          done: true\n        });\n      }\n      this._requests.length = 0;\n    }\n    this._done = true;\n    this._stream._removeRangeReader(this);\n  }\n  get isStreamingSupported() {\n    return false;\n  }\n  async read() {\n    if (this._queuedChunk) {\n      const chunk = this._queuedChunk;\n      this._queuedChunk = null;\n      return {\n        value: chunk,\n        done: false\n      };\n    }\n    if (this._done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n    const requestCapability = Promise.withResolvers();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n  cancel(reason) {\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\n    }\n    this._requests.length = 0;\n    this._stream._removeRangeReader(this);\n  }\n}\n\n;// ./src/display/content_disposition.js\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n  let needsEncodingFixup = true;\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  tmp = rfc2231getparam(contentDisposition);\n  if (tmp) {\n    const filename = rfc2047decode(tmp);\n    return fixupEncoding(filename);\n  }\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  function toParamRegExp(attributePattern, flags) {\n    return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\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, {\n          fatal: true\n        });\n        const buffer = stringToBytes(value);\n        value = decoder.decode(buffer);\n        needsEncodingFixup = false;\n      } catch {}\n    }\n    return value;\n  }\n  function fixupEncoding(value) {\n    if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n      value = textdecode(\"utf-8\", value);\n      if (needsEncodingFixup) {\n        value = textdecode(\"iso-8859-1\", value);\n      }\n    }\n    return value;\n  }\n  function rfc2231getparam(contentDispositionStr) {\n    const matches = [];\n    let match;\n    const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n    while ((match = iter.exec(contentDispositionStr)) !== null) {\n      let [, n, quot, part] = match;\n      n = parseInt(n, 10);\n      if (n in matches) {\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        break;\n      }\n      let [quot, part] = matches[n];\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      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;\n        }\n        parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n      }\n      value = parts.join('\"');\n    }\n    return value;\n  }\n  function rfc5987decode(extvalue) {\n    const encodingend = extvalue.indexOf(\"'\");\n    if (encodingend === -1) {\n      return extvalue;\n    }\n    const encoding = extvalue.slice(0, encodingend);\n    const langvalue = extvalue.slice(encodingend + 1);\n    const value = langvalue.replace(/^[^']*'/, \"\");\n    return textdecode(encoding, value);\n  }\n  function rfc2047decode(value) {\n    if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n      return value;\n    }\n    return value.replaceAll(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n      if (encoding === \"q\" || encoding === \"Q\") {\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      }\n      try {\n        text = atob(text);\n      } catch {}\n      return textdecode(charset, text);\n    });\n  }\n  return \"\";\n}\n\n;// ./src/display/network_utils.js\n\n\n\nfunction createHeaders(isHttp, httpHeaders) {\n  const headers = new Headers();\n  if (!isHttp || !httpHeaders || typeof httpHeaders !== \"object\") {\n    return headers;\n  }\n  for (const key in httpHeaders) {\n    const val = httpHeaders[key];\n    if (val !== undefined) {\n      headers.append(key, val);\n    }\n  }\n  return headers;\n}\nfunction getResponseOrigin(url) {\n  try {\n    return new URL(url).origin;\n  } catch {}\n  return null;\n}\nfunction validateRangeRequestCapabilities({\n  responseHeaders,\n  isHttp,\n  rangeChunkSize,\n  disableRange\n}) {\n  const returnValues = {\n    allowRangeRequests: false,\n    suggestedLength: undefined\n  };\n  const length = parseInt(responseHeaders.get(\"Content-Length\"), 10);\n  if (!Number.isInteger(length)) {\n    return returnValues;\n  }\n  returnValues.suggestedLength = length;\n  if (length <= 2 * rangeChunkSize) {\n    return returnValues;\n  }\n  if (disableRange || !isHttp) {\n    return returnValues;\n  }\n  if (responseHeaders.get(\"Accept-Ranges\") !== \"bytes\") {\n    return returnValues;\n  }\n  const contentEncoding = responseHeaders.get(\"Content-Encoding\") || \"identity\";\n  if (contentEncoding !== \"identity\") {\n    return returnValues;\n  }\n  returnValues.allowRangeRequests = true;\n  return returnValues;\n}\nfunction extractFilenameFromHeader(responseHeaders) {\n  const contentDisposition = responseHeaders.get(\"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}\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(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status);\n}\nfunction validateResponseStatus(status) {\n  return status === 200 || status === 206;\n}\n\n;// ./src/display/fetch_stream.js\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}\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}\nclass PDFFetchStream {\n  _responseOrigin = null;\n  constructor(source) {\n    this.source = source;\n    this.isHttp = /^https?:/i.test(source.url);\n    this.headers = createHeaders(this.isHttp, source.httpHeaders);\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n  getFullReader() {\n    assert(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n    this._fullRequestReader = new PDFFetchStreamReader(this);\n    return this._fullRequestReader;\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  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\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 = Promise.withResolvers();\n    this._disableRange = source.disableRange || false;\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n    this._abortController = new AbortController();\n    this._isStreamingSupported = !source.disableStream;\n    this._isRangeSupported = !source.disableRange;\n    const headers = new Headers(stream.headers);\n    const url = source.url;\n    fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n      stream._responseOrigin = getResponseOrigin(response.url);\n      if (!validateResponseStatus(response.status)) {\n        throw createResponseStatusError(response.status, url);\n      }\n      this._reader = response.body.getReader();\n      this._headersCapability.resolve();\n      const responseHeaders = response.headers;\n      const {\n        allowRangeRequests,\n        suggestedLength\n      } = validateRangeRequestCapabilities({\n        responseHeaders,\n        isHttp: stream.isHttp,\n        rangeChunkSize: this._rangeChunkSize,\n        disableRange: this._disableRange\n      });\n      this._isRangeSupported = allowRangeRequests;\n      this._contentLength = suggestedLength || this._contentLength;\n      this._filename = extractFilenameFromHeader(responseHeaders);\n      if (!this._isStreamingSupported && this._isRangeSupported) {\n        this.cancel(new AbortException(\"Streaming is disabled.\"));\n      }\n    }).catch(this._headersCapability.reject);\n    this.onProgress = null;\n  }\n  get headersReady() {\n    return this._headersCapability.promise;\n  }\n  get filename() {\n    return this._filename;\n  }\n  get contentLength() {\n    return this._contentLength;\n  }\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n  async read() {\n    await this._headersCapability.promise;\n    const {\n      value,\n      done\n    } = await this._reader.read();\n    if (done) {\n      return {\n        value,\n        done\n      };\n    }\n    this._loaded += value.byteLength;\n    this.onProgress?.({\n      loaded: this._loaded,\n      total: this._contentLength\n    });\n    return {\n      value: getArrayBuffer(value),\n      done: false\n    };\n  }\n  cancel(reason) {\n    this._reader?.cancel(reason);\n    this._abortController.abort();\n  }\n}\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 = Promise.withResolvers();\n    this._isStreamingSupported = !source.disableStream;\n    this._abortController = new AbortController();\n    const headers = new Headers(stream.headers);\n    headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n    const url = source.url;\n    fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n      const responseOrigin = getResponseOrigin(response.url);\n      if (responseOrigin !== stream._responseOrigin) {\n        throw new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${stream._responseOrigin}\".`);\n      }\n      if (!validateResponseStatus(response.status)) {\n        throw createResponseStatusError(response.status, url);\n      }\n      this._readCapability.resolve();\n      this._reader = response.body.getReader();\n    }).catch(this._readCapability.reject);\n    this.onProgress = null;\n  }\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n  async read() {\n    await this._readCapability.promise;\n    const {\n      value,\n      done\n    } = await this._reader.read();\n    if (done) {\n      return {\n        value,\n        done\n      };\n    }\n    this._loaded += value.byteLength;\n    this.onProgress?.({\n      loaded: this._loaded\n    });\n    return {\n      value: getArrayBuffer(value),\n      done: false\n    };\n  }\n  cancel(reason) {\n    this._reader?.cancel(reason);\n    this._abortController.abort();\n  }\n}\n\n;// ./src/display/network.js\n\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\nfunction network_getArrayBuffer(xhr) {\n  const data = xhr.response;\n  if (typeof data !== \"string\") {\n    return data;\n  }\n  return stringToBytes(data).buffer;\n}\nclass NetworkManager {\n  _responseOrigin = null;\n  constructor({\n    url,\n    httpHeaders,\n    withCredentials\n  }) {\n    this.url = url;\n    this.isHttp = /^https?:/i.test(url);\n    this.headers = createHeaders(this.isHttp, httpHeaders);\n    this.withCredentials = withCredentials || false;\n    this.currXhrId = 0;\n    this.pendingRequests = Object.create(null);\n  }\n  request(args) {\n    const xhr = new XMLHttpRequest();\n    const xhrId = this.currXhrId++;\n    const pendingRequest = this.pendingRequests[xhrId] = {\n      xhr\n    };\n    xhr.open(\"GET\", this.url);\n    xhr.withCredentials = this.withCredentials;\n    for (const [key, val] of this.headers) {\n      xhr.setRequestHeader(key, val);\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    assert(args.onError, \"Expected `onError` callback to be provided.\");\n    xhr.onerror = () => {\n      args.onError(xhr.status);\n    };\n    xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n    xhr.onprogress = this.onProgress.bind(this, xhrId);\n    pendingRequest.onHeadersReceived = args.onHeadersReceived;\n    pendingRequest.onDone = args.onDone;\n    pendingRequest.onError = args.onError;\n    pendingRequest.onProgress = args.onProgress;\n    xhr.send(null);\n    return xhrId;\n  }\n  onProgress(xhrId, evt) {\n    const pendingRequest = this.pendingRequests[xhrId];\n    if (!pendingRequest) {\n      return;\n    }\n    pendingRequest.onProgress?.(evt);\n  }\n  onStateChange(xhrId, evt) {\n    const pendingRequest = this.pendingRequests[xhrId];\n    if (!pendingRequest) {\n      return;\n    }\n    const xhr = pendingRequest.xhr;\n    if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n      pendingRequest.onHeadersReceived();\n      delete pendingRequest.onHeadersReceived;\n    }\n    if (xhr.readyState !== 4) {\n      return;\n    }\n    if (!(xhrId in this.pendingRequests)) {\n      return;\n    }\n    delete this.pendingRequests[xhrId];\n    if (xhr.status === 0 && this.isHttp) {\n      pendingRequest.onError(xhr.status);\n      return;\n    }\n    const xhrStatus = xhr.status || OK_RESPONSE;\n    const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n    if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n      pendingRequest.onError(xhr.status);\n      return;\n    }\n    const chunk = network_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      if (matches) {\n        pendingRequest.onDone({\n          begin: parseInt(matches[1], 10),\n          chunk\n        });\n      } else {\n        warn(`Missing or invalid \"Content-Range\" header.`);\n        pendingRequest.onError(0);\n      }\n    } else if (chunk) {\n      pendingRequest.onDone({\n        begin: 0,\n        chunk\n      });\n    } else {\n      pendingRequest.onError(xhr.status);\n    }\n  }\n  getRequestXhr(xhrId) {\n    return this.pendingRequests[xhrId].xhr;\n  }\n  isPendingRequest(xhrId) {\n    return xhrId in this.pendingRequests;\n  }\n  abortRequest(xhrId) {\n    const xhr = this.pendingRequests[xhrId].xhr;\n    delete this.pendingRequests[xhrId];\n    xhr.abort();\n  }\n}\nclass PDFNetworkStream {\n  constructor(source) {\n    this._source = source;\n    this._manager = new NetworkManager(source);\n    this._rangeChunkSize = source.rangeChunkSize;\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n  _onRangeRequestReaderClosed(reader) {\n    const i = this._rangeRequestReaders.indexOf(reader);\n    if (i >= 0) {\n      this._rangeRequestReaders.splice(i, 1);\n    }\n  }\n  getFullReader() {\n    assert(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n    this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n    return this._fullRequestReader;\n  }\n  getRangeReader(begin, end) {\n    const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n    reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n    this._rangeRequestReaders.push(reader);\n    return reader;\n  }\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\nclass PDFNetworkStreamFullRequestReader {\n  constructor(manager, source) {\n    this._manager = manager;\n    this._url = source.url;\n    this._fullRequestId = manager.request({\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._headersCapability = Promise.withResolvers();\n    this._disableRange = source.disableRange || false;\n    this._contentLength = source.length;\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n    this._isStreamingSupported = false;\n    this._isRangeSupported = false;\n    this._cachedChunks = [];\n    this._requests = [];\n    this._done = false;\n    this._storedError = undefined;\n    this._filename = null;\n    this.onProgress = null;\n  }\n  _onHeadersReceived() {\n    const fullRequestXhrId = this._fullRequestId;\n    const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n    this._manager._responseOrigin = getResponseOrigin(fullRequestXhr.responseURL);\n    const rawResponseHeaders = fullRequestXhr.getAllResponseHeaders();\n    const responseHeaders = new Headers(rawResponseHeaders ? rawResponseHeaders.trimStart().replace(/[^\\S ]+$/, \"\").split(/[\\r\\n]+/).map(x => {\n      const [key, ...val] = x.split(\": \");\n      return [key, val.join(\": \")];\n    }) : []);\n    const {\n      allowRangeRequests,\n      suggestedLength\n    } = validateRangeRequestCapabilities({\n      responseHeaders,\n      isHttp: this._manager.isHttp,\n      rangeChunkSize: this._rangeChunkSize,\n      disableRange: this._disableRange\n    });\n    if (allowRangeRequests) {\n      this._isRangeSupported = true;\n    }\n    this._contentLength = suggestedLength || this._contentLength;\n    this._filename = extractFilenameFromHeader(responseHeaders);\n    if (this._isRangeSupported) {\n      this._manager.abortRequest(fullRequestXhrId);\n    }\n    this._headersCapability.resolve();\n  }\n  _onDone(data) {\n    if (data) {\n      if (this._requests.length > 0) {\n        const requestCapability = this._requests.shift();\n        requestCapability.resolve({\n          value: data.chunk,\n          done: false\n        });\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({\n        value: undefined,\n        done: true\n      });\n    }\n    this._requests.length = 0;\n  }\n  _onError(status) {\n    this._storedError = createResponseStatusError(status, this._url);\n    this._headersCapability.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  _onProgress(evt) {\n    this.onProgress?.({\n      loaded: evt.loaded,\n      total: evt.lengthComputable ? evt.total : this._contentLength\n    });\n  }\n  get filename() {\n    return this._filename;\n  }\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n  get contentLength() {\n    return this._contentLength;\n  }\n  get headersReady() {\n    return this._headersCapability.promise;\n  }\n  async read() {\n    await this._headersCapability.promise;\n    if (this._storedError) {\n      throw this._storedError;\n    }\n    if (this._cachedChunks.length > 0) {\n      const chunk = this._cachedChunks.shift();\n      return {\n        value: chunk,\n        done: false\n      };\n    }\n    if (this._done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n    const requestCapability = Promise.withResolvers();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n  cancel(reason) {\n    this._done = true;\n    this._headersCapability.reject(reason);\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\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}\nclass PDFNetworkStreamRangeRequestReader {\n  constructor(manager, begin, end) {\n    this._manager = manager;\n    this._url = manager.url;\n    this._requestId = manager.request({\n      begin,\n      end,\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._requests = [];\n    this._queuedChunk = null;\n    this._done = false;\n    this._storedError = undefined;\n    this.onProgress = null;\n    this.onClosed = null;\n  }\n  _onHeadersReceived() {\n    const responseOrigin = getResponseOrigin(this._manager.getRequestXhr(this._requestId)?.responseURL);\n    if (responseOrigin !== this._manager._responseOrigin) {\n      this._storedError = new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${this._manager._responseOrigin}\".`);\n      this._onError(0);\n    }\n  }\n  _close() {\n    this.onClosed?.(this);\n  }\n  _onDone(data) {\n    const chunk = data.chunk;\n    if (this._requests.length > 0) {\n      const requestCapability = this._requests.shift();\n      requestCapability.resolve({\n        value: chunk,\n        done: false\n      });\n    } else {\n      this._queuedChunk = chunk;\n    }\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\n    }\n    this._requests.length = 0;\n    this._close();\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  _onProgress(evt) {\n    if (!this.isStreamingSupported) {\n      this.onProgress?.({\n        loaded: evt.loaded\n      });\n    }\n  }\n  get isStreamingSupported() {\n    return false;\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 {\n        value: chunk,\n        done: false\n      };\n    }\n    if (this._done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n    const requestCapability = Promise.withResolvers();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n  cancel(reason) {\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\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\n;// ./src/display/node_stream.js\n\nconst urlRegex = /^[a-z][a-z0-9\\-+.]+:/i;\nfunction parseUrlOrPath(sourceUrl) {\n  if (urlRegex.test(sourceUrl)) {\n    return new URL(sourceUrl);\n  }\n  const url = process.getBuiltinModule(\"url\");\n  return new URL(url.pathToFileURL(sourceUrl));\n}\nclass PDFNodeStream {\n  constructor(source) {\n    this.source = source;\n    this.url = parseUrlOrPath(source.url);\n    assert(this.url.protocol === \"file:\", \"PDFNodeStream only supports file:// URLs.\");\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n  getFullReader() {\n    assert(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n    this._fullRequestReader = new PDFNodeStreamFsFullReader(this);\n    return this._fullRequestReader;\n  }\n  getRangeReader(start, end) {\n    if (end <= this._progressiveDataLength) {\n      return null;\n    }\n    const rangeReader = new PDFNodeStreamFsRangeReader(this, start, end);\n    this._rangeRequestReaders.push(rangeReader);\n    return rangeReader;\n  }\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\nclass PDFNodeStreamFsFullReader {\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;\n    this._loaded = 0;\n    this._filename = null;\n    this._disableRange = source.disableRange || false;\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n    this._isStreamingSupported = !source.disableStream;\n    this._isRangeSupported = !source.disableRange;\n    this._readableStream = null;\n    this._readCapability = Promise.withResolvers();\n    this._headersCapability = Promise.withResolvers();\n    const fs = process.getBuiltinModule(\"fs\");\n    fs.promises.lstat(this._url).then(stat => {\n      this._contentLength = stat.size;\n      this._setReadableStream(fs.createReadStream(this._url));\n      this._headersCapability.resolve();\n    }, error => {\n      if (error.code === \"ENOENT\") {\n        error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n      }\n      this._storedError = error;\n      this._headersCapability.reject(error);\n    });\n  }\n  get headersReady() {\n    return this._headersCapability.promise;\n  }\n  get filename() {\n    return this._filename;\n  }\n  get contentLength() {\n    return this._contentLength;\n  }\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n  async read() {\n    await this._readCapability.promise;\n    if (this._done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n    if (this._storedError) {\n      throw this._storedError;\n    }\n    const chunk = this._readableStream.read();\n    if (chunk === null) {\n      this._readCapability = Promise.withResolvers();\n      return this.read();\n    }\n    this._loaded += chunk.length;\n    this.onProgress?.({\n      loaded: this._loaded,\n      total: this._contentLength\n    });\n    const buffer = new Uint8Array(chunk).buffer;\n    return {\n      value: buffer,\n      done: false\n    };\n  }\n  cancel(reason) {\n    if (!this._readableStream) {\n      this._error(reason);\n      return;\n    }\n    this._readableStream.destroy(reason);\n  }\n  _error(reason) {\n    this._storedError = reason;\n    this._readCapability.resolve();\n  }\n  _setReadableStream(readableStream) {\n    this._readableStream = readableStream;\n    readableStream.on(\"readable\", () => {\n      this._readCapability.resolve();\n    });\n    readableStream.on(\"end\", () => {\n      readableStream.destroy();\n      this._done = true;\n      this._readCapability.resolve();\n    });\n    readableStream.on(\"error\", reason => {\n      this._error(reason);\n    });\n    if (!this._isStreamingSupported && this._isRangeSupported) {\n      this._error(new AbortException(\"streaming is disabled\"));\n    }\n    if (this._storedError) {\n      this._readableStream.destroy(this._storedError);\n    }\n  }\n}\nclass PDFNodeStreamFsRangeReader {\n  constructor(stream, start, end) {\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 = Promise.withResolvers();\n    const source = stream.source;\n    this._isStreamingSupported = !source.disableStream;\n    const fs = process.getBuiltinModule(\"fs\");\n    this._setReadableStream(fs.createReadStream(this._url, {\n      start,\n      end: end - 1\n    }));\n  }\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n  async read() {\n    await this._readCapability.promise;\n    if (this._done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n    if (this._storedError) {\n      throw this._storedError;\n    }\n    const chunk = this._readableStream.read();\n    if (chunk === null) {\n      this._readCapability = Promise.withResolvers();\n      return this.read();\n    }\n    this._loaded += chunk.length;\n    this.onProgress?.({\n      loaded: this._loaded\n    });\n    const buffer = new Uint8Array(chunk).buffer;\n    return {\n      value: buffer,\n      done: false\n    };\n  }\n  cancel(reason) {\n    if (!this._readableStream) {\n      this._error(reason);\n      return;\n    }\n    this._readableStream.destroy(reason);\n  }\n  _error(reason) {\n    this._storedError = reason;\n    this._readCapability.resolve();\n  }\n  _setReadableStream(readableStream) {\n    this._readableStream = readableStream;\n    readableStream.on(\"readable\", () => {\n      this._readCapability.resolve();\n    });\n    readableStream.on(\"end\", () => {\n      readableStream.destroy();\n      this._done = true;\n      this._readCapability.resolve();\n    });\n    readableStream.on(\"error\", reason => {\n      this._error(reason);\n    });\n    if (this._storedError) {\n      this._readableStream.destroy(this._storedError);\n    }\n  }\n}\n\n;// ./src/display/text_layer.js\n\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nclass TextLayer {\n  #capability = Promise.withResolvers();\n  #container = null;\n  #disableProcessItems = false;\n  #fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n  #lang = null;\n  #layoutTextParams = null;\n  #pageHeight = 0;\n  #pageWidth = 0;\n  #reader = null;\n  #rootContainer = null;\n  #rotation = 0;\n  #scale = 0;\n  #styleCache = Object.create(null);\n  #textContentItemsStr = [];\n  #textContentSource = null;\n  #textDivs = [];\n  #textDivProperties = new WeakMap();\n  #transform = null;\n  static #ascentCache = new Map();\n  static #canvasContexts = new Map();\n  static #canvasCtxFonts = new WeakMap();\n  static #minFontSize = null;\n  static #pendingTextLayers = new Set();\n  constructor({\n    textContentSource,\n    container,\n    viewport\n  }) {\n    if (textContentSource instanceof ReadableStream) {\n      this.#textContentSource = textContentSource;\n    } else if (typeof textContentSource === \"object\") {\n      this.#textContentSource = new ReadableStream({\n        start(controller) {\n          controller.enqueue(textContentSource);\n          controller.close();\n        }\n      });\n    } else {\n      throw new Error('No \"textContentSource\" parameter specified.');\n    }\n    this.#container = this.#rootContainer = container;\n    this.#scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n    this.#rotation = viewport.rotation;\n    this.#layoutTextParams = {\n      div: null,\n      properties: null,\n      ctx: null\n    };\n    const {\n      pageWidth,\n      pageHeight,\n      pageX,\n      pageY\n    } = viewport.rawDims;\n    this.#transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n    this.#pageWidth = pageWidth;\n    this.#pageHeight = pageHeight;\n    TextLayer.#ensureMinFontSizeComputed();\n    setLayerDimensions(container, viewport);\n    this.#capability.promise.finally(() => {\n      TextLayer.#pendingTextLayers.delete(this);\n      this.#layoutTextParams = null;\n      this.#styleCache = null;\n    }).catch(() => {});\n  }\n  static get fontFamilyMap() {\n    const {\n      isWindows,\n      isFirefox\n    } = util_FeatureTest.platform;\n    return shadow(this, \"fontFamilyMap\", new Map([[\"sans-serif\", `${isWindows && isFirefox ? \"Calibri, \" : \"\"}sans-serif`], [\"monospace\", `${isWindows && isFirefox ? \"Lucida Console, \" : \"\"}monospace`]]));\n  }\n  render() {\n    const pump = () => {\n      this.#reader.read().then(({\n        value,\n        done\n      }) => {\n        if (done) {\n          this.#capability.resolve();\n          return;\n        }\n        this.#lang ??= value.lang;\n        Object.assign(this.#styleCache, value.styles);\n        this.#processItems(value.items);\n        pump();\n      }, this.#capability.reject);\n    };\n    this.#reader = this.#textContentSource.getReader();\n    TextLayer.#pendingTextLayers.add(this);\n    pump();\n    return this.#capability.promise;\n  }\n  update({\n    viewport,\n    onBefore = null\n  }) {\n    const scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n    const rotation = viewport.rotation;\n    if (rotation !== this.#rotation) {\n      onBefore?.();\n      this.#rotation = rotation;\n      setLayerDimensions(this.#rootContainer, {\n        rotation\n      });\n    }\n    if (scale !== this.#scale) {\n      onBefore?.();\n      this.#scale = scale;\n      const params = {\n        div: null,\n        properties: null,\n        ctx: TextLayer.#getCtx(this.#lang)\n      };\n      for (const div of this.#textDivs) {\n        params.properties = this.#textDivProperties.get(div);\n        params.div = div;\n        this.#layout(params);\n      }\n    }\n  }\n  cancel() {\n    const abortEx = new AbortException(\"TextLayer task cancelled.\");\n    this.#reader?.cancel(abortEx).catch(() => {});\n    this.#reader = null;\n    this.#capability.reject(abortEx);\n  }\n  get textDivs() {\n    return this.#textDivs;\n  }\n  get textContentItemsStr() {\n    return this.#textContentItemsStr;\n  }\n  #processItems(items) {\n    if (this.#disableProcessItems) {\n      return;\n    }\n    this.#layoutTextParams.ctx ??= TextLayer.#getCtx(this.#lang);\n    const textDivs = this.#textDivs,\n      textContentItemsStr = this.#textContentItemsStr;\n    for (const item of items) {\n      if (textDivs.length > MAX_TEXT_DIVS_TO_RENDER) {\n        warn(\"Ignoring additional textDivs for performance reasons.\");\n        this.#disableProcessItems = true;\n        return;\n      }\n      if (item.str === undefined) {\n        if (item.type === \"beginMarkedContentProps\" || item.type === \"beginMarkedContent\") {\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      textContentItemsStr.push(item.str);\n      this.#appendText(item);\n    }\n  }\n  #appendText(geom) {\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    this.#textDivs.push(textDiv);\n    const tx = Util.transform(this.#transform, geom.transform);\n    let angle = Math.atan2(tx[1], tx[0]);\n    const style = this.#styleCache[geom.fontName];\n    if (style.vertical) {\n      angle += Math.PI / 2;\n    }\n    let fontFamily = this.#fontInspectorEnabled && style.fontSubstitution || style.fontFamily;\n    fontFamily = TextLayer.fontFamilyMap.get(fontFamily) || fontFamily;\n    const fontHeight = Math.hypot(tx[2], tx[3]);\n    const fontAscent = fontHeight * TextLayer.#getAscent(fontFamily, this.#lang);\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    const scaleFactorStr = \"calc(var(--scale-factor)*\";\n    const divStyle = textDiv.style;\n    if (this.#container === this.#rootContainer) {\n      divStyle.left = `${(100 * left / this.#pageWidth).toFixed(2)}%`;\n      divStyle.top = `${(100 * top / this.#pageHeight).toFixed(2)}%`;\n    } else {\n      divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n      divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n    }\n    divStyle.fontSize = `${scaleFactorStr}${(TextLayer.#minFontSize * fontHeight).toFixed(2)}px)`;\n    divStyle.fontFamily = fontFamily;\n    textDivProperties.fontSize = fontHeight;\n    textDiv.setAttribute(\"role\", \"presentation\");\n    textDiv.textContent = geom.str;\n    textDiv.dir = geom.dir;\n    if (this.#fontInspectorEnabled) {\n      textDiv.dataset.fontName = style.fontSubstitutionLoadedName || geom.fontName;\n    }\n    if (angle !== 0) {\n      textDivProperties.angle = angle * (180 / Math.PI);\n    }\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      if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n        shouldScaleText = true;\n      }\n    }\n    if (shouldScaleText) {\n      textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n    }\n    this.#textDivProperties.set(textDiv, textDivProperties);\n    this.#layoutTextParams.div = textDiv;\n    this.#layoutTextParams.properties = textDivProperties;\n    this.#layout(this.#layoutTextParams);\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  #layout(params) {\n    const {\n      div,\n      properties,\n      ctx\n    } = params;\n    const {\n      style\n    } = div;\n    let transform = \"\";\n    if (TextLayer.#minFontSize > 1) {\n      transform = `scale(${1 / TextLayer.#minFontSize})`;\n    }\n    if (properties.canvasWidth !== 0 && properties.hasText) {\n      const {\n        fontFamily\n      } = style;\n      const {\n        canvasWidth,\n        fontSize\n      } = properties;\n      TextLayer.#ensureCtxFont(ctx, fontSize * this.#scale, fontFamily);\n      const {\n        width\n      } = ctx.measureText(div.textContent);\n      if (width > 0) {\n        transform = `scaleX(${canvasWidth * this.#scale / width}) ${transform}`;\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  static cleanup() {\n    if (this.#pendingTextLayers.size > 0) {\n      return;\n    }\n    this.#ascentCache.clear();\n    for (const {\n      canvas\n    } of this.#canvasContexts.values()) {\n      canvas.remove();\n    }\n    this.#canvasContexts.clear();\n  }\n  static #getCtx(lang = null) {\n    let ctx = this.#canvasContexts.get(lang ||= \"\");\n    if (!ctx) {\n      const canvas = document.createElement(\"canvas\");\n      canvas.className = \"hiddenCanvasElement\";\n      canvas.lang = lang;\n      document.body.append(canvas);\n      ctx = canvas.getContext(\"2d\", {\n        alpha: false,\n        willReadFrequently: true\n      });\n      this.#canvasContexts.set(lang, ctx);\n      this.#canvasCtxFonts.set(ctx, {\n        size: 0,\n        family: \"\"\n      });\n    }\n    return ctx;\n  }\n  static #ensureCtxFont(ctx, size, family) {\n    const cached = this.#canvasCtxFonts.get(ctx);\n    if (size === cached.size && family === cached.family) {\n      return;\n    }\n    ctx.font = `${size}px ${family}`;\n    cached.size = size;\n    cached.family = family;\n  }\n  static #ensureMinFontSizeComputed() {\n    if (this.#minFontSize !== null) {\n      return;\n    }\n    const div = document.createElement(\"div\");\n    div.style.opacity = 0;\n    div.style.lineHeight = 1;\n    div.style.fontSize = \"1px\";\n    div.style.position = \"absolute\";\n    div.textContent = \"X\";\n    document.body.append(div);\n    this.#minFontSize = div.getBoundingClientRect().height;\n    div.remove();\n  }\n  static #getAscent(fontFamily, lang) {\n    const cachedAscent = this.#ascentCache.get(fontFamily);\n    if (cachedAscent) {\n      return cachedAscent;\n    }\n    const ctx = this.#getCtx(lang);\n    ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\n    this.#ensureCtxFont(ctx, DEFAULT_FONT_SIZE, fontFamily);\n    const metrics = ctx.measureText(\"\");\n    let ascent = metrics.fontBoundingBoxAscent;\n    let descent = Math.abs(metrics.fontBoundingBoxDescent);\n    if (ascent) {\n      const ratio = ascent / (ascent + descent);\n      this.#ascentCache.set(fontFamily, ratio);\n      ctx.canvas.width = ctx.canvas.height = 0;\n      return ratio;\n    }\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(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).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    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    ctx.canvas.width = ctx.canvas.height = 0;\n    const ratio = ascent ? ascent / (ascent + descent) : DEFAULT_FONT_ASCENT;\n    this.#ascentCache.set(fontFamily, ratio);\n    return ratio;\n  }\n}\n\n;// ./src/display/xfa_text.js\nclass XfaText {\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  static shouldBuildText(name) {\n    return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n  }\n}\n\n;// ./src/display/api.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536;\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nconst DELAYED_CLEANUP_TIMEOUT = 5000;\nconst DefaultCanvasFactory = isNodeJS ? NodeCanvasFactory : DOMCanvasFactory;\nconst DefaultCMapReaderFactory = isNodeJS ? NodeCMapReaderFactory : DOMCMapReaderFactory;\nconst DefaultFilterFactory = isNodeJS ? NodeFilterFactory : DOMFilterFactory;\nconst DefaultStandardFontDataFactory = isNodeJS ? NodeStandardFontDataFactory : DOMStandardFontDataFactory;\nfunction getDocument(src = {}) {\n  if (typeof src === \"string\" || src instanceof URL) {\n    src = {\n      url: src\n    };\n  } else if (src instanceof ArrayBuffer || ArrayBuffer.isView(src)) {\n    src = {\n      data: src\n    };\n  }\n  const task = new PDFDocumentLoadingTask();\n  const {\n    docId\n  } = task;\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 = src.range instanceof PDFDataRangeTransport ? src.range : null;\n  const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : DEFAULT_RANGE_CHUNK_SIZE;\n  let worker = src.worker instanceof PDFWorker ? src.worker : null;\n  const verbosity = src.verbosity;\n  const docBaseUrl = typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl) ? src.docBaseUrl : 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 = typeof src.standardFontDataUrl === \"string\" ? src.standardFontDataUrl : null;\n  const StandardFontDataFactory = src.StandardFontDataFactory || DefaultStandardFontDataFactory;\n  const ignoreErrors = src.stopAtErrors !== true;\n  const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;\n  const isEvalSupported = src.isEvalSupported !== false;\n  const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === \"boolean\" ? src.isOffscreenCanvasSupported : !isNodeJS;\n  const isImageDecoderSupported = typeof src.isImageDecoderSupported === \"boolean\" ? src.isImageDecoderSupported : !isNodeJS && (util_FeatureTest.platform.isFirefox || !globalThis.chrome);\n  const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;\n  const disableFontFace = 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  const CanvasFactory = src.CanvasFactory || DefaultCanvasFactory;\n  const FilterFactory = src.FilterFactory || DefaultFilterFactory;\n  const enableHWA = src.enableHWA === true;\n  const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n  const useSystemFonts = typeof src.useSystemFonts === \"boolean\" ? src.useSystemFonts : !isNodeJS && !disableFontFace;\n  const useWorkerFetch = typeof src.useWorkerFetch === \"boolean\" ? src.useWorkerFetch : CMapReaderFactory === DOMCMapReaderFactory && StandardFontDataFactory === DOMStandardFontDataFactory && cMapUrl && standardFontDataUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI);\n  const styleElement = null;\n  setVerbosityLevel(verbosity);\n  const transportFactory = {\n    canvasFactory: new CanvasFactory({\n      ownerDocument,\n      enableHWA\n    }),\n    filterFactory: new FilterFactory({\n      docId,\n      ownerDocument\n    }),\n    cMapReaderFactory: useWorkerFetch ? null : new CMapReaderFactory({\n      baseUrl: cMapUrl,\n      isCompressed: cMapPacked\n    }),\n    standardFontDataFactory: useWorkerFetch ? null : new StandardFontDataFactory({\n      baseUrl: standardFontDataUrl\n    })\n  };\n  if (!worker) {\n    const workerParams = {\n      verbosity,\n      port: GlobalWorkerOptions.workerPort\n    };\n    worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);\n    task._worker = worker;\n  }\n  const docParams = {\n    docId,\n    apiVersion: \"4.10.38\",\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      isImageDecoderSupported,\n      canvasMaxAreaInBytes,\n      fontExtraProperties,\n      useSystemFonts,\n      cMapUrl: useWorkerFetch ? cMapUrl : null,\n      standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null\n    }\n  };\n  const transportParams = {\n    disableFontFace,\n    fontExtraProperties,\n    ownerDocument,\n    pdfBug,\n    styleElement,\n    loadingParams: {\n      disableAutoFetch,\n      enableXfa\n    }\n  };\n  worker.promise.then(function () {\n    if (task.destroyed) {\n      throw new Error(\"Loading aborted\");\n    }\n    if (worker.destroyed) {\n      throw new Error(\"Worker was destroyed\");\n    }\n    const workerIdPromise = worker.messageHandler.sendWithPromise(\"GetDocRequest\", docParams, data ? [data.buffer] : null);\n    let networkStream;\n    if (rangeTransport) {\n      networkStream = new PDFDataTransportStream(rangeTransport, {\n        disableRange,\n        disableStream\n      });\n    } else if (!data) {\n      if (!url) {\n        throw new Error(\"getDocument - no `url` parameter provided.\");\n      }\n      let NetworkStream;\n      if (isNodeJS) {\n        if (isValidFetchUrl(url)) {\n          if (typeof fetch === \"undefined\" || typeof Response === \"undefined\" || !(\"body\" in Response.prototype)) {\n            throw new Error(\"getDocument - the Fetch API was disabled in Node.js, see `--no-experimental-fetch`.\");\n          }\n          NetworkStream = PDFFetchStream;\n        } else {\n          NetworkStream = PDFNodeStream;\n        }\n      } else {\n        NetworkStream = isValidFetchUrl(url) ? PDFFetchStream : PDFNetworkStream;\n      }\n      networkStream = new NetworkStream({\n        url,\n        length,\n        httpHeaders,\n        withCredentials,\n        rangeChunkSize,\n        disableRange,\n        disableStream\n      });\n    }\n    return workerIdPromise.then(workerId => {\n      if (task.destroyed) {\n        throw new Error(\"Loading aborted\");\n      }\n      if (worker.destroyed) {\n        throw new Error(\"Worker was destroyed\");\n      }\n      const messageHandler = new MessageHandler(docId, workerId, worker.port);\n      const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory);\n      task._transport = transport;\n      messageHandler.send(\"Ready\", null);\n    });\n  }).catch(task._capability.reject);\n  return task;\n}\nfunction getUrlProp(val) {\n  if (val instanceof URL) {\n    return val.href;\n  }\n  try {\n    return new URL(val, window.location).href;\n  } catch {\n    if (isNodeJS && typeof val === \"string\") {\n      return val;\n    }\n  }\n  throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n}\nfunction getDataProp(val) {\n  if (isNodeJS && typeof Buffer !== \"undefined\" && val instanceof Buffer) {\n    throw new Error(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n  }\n  if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n    return val;\n  }\n  if (typeof val === \"string\") {\n    return stringToBytes(val);\n  }\n  if (val instanceof ArrayBuffer || ArrayBuffer.isView(val) || typeof val === \"object\" && !isNaN(val?.length)) {\n    return new Uint8Array(val);\n  }\n  throw new Error(\"Invalid PDF binary data: either TypedArray, \" + \"string, or array-like object is expected in the data property.\");\n}\nfunction isRefProxy(ref) {\n  return typeof ref === \"object\" && Number.isInteger(ref?.num) && ref.num >= 0 && Number.isInteger(ref?.gen) && ref.gen >= 0;\n}\nclass PDFDocumentLoadingTask {\n  static #docId = 0;\n  constructor() {\n    this._capability = Promise.withResolvers();\n    this._transport = null;\n    this._worker = null;\n    this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n    this.destroyed = false;\n    this.onPassword = null;\n    this.onProgress = null;\n  }\n  get promise() {\n    return this._capability.promise;\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    this._transport = null;\n    this._worker?.destroy();\n    this._worker = null;\n  }\n}\nclass PDFDataRangeTransport {\n  constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {\n    this.length = length;\n    this.initialData = initialData;\n    this.progressiveDone = progressiveDone;\n    this.contentDispositionFilename = contentDispositionFilename;\n    this._rangeListeners = [];\n    this._progressListeners = [];\n    this._progressiveReadListeners = [];\n    this._progressiveDoneListeners = [];\n    this._readyCapability = Promise.withResolvers();\n  }\n  addRangeListener(listener) {\n    this._rangeListeners.push(listener);\n  }\n  addProgressListener(listener) {\n    this._progressListeners.push(listener);\n  }\n  addProgressiveReadListener(listener) {\n    this._progressiveReadListeners.push(listener);\n  }\n  addProgressiveDoneListener(listener) {\n    this._progressiveDoneListeners.push(listener);\n  }\n  onDataRange(begin, chunk) {\n    for (const listener of this._rangeListeners) {\n      listener(begin, chunk);\n    }\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  onDataProgressiveRead(chunk) {\n    this._readyCapability.promise.then(() => {\n      for (const listener of this._progressiveReadListeners) {\n        listener(chunk);\n      }\n    });\n  }\n  onDataProgressiveDone() {\n    this._readyCapability.promise.then(() => {\n      for (const listener of this._progressiveDoneListeners) {\n        listener();\n      }\n    });\n  }\n  transportReady() {\n    this._readyCapability.resolve();\n  }\n  requestDataRange(begin, end) {\n    unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n  }\n  abort() {}\n}\nclass PDFDocumentProxy {\n  constructor(pdfInfo, transport) {\n    this._pdfInfo = pdfInfo;\n    this._transport = transport;\n  }\n  get annotationStorage() {\n    return this._transport.annotationStorage;\n  }\n  get canvasFactory() {\n    return this._transport.canvasFactory;\n  }\n  get filterFactory() {\n    return this._transport.filterFactory;\n  }\n  get numPages() {\n    return this._pdfInfo.numPages;\n  }\n  get fingerprints() {\n    return this._pdfInfo.fingerprints;\n  }\n  get isPureXfa() {\n    return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n  }\n  get allXfaHtml() {\n    return this._transport._htmlForXfa;\n  }\n  getPage(pageNumber) {\n    return this._transport.getPage(pageNumber);\n  }\n  getPageIndex(ref) {\n    return this._transport.getPageIndex(ref);\n  }\n  getDestinations() {\n    return this._transport.getDestinations();\n  }\n  getDestination(id) {\n    return this._transport.getDestination(id);\n  }\n  getPageLabels() {\n    return this._transport.getPageLabels();\n  }\n  getPageLayout() {\n    return this._transport.getPageLayout();\n  }\n  getPageMode() {\n    return this._transport.getPageMode();\n  }\n  getViewerPreferences() {\n    return this._transport.getViewerPreferences();\n  }\n  getOpenAction() {\n    return this._transport.getOpenAction();\n  }\n  getAttachments() {\n    return this._transport.getAttachments();\n  }\n  getJSActions() {\n    return this._transport.getDocJSActions();\n  }\n  getOutline() {\n    return this._transport.getOutline();\n  }\n  getOptionalContentConfig({\n    intent = \"display\"\n  } = {}) {\n    const {\n      renderingIntent\n    } = this._transport.getRenderingIntent(intent);\n    return this._transport.getOptionalContentConfig(renderingIntent);\n  }\n  getPermissions() {\n    return this._transport.getPermissions();\n  }\n  getMetadata() {\n    return this._transport.getMetadata();\n  }\n  getMarkInfo() {\n    return this._transport.getMarkInfo();\n  }\n  getData() {\n    return this._transport.getData();\n  }\n  saveDocument() {\n    return this._transport.saveDocument();\n  }\n  getDownloadInfo() {\n    return this._transport.downloadInfoCapability.promise;\n  }\n  cleanup(keepLoadedFonts = false) {\n    return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n  }\n  destroy() {\n    return this.loadingTask.destroy();\n  }\n  cachedPageNumber(ref) {\n    return this._transport.cachedPageNumber(ref);\n  }\n  get loadingParams() {\n    return this._transport.loadingParams;\n  }\n  get loadingTask() {\n    return this._transport.loadingTask;\n  }\n  getFieldObjects() {\n    return this._transport.getFieldObjects();\n  }\n  hasJSActions() {\n    return this._transport.hasJSActions();\n  }\n  getCalculationOrderIds() {\n    return this._transport.getCalculationOrderIds();\n  }\n}\nclass PDFPageProxy {\n  #delayedCleanupTimeout = null;\n  #pendingCleanup = false;\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    this.commonObjs = transport.commonObjs;\n    this.objs = new PDFObjects();\n    this._maybeCleanupAfterRender = false;\n    this._intentStates = new Map();\n    this.destroyed = false;\n  }\n  get pageNumber() {\n    return this._pageIndex + 1;\n  }\n  get rotate() {\n    return this._pageInfo.rotate;\n  }\n  get ref() {\n    return this._pageInfo.ref;\n  }\n  get userUnit() {\n    return this._pageInfo.userUnit;\n  }\n  get view() {\n    return this._pageInfo.view;\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      userUnit: this.userUnit,\n      scale,\n      rotation,\n      offsetX,\n      offsetY,\n      dontFlip\n    });\n  }\n  getAnnotations({\n    intent = \"display\"\n  } = {}) {\n    const {\n      renderingIntent\n    } = this._transport.getRenderingIntent(intent);\n    return this._transport.getAnnotations(this._pageIndex, renderingIntent);\n  }\n  getJSActions() {\n    return this._transport.getPageJSActions(this._pageIndex);\n  }\n  get filterFactory() {\n    return this._transport.filterFactory;\n  }\n  get isPureXfa() {\n    return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n  }\n  async getXfa() {\n    return this._transport._htmlForXfa?.children[this._pageIndex] || null;\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    isEditing = false\n  }) {\n    this._stats?.time(\"Overall\");\n    const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing);\n    const {\n      renderingIntent,\n      cacheKey\n    } = intentArgs;\n    this.#pendingCleanup = false;\n    this.#abortDelayedCleanup();\n    optionalContentConfigPromise ||= this._transport.getOptionalContentConfig(renderingIntent);\n    let intentState = this._intentStates.get(cacheKey);\n    if (!intentState) {\n      intentState = Object.create(null);\n      this._intentStates.set(cacheKey, intentState);\n    }\n    if (intentState.streamReaderCancelTimeout) {\n      clearTimeout(intentState.streamReaderCancelTimeout);\n      intentState.streamReaderCancelTimeout = null;\n    }\n    const intentPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n    if (!intentState.displayReadyCapability) {\n      intentState.displayReadyCapability = Promise.withResolvers();\n      intentState.operatorList = {\n        fnArray: [],\n        argsArray: [],\n        lastChunk: false,\n        separateAnnots: null\n      };\n      this._stats?.time(\"Page Request\");\n      this._pumpOperatorList(intentArgs);\n    }\n    const complete = error => {\n      intentState.renderTasks.delete(internalRenderTask);\n      if (this._maybeCleanupAfterRender || intentPrint) {\n        this.#pendingCleanup = true;\n      }\n      this.#tryCleanup(!intentPrint);\n      if (error) {\n        internalRenderTask.capability.reject(error);\n        this._abortOperatorList({\n          intentState,\n          reason: error instanceof Error ? error : new Error(error)\n        });\n      } else {\n        internalRenderTask.capability.resolve();\n      }\n      if (this._stats) {\n        this._stats.timeEnd(\"Rendering\");\n        this._stats.timeEnd(\"Overall\");\n        if (globalThis.Stats?.enabled) {\n          globalThis.Stats.add(this.pageNumber, this._stats);\n        }\n      }\n    };\n    const internalRenderTask = new InternalRenderTask({\n      callback: complete,\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    (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n    const renderTask = internalRenderTask.task;\n    Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n      if (this.destroyed) {\n        complete();\n        return;\n      }\n      this._stats?.time(\"Rendering\");\n      if (!(optionalContentConfig.renderingIntent & renderingIntent)) {\n        throw new Error(\"Must use the same `intent`-argument when calling the `PDFPageProxy.render` \" + \"and `PDFDocumentProxy.getOptionalContentConfig` methods.\");\n      }\n      internalRenderTask.initializeGraphics({\n        transparency,\n        optionalContentConfig\n      });\n      internalRenderTask.operatorListChanged();\n    }).catch(complete);\n    return renderTask;\n  }\n  getOperatorList({\n    intent = \"display\",\n    annotationMode = AnnotationMode.ENABLE,\n    printAnnotationStorage = null,\n    isEditing = false\n  } = {}) {\n    function operatorListChanged() {\n      if (intentState.operatorList.lastChunk) {\n        intentState.opListReadCapability.resolve(intentState.operatorList);\n        intentState.renderTasks.delete(opListTask);\n      }\n    }\n    const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing, true);\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    if (!intentState.opListReadCapability) {\n      opListTask = Object.create(null);\n      opListTask.operatorListChanged = operatorListChanged;\n      intentState.opListReadCapability = Promise.withResolvers();\n      (intentState.renderTasks ||= new Set()).add(opListTask);\n      intentState.operatorList = {\n        fnArray: [],\n        argsArray: [],\n        lastChunk: false,\n        separateAnnots: null\n      };\n      this._stats?.time(\"Page Request\");\n      this._pumpOperatorList(intentArgs);\n    }\n    return intentState.opListReadCapability.promise;\n  }\n  streamTextContent({\n    includeMarkedContent = false,\n    disableNormalization = false\n  } = {}) {\n    const TEXT_CONTENT_CHUNK_SIZE = 100;\n    return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n      pageIndex: this._pageIndex,\n      includeMarkedContent: includeMarkedContent === true,\n      disableNormalization: disableNormalization === true\n    }, {\n      highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n      size(textContent) {\n        return textContent.items.length;\n      }\n    });\n  }\n  getTextContent(params = {}) {\n    if (this._transport._htmlForXfa) {\n      return this.getXfa().then(xfa => XfaText.textContent(xfa));\n    }\n    const readableStream = this.streamTextContent(params);\n    return new Promise(function (resolve, reject) {\n      function pump() {\n        reader.read().then(function ({\n          value,\n          done\n        }) {\n          if (done) {\n            resolve(textContent);\n            return;\n          }\n          textContent.lang ??= value.lang;\n          Object.assign(textContent.styles, value.styles);\n          textContent.items.push(...value.items);\n          pump();\n        }, reject);\n      }\n      const reader = readableStream.getReader();\n      const textContent = {\n        items: [],\n        styles: Object.create(null),\n        lang: null\n      };\n      pump();\n    });\n  }\n  getStructTree() {\n    return this._transport.getStructTree(this._pageIndex);\n  }\n  _destroy() {\n    this.destroyed = true;\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      if (intentState.opListReadCapability) {\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    return Promise.all(waitOn);\n  }\n  cleanup(resetStats = false) {\n    this.#pendingCleanup = true;\n    const success = this.#tryCleanup(false);\n    if (resetStats && success) {\n      this._stats &&= new StatTimer();\n    }\n    return success;\n  }\n  #tryCleanup(delayed = false) {\n    this.#abortDelayedCleanup();\n    if (!this.#pendingCleanup || this.destroyed) {\n      return false;\n    }\n    if (delayed) {\n      this.#delayedCleanupTimeout = setTimeout(() => {\n        this.#delayedCleanupTimeout = null;\n        this.#tryCleanup(false);\n      }, DELAYED_CLEANUP_TIMEOUT);\n      return false;\n    }\n    for (const {\n      renderTasks,\n      operatorList\n    } 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  #abortDelayedCleanup() {\n    if (this.#delayedCleanupTimeout) {\n      clearTimeout(this.#delayedCleanupTimeout);\n      this.#delayedCleanupTimeout = null;\n    }\n  }\n  _startRenderPage(transparency, cacheKey) {\n    const intentState = this._intentStates.get(cacheKey);\n    if (!intentState) {\n      return;\n    }\n    this._stats?.timeEnd(\"Page Request\");\n    intentState.displayReadyCapability?.resolve(transparency);\n  }\n  _renderPageChunk(operatorListChunk, intentState) {\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    for (const internalRenderTask of intentState.renderTasks) {\n      internalRenderTask.operatorListChanged();\n    }\n    if (operatorListChunk.lastChunk) {\n      this.#tryCleanup(true);\n    }\n  }\n  _pumpOperatorList({\n    renderingIntent,\n    cacheKey,\n    annotationStorageSerializable,\n    modifiedIds\n  }) {\n    const {\n      map,\n      transfer\n    } = annotationStorageSerializable;\n    const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n      pageIndex: this._pageIndex,\n      intent: renderingIntent,\n      cacheKey,\n      annotationStorage: map,\n      modifiedIds\n    }, transfer);\n    const reader = readableStream.getReader();\n    const intentState = this._intentStates.get(cacheKey);\n    intentState.streamReader = reader;\n    const pump = () => {\n      reader.read().then(({\n        value,\n        done\n      }) => {\n        if (done) {\n          intentState.streamReader = null;\n          return;\n        }\n        if (this._transport.destroyed) {\n          return;\n        }\n        this._renderPageChunk(value, intentState);\n        pump();\n      }, reason => {\n        intentState.streamReader = null;\n        if (this._transport.destroyed) {\n          return;\n        }\n        if (intentState.operatorList) {\n          intentState.operatorList.lastChunk = true;\n          for (const internalRenderTask of intentState.renderTasks) {\n            internalRenderTask.operatorListChanged();\n          }\n          this.#tryCleanup(true);\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    pump();\n  }\n  _abortOperatorList({\n    intentState,\n    reason,\n    force = false\n  }) {\n    if (!intentState.streamReader) {\n      return;\n    }\n    if (intentState.streamReaderCancelTimeout) {\n      clearTimeout(intentState.streamReaderCancelTimeout);\n      intentState.streamReaderCancelTimeout = null;\n    }\n    if (!force) {\n      if (intentState.renderTasks.size > 0) {\n        return;\n      }\n      if (reason instanceof RenderingCancelledException) {\n        let delay = RENDERING_CANCELLED_TIMEOUT;\n        if (reason.extraDelay > 0 && reason.extraDelay < 1000) {\n          delay += reason.extraDelay;\n        }\n        intentState.streamReaderCancelTimeout = setTimeout(() => {\n          intentState.streamReaderCancelTimeout = null;\n          this._abortOperatorList({\n            intentState,\n            reason,\n            force: true\n          });\n        }, delay);\n        return;\n      }\n    }\n    intentState.streamReader.cancel(new AbortException(reason.message)).catch(() => {});\n    intentState.streamReader = null;\n    if (this._transport.destroyed) {\n      return;\n    }\n    for (const [curCacheKey, curIntentState] of this._intentStates) {\n      if (curIntentState === intentState) {\n        this._intentStates.delete(curCacheKey);\n        break;\n      }\n    }\n    this.cleanup();\n  }\n  get stats() {\n    return this._stats;\n  }\n}\nclass LoopbackPort {\n  #listeners = new Map();\n  #deferred = Promise.resolve();\n  postMessage(obj, transfer) {\n    const event = {\n      data: structuredClone(obj, transfer ? {\n        transfer\n      } : null)\n    };\n    this.#deferred.then(() => {\n      for (const [listener] of this.#listeners) {\n        listener.call(this, event);\n      }\n    });\n  }\n  addEventListener(name, listener, options = null) {\n    let rmAbort = null;\n    if (options?.signal instanceof AbortSignal) {\n      const {\n        signal\n      } = options;\n      if (signal.aborted) {\n        warn(\"LoopbackPort - cannot use an `aborted` signal.\");\n        return;\n      }\n      const onAbort = () => this.removeEventListener(name, listener);\n      rmAbort = () => signal.removeEventListener(\"abort\", onAbort);\n      signal.addEventListener(\"abort\", onAbort);\n    }\n    this.#listeners.set(listener, rmAbort);\n  }\n  removeEventListener(name, listener) {\n    const rmAbort = this.#listeners.get(listener);\n    rmAbort?.();\n    this.#listeners.delete(listener);\n  }\n  terminate() {\n    for (const [, rmAbort] of this.#listeners) {\n      rmAbort?.();\n    }\n    this.#listeners.clear();\n  }\n}\nclass PDFWorker {\n  static #fakeWorkerId = 0;\n  static #isWorkerDisabled = false;\n  static #workerPorts;\n  static {\n    if (isNodeJS) {\n      this.#isWorkerDisabled = true;\n      GlobalWorkerOptions.workerSrc ||= \"./pdf.worker.mjs\";\n    }\n    this._isSameOrigin = (baseUrl, otherUrl) => {\n      let base;\n      try {\n        base = new URL(baseUrl);\n        if (!base.origin || base.origin === \"null\") {\n          return false;\n        }\n      } catch {\n        return false;\n      }\n      const other = new URL(otherUrl, base);\n      return base.origin === other.origin;\n    };\n    this._createCDNWrapper = url => {\n      const wrapper = `await import(\"${url}\");`;\n      return URL.createObjectURL(new Blob([wrapper], {\n        type: \"text/javascript\"\n      }));\n    };\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    this._readyCapability = Promise.withResolvers();\n    this._port = null;\n    this._webWorker = null;\n    this._messageHandler = null;\n    if (port) {\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  get promise() {\n    return this._readyCapability.promise;\n  }\n  #resolve() {\n    this._readyCapability.resolve();\n    this._messageHandler.send(\"configure\", {\n      verbosity: this.verbosity\n    });\n  }\n  get port() {\n    return this._port;\n  }\n  get messageHandler() {\n    return this._messageHandler;\n  }\n  _initializeFromPort(port) {\n    this._port = port;\n    this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n    this._messageHandler.on(\"ready\", function () {});\n    this.#resolve();\n  }\n  _initialize() {\n    if (PDFWorker.#isWorkerDisabled || PDFWorker.#mainThreadWorkerMessageHandler) {\n      this._setupFakeWorker();\n      return;\n    }\n    let {\n      workerSrc\n    } = PDFWorker;\n    try {\n      if (!PDFWorker._isSameOrigin(window.location.href, workerSrc)) {\n        workerSrc = PDFWorker._createCDNWrapper(new URL(workerSrc, window.location).href);\n      }\n      const worker = new Worker(workerSrc, {\n        type: \"module\"\n      });\n      const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n      const terminateEarly = () => {\n        ac.abort();\n        messageHandler.destroy();\n        worker.terminate();\n        if (this.destroyed) {\n          this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n        } else {\n          this._setupFakeWorker();\n        }\n      };\n      const ac = new AbortController();\n      worker.addEventListener(\"error\", () => {\n        if (!this._webWorker) {\n          terminateEarly();\n        }\n      }, {\n        signal: ac.signal\n      });\n      messageHandler.on(\"test\", data => {\n        ac.abort();\n        if (this.destroyed || !data) {\n          terminateEarly();\n          return;\n        }\n        this._messageHandler = messageHandler;\n        this._port = worker;\n        this._webWorker = worker;\n        this.#resolve();\n      });\n      messageHandler.on(\"ready\", data => {\n        ac.abort();\n        if (this.destroyed) {\n          terminateEarly();\n          return;\n        }\n        try {\n          sendTest();\n        } catch {\n          this._setupFakeWorker();\n        }\n      });\n      const sendTest = () => {\n        const testObj = new Uint8Array();\n        messageHandler.send(\"test\", testObj, [testObj.buffer]);\n      };\n      sendTest();\n      return;\n    } catch {\n      info(\"The worker has been disabled.\");\n    }\n    this._setupFakeWorker();\n  }\n  _setupFakeWorker() {\n    if (!PDFWorker.#isWorkerDisabled) {\n      warn(\"Setting up fake worker.\");\n      PDFWorker.#isWorkerDisabled = true;\n    }\n    PDFWorker._setupFakeWorkerGlobal.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      const id = `fake${PDFWorker.#fakeWorkerId++}`;\n      const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n      WorkerMessageHandler.setup(workerHandler, port);\n      this._messageHandler = new MessageHandler(id, id + \"_worker\", port);\n      this.#resolve();\n    }).catch(reason => {\n      this._readyCapability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n    });\n  }\n  destroy() {\n    this.destroyed = true;\n    this._webWorker?.terminate();\n    this._webWorker = null;\n    PDFWorker.#workerPorts?.delete(this._port);\n    this._port = null;\n    this._messageHandler?.destroy();\n    this._messageHandler = null;\n  }\n  static fromPort(params) {\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(\"PDFWorker.fromPort - the worker is being destroyed.\\n\" + \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\");\n      }\n      return cachedPort;\n    }\n    return new PDFWorker(params);\n  }\n  static get workerSrc() {\n    if (GlobalWorkerOptions.workerSrc) {\n      return GlobalWorkerOptions.workerSrc;\n    }\n    throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n  }\n  static get #mainThreadWorkerMessageHandler() {\n    try {\n      return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n    } catch {\n      return null;\n    }\n  }\n  static get _setupFakeWorkerGlobal() {\n    const loader = async () => {\n      if (this.#mainThreadWorkerMessageHandler) {\n        return this.#mainThreadWorkerMessageHandler;\n      }\n      const worker = await import(/*webpackIgnore: true*/this.workerSrc);\n      return worker.WorkerMessageHandler;\n    };\n    return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n  }\n}\nclass WorkerTransport {\n  #methodPromises = new Map();\n  #pageCache = new Map();\n  #pagePromises = new Map();\n  #pageRefCache = new Map();\n  #passwordCapability = null;\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.loadingParams = params.loadingParams;\n    this._params = params;\n    this.canvasFactory = factory.canvasFactory;\n    this.filterFactory = factory.filterFactory;\n    this.cMapReaderFactory = factory.cMapReaderFactory;\n    this.standardFontDataFactory = factory.standardFontDataFactory;\n    this.destroyed = false;\n    this.destroyCapability = null;\n    this._networkStream = networkStream;\n    this._fullReader = null;\n    this._lastProgress = null;\n    this.downloadInfoCapability = Promise.withResolvers();\n    this.setupMessageHandler();\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    this.#methodPromises.set(name, promise);\n    return promise;\n  }\n  get annotationStorage() {\n    return shadow(this, \"annotationStorage\", new AnnotationStorage());\n  }\n  getRenderingIntent(intent, annotationMode = AnnotationMode.ENABLE, printAnnotationStorage = null, isEditing = false, isOpList = false) {\n    let renderingIntent = RenderingIntentFlag.DISPLAY;\n    let annotationStorageSerializable = SerializableEmpty;\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    const annotationStorage = renderingIntent & RenderingIntentFlag.PRINT && printAnnotationStorage instanceof PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\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        annotationStorageSerializable = annotationStorage.serializable;\n        break;\n      default:\n        warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n    }\n    if (isEditing) {\n      renderingIntent += RenderingIntentFlag.IS_EDITING;\n    }\n    if (isOpList) {\n      renderingIntent += RenderingIntentFlag.OPLIST;\n    }\n    const {\n      ids: modifiedIds,\n      hash: modifiedIdsHash\n    } = annotationStorage.modifiedIds;\n    const cacheKeyBuf = [renderingIntent, annotationStorageSerializable.hash, modifiedIdsHash];\n    return {\n      renderingIntent,\n      cacheKey: cacheKeyBuf.join(\"_\"),\n      annotationStorageSerializable,\n      modifiedIds\n    };\n  }\n  destroy() {\n    if (this.destroyCapability) {\n      return this.destroyCapability.promise;\n    }\n    this.destroyed = true;\n    this.destroyCapability = Promise.withResolvers();\n    this.#passwordCapability?.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n    const waitOn = [];\n    for (const page of this.#pageCache.values()) {\n      waitOn.push(page._destroy());\n    }\n    this.#pageCache.clear();\n    this.#pagePromises.clear();\n    this.#pageRefCache.clear();\n    if (this.hasOwnProperty(\"annotationStorage\")) {\n      this.annotationStorage.resetModified();\n    }\n    const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n    waitOn.push(terminated);\n    Promise.all(waitOn).then(() => {\n      this.commonObjs.clear();\n      this.fontLoader.clear();\n      this.#methodPromises.clear();\n      this.filterFactory.destroy();\n      TextLayer.cleanup();\n      this._networkStream?.cancelAllRequests(new AbortException(\"Worker was terminated.\"));\n      this.messageHandler?.destroy();\n      this.messageHandler = null;\n      this.destroyCapability.resolve();\n    }, this.destroyCapability.reject);\n    return this.destroyCapability.promise;\n  }\n  setupMessageHandler() {\n    const {\n      messageHandler,\n      loadingTask\n    } = this;\n    messageHandler.on(\"GetReader\", (data, sink) => {\n      assert(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\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.read().then(function ({\n          value,\n          done\n        }) {\n          if (done) {\n            sink.close();\n            return;\n          }\n          assert(value instanceof ArrayBuffer, \"GetReader - expected an ArrayBuffer.\");\n          sink.enqueue(new Uint8Array(value), 1, [value]);\n        }).catch(reason => {\n          sink.error(reason);\n        });\n      };\n      sink.onCancel = reason => {\n        this._fullReader.cancel(reason);\n        sink.ready.catch(readyReason => {\n          if (this.destroyed) {\n            return;\n          }\n          throw readyReason;\n        });\n      };\n    });\n    messageHandler.on(\"ReaderHeadersReady\", async data => {\n      await this._fullReader.headersReady;\n      const {\n        isStreamingSupported,\n        isRangeSupported,\n        contentLength\n      } = this._fullReader;\n      if (!isStreamingSupported || !isRangeSupported) {\n        if (this._lastProgress) {\n          loadingTask.onProgress?.(this._lastProgress);\n        }\n        this._fullReader.onProgress = evt => {\n          loadingTask.onProgress?.({\n            loaded: evt.loaded,\n            total: evt.total\n          });\n        };\n      }\n      return {\n        isStreamingSupported,\n        isRangeSupported,\n        contentLength\n      };\n    });\n    messageHandler.on(\"GetRangeReader\", (data, sink) => {\n      assert(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n      const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n      if (!rangeReader) {\n        sink.close();\n        return;\n      }\n      sink.onPull = () => {\n        rangeReader.read().then(function ({\n          value,\n          done\n        }) {\n          if (done) {\n            sink.close();\n            return;\n          }\n          assert(value instanceof ArrayBuffer, \"GetRangeReader - expected an ArrayBuffer.\");\n          sink.enqueue(new Uint8Array(value), 1, [value]);\n        }).catch(reason => {\n          sink.error(reason);\n        });\n      };\n      sink.onCancel = reason => {\n        rangeReader.cancel(reason);\n        sink.ready.catch(readyReason => {\n          if (this.destroyed) {\n            return;\n          }\n          throw readyReason;\n        });\n      };\n    });\n    messageHandler.on(\"GetDoc\", ({\n      pdfInfo\n    }) => {\n      this._numPages = pdfInfo.numPages;\n      this._htmlForXfa = pdfInfo.htmlForXfa;\n      delete pdfInfo.htmlForXfa;\n      loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n    });\n    messageHandler.on(\"DocException\", ex => {\n      loadingTask._capability.reject(wrapReason(ex));\n    });\n    messageHandler.on(\"PasswordRequest\", ex => {\n      this.#passwordCapability = Promise.withResolvers();\n      try {\n        if (!loadingTask.onPassword) {\n          throw wrapReason(ex);\n        }\n        const updatePassword = password => {\n          if (password instanceof Error) {\n            this.#passwordCapability.reject(password);\n          } else {\n            this.#passwordCapability.resolve({\n              password\n            });\n          }\n        };\n        loadingTask.onPassword(updatePassword, ex.code);\n      } catch (err) {\n        this.#passwordCapability.reject(err);\n      }\n      return this.#passwordCapability.promise;\n    });\n    messageHandler.on(\"DataLoaded\", data => {\n      loadingTask.onProgress?.({\n        loaded: data.length,\n        total: data.length\n      });\n      this.downloadInfoCapability.resolve(data);\n    });\n    messageHandler.on(\"StartRenderPage\", data => {\n      if (this.destroyed) {\n        return;\n      }\n      const page = this.#pageCache.get(data.pageIndex);\n      page._startRenderPage(data.transparency, data.cacheKey);\n    });\n    messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n      if (this.destroyed) {\n        return null;\n      }\n      if (this.commonObjs.has(id)) {\n        return null;\n      }\n      switch (type) {\n        case \"Font\":\n          const {\n            disableFontFace,\n            fontExtraProperties,\n            pdfBug\n          } = this._params;\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          const inspectFont = pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n          const font = new FontFaceObject(exportedData, {\n            disableFontFace,\n            fontExtraProperties,\n            inspectFont\n          });\n          this.fontLoader.bind(font).catch(() => messageHandler.sendWithPromise(\"FontFallback\", {\n            id\n          })).finally(() => {\n            if (!fontExtraProperties && font.data) {\n              font.data = null;\n            }\n            this.commonObjs.resolve(id, font);\n          });\n          break;\n        case \"CopyLocalImage\":\n          const {\n            imageRef\n          } = exportedData;\n          assert(imageRef, \"The imageRef must be defined.\");\n          for (const pageProxy of this.#pageCache.values()) {\n            for (const [, data] of pageProxy.objs) {\n              if (data?.ref !== imageRef) {\n                continue;\n              }\n              if (!data.dataLen) {\n                return null;\n              }\n              this.commonObjs.resolve(id, structuredClone(data));\n              return data.dataLen;\n            }\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      return null;\n    });\n    messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n      if (this.destroyed) {\n        return;\n      }\n      const pageProxy = this.#pageCache.get(pageIndex);\n      if (pageProxy.objs.has(id)) {\n        return;\n      }\n      if (pageProxy._intentStates.size === 0) {\n        imageData?.bitmap?.close();\n        return;\n      }\n      switch (type) {\n        case \"Image\":\n          pageProxy.objs.resolve(id, imageData);\n          if (imageData?.dataLen > MAX_IMAGE_SIZE_TO_CACHE) {\n            pageProxy._maybeCleanupAfterRender = true;\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    messageHandler.on(\"DocProgress\", data => {\n      if (this.destroyed) {\n        return;\n      }\n      loadingTask.onProgress?.({\n        loaded: data.loaded,\n        total: data.total\n      });\n    });\n    messageHandler.on(\"FetchBuiltInCMap\", async data => {\n      if (this.destroyed) {\n        throw new Error(\"Worker was destroyed.\");\n      }\n      if (!this.cMapReaderFactory) {\n        throw new Error(\"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\");\n      }\n      return this.cMapReaderFactory.fetch(data);\n    });\n    messageHandler.on(\"FetchStandardFontData\", async data => {\n      if (this.destroyed) {\n        throw new Error(\"Worker was destroyed.\");\n      }\n      if (!this.standardFontDataFactory) {\n        throw new Error(\"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\");\n      }\n      return this.standardFontDataFactory.fetch(data);\n    });\n  }\n  getData() {\n    return this.messageHandler.sendWithPromise(\"GetData\", null);\n  }\n  saveDocument() {\n    if (this.annotationStorage.size <= 0) {\n      warn(\"saveDocument called while `annotationStorage` is empty, \" + \"please use the getData-method instead.\");\n    }\n    const {\n      map,\n      transfer\n    } = this.annotationStorage.serializable;\n    return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n      isPureXfa: !!this._htmlForXfa,\n      numPages: this._numPages,\n      annotationStorage: map,\n      filename: this._fullReader?.filename ?? null\n    }, transfer).finally(() => {\n      this.annotationStorage.resetModified();\n    });\n  }\n  getPage(pageNumber) {\n    if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n      return Promise.reject(new Error(\"Invalid page request.\"));\n    }\n    const pageIndex = pageNumber - 1,\n      cachedPromise = this.#pagePromises.get(pageIndex);\n    if (cachedPromise) {\n      return cachedPromise;\n    }\n    const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n      pageIndex\n    }).then(pageInfo => {\n      if (this.destroyed) {\n        throw new Error(\"Transport destroyed\");\n      }\n      if (pageInfo.refStr) {\n        this.#pageRefCache.set(pageInfo.refStr, pageNumber);\n      }\n      const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.pdfBug);\n      this.#pageCache.set(pageIndex, page);\n      return page;\n    });\n    this.#pagePromises.set(pageIndex, promise);\n    return promise;\n  }\n  getPageIndex(ref) {\n    if (!isRefProxy(ref)) {\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  getAnnotations(pageIndex, intent) {\n    return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n      pageIndex,\n      intent\n    });\n  }\n  getFieldObjects() {\n    return this.#cacheSimpleMethod(\"GetFieldObjects\");\n  }\n  hasJSActions() {\n    return this.#cacheSimpleMethod(\"HasJSActions\");\n  }\n  getCalculationOrderIds() {\n    return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n  }\n  getDestinations() {\n    return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\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  getPageLabels() {\n    return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n  }\n  getPageLayout() {\n    return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n  }\n  getPageMode() {\n    return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n  }\n  getViewerPreferences() {\n    return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n  }\n  getOpenAction() {\n    return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n  }\n  getAttachments() {\n    return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n  }\n  getDocJSActions() {\n    return this.#cacheSimpleMethod(\"GetDocJSActions\");\n  }\n  getPageJSActions(pageIndex) {\n    return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n      pageIndex\n    });\n  }\n  getStructTree(pageIndex) {\n    return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n      pageIndex\n    });\n  }\n  getOutline() {\n    return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n  }\n  getOptionalContentConfig(renderingIntent) {\n    return this.#cacheSimpleMethod(\"GetOptionalContentConfig\").then(data => new OptionalContentConfig(data, renderingIntent));\n  }\n  getPermissions() {\n    return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\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.sendWithPromise(name, null).then(results => ({\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    this.#methodPromises.set(name, promise);\n    return promise;\n  }\n  getMarkInfo() {\n    return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n  }\n  async startCleanup(keepLoadedFonts = false) {\n    if (this.destroyed) {\n      return;\n    }\n    await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n    for (const page of this.#pageCache.values()) {\n      const cleanupSuccessful = page.cleanup();\n      if (!cleanupSuccessful) {\n        throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);\n      }\n    }\n    this.commonObjs.clear();\n    if (!keepLoadedFonts) {\n      this.fontLoader.clear();\n    }\n    this.#methodPromises.clear();\n    this.filterFactory.destroy(true);\n    TextLayer.cleanup();\n  }\n  cachedPageNumber(ref) {\n    if (!isRefProxy(ref)) {\n      return null;\n    }\n    const refStr = ref.gen === 0 ? `${ref.num}R` : `${ref.num}R${ref.gen}`;\n    return this.#pageRefCache.get(refStr) ?? null;\n  }\n}\nconst INITIAL_DATA = Symbol(\"INITIAL_DATA\");\nclass PDFObjects {\n  #objs = Object.create(null);\n  #ensureObj(objId) {\n    return this.#objs[objId] ||= {\n      ...Promise.withResolvers(),\n      data: INITIAL_DATA\n    };\n  }\n  get(objId, callback = null) {\n    if (callback) {\n      const obj = this.#ensureObj(objId);\n      obj.promise.then(() => callback(obj.data));\n      return null;\n    }\n    const obj = this.#objs[objId];\n    if (!obj || obj.data === INITIAL_DATA) {\n      throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n    }\n    return obj.data;\n  }\n  has(objId) {\n    const obj = this.#objs[objId];\n    return !!obj && obj.data !== INITIAL_DATA;\n  }\n  delete(objId) {\n    const obj = this.#objs[objId];\n    if (!obj || obj.data === INITIAL_DATA) {\n      return false;\n    }\n    delete this.#objs[objId];\n    return true;\n  }\n  resolve(objId, data = null) {\n    const obj = this.#ensureObj(objId);\n    obj.data = data;\n    obj.resolve();\n  }\n  clear() {\n    for (const objId in this.#objs) {\n      const {\n        data\n      } = this.#objs[objId];\n      data?.bitmap?.close();\n    }\n    this.#objs = Object.create(null);\n  }\n  *[Symbol.iterator]() {\n    for (const objId in this.#objs) {\n      const {\n        data\n      } = this.#objs[objId];\n      if (data === INITIAL_DATA) {\n        continue;\n      }\n      yield [objId, data];\n    }\n  }\n}\nclass RenderTask {\n  #internalRenderTask = null;\n  constructor(internalRenderTask) {\n    this.#internalRenderTask = internalRenderTask;\n    this.onContinue = null;\n  }\n  get promise() {\n    return this.#internalRenderTask.capability.promise;\n  }\n  cancel(extraDelay = 0) {\n    this.#internalRenderTask.cancel(null, extraDelay);\n  }\n  get separateAnnots() {\n    const {\n      separateAnnots\n    } = this.#internalRenderTask.operatorList;\n    if (!separateAnnots) {\n      return false;\n    }\n    const {\n      annotationCanvasMap\n    } = this.#internalRenderTask;\n    return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0;\n  }\n}\nclass InternalRenderTask {\n  #rAF = null;\n  static #canvasInUse = new WeakSet();\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    this.running = false;\n    this.graphicsReadyCallback = null;\n    this.graphicsReady = false;\n    this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n    this.cancelled = false;\n    this.capability = Promise.withResolvers();\n    this.task = new RenderTask(this);\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  get completed() {\n    return this.capability.promise.catch(function () {});\n  }\n  initializeGraphics({\n    transparency = false,\n    optionalContentConfig\n  }) {\n    if (this.cancelled) {\n      return;\n    }\n    if (this._canvas) {\n      if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n        throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n      }\n      InternalRenderTask.#canvasInUse.add(this._canvas);\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 {\n      canvasContext,\n      viewport,\n      transform,\n      background\n    } = this.params;\n    this.gfx = new CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n      optionalContentConfig\n    }, this.annotationCanvasMap, this.pageColors);\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  cancel(error = null, extraDelay = 0) {\n    this.running = false;\n    this.cancelled = true;\n    this.gfx?.endDrawing();\n    if (this.#rAF) {\n      window.cancelAnimationFrame(this.#rAF);\n      this.#rAF = null;\n    }\n    InternalRenderTask.#canvasInUse.delete(this._canvas);\n    this.callback(error || new RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay));\n  }\n  operatorListChanged() {\n    if (!this.graphicsReady) {\n      this.graphicsReadyCallback ||= this._continueBound;\n      return;\n    }\n    this.stepper?.updateOperatorList(this.operatorList);\n    if (this.running) {\n      return;\n    }\n    this._continue();\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  _scheduleNext() {\n    if (this._useRequestAnimationFrame) {\n      this.#rAF = window.requestAnimationFrame(() => {\n        this.#rAF = null;\n        this._nextBound().catch(this._cancelBound);\n      });\n    } else {\n      Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n    }\n  }\n  async _next() {\n    if (this.cancelled) {\n      return;\n    }\n    this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\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        this.callback();\n      }\n    }\n  }\n}\nconst version = \"4.10.38\";\nconst build = \"f9bea397f\";\n\n;// ./src/shared/scripting_utils.js\nfunction makeColorComp(n) {\n  return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \"0\");\n}\nfunction scaleAndClamp(x) {\n  return Math.max(0, Math.min(255, 255 * x));\n}\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  static G_CMYK([g]) {\n    return [\"CMYK\", 0, 0, 0, 1 - g];\n  }\n  static G_RGB([g]) {\n    return [\"RGB\", g, g, g];\n  }\n  static G_rgb([g]) {\n    g = scaleAndClamp(g);\n    return [g, g, g];\n  }\n  static G_HTML([g]) {\n    const G = makeColorComp(g);\n    return `#${G}${G}${G}`;\n  }\n  static RGB_G([r, g, b]) {\n    return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n  }\n  static RGB_rgb(color) {\n    return color.map(scaleAndClamp);\n  }\n  static RGB_HTML(color) {\n    return `#${color.map(makeColorComp).join(\"\")}`;\n  }\n  static T_HTML() {\n    return \"#00000000\";\n  }\n  static T_rgb() {\n    return [null];\n  }\n  static CMYK_RGB([c, y, m, k]) {\n    return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n  }\n  static CMYK_rgb([c, y, m, k]) {\n    return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];\n  }\n  static CMYK_HTML(components) {\n    const rgb = this.CMYK_RGB(components).slice(1);\n    return this.RGB_HTML(rgb);\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\n;// ./src/display/svg_factory.js\n\n\nclass BaseSVGFactory {\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    if (!skipDimensions) {\n      svg.setAttribute(\"width\", `${width}px`);\n      svg.setAttribute(\"height\", `${height}px`);\n    }\n    svg.setAttribute(\"preserveAspectRatio\", \"none\");\n    svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n    return svg;\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  _createSVG(type) {\n    unreachable(\"Abstract method `_createSVG` called.\");\n  }\n}\nclass DOMSVGFactory extends BaseSVGFactory {\n  _createSVG(type) {\n    return document.createElementNS(SVG_NS, type);\n  }\n}\n\n;// ./src/display/xfa_layer.js\n\nclass XfaLayer {\n  static setupStorage(html, id, element, storage, intent) {\n    const storedData = storage.getValue(id, {\n      value: null\n    });\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, {\n            value: event.target.value\n          });\n        });\n        break;\n      case \"input\":\n        if (element.attributes.type === \"radio\" || element.attributes.type === \"checkbox\") {\n          if (storedData.value === element.attributes.xfaOn) {\n            html.setAttribute(\"checked\", true);\n          } else if (storedData.value === element.attributes.xfaOff) {\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 ? event.target.getAttribute(\"xfaOn\") : 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, {\n              value: event.target.value\n            });\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 = options.selectedIndex === -1 ? \"\" : options[options.selectedIndex].value;\n          storage.setValue(id, {\n            value\n          });\n        });\n        break;\n    }\n  }\n  static setAttributes({\n    html,\n    element,\n    storage = null,\n    intent,\n    linkService\n  }) {\n    const {\n      attributes\n    } = element;\n    const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n    if (attributes.type === \"radio\") {\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      switch (key) {\n        case \"class\":\n          if (value.length) {\n            html.setAttribute(key, value.join(\" \"));\n          }\n          break;\n        case \"dataId\":\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    if (isHTMLAnchorElement) {\n      linkService.addLinkAttributes(html, attributes.href, attributes.newWindow);\n    }\n    if (storage && attributes.dataId) {\n      this.setupStorage(html, attributes.dataId, element, storage);\n    }\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    const isNotForRichText = intent !== \"richText\";\n    const rootDiv = parameters.div;\n    rootDiv.append(rootHtml);\n    if (parameters.viewport) {\n      const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n      rootDiv.style.transform = transform;\n    }\n    if (isNotForRichText) {\n      rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n    }\n    const textDivs = [];\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 {\n        textDivs\n      };\n    }\n    const stack = [[root, -1, rootHtml]];\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      const child = parent.children[++stack.at(-1)[1]];\n      if (child === null) {\n        continue;\n      }\n      const {\n        name\n      } = child;\n      if (name === \"#text\") {\n        const node = document.createTextNode(child.value);\n        textDivs.push(node);\n        html.append(node);\n        continue;\n      }\n      const childHtml = child?.attributes?.xmlns ? document.createElementNS(child.attributes.xmlns, name) : document.createElement(name);\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      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    for (const el of rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) {\n      el.setAttribute(\"readOnly\", true);\n    }\n    return {\n      textDivs\n    };\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\n;// ./src/display/annotation_layer.js\n\n\n\n\n\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst annotation_layer_DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nfunction getRectDims(rect) {\n  return {\n    width: rect[2] - rect[0],\n    height: rect[3] - rect[1]\n  };\n}\nclass AnnotationElementFactory {\n  static create(parameters) {\n    const subtype = parameters.data.annotationType;\n    switch (subtype) {\n      case AnnotationType.LINK:\n        return new LinkAnnotationElement(parameters);\n      case AnnotationType.TEXT:\n        return new TextAnnotationElement(parameters);\n      case AnnotationType.WIDGET:\n        const fieldType = parameters.data.fieldType;\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      case AnnotationType.POPUP:\n        return new PopupAnnotationElement(parameters);\n      case AnnotationType.FREETEXT:\n        return new FreeTextAnnotationElement(parameters);\n      case AnnotationType.LINE:\n        return new LineAnnotationElement(parameters);\n      case AnnotationType.SQUARE:\n        return new SquareAnnotationElement(parameters);\n      case AnnotationType.CIRCLE:\n        return new CircleAnnotationElement(parameters);\n      case AnnotationType.POLYLINE:\n        return new PolylineAnnotationElement(parameters);\n      case AnnotationType.CARET:\n        return new CaretAnnotationElement(parameters);\n      case AnnotationType.INK:\n        return new InkAnnotationElement(parameters);\n      case AnnotationType.POLYGON:\n        return new PolygonAnnotationElement(parameters);\n      case AnnotationType.HIGHLIGHT:\n        return new HighlightAnnotationElement(parameters);\n      case AnnotationType.UNDERLINE:\n        return new UnderlineAnnotationElement(parameters);\n      case AnnotationType.SQUIGGLY:\n        return new SquigglyAnnotationElement(parameters);\n      case AnnotationType.STRIKEOUT:\n        return new StrikeOutAnnotationElement(parameters);\n      case AnnotationType.STAMP:\n        return new StampAnnotationElement(parameters);\n      case AnnotationType.FILEATTACHMENT:\n        return new FileAttachmentAnnotationElement(parameters);\n      default:\n        return new AnnotationElement(parameters);\n    }\n  }\n}\nclass AnnotationElement {\n  #updates = null;\n  #hasBorder = false;\n  #popupElement = null;\n  constructor(parameters, {\n    isRenderable = false,\n    ignoreBorder = false,\n    createQuadrilaterals = false\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    if (isRenderable) {\n      this.container = this._createContainer(ignoreBorder);\n    }\n    if (createQuadrilaterals) {\n      this._createQuadrilaterals();\n    }\n  }\n  static _hasPopupData({\n    titleObj,\n    contentsObj,\n    richText\n  }) {\n    return !!(titleObj?.str || contentsObj?.str || richText?.str);\n  }\n  get _isEditable() {\n    return this.data.isEditable;\n  }\n  get hasPopupData() {\n    return AnnotationElement._hasPopupData(this.data);\n  }\n  updateEdited(params) {\n    if (!this.container) {\n      return;\n    }\n    this.#updates ||= {\n      rect: this.data.rect.slice(0)\n    };\n    const {\n      rect\n    } = params;\n    if (rect) {\n      this.#setRectEdited(rect);\n    }\n    this.#popupElement?.popup.updateEdited(params);\n  }\n  resetEdited() {\n    if (!this.#updates) {\n      return;\n    }\n    this.#setRectEdited(this.#updates.rect);\n    this.#popupElement?.popup.resetEdited();\n    this.#updates = null;\n  }\n  #setRectEdited(rect) {\n    const {\n      container: {\n        style\n      },\n      data: {\n        rect: currentRect,\n        rotation\n      },\n      parent: {\n        viewport: {\n          rawDims: {\n            pageWidth,\n            pageHeight,\n            pageX,\n            pageY\n          }\n        }\n      }\n    } = this;\n    currentRect?.splice(0, 4, ...rect);\n    const {\n      width,\n      height\n    } = getRectDims(rect);\n    style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n    style.top = `${100 * (pageHeight - rect[3] + pageY) / pageHeight}%`;\n    if (rotation === 0) {\n      style.width = `${100 * width / pageWidth}%`;\n      style.height = `${100 * height / pageHeight}%`;\n    } else {\n      this.setRotation(rotation);\n    }\n  }\n  _createContainer(ignoreBorder) {\n    const {\n      data,\n      parent: {\n        page,\n        viewport\n      }\n    } = this;\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    const {\n      style\n    } = container;\n    style.zIndex = this.parent.zIndex++;\n    if (data.alternativeText) {\n      container.title = data.alternativeText;\n    }\n    if (data.noRotate) {\n      container.classList.add(\"norotate\");\n    }\n    if (!data.rect || this instanceof PopupAnnotationElement) {\n      const {\n        rotation\n      } = data;\n      if (!data.hasOwnCanvas && rotation !== 0) {\n        this.setRotation(rotation, container);\n      }\n      return container;\n    }\n    const {\n      width,\n      height\n    } = getRectDims(data.rect);\n    if (!ignoreBorder && data.borderStyle.width > 0) {\n      style.borderWidth = `${data.borderStyle.width}px`;\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        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        style.borderRadius = radius;\n      }\n      switch (data.borderStyle.style) {\n        case AnnotationBorderStyleType.SOLID:\n          style.borderStyle = \"solid\";\n          break;\n        case AnnotationBorderStyleType.DASHED:\n          style.borderStyle = \"dashed\";\n          break;\n        case AnnotationBorderStyleType.BEVELED:\n          warn(\"Unimplemented border style: beveled\");\n          break;\n        case AnnotationBorderStyleType.INSET:\n          warn(\"Unimplemented border style: inset\");\n          break;\n        case AnnotationBorderStyleType.UNDERLINE:\n          style.borderBottomStyle = \"solid\";\n          break;\n        default:\n          break;\n      }\n      const borderColor = data.borderColor || null;\n      if (borderColor) {\n        this.#hasBorder = true;\n        style.borderColor = Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0);\n      } else {\n        style.borderWidth = 0;\n      }\n    }\n    const rect = Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n    const {\n      pageWidth,\n      pageHeight,\n      pageX,\n      pageY\n    } = viewport.rawDims;\n    style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n    style.top = `${100 * (rect[1] - pageY) / pageHeight}%`;\n    const {\n      rotation\n    } = data;\n    if (data.hasOwnCanvas || rotation === 0) {\n      style.width = `${100 * width / pageWidth}%`;\n      style.height = `${100 * height / pageHeight}%`;\n    } else {\n      this.setRotation(rotation, container);\n    }\n    return container;\n  }\n  setRotation(angle, container = this.container) {\n    if (!this.data.rect) {\n      return;\n    }\n    const {\n      pageWidth,\n      pageHeight\n    } = this.parent.viewport.rawDims;\n    const {\n      width,\n      height\n    } = getRectDims(this.data.rect);\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    container.style.width = `${elementWidth}%`;\n    container.style.height = `${elementHeight}%`;\n    container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\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] = ColorConverters[`${colorType}_HTML`](colorArray);\n      this.annotationStorage.setValue(this.data.id, {\n        [styleName]: ColorConverters[`${colorType}_rgb`](colorArray)\n      });\n    };\n    return shadow(this, \"_commonActions\", {\n      display: event => {\n        const {\n          display\n        } = event.detail;\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 {\n          hidden\n        } = 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({\n          preventScroll: false\n        }), 0);\n      },\n      userName: event => {\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  _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  _setDefaultPropertiesFromJS(element) {\n    if (!this.enableScripting) {\n      return;\n    }\n    const storedData = this.annotationStorage.getRawValue(this.data.id);\n    if (!storedData) {\n      return;\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        delete storedData[actionName];\n      }\n    }\n  }\n  _createQuadrilaterals() {\n    if (!this.container) {\n      return;\n    }\n    const {\n      quadPoints\n    } = this.data;\n    if (!quadPoints) {\n      return;\n    }\n    const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect.map(x => Math.fround(x));\n    if (quadPoints.length === 8) {\n      const [trX, trY, blX, blY] = quadPoints.subarray(2, 6);\n      if (rectTrX === trX && rectTrY === trY && rectBlX === blX && rectBlY === blY) {\n        return;\n      }\n    }\n    const {\n      style\n    } = this.container;\n    let svgBuffer;\n    if (this.#hasBorder) {\n      const {\n        borderColor,\n        borderWidth\n      } = style;\n      style.borderWidth = 0;\n      svgBuffer = [\"url('data:image/svg+xml;utf8,\", `<svg xmlns=\"http://www.w3.org/2000/svg\"`, ` preserveAspectRatio=\"none\" viewBox=\"0 0 1 1\">`, `<g fill=\"transparent\" stroke=\"${borderColor}\" stroke-width=\"${borderWidth}\">`];\n      this.container.classList.add(\"hasBorder\");\n    }\n    const width = rectTrX - rectBlX;\n    const height = rectTrY - rectBlY;\n    const {\n      svgFactory\n    } = 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    for (let i = 2, ii = quadPoints.length; i < ii; i += 8) {\n      const trX = quadPoints[i];\n      const trY = quadPoints[i + 1];\n      const blX = quadPoints[i + 2];\n      const blY = quadPoints[i + 3];\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(`<rect vector-effect=\"non-scaling-stroke\" x=\"${x}\" y=\"${y}\" width=\"${rectWidth}\" height=\"${rectHeight}\"/>`);\n    }\n    if (this.#hasBorder) {\n      svgBuffer.push(`</g></svg>')`);\n      style.backgroundImage = svgBuffer.join(\"\");\n    }\n    this.container.append(svg);\n    this.container.style.clipPath = `url(#${id})`;\n  }\n  _createPopup() {\n    const {\n      data\n    } = this;\n    const popup = this.#popupElement = 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  render() {\n    unreachable(\"Abstract method `AnnotationElement.render` called\");\n  }\n  _getElementsByName(name, skipId = null) {\n    const fields = [];\n    if (this._fieldObjects) {\n      const fieldObj = this._fieldObjects[name];\n      if (fieldObj) {\n        for (const {\n          page,\n          id,\n          exportValues\n        } of fieldObj) {\n          if (page === -1) {\n            continue;\n          }\n          if (id === skipId) {\n            continue;\n          }\n          const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n          const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n          if (domElement && !GetElementsByNameSet.has(domElement)) {\n            warn(`_getElementsByName - element not allowed: ${id}`);\n            continue;\n          }\n          fields.push({\n            id,\n            exportValue,\n            domElement\n          });\n        }\n      }\n      return fields;\n    }\n    for (const domElement of document.getElementsByName(name)) {\n      const {\n        exportValue\n      } = 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({\n        id,\n        exportValue,\n        domElement\n      });\n    }\n    return fields;\n  }\n  show() {\n    if (this.container) {\n      this.container.hidden = false;\n    }\n    this.popup?.maybeShow();\n  }\n  hide() {\n    if (this.container) {\n      this.container.hidden = true;\n    }\n    this.popup?.forceHide();\n  }\n  getElementsToTriggerPopup() {\n    return this.container;\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  _editOnDoubleClick() {\n    if (!this._isEditable) {\n      return;\n    }\n    const {\n      annotationEditorType: mode,\n      data: {\n        id: editId\n      }\n    } = this;\n    this.container.addEventListener(\"dblclick\", () => {\n      this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n        source: this,\n        mode,\n        editId\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  render() {\n    const {\n      data,\n      linkService\n    } = this;\n    const link = document.createElement(\"a\");\n    link.setAttribute(\"data-element-id\", data.id);\n    let isBound = false;\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 (data.actions && (data.actions.Action || data.actions[\"Mouse Up\"] || data.actions[\"Mouse Down\"]) && this.enableScripting && this.hasJSActions) {\n        this._bindJSAction(link, data);\n        isBound = true;\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    this.container.classList.add(\"linkAnnotation\");\n    if (isBound) {\n      this.container.append(link);\n    }\n    return this.container;\n  }\n  #setInternalLink() {\n    this.container.setAttribute(\"data-internal-link\", \"\");\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 === \"\") {\n      this.#setInternalLink();\n    }\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  #bindAttachment(link, attachment, dest = null) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    if (attachment.description) {\n      link.title = attachment.description;\n    }\n    link.onclick = () => {\n      this.downloadManager?.openOrDownloadData(attachment.content, attachment.filename, dest);\n      return false;\n    };\n    this.#setInternalLink();\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  _bindJSAction(link, data) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    const map = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\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    if (!link.onclick) {\n      link.onclick = () => false;\n    }\n    this.#setInternalLink();\n  }\n  _bindResetFormAction(link, resetForm) {\n    const otherClickAction = link.onclick;\n    if (!otherClickAction) {\n      link.href = this.linkService.getAnchorUrl(\"\");\n    }\n    this.#setInternalLink();\n    if (!this._fieldObjects) {\n      warn(`_bindResetFormAction - \"resetForm\" action not supported, ` + \"ensure that the `fieldObjects` parameter is provided.\");\n      if (!otherClickAction) {\n        link.onclick = () => false;\n      }\n      return;\n    }\n    link.onclick = () => {\n      otherClickAction?.();\n      const {\n        fields: resetFormFields,\n        refs: resetFormRefs,\n        include\n      } = resetForm;\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 {\n            id\n          } 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      const storage = this.annotationStorage;\n      const allIds = [];\n      for (const field of allFields) {\n        const {\n          id\n        } = field;\n        allIds.push(id);\n        switch (field.type) {\n          case \"text\":\n            {\n              const value = field.defaultValue || \"\";\n              storage.setValue(id, {\n                value\n              });\n              break;\n            }\n          case \"checkbox\":\n          case \"radiobutton\":\n            {\n              const value = field.defaultValue === field.exportValues;\n              storage.setValue(id, {\n                value\n              });\n              break;\n            }\n          case \"combobox\":\n          case \"listbox\":\n            {\n              const value = field.defaultValue || \"\";\n              storage.setValue(id, {\n                value\n              });\n              break;\n            }\n          default:\n            continue;\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      if (this.enableScripting) {\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: \"app\",\n            ids: allIds,\n            name: \"ResetForm\"\n          }\n        });\n      }\n      return false;\n    };\n  }\n}\nclass TextAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true\n    });\n  }\n  render() {\n    this.container.classList.add(\"textAnnotation\");\n    const image = document.createElement(\"img\");\n    image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n    image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n    image.setAttribute(\"data-l10n-args\", JSON.stringify({\n      type: this.data.name\n    }));\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    this.container.append(image);\n    return this.container;\n  }\n}\nclass WidgetAnnotationElement extends AnnotationElement {\n  render() {\n    return this.container;\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  _getKeyModifier(event) {\n    return util_FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n  }\n  _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n    if (baseName.includes(\"mouse\")) {\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      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        if (!valueGetter) {\n          return;\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  _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 ||= {\n            focused: false\n          };\n        }\n        this._setEventListener(element, elementData, baseName, eventName, getter);\n        if (eventName === \"Focus\" && !this.data.actions?.Blur) {\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  _setBackgroundColor(element) {\n    const color = this.data.backgroundColor || null;\n    element.style.backgroundColor = color === null ? \"transparent\" : Util.makeHexColor(color[0], color[1], color[2]);\n  }\n  _setTextStyle(element) {\n    const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n    const {\n      fontColor\n    } = this.data.defaultAppearanceData;\n    const fontSize = this.data.defaultAppearanceData.fontSize || annotation_layer_DEFAULT_FONT_SIZE;\n    const style = element.style;\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(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n      const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n      const lineHeight = height / numberOfLines;\n      computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / LINE_FACTOR));\n    } else {\n      const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n      computedFontSize = Math.min(fontSize, roundToOneDecimal(height / LINE_FACTOR));\n    }\n    style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;\n    style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n    if (this.data.textAlignment !== null) {\n      style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\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}\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    const isRenderable = parameters.renderForms || parameters.data.hasOwnCanvas || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n    super(parameters, {\n      isRenderable\n    });\n  }\n  setPropertyOnSiblings(base, key, value, keyInStorage) {\n    const storage = this.annotationStorage;\n    for (const element of this._getElementsByName(base.name, base.id)) {\n      if (element.domElement) {\n        element.domElement[key] = value;\n      }\n      storage.setValue(element.id, {\n        [keyInStorage]: value\n      });\n    }\n  }\n  render() {\n    const storage = this.annotationStorage;\n    const id = this.data.id;\n    this.container.classList.add(\"textWidgetAnnotation\");\n    let element = null;\n    if (this.renderForms) {\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      let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n      if (fieldFormattedValues && this.data.comb) {\n        fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n      }\n      const elementData = {\n        userValue: textContent,\n        formattedValue: fieldFormattedValues,\n        lastCommittedValue: null,\n        commitKey: 1,\n        focused: false\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      element.disabled = this.data.readOnly;\n      element.name = this.data.fieldName;\n      element.tabIndex = DEFAULT_TAB_INDEX;\n      this._setRequired(element, this.data.required);\n      if (maxLen) {\n        element.maxLength = maxLen;\n      }\n      element.addEventListener(\"input\", event => {\n        storage.setValue(id, {\n          value: event.target.value\n        });\n        this.setPropertyOnSiblings(element, \"value\", event.target.value, \"value\");\n        elementData.formattedValue = null;\n      });\n      element.addEventListener(\"resetform\", event => {\n        const defaultValue = this.data.defaultFieldValue ?? \"\";\n        element.value = elementData.userValue = defaultValue;\n        elementData.formattedValue = null;\n      });\n      let blurListener = event => {\n        const {\n          formattedValue\n        } = elementData;\n        if (formattedValue !== null && formattedValue !== undefined) {\n          event.target.value = formattedValue;\n        }\n        event.target.scrollLeft = 0;\n      };\n      if (this.enableScripting && this.hasJSActions) {\n        element.addEventListener(\"focus\", event => {\n          if (elementData.focused) {\n            return;\n          }\n          const {\n            target\n          } = event;\n          if (elementData.userValue) {\n            target.value = elementData.userValue;\n          }\n          elementData.lastCommittedValue = target.value;\n          elementData.commitKey = 1;\n          if (!this.data.actions?.Focus) {\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, {\n                value: elementData.userValue.toString()\n              });\n              event.target.value = elementData.userValue;\n            },\n            formattedValue(event) {\n              const {\n                formattedValue\n              } = event.detail;\n              elementData.formattedValue = formattedValue;\n              if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) {\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 {\n                charLimit\n              } = event.detail;\n              const {\n                target\n              } = event;\n              if (charLimit === 0) {\n                target.removeAttribute(\"maxLength\");\n                return;\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, {\n                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        element.addEventListener(\"keydown\", event => {\n          elementData.commitKey = 1;\n          let commitKey = -1;\n          if (event.key === \"Escape\") {\n            commitKey = 0;\n          } else if (event.key === \"Enter\" && !this.data.multiLine) {\n            commitKey = 2;\n          } else if (event.key === \"Tab\") {\n            elementData.commitKey = 3;\n          }\n          if (commitKey === -1) {\n            return;\n          }\n          const {\n            value\n          } = event.target;\n          if (elementData.lastCommittedValue === value) {\n            return;\n          }\n          elementData.lastCommittedValue = 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          if (!this.data.actions?.Blur) {\n            elementData.focused = false;\n          }\n          const {\n            value\n          } = 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        if (this.data.actions?.Keystroke) {\n          element.addEventListener(\"beforeinput\", event => {\n            elementData.lastCommittedValue = null;\n            const {\n              data,\n              target\n            } = event;\n            const {\n              value,\n              selectionStart,\n              selectionEnd\n            } = target;\n            let selStart = selectionStart,\n              selEnd = selectionEnd;\n            switch (event.inputType) {\n              case \"deleteWordBackward\":\n                {\n                  const match = value.substring(0, selectionStart).match(/\\w*[^\\w]*$/);\n                  if (match) {\n                    selStart -= match[0].length;\n                  }\n                  break;\n                }\n              case \"deleteWordForward\":\n                {\n                  const match = value.substring(selectionStart).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            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        this._setEventListeners(element, elementData, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.value);\n      }\n      if (blurListener) {\n        element.addEventListener(\"blur\", blurListener);\n      }\n      if (this.data.comb) {\n        const fieldWidth = this.data.rect[2] - this.data.rect[0];\n        const combWidth = fieldWidth / maxLen;\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      if (this.data.hasOwnCanvas) {\n        element.hidden = true;\n      }\n    }\n    this._setTextStyle(element);\n    this._setBackgroundColor(element);\n    this._setDefaultPropertiesFromJS(element);\n    this.container.append(element);\n    return this.container;\n  }\n}\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: !!parameters.data.hasOwnCanvas\n    });\n  }\n}\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      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      value = value !== \"Off\";\n      storage.setValue(id, {\n        value\n      });\n    }\n    this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n    const element = document.createElement(\"input\");\n    GetElementsByNameSet.add(element);\n    element.setAttribute(\"data-element-id\", id);\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    element.addEventListener(\"change\", event => {\n      const {\n        name,\n        checked\n      } = event.target;\n      for (const checkbox of this._getElementsByName(name, id)) {\n        const curChecked = checked && checkbox.exportValue === data.exportValue;\n        if (checkbox.domElement) {\n          checkbox.domElement.checked = curChecked;\n        }\n        storage.setValue(checkbox.id, {\n          value: curChecked\n        });\n      }\n      storage.setValue(id, {\n        value: checked\n      });\n    });\n    element.addEventListener(\"resetform\", event => {\n      const defaultValue = data.defaultFieldValue || \"Off\";\n      event.target.checked = defaultValue === data.exportValue;\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, {\n              value: event.target.checked\n            });\n          }\n        };\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n      this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n    }\n    this._setBackgroundColor(element);\n    this._setDefaultPropertiesFromJS(element);\n    this.container.append(element);\n    return this.container;\n  }\n}\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      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      value = value !== data.buttonValue;\n      storage.setValue(id, {\n        value\n      });\n    }\n    if (value) {\n      for (const radio of this._getElementsByName(data.fieldName, id)) {\n        storage.setValue(radio.id, {\n          value: false\n        });\n      }\n    }\n    const element = document.createElement(\"input\");\n    GetElementsByNameSet.add(element);\n    element.setAttribute(\"data-element-id\", id);\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    element.addEventListener(\"change\", event => {\n      const {\n        name,\n        checked\n      } = event.target;\n      for (const radio of this._getElementsByName(name, id)) {\n        storage.setValue(radio.id, {\n          value: false\n        });\n      }\n      storage.setValue(id, {\n        value: checked\n      });\n    });\n    element.addEventListener(\"resetform\", event => {\n      const defaultValue = data.defaultFieldValue;\n      event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;\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, {\n                value: curChecked\n              });\n            }\n          }\n        };\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n      this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n    }\n    this._setBackgroundColor(element);\n    this._setDefaultPropertiesFromJS(element);\n    this.container.append(element);\n    return this.container;\n  }\n}\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      ignoreBorder: parameters.data.hasAppearance\n    });\n  }\n  render() {\n    const container = super.render();\n    container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n    const linkElement = container.lastChild;\n    if (this.enableScripting && this.hasJSActions && linkElement) {\n      this._setDefaultPropertiesFromJS(linkElement);\n      linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n        this._dispatchEventFromSandbox({}, jsEvent);\n      });\n    }\n    return container;\n  }\n}\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      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    const storedData = storage.getValue(id, {\n      value: this.data.fieldValue\n    });\n    const selectElement = document.createElement(\"select\");\n    GetElementsByNameSet.add(selectElement);\n    selectElement.setAttribute(\"data-element-id\", id);\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    let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n    if (!this.data.combo) {\n      selectElement.size = this.data.options.length;\n      if (this.data.multiSelect) {\n        selectElement.multiple = true;\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    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    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      removeEmptyEntry = () => {\n        noneOptionElement.remove();\n        selectElement.removeEventListener(\"input\", removeEmptyEntry);\n        removeEmptyEntry = null;\n      };\n      selectElement.addEventListener(\"input\", removeEmptyEntry);\n    }\n    const getValue = isExport => {\n      const name = isExport ? \"value\" : \"textContent\";\n      const {\n        options,\n        multiple\n      } = selectElement;\n      if (!multiple) {\n        return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n      }\n      return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);\n    };\n    let selectedValues = getValue(false);\n    const getItems = event => {\n      const options = event.target.options;\n      return Array.prototype.map.call(options, option => ({\n        displayValue: option.textContent,\n        exportValue: option.value\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(true)\n            });\n            selectedValues = getValue(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(options, option => option.selected);\n              if (i === -1) {\n                options[0].selected = true;\n              }\n            }\n            storage.setValue(id, {\n              value: getValue(true),\n              items: getItems(event)\n            });\n            selectedValues = getValue(false);\n          },\n          clear(event) {\n            while (selectElement.length !== 0) {\n              selectElement.remove(0);\n            }\n            storage.setValue(id, {\n              value: null,\n              items: []\n            });\n            selectedValues = getValue(false);\n          },\n          insert(event) {\n            const {\n              index,\n              displayValue,\n              exportValue\n            } = event.detail.insert;\n            const selectChild = selectElement.children[index];\n            const optionElement = document.createElement(\"option\");\n            optionElement.textContent = displayValue;\n            optionElement.value = exportValue;\n            if (selectChild) {\n              selectChild.before(optionElement);\n            } else {\n              selectElement.append(optionElement);\n            }\n            storage.setValue(id, {\n              value: getValue(true),\n              items: getItems(event)\n            });\n            selectedValues = getValue(false);\n          },\n          items(event) {\n            const {\n              items\n            } = event.detail;\n            while (selectElement.length !== 0) {\n              selectElement.remove(0);\n            }\n            for (const item of items) {\n              const {\n                displayValue,\n                exportValue\n              } = 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(true),\n              items: getItems(event)\n            });\n            selectedValues = getValue(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(true)\n            });\n            selectedValues = getValue(false);\n          },\n          editable(event) {\n            event.target.disabled = !event.detail.editable;\n          }\n        };\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n      selectElement.addEventListener(\"input\", event => {\n        const exportValue = getValue(true);\n        const change = getValue(false);\n        storage.setValue(id, {\n          value: exportValue\n        });\n        event.preventDefault();\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id,\n            name: \"Keystroke\",\n            value: selectedValues,\n            change,\n            changeEx: exportValue,\n            willCommit: false,\n            commitKey: 1,\n            keyDown: false\n          }\n        });\n      });\n      this._setEventListeners(selectElement, null, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"], [\"input\", \"Validate\"]], event => event.target.value);\n    } else {\n      selectElement.addEventListener(\"input\", function (event) {\n        storage.setValue(id, {\n          value: getValue(true)\n        });\n      });\n    }\n    if (this.data.combo) {\n      this._setTextStyle(selectElement);\n    } else {}\n    this._setBackgroundColor(selectElement);\n    this._setDefaultPropertiesFromJS(selectElement);\n    this.container.append(selectElement);\n    return this.container;\n  }\n}\nclass PopupAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const {\n      data,\n      elements\n    } = parameters;\n    super(parameters, {\n      isRenderable: AnnotationElement._hasPopupData(data)\n    });\n    this.elements = elements;\n    this.popup = null;\n  }\n  render() {\n    this.container.classList.add(\"popupAnnotation\");\n    const popup = this.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    const elementIds = [];\n    for (const element of this.elements) {\n      element.popup = popup;\n      element.container.ariaHasPopup = \"dialog\";\n      elementIds.push(element.data.id);\n      element.addHighlightArea();\n    }\n    this.container.setAttribute(\"aria-controls\", elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\"));\n    return this.container;\n  }\n}\nclass PopupElement {\n  #boundKeyDown = this.#keyDown.bind(this);\n  #boundHide = this.#hide.bind(this);\n  #boundShow = this.#show.bind(this);\n  #boundToggle = this.#toggle.bind(this);\n  #color = null;\n  #container = null;\n  #contentsObj = null;\n  #dateObj = null;\n  #elements = null;\n  #parent = null;\n  #parentRect = null;\n  #pinned = false;\n  #popup = null;\n  #position = null;\n  #rect = null;\n  #richText = null;\n  #titleObj = null;\n  #updates = null;\n  #wasVisible = false;\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    this.#dateObj = PDFDateString.toDateObject(modificationDate);\n    this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\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    for (const element of elements) {\n      element.container?.addEventListener(\"keydown\", this.#boundKeyDown);\n    }\n    this.#container.hidden = true;\n    if (open) {\n      this.#toggle();\n    }\n  }\n  render() {\n    if (this.#popup) {\n      return;\n    }\n    const popup = this.#popup = document.createElement(\"div\");\n    popup.className = \"popup\";\n    if (this.#color) {\n      const baseColor = popup.style.outlineColor = Util.makeHexColor(...this.#color);\n      if (CSS.supports(\"background-color\", \"color-mix(in srgb, red 30%, white)\")) {\n        popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n      } else {\n        const BACKGROUND_ENLIGHT = 0.7;\n        popup.style.backgroundColor = Util.makeHexColor(...this.#color.map(c => Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c)));\n      }\n    }\n    const header = document.createElement(\"span\");\n    header.className = \"header\";\n    const title = document.createElement(\"h1\");\n    header.append(title);\n    ({\n      dir: title.dir,\n      str: title.textContent\n    } = this.#titleObj);\n    popup.append(header);\n    if (this.#dateObj) {\n      const modificationDate = document.createElement(\"span\");\n      modificationDate.classList.add(\"popupDate\");\n      modificationDate.setAttribute(\"data-l10n-id\", \"pdfjs-annotation-date-time-string\");\n      modificationDate.setAttribute(\"data-l10n-args\", JSON.stringify({\n        dateObj: this.#dateObj.valueOf()\n      }));\n      header.append(modificationDate);\n    }\n    const html = this.#html;\n    if (html) {\n      XfaLayer.render({\n        xfaHtml: html,\n        intent: \"richText\",\n        div: popup\n      });\n      popup.lastChild.classList.add(\"richText\", \"popupContent\");\n    } else {\n      const contents = this._formatContents(this.#contentsObj);\n      popup.append(contents);\n    }\n    this.#container.append(popup);\n  }\n  get #html() {\n    const richText = this.#richText;\n    const contentsObj = this.#contentsObj;\n    if (richText?.str && (!contentsObj?.str || contentsObj.str === richText.str)) {\n      return this.#richText.html || null;\n    }\n    return null;\n  }\n  get #fontSize() {\n    return this.#html?.attributes?.style?.fontSize || 0;\n  }\n  get #fontColor() {\n    return this.#html?.attributes?.style?.color || null;\n  }\n  #makePopupContent(text) {\n    const popupLines = [];\n    const popupContent = {\n      str: text,\n      html: {\n        name: \"div\",\n        attributes: {\n          dir: \"auto\"\n        },\n        children: [{\n          name: \"p\",\n          children: popupLines\n        }]\n      }\n    };\n    const lineAttributes = {\n      style: {\n        color: this.#fontColor,\n        fontSize: this.#fontSize ? `calc(${this.#fontSize}px * var(--scale-factor))` : \"\"\n      }\n    };\n    for (const line of text.split(\"\\n\")) {\n      popupLines.push({\n        name: \"span\",\n        value: line,\n        attributes: lineAttributes\n      });\n    }\n    return popupContent;\n  }\n  _formatContents({\n    str,\n    dir\n  }) {\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  #keyDown(event) {\n    if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n      return;\n    }\n    if (event.key === \"Enter\" || event.key === \"Escape\" && this.#pinned) {\n      this.#toggle();\n    }\n  }\n  updateEdited({\n    rect,\n    popupContent\n  }) {\n    this.#updates ||= {\n      contentsObj: this.#contentsObj,\n      richText: this.#richText\n    };\n    if (rect) {\n      this.#position = null;\n    }\n    if (popupContent) {\n      this.#richText = this.#makePopupContent(popupContent);\n      this.#contentsObj = null;\n    }\n    this.#popup?.remove();\n    this.#popup = null;\n  }\n  resetEdited() {\n    if (!this.#updates) {\n      return;\n    }\n    ({\n      contentsObj: this.#contentsObj,\n      richText: this.#richText\n    } = this.#updates);\n    this.#updates = null;\n    this.#popup?.remove();\n    this.#popup = null;\n    this.#position = null;\n  }\n  #setPosition() {\n    if (this.#position !== null) {\n      return;\n    }\n    const {\n      page: {\n        view\n      },\n      viewport: {\n        rawDims: {\n          pageWidth,\n          pageHeight,\n          pageX,\n          pageY\n        }\n      }\n    } = this.#parent;\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    const normalizedRect = Util.normalizeRect([rect[0], view[3] - rect[1] + view[1], rect[2], view[3] - rect[3] + view[1]]);\n    const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n    const parentWidth = useParentRect ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION : 0;\n    const popupLeft = normalizedRect[0] + parentWidth;\n    const popupTop = normalizedRect[1];\n    this.#position = [100 * (popupLeft - pageX) / pageWidth, 100 * (popupTop - pageY) / pageHeight];\n    const {\n      style\n    } = this.#container;\n    style.left = `${this.#position[0]}%`;\n    style.top = `${this.#position[1]}%`;\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  #show() {\n    if (!this.#popup) {\n      this.render();\n    }\n    if (!this.isVisible) {\n      this.#setPosition();\n      this.#container.hidden = false;\n      this.#container.style.zIndex = parseInt(this.#container.style.zIndex) + 1000;\n    } else if (this.#pinned) {\n      this.#container.classList.add(\"focused\");\n    }\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 = parseInt(this.#container.style.zIndex) - 1000;\n  }\n  forceHide() {\n    this.#wasVisible = this.isVisible;\n    if (!this.#wasVisible) {\n      return;\n    }\n    this.#container.hidden = true;\n  }\n  maybeShow() {\n    if (!this.#wasVisible) {\n      return;\n    }\n    if (!this.#popup) {\n      this.#show();\n    }\n    this.#wasVisible = false;\n    this.#container.hidden = false;\n  }\n  get isVisible() {\n    return this.#container.hidden === false;\n  }\n}\nclass FreeTextAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true\n    });\n    this.textContent = parameters.data.textContent;\n    this.textPosition = parameters.data.textPosition;\n    this.annotationEditorType = AnnotationEditorType.FREETEXT;\n  }\n  render() {\n    this.container.classList.add(\"freeTextAnnotation\");\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    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    this._editOnDoubleClick();\n    return this.container;\n  }\n}\nclass LineAnnotationElement extends AnnotationElement {\n  #line = null;\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true\n    });\n  }\n  render() {\n    this.container.classList.add(\"lineAnnotation\");\n    const data = this.data;\n    const {\n      width,\n      height\n    } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(width, height, true);\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    line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n    line.setAttribute(\"stroke\", \"transparent\");\n    line.setAttribute(\"fill\", \"transparent\");\n    svg.append(line);\n    this.container.append(svg);\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    return this.container;\n  }\n  getElementsToTriggerPopup() {\n    return this.#line;\n  }\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\nclass SquareAnnotationElement extends AnnotationElement {\n  #square = null;\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true\n    });\n  }\n  render() {\n    this.container.classList.add(\"squareAnnotation\");\n    const data = this.data;\n    const {\n      width,\n      height\n    } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(width, height, true);\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    square.setAttribute(\"stroke-width\", borderWidth || 1);\n    square.setAttribute(\"stroke\", \"transparent\");\n    square.setAttribute(\"fill\", \"transparent\");\n    svg.append(square);\n    this.container.append(svg);\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    return this.container;\n  }\n  getElementsToTriggerPopup() {\n    return this.#square;\n  }\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\nclass CircleAnnotationElement extends AnnotationElement {\n  #circle = null;\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true\n    });\n  }\n  render() {\n    this.container.classList.add(\"circleAnnotation\");\n    const data = this.data;\n    const {\n      width,\n      height\n    } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(width, height, true);\n    const borderWidth = data.borderStyle.width;\n    const circle = this.#circle = 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    circle.setAttribute(\"stroke-width\", borderWidth || 1);\n    circle.setAttribute(\"stroke\", \"transparent\");\n    circle.setAttribute(\"fill\", \"transparent\");\n    svg.append(circle);\n    this.container.append(svg);\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    return this.container;\n  }\n  getElementsToTriggerPopup() {\n    return this.#circle;\n  }\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\nclass PolylineAnnotationElement extends AnnotationElement {\n  #polyline = null;\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true\n    });\n    this.containerClassName = \"polylineAnnotation\";\n    this.svgElementName = \"svg:polyline\";\n  }\n  render() {\n    this.container.classList.add(this.containerClassName);\n    const {\n      data: {\n        rect,\n        vertices,\n        borderStyle,\n        popupRef\n      }\n    } = this;\n    if (!vertices) {\n      return this.container;\n    }\n    const {\n      width,\n      height\n    } = getRectDims(rect);\n    const svg = this.svgFactory.create(width, height, true);\n    let points = [];\n    for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n      const x = vertices[i] - rect[0];\n      const y = rect[3] - vertices[i + 1];\n      points.push(`${x},${y}`);\n    }\n    points = points.join(\" \");\n    const polyline = this.#polyline = this.svgFactory.createElement(this.svgElementName);\n    polyline.setAttribute(\"points\", points);\n    polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n    polyline.setAttribute(\"stroke\", \"transparent\");\n    polyline.setAttribute(\"fill\", \"transparent\");\n    svg.append(polyline);\n    this.container.append(svg);\n    if (!popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    return this.container;\n  }\n  getElementsToTriggerPopup() {\n    return this.#polyline;\n  }\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n  constructor(parameters) {\n    super(parameters);\n    this.containerClassName = \"polygonAnnotation\";\n    this.svgElementName = \"svg:polygon\";\n  }\n}\nclass CaretAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true\n    });\n  }\n  render() {\n    this.container.classList.add(\"caretAnnotation\");\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    return this.container;\n  }\n}\nclass InkAnnotationElement extends AnnotationElement {\n  #polylinesGroupElement = null;\n  #polylines = [];\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true\n    });\n    this.containerClassName = \"inkAnnotation\";\n    this.svgElementName = \"svg:polyline\";\n    this.annotationEditorType = this.data.it === \"InkHighlight\" ? AnnotationEditorType.HIGHLIGHT : AnnotationEditorType.INK;\n  }\n  #getTransform(rotation, rect) {\n    switch (rotation) {\n      case 90:\n        return {\n          transform: `rotate(90) translate(${-rect[0]},${rect[1]}) scale(1,-1)`,\n          width: rect[3] - rect[1],\n          height: rect[2] - rect[0]\n        };\n      case 180:\n        return {\n          transform: `rotate(180) translate(${-rect[2]},${rect[1]}) scale(1,-1)`,\n          width: rect[2] - rect[0],\n          height: rect[3] - rect[1]\n        };\n      case 270:\n        return {\n          transform: `rotate(270) translate(${-rect[2]},${rect[3]}) scale(1,-1)`,\n          width: rect[3] - rect[1],\n          height: rect[2] - rect[0]\n        };\n      default:\n        return {\n          transform: `translate(${-rect[0]},${rect[3]}) scale(1,-1)`,\n          width: rect[2] - rect[0],\n          height: rect[3] - rect[1]\n        };\n    }\n  }\n  render() {\n    this.container.classList.add(this.containerClassName);\n    const {\n      data: {\n        rect,\n        rotation,\n        inkLists,\n        borderStyle,\n        popupRef\n      }\n    } = this;\n    const {\n      transform,\n      width,\n      height\n    } = this.#getTransform(rotation, rect);\n    const svg = this.svgFactory.create(width, height, true);\n    const g = this.#polylinesGroupElement = this.svgFactory.createElement(\"svg:g\");\n    svg.append(g);\n    g.setAttribute(\"stroke-width\", borderStyle.width || 1);\n    g.setAttribute(\"stroke-linecap\", \"round\");\n    g.setAttribute(\"stroke-linejoin\", \"round\");\n    g.setAttribute(\"stroke-miterlimit\", 10);\n    g.setAttribute(\"stroke\", \"transparent\");\n    g.setAttribute(\"fill\", \"transparent\");\n    g.setAttribute(\"transform\", transform);\n    for (let i = 0, ii = inkLists.length; i < ii; i++) {\n      const polyline = this.svgFactory.createElement(this.svgElementName);\n      this.#polylines.push(polyline);\n      polyline.setAttribute(\"points\", inkLists[i].join(\",\"));\n      g.append(polyline);\n    }\n    if (!popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    this.container.append(svg);\n    this._editOnDoubleClick();\n    return this.container;\n  }\n  updateEdited(params) {\n    super.updateEdited(params);\n    const {\n      thickness,\n      points,\n      rect\n    } = params;\n    const g = this.#polylinesGroupElement;\n    if (thickness >= 0) {\n      g.setAttribute(\"stroke-width\", thickness || 1);\n    }\n    if (points) {\n      for (let i = 0, ii = this.#polylines.length; i < ii; i++) {\n        this.#polylines[i].setAttribute(\"points\", points[i].join(\",\"));\n      }\n    }\n    if (rect) {\n      const {\n        transform,\n        width,\n        height\n      } = this.#getTransform(this.data.rotation, rect);\n      const root = g.parentElement;\n      root.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n      g.setAttribute(\"transform\", transform);\n    }\n  }\n  getElementsToTriggerPopup() {\n    return this.#polylines;\n  }\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\nclass HighlightAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true\n    });\n    this.annotationEditorType = AnnotationEditorType.HIGHLIGHT;\n  }\n  render() {\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    this.container.classList.add(\"highlightAnnotation\");\n    this._editOnDoubleClick();\n    return this.container;\n  }\n}\nclass UnderlineAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true\n    });\n  }\n  render() {\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    this.container.classList.add(\"underlineAnnotation\");\n    return this.container;\n  }\n}\nclass SquigglyAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true\n    });\n  }\n  render() {\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    this.container.classList.add(\"squigglyAnnotation\");\n    return this.container;\n  }\n}\nclass StrikeOutAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true\n    });\n  }\n  render() {\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    this.container.classList.add(\"strikeoutAnnotation\");\n    return this.container;\n  }\n}\nclass StampAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true\n    });\n    this.annotationEditorType = AnnotationEditorType.STAMP;\n  }\n  render() {\n    this.container.classList.add(\"stampAnnotation\");\n    this.container.setAttribute(\"role\", \"img\");\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    this._editOnDoubleClick();\n    return this.container;\n  }\n}\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n  #trigger = null;\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true\n    });\n    const {\n      file\n    } = this.data;\n    this.filename = file.filename;\n    this.content = file.content;\n    this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n      source: this,\n      ...file\n    });\n  }\n  render() {\n    this.container.classList.add(\"fileAttachmentAnnotation\");\n    const {\n      container,\n      data\n    } = this;\n    let trigger;\n    if (data.hasAppearance || data.fillAlpha === 0) {\n      trigger = document.createElement(\"div\");\n    } else {\n      trigger = document.createElement(\"img\");\n      trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"}.svg`;\n      if (data.fillAlpha && data.fillAlpha < 1) {\n        trigger.style = `filter: opacity(${Math.round(data.fillAlpha * 100)}%);`;\n      }\n    }\n    trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n    this.#trigger = trigger;\n    const {\n      isMac\n    } = util_FeatureTest.platform;\n    container.addEventListener(\"keydown\", evt => {\n      if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n        this.#download();\n      }\n    });\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    } else {\n      trigger.classList.add(\"popupTriggerArea\");\n    }\n    container.append(trigger);\n    return container;\n  }\n  getElementsToTriggerPopup() {\n    return this.#trigger;\n  }\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n  #download() {\n    this.downloadManager?.openOrDownloadData(this.content, this.filename);\n  }\n}\nclass AnnotationLayer {\n  #accessibilityManager = null;\n  #annotationCanvasMap = null;\n  #editableAnnotations = new Map();\n  #structTreeLayer = null;\n  constructor({\n    div,\n    accessibilityManager,\n    annotationCanvasMap,\n    annotationEditorUIManager,\n    page,\n    viewport,\n    structTreeLayer\n  }) {\n    this.div = div;\n    this.#accessibilityManager = accessibilityManager;\n    this.#annotationCanvasMap = annotationCanvasMap;\n    this.#structTreeLayer = structTreeLayer || null;\n    this.page = page;\n    this.viewport = viewport;\n    this.zIndex = 0;\n    this._annotationEditorUIManager = annotationEditorUIManager;\n  }\n  hasEditableAnnotations() {\n    return this.#editableAnnotations.size > 0;\n  }\n  async #appendElement(element, id) {\n    const contentElement = element.firstChild || element;\n    const annotationId = contentElement.id = `${AnnotationPrefix}${id}`;\n    const ariaAttributes = await this.#structTreeLayer?.getAriaAttributes(annotationId);\n    if (ariaAttributes) {\n      for (const [key, value] of ariaAttributes) {\n        contentElement.setAttribute(key, value);\n      }\n    }\n    this.div.append(element);\n    this.#accessibilityManager?.moveElementInDOM(this.div, element, contentElement, false);\n  }\n  async render(params) {\n    const {\n      annotations\n    } = params;\n    const layer = this.div;\n    setLayerDimensions(layer, this.viewport);\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    for (const data of annotations) {\n      if (data.noHTML) {\n        continue;\n      }\n      const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n      if (!isPopupAnnotation) {\n        const {\n          width,\n          height\n        } = getRectDims(data.rect);\n        if (width <= 0 || height <= 0) {\n          continue;\n        }\n      } else {\n        const elements = popupToElements.get(data.id);\n        if (!elements) {\n          continue;\n        }\n        elementParams.elements = elements;\n      }\n      elementParams.data = data;\n      const element = AnnotationElementFactory.create(elementParams);\n      if (!element.isRenderable) {\n        continue;\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      const rendered = element.render();\n      if (data.hidden) {\n        rendered.style.visibility = \"hidden\";\n      }\n      await this.#appendElement(rendered, data.id);\n      if (element._isEditable) {\n        this.#editableAnnotations.set(element.data.id, element);\n        this._annotationEditorUIManager?.renderAnnotationElement(element);\n      }\n    }\n    this.#setAnnotationCanvasMap();\n  }\n  update({\n    viewport\n  }) {\n    const layer = this.div;\n    this.viewport = viewport;\n    setLayerDimensions(layer, {\n      rotation: viewport.rotation\n    });\n    this.#setAnnotationCanvasMap();\n    layer.hidden = false;\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      canvas.className = \"annotationContent\";\n      const {\n        firstChild\n      } = element;\n      if (!firstChild) {\n        element.append(canvas);\n      } else if (firstChild.nodeName === \"CANVAS\") {\n        firstChild.replaceWith(canvas);\n      } else if (!firstChild.classList.contains(\"annotationContent\")) {\n        firstChild.before(canvas);\n      } else {\n        firstChild.after(canvas);\n      }\n    }\n    this.#annotationCanvasMap.clear();\n  }\n  getEditableAnnotations() {\n    return Array.from(this.#editableAnnotations.values());\n  }\n  getEditableAnnotation(id) {\n    return this.#editableAnnotations.get(id);\n  }\n}\n\n;// ./src/display/editor/freetext.js\n\n\n\n\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\nclass FreeTextEditor extends AnnotationEditor {\n  #color;\n  #content = \"\";\n  #editorDivId = `${this.id}-editor`;\n  #editModeAC = null;\n  #fontSize;\n  static _freeTextDefaultContent = \"\";\n  static _internalPadding = 0;\n  static _defaultColor = null;\n  static _defaultFontSize = 10;\n  static get _keyboardManager() {\n    const proto = FreeTextEditor.prototype;\n    const arrowChecker = self => self.isEmpty();\n    const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n    const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n    return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"], proto.commitOrRemove, {\n      bubbles: true\n    }], [[\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"], proto.commitOrRemove], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._translateEmpty, {\n      args: [-small, 0],\n      checker: arrowChecker\n    }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto._translateEmpty, {\n      args: [-big, 0],\n      checker: arrowChecker\n    }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._translateEmpty, {\n      args: [small, 0],\n      checker: arrowChecker\n    }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto._translateEmpty, {\n      args: [big, 0],\n      checker: arrowChecker\n    }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._translateEmpty, {\n      args: [0, -small],\n      checker: arrowChecker\n    }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto._translateEmpty, {\n      args: [0, -big],\n      checker: arrowChecker\n    }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._translateEmpty, {\n      args: [0, small],\n      checker: arrowChecker\n    }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto._translateEmpty, {\n      args: [0, big],\n      checker: arrowChecker\n    }]]));\n  }\n  static _type = \"freetext\";\n  static _editorType = AnnotationEditorType.FREETEXT;\n  constructor(params) {\n    super({\n      ...params,\n      name: \"freeTextEditor\"\n    });\n    this.#color = params.color || FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor;\n    this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n  }\n  static initialize(l10n, uiManager) {\n    AnnotationEditor.initialize(l10n, uiManager);\n    const style = getComputedStyle(document.documentElement);\n    this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\"));\n  }\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  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  static get defaultPropertiesToUpdate() {\n    return [[AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor]];\n  }\n  get propertiesToUpdate() {\n    return [[AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, this.#color]];\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: setFontsize.bind(this, fontSize),\n      undo: setFontsize.bind(this, savedFontsize),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type: AnnotationEditorParamsType.FREETEXT_SIZE,\n      overwriteIfSameType: true,\n      keepUndo: true\n    });\n  }\n  #updateColor(color) {\n    const setColor = col => {\n      this.#color = this.editorDiv.style.color = col;\n    };\n    const savedColor = this.#color;\n    this.addCommands({\n      cmd: setColor.bind(this, color),\n      undo: setColor.bind(this, savedColor),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type: AnnotationEditorParamsType.FREETEXT_COLOR,\n      overwriteIfSameType: true,\n      keepUndo: true\n    });\n  }\n  _translateEmpty(x, y) {\n    this._uiManager.translateSelectedEditors(x, y, true);\n  }\n  getInitialTranslation() {\n    const scale = this.parentScale;\n    return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale];\n  }\n  rebuild() {\n    if (!this.parent) {\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n    if (!this.isAttachedToDOM) {\n      this.parent.add(this);\n    }\n  }\n  enableEditMode() {\n    if (this.isInEditMode()) {\n      return;\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.#editModeAC = new AbortController();\n    const signal = this._uiManager.combinedSignal(this.#editModeAC);\n    this.editorDiv.addEventListener(\"keydown\", this.editorDivKeydown.bind(this), {\n      signal\n    });\n    this.editorDiv.addEventListener(\"focus\", this.editorDivFocus.bind(this), {\n      signal\n    });\n    this.editorDiv.addEventListener(\"blur\", this.editorDivBlur.bind(this), {\n      signal\n    });\n    this.editorDiv.addEventListener(\"input\", this.editorDivInput.bind(this), {\n      signal\n    });\n    this.editorDiv.addEventListener(\"paste\", this.editorDivPaste.bind(this), {\n      signal\n    });\n  }\n  disableEditMode() {\n    if (!this.isInEditMode()) {\n      return;\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.#editModeAC?.abort();\n    this.#editModeAC = null;\n    this.div.focus({\n      preventScroll: true\n    });\n    this.isEditing = false;\n    this.parent.div.classList.add(\"freetextEditing\");\n  }\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  onceAdded(focus) {\n    if (this.width) {\n      return;\n    }\n    this.enableEditMode();\n    if (focus) {\n      this.editorDiv.focus();\n    }\n    if (this._initialOptions?.isCentered) {\n      this.center();\n    }\n    this._initialOptions = null;\n  }\n  isEmpty() {\n    return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n  }\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  #extractText() {\n    const buffer = [];\n    this.editorDiv.normalize();\n    let prevChild = null;\n    for (const child of this.editorDiv.childNodes) {\n      if (prevChild?.nodeType === Node.TEXT_NODE && child.nodeName === \"BR\") {\n        continue;\n      }\n      buffer.push(FreeTextEditor.#getNodeContent(child));\n      prevChild = child;\n    }\n    return buffer.join(\"\\n\");\n  }\n  #setEditorDimensions() {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    let rect;\n    if (this.isAttachedToDOM) {\n      rect = this.div.getBoundingClientRect();\n    } else {\n      const {\n        currentLayer,\n        div\n      } = this;\n      const savedDisplay = div.style.display;\n      const savedVisibility = div.classList.contains(\"hidden\");\n      div.classList.remove(\"hidden\");\n      div.style.display = \"hidden\";\n      currentLayer.div.append(this.div);\n      rect = div.getBoundingClientRect();\n      div.remove();\n      div.style.display = savedDisplay;\n      div.classList.toggle(\"hidden\", savedVisibility);\n    }\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  commit() {\n    if (!this.isInEditMode()) {\n      return;\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    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  shouldGetKeyboardEvents() {\n    return this.isInEditMode();\n  }\n  enterInEditMode() {\n    this.enableEditMode();\n    this.editorDiv.focus();\n  }\n  dblclick(event) {\n    this.enterInEditMode();\n  }\n  keydown(event) {\n    if (event.target === this.div && event.key === \"Enter\") {\n      this.enterInEditMode();\n      event.preventDefault();\n    }\n  }\n  editorDivKeydown(event) {\n    FreeTextEditor._keyboardManager.exec(this, event);\n  }\n  editorDivFocus(event) {\n    this.isEditing = true;\n  }\n  editorDivBlur(event) {\n    this.isEditing = false;\n  }\n  editorDivInput(event) {\n    this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n  }\n  disableEditing() {\n    this.editorDiv.setAttribute(\"role\", \"comment\");\n    this.editorDiv.removeAttribute(\"aria-multiline\");\n  }\n  enableEditing() {\n    this.editorDiv.setAttribute(\"role\", \"textbox\");\n    this.editorDiv.setAttribute(\"aria-multiline\", true);\n  }\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n    let baseX, baseY;\n    if (this.width) {\n      baseX = this.x;\n      baseY = this.y;\n    }\n    super.render();\n    this.editorDiv = document.createElement(\"div\");\n    this.editorDiv.className = \"internal\";\n    this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n    this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text2\");\n    this.editorDiv.setAttribute(\"data-l10n-attrs\", \"default-content\");\n    this.enableEditing();\n    this.editorDiv.contentEditable = true;\n    const {\n      style\n    } = this.editorDiv;\n    style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n    style.color = this.#color;\n    this.div.append(this.editorDiv);\n    this.overlayDiv = document.createElement(\"div\");\n    this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n    this.div.append(this.overlayDiv);\n    bindEvents(this, this.div, [\"dblclick\", \"keydown\"]);\n    if (this.width) {\n      const [parentWidth, parentHeight] = this.parentDimensions;\n      if (this.annotationElementId) {\n        const {\n          position\n        } = 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 = baseX + (position[0] - pageX - this.height * pageHeight) / pageWidth;\n            posY = baseY + (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(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\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    return this.div;\n  }\n  static #getNodeContent(node) {\n    return (node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText).replaceAll(EOL_PATTERN, \"\");\n  }\n  editorDivPaste(event) {\n    const clipboardData = event.clipboardData || window.clipboardData;\n    const {\n      types\n    } = clipboardData;\n    if (types.length === 1 && types[0] === \"text/plain\") {\n      return;\n    }\n    event.preventDefault();\n    const paste = FreeTextEditor.#deserializeContent(clipboardData.getData(\"text\") || \"\").replaceAll(EOL_PATTERN, \"\\n\");\n    if (!paste) {\n      return;\n    }\n    const selection = window.getSelection();\n    if (!selection.rangeCount) {\n      return;\n    }\n    this.editorDiv.normalize();\n    selection.deleteFromDocument();\n    const range = selection.getRangeAt(0);\n    if (!paste.includes(\"\\n\")) {\n      range.insertNode(document.createTextNode(paste));\n      this.editorDiv.normalize();\n      selection.collapseToStart();\n      return;\n    }\n    const {\n      startContainer,\n      startOffset\n    } = range;\n    const bufferBefore = [];\n    const bufferAfter = [];\n    if (startContainer.nodeType === Node.TEXT_NODE) {\n      const parent = startContainer.parentElement;\n      bufferAfter.push(startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \"\"));\n      if (parent !== this.editorDiv) {\n        let buffer = bufferBefore;\n        for (const child of this.editorDiv.childNodes) {\n          if (child === parent) {\n            buffer = bufferAfter;\n            continue;\n          }\n          buffer.push(FreeTextEditor.#getNodeContent(child));\n        }\n      }\n      bufferBefore.push(startContainer.nodeValue.slice(0, startOffset).replaceAll(EOL_PATTERN, \"\"));\n    } else if (startContainer === this.editorDiv) {\n      let buffer = bufferBefore;\n      let i = 0;\n      for (const child of this.editorDiv.childNodes) {\n        if (i++ === startOffset) {\n          buffer = bufferAfter;\n        }\n        buffer.push(FreeTextEditor.#getNodeContent(child));\n      }\n    }\n    this.#content = `${bufferBefore.join(\"\\n\")}${paste}${bufferAfter.join(\"\\n\")}`;\n    this.#setContent();\n    const newRange = new Range();\n    let beforeLength = bufferBefore.reduce((acc, line) => acc + line.length, 0);\n    for (const {\n      firstChild\n    } of this.editorDiv.childNodes) {\n      if (firstChild.nodeType === Node.TEXT_NODE) {\n        const length = firstChild.nodeValue.length;\n        if (beforeLength <= length) {\n          newRange.setStart(firstChild, beforeLength);\n          newRange.setEnd(firstChild, beforeLength);\n          break;\n        }\n        beforeLength -= length;\n      }\n    }\n    selection.removeAllRanges();\n    selection.addRange(newRange);\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(line ? document.createTextNode(line) : document.createElement(\"br\"));\n      this.editorDiv.append(div);\n    }\n  }\n  #serializeContent() {\n    return this.#content.replaceAll(\"\\xa0\", \" \");\n  }\n  static #deserializeContent(content) {\n    return content.replaceAll(\" \", \"\\xa0\");\n  }\n  get contentDiv() {\n    return this.editorDiv;\n  }\n  static async deserialize(data, parent, uiManager) {\n    let initialData = null;\n    if (data instanceof FreeTextAnnotationElement) {\n      const {\n        data: {\n          defaultAppearanceData: {\n            fontSize,\n            fontColor\n          },\n          rect,\n          rotation,\n          id,\n          popupRef\n        },\n        textContent,\n        textPosition,\n        parent: {\n          page: {\n            pageNumber\n          }\n        }\n      } = data;\n      if (!textContent || textContent.length === 0) {\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: rect.slice(0),\n        rotation,\n        id,\n        deleted: false,\n        popupRef\n      };\n    }\n    const editor = await super.deserialize(data, parent, uiManager);\n    editor.#fontSize = data.fontSize;\n    editor.#color = Util.makeHexColor(...data.color);\n    editor.#content = FreeTextEditor.#deserializeContent(data.value);\n    editor.annotationElementId = data.id || null;\n    editor._initialData = initialData;\n    return editor;\n  }\n  serialize(isForCopying = false) {\n    if (this.isEmpty()) {\n      return null;\n    }\n    if (this.deleted) {\n      return this.serializeDeleted();\n    }\n    const padding = FreeTextEditor._internalPadding * this.parentScale;\n    const rect = this.getRect(padding, padding);\n    const color = AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.#color);\n    const serialized = {\n      annotationType: AnnotationEditorType.FREETEXT,\n      color,\n      fontSize: this.#fontSize,\n      value: this.#serializeContent(),\n      pageIndex: this.pageIndex,\n      rect,\n      rotation: this.rotation,\n      structTreeParentId: this._structTreeParentId\n    };\n    if (isForCopying) {\n      return serialized;\n    }\n    if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n      return null;\n    }\n    serialized.id = this.annotationElementId;\n    return serialized;\n  }\n  #hasElementChanged(serialized) {\n    const {\n      value,\n      fontSize,\n      color,\n      pageIndex\n    } = this._initialData;\n    return this._hasBeenMoved || serialized.value !== value || serialized.fontSize !== fontSize || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex;\n  }\n  renderAnnotationElement(annotation) {\n    const content = super.renderAnnotationElement(annotation);\n    if (this.deleted) {\n      return content;\n    }\n    const {\n      style\n    } = content;\n    style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n    style.color = this.#color;\n    content.replaceChildren();\n    for (const line of this.#content.split(\"\\n\")) {\n      const div = document.createElement(\"div\");\n      div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n      content.append(div);\n    }\n    const padding = FreeTextEditor._internalPadding * this.parentScale;\n    annotation.updateEdited({\n      rect: this.getRect(padding, padding),\n      popupContent: this.#content\n    });\n    return content;\n  }\n  resetAnnotationElement(annotation) {\n    super.resetAnnotationElement(annotation);\n    annotation.resetEdited();\n  }\n}\n\n;// ./src/display/editor/drawers/outline.js\n\nclass Outline {\n  static PRECISION = 1e-4;\n  toSVGPath() {\n    unreachable(\"Abstract method `toSVGPath` must be implemented.\");\n  }\n  get box() {\n    unreachable(\"Abstract getter `box` must be implemented.\");\n  }\n  serialize(_bbox, _rotation) {\n    unreachable(\"Abstract method `serialize` must be implemented.\");\n  }\n  static _rescale(src, tx, ty, sx, sy, dest) {\n    dest ||= new Float32Array(src.length);\n    for (let i = 0, ii = src.length; i < ii; i += 2) {\n      dest[i] = tx + src[i] * sx;\n      dest[i + 1] = ty + src[i + 1] * sy;\n    }\n    return dest;\n  }\n  static _rescaleAndSwap(src, tx, ty, sx, sy, dest) {\n    dest ||= new Float32Array(src.length);\n    for (let i = 0, ii = src.length; i < ii; i += 2) {\n      dest[i] = tx + src[i + 1] * sx;\n      dest[i + 1] = ty + src[i] * sy;\n    }\n    return dest;\n  }\n  static _translate(src, tx, ty, dest) {\n    dest ||= new Float32Array(src.length);\n    for (let i = 0, ii = src.length; i < ii; i += 2) {\n      dest[i] = tx + src[i];\n      dest[i + 1] = ty + src[i + 1];\n    }\n    return dest;\n  }\n  static svgRound(x) {\n    return Math.round(x * 10000);\n  }\n  static _normalizePoint(x, y, parentWidth, parentHeight, rotation) {\n    switch (rotation) {\n      case 90:\n        return [1 - y / parentWidth, x / parentHeight];\n      case 180:\n        return [1 - x / parentWidth, 1 - y / parentHeight];\n      case 270:\n        return [y / parentWidth, 1 - x / parentHeight];\n      default:\n        return [x / parentWidth, y / parentHeight];\n    }\n  }\n  static _normalizePagePoint(x, y, rotation) {\n    switch (rotation) {\n      case 90:\n        return [1 - y, x];\n      case 180:\n        return [1 - x, 1 - y];\n      case 270:\n        return [y, 1 - x];\n      default:\n        return [x, y];\n    }\n  }\n  static createBezierPoints(x1, y1, x2, y2, x3, y3) {\n    return [(x1 + 5 * x2) / 6, (y1 + 5 * y2) / 6, (5 * x2 + x3) / 6, (5 * y2 + y3) / 6, (x2 + x3) / 2, (y2 + y3) / 2];\n  }\n}\n\n;// ./src/display/editor/drawers/freedraw.js\n\n\nclass FreeDrawOutliner {\n  #box;\n  #bottom = [];\n  #innerMargin;\n  #isLTR;\n  #top = [];\n  #last = new Float32Array(18);\n  #lastX;\n  #lastY;\n  #min;\n  #min_dist;\n  #scaleFactor;\n  #thickness;\n  #points = [];\n  static #MIN_DIST = 8;\n  static #MIN_DIFF = 2;\n  static #MIN = FreeDrawOutliner.#MIN_DIST + FreeDrawOutliner.#MIN_DIFF;\n  constructor({\n    x,\n    y\n  }, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n    this.#box = box;\n    this.#thickness = thickness * scaleFactor;\n    this.#isLTR = isLTR;\n    this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\n    this.#innerMargin = innerMargin;\n    this.#min_dist = FreeDrawOutliner.#MIN_DIST * scaleFactor;\n    this.#min = FreeDrawOutliner.#MIN * scaleFactor;\n    this.#scaleFactor = scaleFactor;\n    this.#points.push(x, y);\n  }\n  isEmpty() {\n    return isNaN(this.#last[8]);\n  }\n  #getLastCoords() {\n    const lastTop = this.#last.subarray(4, 6);\n    const lastBottom = this.#last.subarray(16, 18);\n    const [x, y, width, height] = this.#box;\n    return [(this.#lastX + (lastTop[0] - lastBottom[0]) / 2 - x) / width, (this.#lastY + (lastTop[1] - lastBottom[1]) / 2 - y) / height, (this.#lastX + (lastBottom[0] - lastTop[0]) / 2 - x) / width, (this.#lastY + (lastBottom[1] - lastTop[1]) / 2 - y) / height];\n  }\n  add({\n    x,\n    y\n  }) {\n    this.#lastX = x;\n    this.#lastY = y;\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n    let [x1, y1, x2, y2] = this.#last.subarray(8, 12);\n    const diffX = x - x2;\n    const diffY = y - y2;\n    const d = Math.hypot(diffX, diffY);\n    if (d < this.#min) {\n      return false;\n    }\n    const diffD = d - this.#min_dist;\n    const K = diffD / d;\n    const shiftX = K * diffX;\n    const shiftY = K * diffY;\n    let x0 = x1;\n    let y0 = y1;\n    x1 = x2;\n    y1 = y2;\n    x2 += shiftX;\n    y2 += shiftY;\n    this.#points?.push(x, y);\n    const nX = -shiftY / diffD;\n    const nY = shiftX / diffD;\n    const thX = nX * this.#thickness;\n    const thY = nY * this.#thickness;\n    this.#last.set(this.#last.subarray(2, 8), 0);\n    this.#last.set([x2 + thX, y2 + thY], 4);\n    this.#last.set(this.#last.subarray(14, 18), 12);\n    this.#last.set([x2 - thX, y2 - thY], 16);\n    if (isNaN(this.#last[6])) {\n      if (this.#top.length === 0) {\n        this.#last.set([x1 + thX, y1 + thY], 2);\n        this.#top.push(NaN, NaN, NaN, NaN, (x1 + thX - layerX) / layerWidth, (y1 + thY - layerY) / layerHeight);\n        this.#last.set([x1 - thX, y1 - thY], 14);\n        this.#bottom.push(NaN, NaN, NaN, NaN, (x1 - thX - layerX) / layerWidth, (y1 - thY - layerY) / layerHeight);\n      }\n      this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n      return !this.isEmpty();\n    }\n    this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n    const angle = Math.abs(Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX));\n    if (angle < Math.PI / 2) {\n      [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n      this.#top.push(NaN, NaN, NaN, NaN, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n      [x1, y1, x0, y0] = this.#last.subarray(14, 18);\n      this.#bottom.push(NaN, NaN, NaN, NaN, ((x0 + x1) / 2 - layerX) / layerWidth, ((y0 + y1) / 2 - layerY) / layerHeight);\n      return true;\n    }\n    [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\n    this.#top.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n    [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\n    this.#bottom.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n    return true;\n  }\n  toSVGPath() {\n    if (this.isEmpty()) {\n      return \"\";\n    }\n    const top = this.#top;\n    const bottom = this.#bottom;\n    if (isNaN(this.#last[6]) && !this.isEmpty()) {\n      return this.#toSVGPathTwoPoints();\n    }\n    const buffer = [];\n    buffer.push(`M${top[4]} ${top[5]}`);\n    for (let i = 6; i < top.length; i += 6) {\n      if (isNaN(top[i])) {\n        buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\n      } else {\n        buffer.push(`C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${top[i + 5]}`);\n      }\n    }\n    this.#toSVGPathEnd(buffer);\n    for (let i = bottom.length - 6; i >= 6; i -= 6) {\n      if (isNaN(bottom[i])) {\n        buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\n      } else {\n        buffer.push(`C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${bottom[i + 4]} ${bottom[i + 5]}`);\n      }\n    }\n    this.#toSVGPathStart(buffer);\n    return buffer.join(\" \");\n  }\n  #toSVGPathTwoPoints() {\n    const [x, y, width, height] = this.#box;\n    const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n    return `M${(this.#last[2] - x) / width} ${(this.#last[3] - y) / height} L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(this.#last[16] - x) / width} ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${(this.#last[15] - y) / height} Z`;\n  }\n  #toSVGPathStart(buffer) {\n    const bottom = this.#bottom;\n    buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n  }\n  #toSVGPathEnd(buffer) {\n    const [x, y, width, height] = this.#box;\n    const lastTop = this.#last.subarray(4, 6);\n    const lastBottom = this.#last.subarray(16, 18);\n    const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n    buffer.push(`L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(lastBottom[0] - x) / width} ${(lastBottom[1] - y) / height}`);\n  }\n  newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n    return new FreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n  }\n  getOutlines() {\n    const top = this.#top;\n    const bottom = this.#bottom;\n    const last = this.#last;\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n    const points = new Float32Array((this.#points?.length ?? 0) + 2);\n    for (let i = 0, ii = points.length - 2; i < ii; i += 2) {\n      points[i] = (this.#points[i] - layerX) / layerWidth;\n      points[i + 1] = (this.#points[i + 1] - layerY) / layerHeight;\n    }\n    points[points.length - 2] = (this.#lastX - layerX) / layerWidth;\n    points[points.length - 1] = (this.#lastY - layerY) / layerHeight;\n    if (isNaN(last[6]) && !this.isEmpty()) {\n      return this.#getOutlineTwoPoints(points);\n    }\n    const outline = new Float32Array(this.#top.length + 24 + this.#bottom.length);\n    let N = top.length;\n    for (let i = 0; i < N; i += 2) {\n      if (isNaN(top[i])) {\n        outline[i] = outline[i + 1] = NaN;\n        continue;\n      }\n      outline[i] = top[i];\n      outline[i + 1] = top[i + 1];\n    }\n    N = this.#getOutlineEnd(outline, N);\n    for (let i = bottom.length - 6; i >= 6; i -= 6) {\n      for (let j = 0; j < 6; j += 2) {\n        if (isNaN(bottom[i + j])) {\n          outline[N] = outline[N + 1] = NaN;\n          N += 2;\n          continue;\n        }\n        outline[N] = bottom[i + j];\n        outline[N + 1] = bottom[i + j + 1];\n        N += 2;\n      }\n    }\n    this.#getOutlineStart(outline, N);\n    return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n  }\n  #getOutlineTwoPoints(points) {\n    const last = this.#last;\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n    const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n    const outline = new Float32Array(36);\n    outline.set([NaN, NaN, NaN, NaN, (last[2] - layerX) / layerWidth, (last[3] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[4] - layerX) / layerWidth, (last[5] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (last[16] - layerX) / layerWidth, (last[17] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[14] - layerX) / layerWidth, (last[15] - layerY) / layerHeight], 0);\n    return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n  }\n  #getOutlineStart(outline, pos) {\n    const bottom = this.#bottom;\n    outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], pos);\n    return pos += 6;\n  }\n  #getOutlineEnd(outline, pos) {\n    const lastTop = this.#last.subarray(4, 6);\n    const lastBottom = this.#last.subarray(16, 18);\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n    const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n    outline.set([NaN, NaN, NaN, NaN, (lastTop[0] - layerX) / layerWidth, (lastTop[1] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (lastBottom[0] - layerX) / layerWidth, (lastBottom[1] - layerY) / layerHeight], pos);\n    return pos += 24;\n  }\n}\nclass FreeDrawOutline extends Outline {\n  #box;\n  #bbox = new Float32Array(4);\n  #innerMargin;\n  #isLTR;\n  #points;\n  #scaleFactor;\n  #outline;\n  constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\n    super();\n    this.#outline = outline;\n    this.#points = points;\n    this.#box = box;\n    this.#scaleFactor = scaleFactor;\n    this.#innerMargin = innerMargin;\n    this.#isLTR = isLTR;\n    this.lastPoint = [NaN, NaN];\n    this.#computeMinMax(isLTR);\n    const [x, y, width, height] = this.#bbox;\n    for (let i = 0, ii = outline.length; i < ii; i += 2) {\n      outline[i] = (outline[i] - x) / width;\n      outline[i + 1] = (outline[i + 1] - y) / height;\n    }\n    for (let i = 0, ii = points.length; i < ii; i += 2) {\n      points[i] = (points[i] - x) / width;\n      points[i + 1] = (points[i + 1] - y) / height;\n    }\n  }\n  toSVGPath() {\n    const buffer = [`M${this.#outline[4]} ${this.#outline[5]}`];\n    for (let i = 6, ii = this.#outline.length; i < ii; i += 6) {\n      if (isNaN(this.#outline[i])) {\n        buffer.push(`L${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n        continue;\n      }\n      buffer.push(`C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${this.#outline[i + 3]} ${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n    }\n    buffer.push(\"Z\");\n    return buffer.join(\" \");\n  }\n  serialize([blX, blY, trX, trY], rotation) {\n    const width = trX - blX;\n    const height = trY - blY;\n    let outline;\n    let points;\n    switch (rotation) {\n      case 0:\n        outline = Outline._rescale(this.#outline, blX, trY, width, -height);\n        points = Outline._rescale(this.#points, blX, trY, width, -height);\n        break;\n      case 90:\n        outline = Outline._rescaleAndSwap(this.#outline, blX, blY, width, height);\n        points = Outline._rescaleAndSwap(this.#points, blX, blY, width, height);\n        break;\n      case 180:\n        outline = Outline._rescale(this.#outline, trX, blY, -width, height);\n        points = Outline._rescale(this.#points, trX, blY, -width, height);\n        break;\n      case 270:\n        outline = Outline._rescaleAndSwap(this.#outline, trX, trY, -width, -height);\n        points = Outline._rescaleAndSwap(this.#points, trX, trY, -width, -height);\n        break;\n    }\n    return {\n      outline: Array.from(outline),\n      points: [Array.from(points)]\n    };\n  }\n  #computeMinMax(isLTR) {\n    const outline = this.#outline;\n    let lastX = outline[4];\n    let lastY = outline[5];\n    let minX = lastX;\n    let minY = lastY;\n    let maxX = lastX;\n    let maxY = lastY;\n    let lastPointX = lastX;\n    let lastPointY = lastY;\n    const ltrCallback = isLTR ? Math.max : Math.min;\n    for (let i = 6, ii = outline.length; i < ii; i += 6) {\n      if (isNaN(outline[i])) {\n        minX = Math.min(minX, outline[i + 4]);\n        minY = Math.min(minY, outline[i + 5]);\n        maxX = Math.max(maxX, outline[i + 4]);\n        maxY = Math.max(maxY, outline[i + 5]);\n        if (lastPointY < outline[i + 5]) {\n          lastPointX = outline[i + 4];\n          lastPointY = outline[i + 5];\n        } else if (lastPointY === outline[i + 5]) {\n          lastPointX = ltrCallback(lastPointX, outline[i + 4]);\n        }\n      } else {\n        const bbox = Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6));\n        minX = Math.min(minX, bbox[0]);\n        minY = Math.min(minY, bbox[1]);\n        maxX = Math.max(maxX, bbox[2]);\n        maxY = Math.max(maxY, bbox[3]);\n        if (lastPointY < bbox[3]) {\n          lastPointX = bbox[2];\n          lastPointY = bbox[3];\n        } else if (lastPointY === bbox[3]) {\n          lastPointX = ltrCallback(lastPointX, bbox[2]);\n        }\n      }\n      lastX = outline[i + 4];\n      lastY = outline[i + 5];\n    }\n    const bbox = this.#bbox;\n    bbox[0] = minX - this.#innerMargin;\n    bbox[1] = minY - this.#innerMargin;\n    bbox[2] = maxX - minX + 2 * this.#innerMargin;\n    bbox[3] = maxY - minY + 2 * this.#innerMargin;\n    this.lastPoint = [lastPointX, lastPointY];\n  }\n  get box() {\n    return this.#bbox;\n  }\n  newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n    return new FreeDrawOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n  }\n  getNewOutline(thickness, innerMargin) {\n    const [x, y, width, height] = this.#bbox;\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n    const sx = width * layerWidth;\n    const sy = height * layerHeight;\n    const tx = x * layerWidth + layerX;\n    const ty = y * layerHeight + layerY;\n    const outliner = this.newOutliner({\n      x: this.#points[0] * sx + tx,\n      y: this.#points[1] * sy + ty\n    }, this.#box, this.#scaleFactor, thickness, this.#isLTR, innerMargin ?? this.#innerMargin);\n    for (let i = 2; i < this.#points.length; i += 2) {\n      outliner.add({\n        x: this.#points[i] * sx + tx,\n        y: this.#points[i + 1] * sy + ty\n      });\n    }\n    return outliner.getOutlines();\n  }\n}\n\n;// ./src/display/editor/drawers/highlight.js\n\n\nclass HighlightOutliner {\n  #box;\n  #lastPoint;\n  #verticalEdges = [];\n  #intervals = [];\n  constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n    let minX = Infinity;\n    let maxX = -Infinity;\n    let minY = Infinity;\n    let maxY = -Infinity;\n    const NUMBER_OF_DIGITS = 4;\n    const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n    for (const {\n      x,\n      y,\n      width,\n      height\n    } of boxes) {\n      const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON;\n      const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON;\n      const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON;\n      const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON;\n      const left = [x1, y1, y2, true];\n      const right = [x2, y1, y2, false];\n      this.#verticalEdges.push(left, right);\n      minX = Math.min(minX, x1);\n      maxX = Math.max(maxX, x2);\n      minY = Math.min(minY, y1);\n      maxY = Math.max(maxY, y2);\n    }\n    const bboxWidth = maxX - minX + 2 * innerMargin;\n    const bboxHeight = maxY - minY + 2 * innerMargin;\n    const shiftedMinX = minX - innerMargin;\n    const shiftedMinY = minY - innerMargin;\n    const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n    const lastPoint = [lastEdge[0], lastEdge[2]];\n    for (const edge of this.#verticalEdges) {\n      const [x, y1, y2] = edge;\n      edge[0] = (x - shiftedMinX) / bboxWidth;\n      edge[1] = (y1 - shiftedMinY) / bboxHeight;\n      edge[2] = (y2 - shiftedMinY) / bboxHeight;\n    }\n    this.#box = new Float32Array([shiftedMinX, shiftedMinY, bboxWidth, bboxHeight]);\n    this.#lastPoint = lastPoint;\n  }\n  getOutlines() {\n    this.#verticalEdges.sort((a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]);\n    const outlineVerticalEdges = [];\n    for (const edge of this.#verticalEdges) {\n      if (edge[3]) {\n        outlineVerticalEdges.push(...this.#breakEdge(edge));\n        this.#insert(edge);\n      } else {\n        this.#remove(edge);\n        outlineVerticalEdges.push(...this.#breakEdge(edge));\n      }\n    }\n    return this.#getOutlines(outlineVerticalEdges);\n  }\n  #getOutlines(outlineVerticalEdges) {\n    const edges = [];\n    const allEdges = new Set();\n    for (const edge of outlineVerticalEdges) {\n      const [x, y1, y2] = edge;\n      edges.push([x, y1, edge], [x, y2, edge]);\n    }\n    edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n    for (let i = 0, ii = edges.length; i < ii; i += 2) {\n      const edge1 = edges[i][2];\n      const edge2 = edges[i + 1][2];\n      edge1.push(edge2);\n      edge2.push(edge1);\n      allEdges.add(edge1);\n      allEdges.add(edge2);\n    }\n    const outlines = [];\n    let outline;\n    while (allEdges.size > 0) {\n      const edge = allEdges.values().next().value;\n      let [x, y1, y2, edge1, edge2] = edge;\n      allEdges.delete(edge);\n      let lastPointX = x;\n      let lastPointY = y1;\n      outline = [x, y2];\n      outlines.push(outline);\n      while (true) {\n        let e;\n        if (allEdges.has(edge1)) {\n          e = edge1;\n        } else if (allEdges.has(edge2)) {\n          e = edge2;\n        } else {\n          break;\n        }\n        allEdges.delete(e);\n        [x, y1, y2, edge1, edge2] = e;\n        if (lastPointX !== x) {\n          outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n          lastPointX = x;\n        }\n        lastPointY = lastPointY === y1 ? y2 : y1;\n      }\n      outline.push(lastPointX, lastPointY);\n    }\n    return new HighlightOutline(outlines, this.#box, this.#lastPoint);\n  }\n  #binarySearch(y) {\n    const array = this.#intervals;\n    let start = 0;\n    let end = array.length - 1;\n    while (start <= end) {\n      const middle = start + end >> 1;\n      const y1 = array[middle][0];\n      if (y1 === y) {\n        return middle;\n      }\n      if (y1 < y) {\n        start = middle + 1;\n      } else {\n        end = middle - 1;\n      }\n    }\n    return end + 1;\n  }\n  #insert([, y1, y2]) {\n    const index = this.#binarySearch(y1);\n    this.#intervals.splice(index, 0, [y1, y2]);\n  }\n  #remove([, y1, y2]) {\n    const index = this.#binarySearch(y1);\n    for (let i = index; i < this.#intervals.length; i++) {\n      const [start, end] = this.#intervals[i];\n      if (start !== y1) {\n        break;\n      }\n      if (start === y1 && end === y2) {\n        this.#intervals.splice(i, 1);\n        return;\n      }\n    }\n    for (let i = index - 1; i >= 0; i--) {\n      const [start, end] = this.#intervals[i];\n      if (start !== y1) {\n        break;\n      }\n      if (start === y1 && end === y2) {\n        this.#intervals.splice(i, 1);\n        return;\n      }\n    }\n  }\n  #breakEdge(edge) {\n    const [x, y1, y2] = edge;\n    const results = [[x, y1, y2]];\n    const index = this.#binarySearch(y2);\n    for (let i = 0; i < index; i++) {\n      const [start, end] = this.#intervals[i];\n      for (let j = 0, jj = results.length; j < jj; j++) {\n        const [, y3, y4] = results[j];\n        if (end <= y3 || y4 <= start) {\n          continue;\n        }\n        if (y3 >= start) {\n          if (y4 > end) {\n            results[j][1] = end;\n          } else {\n            if (jj === 1) {\n              return [];\n            }\n            results.splice(j, 1);\n            j--;\n            jj--;\n          }\n          continue;\n        }\n        results[j][2] = start;\n        if (y4 > end) {\n          results.push([x, end, y4]);\n        }\n      }\n    }\n    return results;\n  }\n}\nclass HighlightOutline extends Outline {\n  #box;\n  #outlines;\n  constructor(outlines, box, lastPoint) {\n    super();\n    this.#outlines = outlines;\n    this.#box = box;\n    this.lastPoint = lastPoint;\n  }\n  toSVGPath() {\n    const buffer = [];\n    for (const polygon of this.#outlines) {\n      let [prevX, prevY] = polygon;\n      buffer.push(`M${prevX} ${prevY}`);\n      for (let i = 2; i < polygon.length; i += 2) {\n        const x = polygon[i];\n        const y = polygon[i + 1];\n        if (x === prevX) {\n          buffer.push(`V${y}`);\n          prevY = y;\n        } else if (y === prevY) {\n          buffer.push(`H${x}`);\n          prevX = x;\n        }\n      }\n      buffer.push(\"Z\");\n    }\n    return buffer.join(\" \");\n  }\n  serialize([blX, blY, trX, trY], _rotation) {\n    const outlines = [];\n    const width = trX - blX;\n    const height = trY - blY;\n    for (const outline of this.#outlines) {\n      const points = new Array(outline.length);\n      for (let i = 0; i < outline.length; i += 2) {\n        points[i] = blX + outline[i] * width;\n        points[i + 1] = trY - outline[i + 1] * height;\n      }\n      outlines.push(points);\n    }\n    return outlines;\n  }\n  get box() {\n    return this.#box;\n  }\n  get classNamesForOutlining() {\n    return [\"highlightOutline\"];\n  }\n}\nclass FreeHighlightOutliner extends FreeDrawOutliner {\n  newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n    return new FreeHighlightOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n  }\n}\nclass FreeHighlightOutline extends FreeDrawOutline {\n  newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n    return new FreeHighlightOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n  }\n}\n\n;// ./src/display/editor/color_picker.js\n\n\n\nclass ColorPicker {\n  #button = null;\n  #buttonSwatch = null;\n  #defaultColor;\n  #dropdown = null;\n  #dropdownWasFromKeyboard = false;\n  #isMainColorPicker = false;\n  #editor = null;\n  #eventBus;\n  #openDropdownAC = null;\n  #uiManager = null;\n  #type;\n  static #l10nColor = null;\n  static get _keyboardManager() {\n    return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"Escape\", \"mac+Escape\"], ColorPicker.prototype._hideDropdownFromKeyboard], [[\" \", \"mac+ \"], ColorPicker.prototype._colorSelectFromKeyboard], [[\"ArrowDown\", \"ArrowRight\", \"mac+ArrowDown\", \"mac+ArrowRight\"], ColorPicker.prototype._moveToNext], [[\"ArrowUp\", \"ArrowLeft\", \"mac+ArrowUp\", \"mac+ArrowLeft\"], ColorPicker.prototype._moveToPrevious], [[\"Home\", \"mac+Home\"], ColorPicker.prototype._moveToBeginning], [[\"End\", \"mac+End\"], ColorPicker.prototype._moveToEnd]]));\n  }\n  constructor({\n    editor = null,\n    uiManager = null\n  }) {\n    if (editor) {\n      this.#isMainColorPicker = false;\n      this.#type = AnnotationEditorParamsType.HIGHLIGHT_COLOR;\n      this.#editor = editor;\n    } else {\n      this.#isMainColorPicker = true;\n      this.#type = AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR;\n    }\n    this.#uiManager = editor?._uiManager || uiManager;\n    this.#eventBus = this.#uiManager._eventBus;\n    this.#defaultColor = editor?.color || this.#uiManager?.highlightColors.values().next().value || \"#FFFF98\";\n    ColorPicker.#l10nColor ||= Object.freeze({\n      blue: \"pdfjs-editor-colorpicker-blue\",\n      green: \"pdfjs-editor-colorpicker-green\",\n      pink: \"pdfjs-editor-colorpicker-pink\",\n      red: \"pdfjs-editor-colorpicker-red\",\n      yellow: \"pdfjs-editor-colorpicker-yellow\"\n    });\n  }\n  renderButton() {\n    const button = this.#button = document.createElement(\"button\");\n    button.className = \"colorPicker\";\n    button.tabIndex = \"0\";\n    button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-button\");\n    button.setAttribute(\"aria-haspopup\", true);\n    const signal = this.#uiManager._signal;\n    button.addEventListener(\"click\", this.#openDropdown.bind(this), {\n      signal\n    });\n    button.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n      signal\n    });\n    const swatch = this.#buttonSwatch = document.createElement(\"span\");\n    swatch.className = \"swatch\";\n    swatch.setAttribute(\"aria-hidden\", true);\n    swatch.style.backgroundColor = this.#defaultColor;\n    button.append(swatch);\n    return button;\n  }\n  renderMainDropdown() {\n    const dropdown = this.#dropdown = this.#getDropdownRoot();\n    dropdown.setAttribute(\"aria-orientation\", \"horizontal\");\n    dropdown.setAttribute(\"aria-labelledby\", \"highlightColorPickerLabel\");\n    return dropdown;\n  }\n  #getDropdownRoot() {\n    const div = document.createElement(\"div\");\n    const signal = this.#uiManager._signal;\n    div.addEventListener(\"contextmenu\", noContextMenu, {\n      signal\n    });\n    div.className = \"dropdown\";\n    div.role = \"listbox\";\n    div.setAttribute(\"aria-multiselectable\", false);\n    div.setAttribute(\"aria-orientation\", \"vertical\");\n    div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\n    for (const [name, color] of this.#uiManager.highlightColors) {\n      const button = document.createElement(\"button\");\n      button.tabIndex = \"0\";\n      button.role = \"option\";\n      button.setAttribute(\"data-color\", color);\n      button.title = name;\n      button.setAttribute(\"data-l10n-id\", ColorPicker.#l10nColor[name]);\n      const swatch = document.createElement(\"span\");\n      button.append(swatch);\n      swatch.className = \"swatch\";\n      swatch.style.backgroundColor = color;\n      button.setAttribute(\"aria-selected\", color === this.#defaultColor);\n      button.addEventListener(\"click\", this.#colorSelect.bind(this, color), {\n        signal\n      });\n      div.append(button);\n    }\n    div.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n      signal\n    });\n    return div;\n  }\n  #colorSelect(color, event) {\n    event.stopPropagation();\n    this.#eventBus.dispatch(\"switchannotationeditorparams\", {\n      source: this,\n      type: this.#type,\n      value: color\n    });\n  }\n  _colorSelectFromKeyboard(event) {\n    if (event.target === this.#button) {\n      this.#openDropdown(event);\n      return;\n    }\n    const color = event.target.getAttribute(\"data-color\");\n    if (!color) {\n      return;\n    }\n    this.#colorSelect(color, event);\n  }\n  _moveToNext(event) {\n    if (!this.#isDropdownVisible) {\n      this.#openDropdown(event);\n      return;\n    }\n    if (event.target === this.#button) {\n      this.#dropdown.firstChild?.focus();\n      return;\n    }\n    event.target.nextSibling?.focus();\n  }\n  _moveToPrevious(event) {\n    if (event.target === this.#dropdown?.firstChild || event.target === this.#button) {\n      if (this.#isDropdownVisible) {\n        this._hideDropdownFromKeyboard();\n      }\n      return;\n    }\n    if (!this.#isDropdownVisible) {\n      this.#openDropdown(event);\n    }\n    event.target.previousSibling?.focus();\n  }\n  _moveToBeginning(event) {\n    if (!this.#isDropdownVisible) {\n      this.#openDropdown(event);\n      return;\n    }\n    this.#dropdown.firstChild?.focus();\n  }\n  _moveToEnd(event) {\n    if (!this.#isDropdownVisible) {\n      this.#openDropdown(event);\n      return;\n    }\n    this.#dropdown.lastChild?.focus();\n  }\n  #keyDown(event) {\n    ColorPicker._keyboardManager.exec(this, event);\n  }\n  #openDropdown(event) {\n    if (this.#isDropdownVisible) {\n      this.hideDropdown();\n      return;\n    }\n    this.#dropdownWasFromKeyboard = event.detail === 0;\n    if (!this.#openDropdownAC) {\n      this.#openDropdownAC = new AbortController();\n      window.addEventListener(\"pointerdown\", this.#pointerDown.bind(this), {\n        signal: this.#uiManager.combinedSignal(this.#openDropdownAC)\n      });\n    }\n    if (this.#dropdown) {\n      this.#dropdown.classList.remove(\"hidden\");\n      return;\n    }\n    const root = this.#dropdown = this.#getDropdownRoot();\n    this.#button.append(root);\n  }\n  #pointerDown(event) {\n    if (this.#dropdown?.contains(event.target)) {\n      return;\n    }\n    this.hideDropdown();\n  }\n  hideDropdown() {\n    this.#dropdown?.classList.add(\"hidden\");\n    this.#openDropdownAC?.abort();\n    this.#openDropdownAC = null;\n  }\n  get #isDropdownVisible() {\n    return this.#dropdown && !this.#dropdown.classList.contains(\"hidden\");\n  }\n  _hideDropdownFromKeyboard() {\n    if (this.#isMainColorPicker) {\n      return;\n    }\n    if (!this.#isDropdownVisible) {\n      this.#editor?.unselect();\n      return;\n    }\n    this.hideDropdown();\n    this.#button.focus({\n      preventScroll: true,\n      focusVisible: this.#dropdownWasFromKeyboard\n    });\n  }\n  updateColor(color) {\n    if (this.#buttonSwatch) {\n      this.#buttonSwatch.style.backgroundColor = color;\n    }\n    if (!this.#dropdown) {\n      return;\n    }\n    const i = this.#uiManager.highlightColors.values();\n    for (const child of this.#dropdown.children) {\n      child.setAttribute(\"aria-selected\", i.next().value === color);\n    }\n  }\n  destroy() {\n    this.#button?.remove();\n    this.#button = null;\n    this.#buttonSwatch = null;\n    this.#dropdown?.remove();\n    this.#dropdown = null;\n  }\n}\n\n;// ./src/display/editor/highlight.js\n\n\n\n\n\n\n\nclass HighlightEditor extends AnnotationEditor {\n  #anchorNode = null;\n  #anchorOffset = 0;\n  #boxes;\n  #clipPathId = null;\n  #colorPicker = null;\n  #focusOutlines = null;\n  #focusNode = null;\n  #focusOffset = 0;\n  #highlightDiv = null;\n  #highlightOutlines = null;\n  #id = null;\n  #isFreeHighlight = false;\n  #lastPoint = null;\n  #opacity;\n  #outlineId = null;\n  #text = \"\";\n  #thickness;\n  #methodOfCreation = \"\";\n  static _defaultColor = null;\n  static _defaultOpacity = 1;\n  static _defaultThickness = 12;\n  static _type = \"highlight\";\n  static _editorType = AnnotationEditorType.HIGHLIGHT;\n  static _freeHighlightId = -1;\n  static _freeHighlight = null;\n  static _freeHighlightClipId = \"\";\n  static get _keyboardManager() {\n    const proto = HighlightEditor.prototype;\n    return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._moveCaret, {\n      args: [0]\n    }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._moveCaret, {\n      args: [1]\n    }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._moveCaret, {\n      args: [2]\n    }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._moveCaret, {\n      args: [3]\n    }]]));\n  }\n  constructor(params) {\n    super({\n      ...params,\n      name: \"highlightEditor\"\n    });\n    this.color = params.color || HighlightEditor._defaultColor;\n    this.#thickness = params.thickness || HighlightEditor._defaultThickness;\n    this.#opacity = params.opacity || HighlightEditor._defaultOpacity;\n    this.#boxes = params.boxes || null;\n    this.#methodOfCreation = params.methodOfCreation || \"\";\n    this.#text = params.text || \"\";\n    this._isDraggable = false;\n    if (params.highlightId > -1) {\n      this.#isFreeHighlight = true;\n      this.#createFreeOutlines(params);\n      this.#addToDrawLayer();\n    } else if (this.#boxes) {\n      this.#anchorNode = params.anchorNode;\n      this.#anchorOffset = params.anchorOffset;\n      this.#focusNode = params.focusNode;\n      this.#focusOffset = params.focusOffset;\n      this.#createOutlines();\n      this.#addToDrawLayer();\n      this.rotate(this.rotation);\n    }\n  }\n  get telemetryInitialData() {\n    return {\n      action: \"added\",\n      type: this.#isFreeHighlight ? \"free_highlight\" : \"highlight\",\n      color: this._uiManager.highlightColorNames.get(this.color),\n      thickness: this.#thickness,\n      methodOfCreation: this.#methodOfCreation\n    };\n  }\n  get telemetryFinalData() {\n    return {\n      type: \"highlight\",\n      color: this._uiManager.highlightColorNames.get(this.color)\n    };\n  }\n  static computeTelemetryFinalData(data) {\n    return {\n      numberOfColors: data.get(\"color\").size\n    };\n  }\n  #createOutlines() {\n    const outliner = new HighlightOutliner(this.#boxes, 0.001);\n    this.#highlightOutlines = outliner.getOutlines();\n    [this.x, this.y, this.width, this.height] = this.#highlightOutlines.box;\n    const outlinerForOutline = new HighlightOutliner(this.#boxes, 0.0025, 0.001, this._uiManager.direction === \"ltr\");\n    this.#focusOutlines = outlinerForOutline.getOutlines();\n    const {\n      lastPoint\n    } = this.#focusOutlines;\n    this.#lastPoint = [(lastPoint[0] - this.x) / this.width, (lastPoint[1] - this.y) / this.height];\n  }\n  #createFreeOutlines({\n    highlightOutlines,\n    highlightId,\n    clipPathId\n  }) {\n    this.#highlightOutlines = highlightOutlines;\n    const extraThickness = 1.5;\n    this.#focusOutlines = highlightOutlines.getNewOutline(this.#thickness / 2 + extraThickness, 0.0025);\n    if (highlightId >= 0) {\n      this.#id = highlightId;\n      this.#clipPathId = clipPathId;\n      this.parent.drawLayer.finalizeDraw(highlightId, {\n        bbox: highlightOutlines.box,\n        path: {\n          d: highlightOutlines.toSVGPath()\n        }\n      });\n      this.#outlineId = this.parent.drawLayer.drawOutline({\n        rootClass: {\n          highlightOutline: true,\n          free: true\n        },\n        bbox: this.#focusOutlines.box,\n        path: {\n          d: this.#focusOutlines.toSVGPath()\n        }\n      }, true);\n    } else if (this.parent) {\n      const angle = this.parent.viewport.rotation;\n      this.parent.drawLayer.updateProperties(this.#id, {\n        bbox: HighlightEditor.#rotateBbox(this.#highlightOutlines.box, (angle - this.rotation + 360) % 360),\n        path: {\n          d: highlightOutlines.toSVGPath()\n        }\n      });\n      this.parent.drawLayer.updateProperties(this.#outlineId, {\n        bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n        path: {\n          d: this.#focusOutlines.toSVGPath()\n        }\n      });\n    }\n    const [x, y, width, height] = highlightOutlines.box;\n    switch (this.rotation) {\n      case 0:\n        this.x = x;\n        this.y = y;\n        this.width = width;\n        this.height = height;\n        break;\n      case 90:\n        {\n          const [pageWidth, pageHeight] = this.parentDimensions;\n          this.x = y;\n          this.y = 1 - x;\n          this.width = width * pageHeight / pageWidth;\n          this.height = height * pageWidth / pageHeight;\n          break;\n        }\n      case 180:\n        this.x = 1 - x;\n        this.y = 1 - y;\n        this.width = width;\n        this.height = height;\n        break;\n      case 270:\n        {\n          const [pageWidth, pageHeight] = this.parentDimensions;\n          this.x = 1 - y;\n          this.y = x;\n          this.width = width * pageHeight / pageWidth;\n          this.height = height * pageWidth / pageHeight;\n          break;\n        }\n    }\n    const {\n      lastPoint\n    } = this.#focusOutlines;\n    this.#lastPoint = [(lastPoint[0] - x) / width, (lastPoint[1] - y) / height];\n  }\n  static initialize(l10n, uiManager) {\n    AnnotationEditor.initialize(l10n, uiManager);\n    HighlightEditor._defaultColor ||= uiManager.highlightColors?.values().next().value || \"#fff066\";\n  }\n  static updateDefaultParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n        HighlightEditor._defaultColor = value;\n        break;\n      case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n        HighlightEditor._defaultThickness = value;\n        break;\n    }\n  }\n  translateInPage(x, y) {}\n  get toolbarPosition() {\n    return this.#lastPoint;\n  }\n  updateParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n        this.#updateColor(value);\n        break;\n      case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n        this.#updateThickness(value);\n        break;\n    }\n  }\n  static get defaultPropertiesToUpdate() {\n    return [[AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR, HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, HighlightEditor._defaultThickness]];\n  }\n  get propertiesToUpdate() {\n    return [[AnnotationEditorParamsType.HIGHLIGHT_COLOR, this.color || HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, this.#thickness || HighlightEditor._defaultThickness], [AnnotationEditorParamsType.HIGHLIGHT_FREE, this.#isFreeHighlight]];\n  }\n  #updateColor(color) {\n    const setColorAndOpacity = (col, opa) => {\n      this.color = col;\n      this.#opacity = opa;\n      this.parent?.drawLayer.updateProperties(this.#id, {\n        root: {\n          fill: col,\n          \"fill-opacity\": opa\n        }\n      });\n      this.#colorPicker?.updateColor(col);\n    };\n    const savedColor = this.color;\n    const savedOpacity = this.#opacity;\n    this.addCommands({\n      cmd: setColorAndOpacity.bind(this, color, HighlightEditor._defaultOpacity),\n      undo: setColorAndOpacity.bind(this, savedColor, savedOpacity),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n      overwriteIfSameType: true,\n      keepUndo: true\n    });\n    this._reportTelemetry({\n      action: \"color_changed\",\n      color: this._uiManager.highlightColorNames.get(color)\n    }, true);\n  }\n  #updateThickness(thickness) {\n    const savedThickness = this.#thickness;\n    const setThickness = th => {\n      this.#thickness = th;\n      this.#changeThickness(th);\n    };\n    this.addCommands({\n      cmd: setThickness.bind(this, thickness),\n      undo: setThickness.bind(this, savedThickness),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type: AnnotationEditorParamsType.INK_THICKNESS,\n      overwriteIfSameType: true,\n      keepUndo: true\n    });\n    this._reportTelemetry({\n      action: \"thickness_changed\",\n      thickness\n    }, true);\n  }\n  async addEditToolbar() {\n    const toolbar = await super.addEditToolbar();\n    if (!toolbar) {\n      return null;\n    }\n    if (this._uiManager.highlightColors) {\n      this.#colorPicker = new ColorPicker({\n        editor: this\n      });\n      toolbar.addColorPicker(this.#colorPicker);\n    }\n    return toolbar;\n  }\n  disableEditing() {\n    super.disableEditing();\n    this.div.classList.toggle(\"disabled\", true);\n  }\n  enableEditing() {\n    super.enableEditing();\n    this.div.classList.toggle(\"disabled\", false);\n  }\n  fixAndSetPosition() {\n    return super.fixAndSetPosition(this.#getRotation());\n  }\n  getBaseTranslation() {\n    return [0, 0];\n  }\n  getRect(tx, ty) {\n    return super.getRect(tx, ty, this.#getRotation());\n  }\n  onceAdded(focus) {\n    if (!this.annotationElementId) {\n      this.parent.addUndoableEditor(this);\n    }\n    if (focus) {\n      this.div.focus();\n    }\n  }\n  remove() {\n    this.#cleanDrawLayer();\n    this._reportTelemetry({\n      action: \"deleted\"\n    });\n    super.remove();\n  }\n  rebuild() {\n    if (!this.parent) {\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n    this.#addToDrawLayer();\n    if (!this.isAttachedToDOM) {\n      this.parent.add(this);\n    }\n  }\n  setParent(parent) {\n    let mustBeSelected = false;\n    if (this.parent && !parent) {\n      this.#cleanDrawLayer();\n    } else if (parent) {\n      this.#addToDrawLayer(parent);\n      mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n    }\n    super.setParent(parent);\n    this.show(this._isVisible);\n    if (mustBeSelected) {\n      this.select();\n    }\n  }\n  #changeThickness(thickness) {\n    if (!this.#isFreeHighlight) {\n      return;\n    }\n    this.#createFreeOutlines({\n      highlightOutlines: this.#highlightOutlines.getNewOutline(thickness / 2)\n    });\n    this.fixAndSetPosition();\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.setDims(this.width * parentWidth, this.height * parentHeight);\n  }\n  #cleanDrawLayer() {\n    if (this.#id === null || !this.parent) {\n      return;\n    }\n    this.parent.drawLayer.remove(this.#id);\n    this.#id = null;\n    this.parent.drawLayer.remove(this.#outlineId);\n    this.#outlineId = null;\n  }\n  #addToDrawLayer(parent = this.parent) {\n    if (this.#id !== null) {\n      return;\n    }\n    ({\n      id: this.#id,\n      clipPathId: this.#clipPathId\n    } = parent.drawLayer.draw({\n      bbox: this.#highlightOutlines.box,\n      root: {\n        viewBox: \"0 0 1 1\",\n        fill: this.color,\n        \"fill-opacity\": this.#opacity\n      },\n      rootClass: {\n        highlight: true,\n        free: this.#isFreeHighlight\n      },\n      path: {\n        d: this.#highlightOutlines.toSVGPath()\n      }\n    }, false, true));\n    this.#outlineId = parent.drawLayer.drawOutline({\n      rootClass: {\n        highlightOutline: true,\n        free: this.#isFreeHighlight\n      },\n      bbox: this.#focusOutlines.box,\n      path: {\n        d: this.#focusOutlines.toSVGPath()\n      }\n    }, this.#isFreeHighlight);\n    if (this.#highlightDiv) {\n      this.#highlightDiv.style.clipPath = this.#clipPathId;\n    }\n  }\n  static #rotateBbox([x, y, width, height], angle) {\n    switch (angle) {\n      case 90:\n        return [1 - y - height, x, height, width];\n      case 180:\n        return [1 - x - width, 1 - y - height, width, height];\n      case 270:\n        return [y, 1 - x - width, height, width];\n    }\n    return [x, y, width, height];\n  }\n  rotate(angle) {\n    const {\n      drawLayer\n    } = this.parent;\n    let box;\n    if (this.#isFreeHighlight) {\n      angle = (angle - this.rotation + 360) % 360;\n      box = HighlightEditor.#rotateBbox(this.#highlightOutlines.box, angle);\n    } else {\n      box = HighlightEditor.#rotateBbox([this.x, this.y, this.width, this.height], angle);\n    }\n    drawLayer.updateProperties(this.#id, {\n      bbox: box,\n      root: {\n        \"data-main-rotation\": angle\n      }\n    });\n    drawLayer.updateProperties(this.#outlineId, {\n      bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n      root: {\n        \"data-main-rotation\": angle\n      }\n    });\n  }\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n    const div = super.render();\n    if (this.#text) {\n      div.setAttribute(\"aria-label\", this.#text);\n      div.setAttribute(\"role\", \"mark\");\n    }\n    if (this.#isFreeHighlight) {\n      div.classList.add(\"free\");\n    } else {\n      this.div.addEventListener(\"keydown\", this.#keydown.bind(this), {\n        signal: this._uiManager._signal\n      });\n    }\n    const highlightDiv = this.#highlightDiv = document.createElement(\"div\");\n    div.append(highlightDiv);\n    highlightDiv.setAttribute(\"aria-hidden\", \"true\");\n    highlightDiv.className = \"internal\";\n    highlightDiv.style.clipPath = this.#clipPathId;\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.setDims(this.width * parentWidth, this.height * parentHeight);\n    bindEvents(this, this.#highlightDiv, [\"pointerover\", \"pointerleave\"]);\n    this.enableEditing();\n    return div;\n  }\n  pointerover() {\n    if (!this.isSelected) {\n      this.parent?.drawLayer.updateProperties(this.#outlineId, {\n        rootClass: {\n          hovered: true\n        }\n      });\n    }\n  }\n  pointerleave() {\n    if (!this.isSelected) {\n      this.parent?.drawLayer.updateProperties(this.#outlineId, {\n        rootClass: {\n          hovered: false\n        }\n      });\n    }\n  }\n  #keydown(event) {\n    HighlightEditor._keyboardManager.exec(this, event);\n  }\n  _moveCaret(direction) {\n    this.parent.unselect(this);\n    switch (direction) {\n      case 0:\n      case 2:\n        this.#setCaret(true);\n        break;\n      case 1:\n      case 3:\n        this.#setCaret(false);\n        break;\n    }\n  }\n  #setCaret(start) {\n    if (!this.#anchorNode) {\n      return;\n    }\n    const selection = window.getSelection();\n    if (start) {\n      selection.setPosition(this.#anchorNode, this.#anchorOffset);\n    } else {\n      selection.setPosition(this.#focusNode, this.#focusOffset);\n    }\n  }\n  select() {\n    super.select();\n    if (!this.#outlineId) {\n      return;\n    }\n    this.parent?.drawLayer.updateProperties(this.#outlineId, {\n      rootClass: {\n        hovered: false,\n        selected: true\n      }\n    });\n  }\n  unselect() {\n    super.unselect();\n    if (!this.#outlineId) {\n      return;\n    }\n    this.parent?.drawLayer.updateProperties(this.#outlineId, {\n      rootClass: {\n        selected: false\n      }\n    });\n    if (!this.#isFreeHighlight) {\n      this.#setCaret(false);\n    }\n  }\n  get _mustFixPosition() {\n    return !this.#isFreeHighlight;\n  }\n  show(visible = this._isVisible) {\n    super.show(visible);\n    if (this.parent) {\n      this.parent.drawLayer.updateProperties(this.#id, {\n        rootClass: {\n          hidden: !visible\n        }\n      });\n      this.parent.drawLayer.updateProperties(this.#outlineId, {\n        rootClass: {\n          hidden: !visible\n        }\n      });\n    }\n  }\n  #getRotation() {\n    return this.#isFreeHighlight ? this.rotation : 0;\n  }\n  #serializeBoxes() {\n    if (this.#isFreeHighlight) {\n      return null;\n    }\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    const [pageX, pageY] = this.pageTranslation;\n    const boxes = this.#boxes;\n    const quadPoints = new Float32Array(boxes.length * 8);\n    let i = 0;\n    for (const {\n      x,\n      y,\n      width,\n      height\n    } of boxes) {\n      const sx = x * pageWidth + pageX;\n      const sy = (1 - y) * pageHeight + pageY;\n      quadPoints[i] = quadPoints[i + 4] = sx;\n      quadPoints[i + 1] = quadPoints[i + 3] = sy;\n      quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\n      quadPoints[i + 5] = quadPoints[i + 7] = sy - height * pageHeight;\n      i += 8;\n    }\n    return quadPoints;\n  }\n  #serializeOutlines(rect) {\n    return this.#highlightOutlines.serialize(rect, this.#getRotation());\n  }\n  static startHighlighting(parent, isLTR, {\n    target: textLayer,\n    x,\n    y\n  }) {\n    const {\n      x: layerX,\n      y: layerY,\n      width: parentWidth,\n      height: parentHeight\n    } = textLayer.getBoundingClientRect();\n    const ac = new AbortController();\n    const signal = parent.combinedSignal(ac);\n    const pointerUpCallback = e => {\n      ac.abort();\n      this.#endHighlight(parent, e);\n    };\n    window.addEventListener(\"blur\", pointerUpCallback, {\n      signal\n    });\n    window.addEventListener(\"pointerup\", pointerUpCallback, {\n      signal\n    });\n    window.addEventListener(\"pointerdown\", stopEvent, {\n      capture: true,\n      passive: false,\n      signal\n    });\n    window.addEventListener(\"contextmenu\", noContextMenu, {\n      signal\n    });\n    textLayer.addEventListener(\"pointermove\", this.#highlightMove.bind(this, parent), {\n      signal\n    });\n    this._freeHighlight = new FreeHighlightOutliner({\n      x,\n      y\n    }, [layerX, layerY, parentWidth, parentHeight], parent.scale, this._defaultThickness / 2, isLTR, 0.001);\n    ({\n      id: this._freeHighlightId,\n      clipPathId: this._freeHighlightClipId\n    } = parent.drawLayer.draw({\n      bbox: [0, 0, 1, 1],\n      root: {\n        viewBox: \"0 0 1 1\",\n        fill: this._defaultColor,\n        \"fill-opacity\": this._defaultOpacity\n      },\n      rootClass: {\n        highlight: true,\n        free: true\n      },\n      path: {\n        d: this._freeHighlight.toSVGPath()\n      }\n    }, true, true));\n  }\n  static #highlightMove(parent, event) {\n    if (this._freeHighlight.add(event)) {\n      parent.drawLayer.updateProperties(this._freeHighlightId, {\n        path: {\n          d: this._freeHighlight.toSVGPath()\n        }\n      });\n    }\n  }\n  static #endHighlight(parent, event) {\n    if (!this._freeHighlight.isEmpty()) {\n      parent.createAndAddNewEditor(event, false, {\n        highlightId: this._freeHighlightId,\n        highlightOutlines: this._freeHighlight.getOutlines(),\n        clipPathId: this._freeHighlightClipId,\n        methodOfCreation: \"main_toolbar\"\n      });\n    } else {\n      parent.drawLayer.remove(this._freeHighlightId);\n    }\n    this._freeHighlightId = -1;\n    this._freeHighlight = null;\n    this._freeHighlightClipId = \"\";\n  }\n  static async deserialize(data, parent, uiManager) {\n    let initialData = null;\n    if (data instanceof HighlightAnnotationElement) {\n      const {\n        data: {\n          quadPoints,\n          rect,\n          rotation,\n          id,\n          color,\n          opacity,\n          popupRef\n        },\n        parent: {\n          page: {\n            pageNumber\n          }\n        }\n      } = data;\n      initialData = data = {\n        annotationType: AnnotationEditorType.HIGHLIGHT,\n        color: Array.from(color),\n        opacity,\n        quadPoints,\n        boxes: null,\n        pageIndex: pageNumber - 1,\n        rect: rect.slice(0),\n        rotation,\n        id,\n        deleted: false,\n        popupRef\n      };\n    } else if (data instanceof InkAnnotationElement) {\n      const {\n        data: {\n          inkLists,\n          rect,\n          rotation,\n          id,\n          color,\n          borderStyle: {\n            rawWidth: thickness\n          },\n          popupRef\n        },\n        parent: {\n          page: {\n            pageNumber\n          }\n        }\n      } = data;\n      initialData = data = {\n        annotationType: AnnotationEditorType.HIGHLIGHT,\n        color: Array.from(color),\n        thickness,\n        inkLists,\n        boxes: null,\n        pageIndex: pageNumber - 1,\n        rect: rect.slice(0),\n        rotation,\n        id,\n        deleted: false,\n        popupRef\n      };\n    }\n    const {\n      color,\n      quadPoints,\n      inkLists,\n      opacity\n    } = data;\n    const editor = await super.deserialize(data, parent, uiManager);\n    editor.color = Util.makeHexColor(...color);\n    editor.#opacity = opacity || 1;\n    if (inkLists) {\n      editor.#thickness = data.thickness;\n    }\n    editor.annotationElementId = data.id || null;\n    editor._initialData = initialData;\n    const [pageWidth, pageHeight] = editor.pageDimensions;\n    const [pageX, pageY] = editor.pageTranslation;\n    if (quadPoints) {\n      const boxes = editor.#boxes = [];\n      for (let i = 0; i < quadPoints.length; i += 8) {\n        boxes.push({\n          x: (quadPoints[i] - pageX) / pageWidth,\n          y: 1 - (quadPoints[i + 1] - pageY) / pageHeight,\n          width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n          height: (quadPoints[i + 1] - quadPoints[i + 5]) / pageHeight\n        });\n      }\n      editor.#createOutlines();\n      editor.#addToDrawLayer();\n      editor.rotate(editor.rotation);\n    } else if (inkLists) {\n      editor.#isFreeHighlight = true;\n      const points = inkLists[0];\n      const point = {\n        x: points[0] - pageX,\n        y: pageHeight - (points[1] - pageY)\n      };\n      const outliner = new FreeHighlightOutliner(point, [0, 0, pageWidth, pageHeight], 1, editor.#thickness / 2, true, 0.001);\n      for (let i = 0, ii = points.length; i < ii; i += 2) {\n        point.x = points[i] - pageX;\n        point.y = pageHeight - (points[i + 1] - pageY);\n        outliner.add(point);\n      }\n      const {\n        id,\n        clipPathId\n      } = parent.drawLayer.draw({\n        bbox: [0, 0, 1, 1],\n        root: {\n          viewBox: \"0 0 1 1\",\n          fill: editor.color,\n          \"fill-opacity\": editor._defaultOpacity\n        },\n        rootClass: {\n          highlight: true,\n          free: true\n        },\n        path: {\n          d: outliner.toSVGPath()\n        }\n      }, true, true);\n      editor.#createFreeOutlines({\n        highlightOutlines: outliner.getOutlines(),\n        highlightId: id,\n        clipPathId\n      });\n      editor.#addToDrawLayer();\n    }\n    return editor;\n  }\n  serialize(isForCopying = false) {\n    if (this.isEmpty() || isForCopying) {\n      return null;\n    }\n    if (this.deleted) {\n      return this.serializeDeleted();\n    }\n    const rect = this.getRect(0, 0);\n    const color = AnnotationEditor._colorManager.convert(this.color);\n    const serialized = {\n      annotationType: AnnotationEditorType.HIGHLIGHT,\n      color,\n      opacity: this.#opacity,\n      thickness: this.#thickness,\n      quadPoints: this.#serializeBoxes(),\n      outlines: this.#serializeOutlines(rect),\n      pageIndex: this.pageIndex,\n      rect,\n      rotation: this.#getRotation(),\n      structTreeParentId: this._structTreeParentId\n    };\n    if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n      return null;\n    }\n    serialized.id = this.annotationElementId;\n    return serialized;\n  }\n  #hasElementChanged(serialized) {\n    const {\n      color\n    } = this._initialData;\n    return serialized.color.some((c, i) => c !== color[i]);\n  }\n  renderAnnotationElement(annotation) {\n    annotation.updateEdited({\n      rect: this.getRect(0, 0)\n    });\n    return null;\n  }\n  static canCreateNewEmptyEditor() {\n    return false;\n  }\n}\n\n;// ./src/display/editor/draw.js\n\n\n\nclass DrawingOptions {\n  #svgProperties = Object.create(null);\n  updateProperty(name, value) {\n    this[name] = value;\n    this.updateSVGProperty(name, value);\n  }\n  updateProperties(properties) {\n    if (!properties) {\n      return;\n    }\n    for (const [name, value] of Object.entries(properties)) {\n      this.updateProperty(name, value);\n    }\n  }\n  updateSVGProperty(name, value) {\n    this.#svgProperties[name] = value;\n  }\n  toSVGProperties() {\n    const root = this.#svgProperties;\n    this.#svgProperties = Object.create(null);\n    return {\n      root\n    };\n  }\n  reset() {\n    this.#svgProperties = Object.create(null);\n  }\n  updateAll(options = this) {\n    this.updateProperties(options);\n  }\n  clone() {\n    unreachable(\"Not implemented\");\n  }\n}\nclass DrawingEditor extends AnnotationEditor {\n  #drawOutlines = null;\n  #mustBeCommitted;\n  _drawId = null;\n  static _currentDrawId = -1;\n  static _currentParent = null;\n  static #currentDraw = null;\n  static #currentDrawingAC = null;\n  static #currentDrawingOptions = null;\n  static #currentPointerId = NaN;\n  static #currentPointerType = null;\n  static #currentPointerIds = null;\n  static #currentMoveTimestamp = NaN;\n  static _INNER_MARGIN = 3;\n  constructor(params) {\n    super(params);\n    this.#mustBeCommitted = params.mustBeCommitted || false;\n    if (params.drawOutlines) {\n      this.#createDrawOutlines(params);\n      this.#addToDrawLayer();\n    }\n  }\n  #createDrawOutlines({\n    drawOutlines,\n    drawId,\n    drawingOptions\n  }) {\n    this.#drawOutlines = drawOutlines;\n    this._drawingOptions ||= drawingOptions;\n    if (drawId >= 0) {\n      this._drawId = drawId;\n      this.parent.drawLayer.finalizeDraw(drawId, drawOutlines.defaultProperties);\n    } else {\n      this._drawId = this.#createDrawing(drawOutlines, this.parent);\n    }\n    this.#updateBbox(drawOutlines.box);\n  }\n  #createDrawing(drawOutlines, parent) {\n    const {\n      id\n    } = parent.drawLayer.draw(DrawingEditor._mergeSVGProperties(this._drawingOptions.toSVGProperties(), drawOutlines.defaultSVGProperties), false, false);\n    return id;\n  }\n  static _mergeSVGProperties(p1, p2) {\n    const p1Keys = new Set(Object.keys(p1));\n    for (const [key, value] of Object.entries(p2)) {\n      if (p1Keys.has(key)) {\n        Object.assign(p1[key], value);\n      } else {\n        p1[key] = value;\n      }\n    }\n    return p1;\n  }\n  static getDefaultDrawingOptions(_options) {\n    unreachable(\"Not implemented\");\n  }\n  static get typesMap() {\n    unreachable(\"Not implemented\");\n  }\n  static get isDrawer() {\n    return true;\n  }\n  static get supportMultipleDrawings() {\n    return false;\n  }\n  static updateDefaultParams(type, value) {\n    const propertyName = this.typesMap.get(type);\n    if (propertyName) {\n      this._defaultDrawingOptions.updateProperty(propertyName, value);\n    }\n    if (this._currentParent) {\n      DrawingEditor.#currentDraw.updateProperty(propertyName, value);\n      this._currentParent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n    }\n  }\n  updateParams(type, value) {\n    const propertyName = this.constructor.typesMap.get(type);\n    if (propertyName) {\n      this._updateProperty(type, propertyName, value);\n    }\n  }\n  static get defaultPropertiesToUpdate() {\n    const properties = [];\n    const options = this._defaultDrawingOptions;\n    for (const [type, name] of this.typesMap) {\n      properties.push([type, options[name]]);\n    }\n    return properties;\n  }\n  get propertiesToUpdate() {\n    const properties = [];\n    const {\n      _drawingOptions\n    } = this;\n    for (const [type, name] of this.constructor.typesMap) {\n      properties.push([type, _drawingOptions[name]]);\n    }\n    return properties;\n  }\n  _updateProperty(type, name, value) {\n    const options = this._drawingOptions;\n    const savedValue = options[name];\n    const setter = val => {\n      options.updateProperty(name, val);\n      const bbox = this.#drawOutlines.updateProperty(name, val);\n      if (bbox) {\n        this.#updateBbox(bbox);\n      }\n      this.parent?.drawLayer.updateProperties(this._drawId, options.toSVGProperties());\n    };\n    this.addCommands({\n      cmd: setter.bind(this, value),\n      undo: setter.bind(this, savedValue),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type,\n      overwriteIfSameType: true,\n      keepUndo: true\n    });\n  }\n  _onResizing() {\n    this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizingSVGProperties(this.#convertToDrawSpace()), {\n      bbox: this.#rotateBox()\n    }));\n  }\n  _onResized() {\n    this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizedSVGProperties(this.#convertToDrawSpace()), {\n      bbox: this.#rotateBox()\n    }));\n  }\n  _onTranslating(x, y) {\n    this.parent?.drawLayer.updateProperties(this._drawId, {\n      bbox: this.#rotateBox(x, y)\n    });\n  }\n  _onTranslated() {\n    this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathTranslatedSVGProperties(this.#convertToDrawSpace(), this.parentDimensions), {\n      bbox: this.#rotateBox()\n    }));\n  }\n  _onStartDragging() {\n    this.parent?.drawLayer.updateProperties(this._drawId, {\n      rootClass: {\n        moving: true\n      }\n    });\n  }\n  _onStopDragging() {\n    this.parent?.drawLayer.updateProperties(this._drawId, {\n      rootClass: {\n        moving: false\n      }\n    });\n  }\n  commit() {\n    super.commit();\n    this.disableEditMode();\n    this.disableEditing();\n  }\n  disableEditing() {\n    super.disableEditing();\n    this.div.classList.toggle(\"disabled\", true);\n  }\n  enableEditing() {\n    super.enableEditing();\n    this.div.classList.toggle(\"disabled\", false);\n  }\n  getBaseTranslation() {\n    return [0, 0];\n  }\n  get isResizable() {\n    return true;\n  }\n  onceAdded(focus) {\n    if (!this.annotationElementId) {\n      this.parent.addUndoableEditor(this);\n    }\n    this._isDraggable = true;\n    if (this.#mustBeCommitted) {\n      this.#mustBeCommitted = false;\n      this.commit();\n      this.parent.setSelected(this);\n      if (focus && this.isOnScreen) {\n        this.div.focus();\n      }\n    }\n  }\n  remove() {\n    this.#cleanDrawLayer();\n    super.remove();\n  }\n  rebuild() {\n    if (!this.parent) {\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n    this.#addToDrawLayer();\n    this.#updateBbox(this.#drawOutlines.box);\n    if (!this.isAttachedToDOM) {\n      this.parent.add(this);\n    }\n  }\n  setParent(parent) {\n    let mustBeSelected = false;\n    if (this.parent && !parent) {\n      this._uiManager.removeShouldRescale(this);\n      this.#cleanDrawLayer();\n    } else if (parent) {\n      this._uiManager.addShouldRescale(this);\n      this.#addToDrawLayer(parent);\n      mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n    }\n    super.setParent(parent);\n    if (mustBeSelected) {\n      this.select();\n    }\n  }\n  #cleanDrawLayer() {\n    if (this._drawId === null || !this.parent) {\n      return;\n    }\n    this.parent.drawLayer.remove(this._drawId);\n    this._drawId = null;\n    this._drawingOptions.reset();\n  }\n  #addToDrawLayer(parent = this.parent) {\n    if (this._drawId !== null && this.parent === parent) {\n      return;\n    }\n    if (this._drawId !== null) {\n      this.parent.drawLayer.updateParent(this._drawId, parent.drawLayer);\n      return;\n    }\n    this._drawingOptions.updateAll();\n    this._drawId = this.#createDrawing(this.#drawOutlines, parent);\n  }\n  #convertToParentSpace([x, y, width, height]) {\n    const {\n      parentDimensions: [pW, pH],\n      rotation\n    } = this;\n    switch (rotation) {\n      case 90:\n        return [y, 1 - x, width * (pH / pW), height * (pW / pH)];\n      case 180:\n        return [1 - x, 1 - y, width, height];\n      case 270:\n        return [1 - y, x, width * (pH / pW), height * (pW / pH)];\n      default:\n        return [x, y, width, height];\n    }\n  }\n  #convertToDrawSpace() {\n    const {\n      x,\n      y,\n      width,\n      height,\n      parentDimensions: [pW, pH],\n      rotation\n    } = this;\n    switch (rotation) {\n      case 90:\n        return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n      case 180:\n        return [1 - x, 1 - y, width, height];\n      case 270:\n        return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n      default:\n        return [x, y, width, height];\n    }\n  }\n  #updateBbox(bbox) {\n    [this.x, this.y, this.width, this.height] = this.#convertToParentSpace(bbox);\n    if (this.div) {\n      this.fixAndSetPosition();\n      const [parentWidth, parentHeight] = this.parentDimensions;\n      this.setDims(this.width * parentWidth, this.height * parentHeight);\n    }\n    this._onResized();\n  }\n  #rotateBox() {\n    const {\n      x,\n      y,\n      width,\n      height,\n      rotation,\n      parentRotation,\n      parentDimensions: [pW, pH]\n    } = this;\n    switch ((rotation * 4 + parentRotation) / 90) {\n      case 1:\n        return [1 - y - height, x, height, width];\n      case 2:\n        return [1 - x - width, 1 - y - height, width, height];\n      case 3:\n        return [y, 1 - x - width, height, width];\n      case 4:\n        return [x, y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n      case 5:\n        return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n      case 6:\n        return [1 - x - height * (pH / pW), 1 - y, height * (pH / pW), width * (pW / pH)];\n      case 7:\n        return [y - width * (pW / pH), 1 - x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n      case 8:\n        return [x - width, y - height, width, height];\n      case 9:\n        return [1 - y, x - width, height, width];\n      case 10:\n        return [1 - x, 1 - y, width, height];\n      case 11:\n        return [y - height, 1 - x, height, width];\n      case 12:\n        return [x - height * (pH / pW), y, height * (pH / pW), width * (pW / pH)];\n      case 13:\n        return [1 - y - width * (pW / pH), x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n      case 14:\n        return [1 - x, 1 - y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n      case 15:\n        return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n      default:\n        return [x, y, width, height];\n    }\n  }\n  rotate() {\n    if (!this.parent) {\n      return;\n    }\n    this.parent.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties({\n      bbox: this.#rotateBox()\n    }, this.#drawOutlines.updateRotation((this.parentRotation - this.rotation + 360) % 360)));\n  }\n  onScaleChanging() {\n    if (!this.parent) {\n      return;\n    }\n    this.#updateBbox(this.#drawOutlines.updateParentDimensions(this.parentDimensions, this.parent.scale));\n  }\n  static onScaleChangingWhenDrawing() {}\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n    const div = super.render();\n    div.classList.add(\"draw\");\n    const drawDiv = document.createElement(\"div\");\n    div.append(drawDiv);\n    drawDiv.setAttribute(\"aria-hidden\", \"true\");\n    drawDiv.className = \"internal\";\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.setDims(this.width * parentWidth, this.height * parentHeight);\n    this._uiManager.addShouldRescale(this);\n    this.disableEditing();\n    return div;\n  }\n  static createDrawerInstance(_x, _y, _parentWidth, _parentHeight, _rotation) {\n    unreachable(\"Not implemented\");\n  }\n  static startDrawing(parent, uiManager, _isLTR, event) {\n    const {\n      target,\n      offsetX: x,\n      offsetY: y,\n      pointerId,\n      pointerType\n    } = event;\n    if (DrawingEditor.#currentPointerType && DrawingEditor.#currentPointerType !== pointerType) {\n      return;\n    }\n    const {\n      viewport: {\n        rotation\n      }\n    } = parent;\n    const {\n      width: parentWidth,\n      height: parentHeight\n    } = target.getBoundingClientRect();\n    const ac = DrawingEditor.#currentDrawingAC = new AbortController();\n    const signal = parent.combinedSignal(ac);\n    DrawingEditor.#currentPointerId ||= pointerId;\n    DrawingEditor.#currentPointerType ??= pointerType;\n    window.addEventListener(\"pointerup\", e => {\n      if (DrawingEditor.#currentPointerId === e.pointerId) {\n        this._endDraw(e);\n      } else {\n        DrawingEditor.#currentPointerIds?.delete(e.pointerId);\n      }\n    }, {\n      signal\n    });\n    window.addEventListener(\"pointercancel\", e => {\n      if (DrawingEditor.#currentPointerId === e.pointerId) {\n        this._currentParent.endDrawingSession();\n      } else {\n        DrawingEditor.#currentPointerIds?.delete(e.pointerId);\n      }\n    }, {\n      signal\n    });\n    window.addEventListener(\"pointerdown\", e => {\n      if (DrawingEditor.#currentPointerType !== e.pointerType) {\n        return;\n      }\n      (DrawingEditor.#currentPointerIds ||= new Set()).add(e.pointerId);\n      if (DrawingEditor.#currentDraw.isCancellable()) {\n        DrawingEditor.#currentDraw.removeLastElement();\n        if (DrawingEditor.#currentDraw.isEmpty()) {\n          this._currentParent.endDrawingSession(true);\n        } else {\n          this._endDraw(null);\n        }\n      }\n    }, {\n      capture: true,\n      passive: false,\n      signal\n    });\n    window.addEventListener(\"contextmenu\", noContextMenu, {\n      signal\n    });\n    target.addEventListener(\"pointermove\", this._drawMove.bind(this), {\n      signal\n    });\n    target.addEventListener(\"touchmove\", e => {\n      if (e.timeStamp === DrawingEditor.#currentMoveTimestamp) {\n        stopEvent(e);\n      }\n    }, {\n      signal\n    });\n    parent.toggleDrawing();\n    uiManager._editorUndoBar?.hide();\n    if (DrawingEditor.#currentDraw) {\n      parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.startNew(x, y, parentWidth, parentHeight, rotation));\n      return;\n    }\n    uiManager.updateUIForDefaultProperties(this);\n    DrawingEditor.#currentDraw = this.createDrawerInstance(x, y, parentWidth, parentHeight, rotation);\n    DrawingEditor.#currentDrawingOptions = this.getDefaultDrawingOptions();\n    this._currentParent = parent;\n    ({\n      id: this._currentDrawId\n    } = parent.drawLayer.draw(this._mergeSVGProperties(DrawingEditor.#currentDrawingOptions.toSVGProperties(), DrawingEditor.#currentDraw.defaultSVGProperties), true, false));\n  }\n  static _drawMove(event) {\n    DrawingEditor.#currentMoveTimestamp = -1;\n    if (!DrawingEditor.#currentDraw) {\n      return;\n    }\n    const {\n      offsetX,\n      offsetY,\n      pointerId\n    } = event;\n    if (DrawingEditor.#currentPointerId !== pointerId) {\n      return;\n    }\n    if (DrawingEditor.#currentPointerIds?.size >= 1) {\n      this._endDraw(event);\n      return;\n    }\n    this._currentParent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.add(offsetX, offsetY));\n    DrawingEditor.#currentMoveTimestamp = event.timeStamp;\n    stopEvent(event);\n  }\n  static _cleanup(all) {\n    if (all) {\n      this._currentDrawId = -1;\n      this._currentParent = null;\n      DrawingEditor.#currentDraw = null;\n      DrawingEditor.#currentDrawingOptions = null;\n      DrawingEditor.#currentPointerType = null;\n      DrawingEditor.#currentMoveTimestamp = NaN;\n    }\n    if (DrawingEditor.#currentDrawingAC) {\n      DrawingEditor.#currentDrawingAC.abort();\n      DrawingEditor.#currentDrawingAC = null;\n      DrawingEditor.#currentPointerId = NaN;\n      DrawingEditor.#currentPointerIds = null;\n    }\n  }\n  static _endDraw(event) {\n    const parent = this._currentParent;\n    if (!parent) {\n      return;\n    }\n    parent.toggleDrawing(true);\n    this._cleanup(false);\n    if (event) {\n      parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.end(event.offsetX, event.offsetY));\n    }\n    if (this.supportMultipleDrawings) {\n      const draw = DrawingEditor.#currentDraw;\n      const drawId = this._currentDrawId;\n      const lastElement = draw.getLastElement();\n      parent.addCommands({\n        cmd: () => {\n          parent.drawLayer.updateProperties(drawId, draw.setLastElement(lastElement));\n        },\n        undo: () => {\n          parent.drawLayer.updateProperties(drawId, draw.removeLastElement());\n        },\n        mustExec: false,\n        type: AnnotationEditorParamsType.DRAW_STEP\n      });\n      return;\n    }\n    this.endDrawing(false);\n  }\n  static endDrawing(isAborted) {\n    const parent = this._currentParent;\n    if (!parent) {\n      return null;\n    }\n    parent.toggleDrawing(true);\n    parent.cleanUndoStack(AnnotationEditorParamsType.DRAW_STEP);\n    if (!DrawingEditor.#currentDraw.isEmpty()) {\n      const {\n        pageDimensions: [pageWidth, pageHeight],\n        scale\n      } = parent;\n      const editor = parent.createAndAddNewEditor({\n        offsetX: 0,\n        offsetY: 0\n      }, false, {\n        drawId: this._currentDrawId,\n        drawOutlines: DrawingEditor.#currentDraw.getOutlines(pageWidth * scale, pageHeight * scale, scale, this._INNER_MARGIN),\n        drawingOptions: DrawingEditor.#currentDrawingOptions,\n        mustBeCommitted: !isAborted\n      });\n      this._cleanup(true);\n      return editor;\n    }\n    parent.drawLayer.remove(this._currentDrawId);\n    this._cleanup(true);\n    return null;\n  }\n  createDrawingOptions(_data) {}\n  static deserializeDraw(_pageX, _pageY, _pageWidth, _pageHeight, _innerWidth, _data) {\n    unreachable(\"Not implemented\");\n  }\n  static async deserialize(data, parent, uiManager) {\n    const {\n      rawDims: {\n        pageWidth,\n        pageHeight,\n        pageX,\n        pageY\n      }\n    } = parent.viewport;\n    const drawOutlines = this.deserializeDraw(pageX, pageY, pageWidth, pageHeight, this._INNER_MARGIN, data);\n    const editor = await super.deserialize(data, parent, uiManager);\n    editor.createDrawingOptions(data);\n    editor.#createDrawOutlines({\n      drawOutlines\n    });\n    editor.#addToDrawLayer();\n    editor.onScaleChanging();\n    editor.rotate();\n    return editor;\n  }\n  serializeDraw(isForCopying) {\n    const [pageX, pageY] = this.pageTranslation;\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    return this.#drawOutlines.serialize([pageX, pageY, pageWidth, pageHeight], isForCopying);\n  }\n  renderAnnotationElement(annotation) {\n    annotation.updateEdited({\n      rect: this.getRect(0, 0)\n    });\n    return null;\n  }\n  static canCreateNewEmptyEditor() {\n    return false;\n  }\n}\n\n;// ./src/display/editor/drawers/inkdraw.js\n\n\nclass InkDrawOutliner {\n  #last = new Float64Array(6);\n  #line;\n  #lines;\n  #rotation;\n  #thickness;\n  #points;\n  #lastSVGPath = \"\";\n  #lastIndex = 0;\n  #outlines = new InkDrawOutline();\n  #parentWidth;\n  #parentHeight;\n  constructor(x, y, parentWidth, parentHeight, rotation, thickness) {\n    this.#parentWidth = parentWidth;\n    this.#parentHeight = parentHeight;\n    this.#rotation = rotation;\n    this.#thickness = thickness;\n    [x, y] = this.#normalizePoint(x, y);\n    const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n    this.#points = [x, y];\n    this.#lines = [{\n      line,\n      points: this.#points\n    }];\n    this.#last.set(line, 0);\n  }\n  updateProperty(name, value) {\n    if (name === \"stroke-width\") {\n      this.#thickness = value;\n    }\n  }\n  #normalizePoint(x, y) {\n    return Outline._normalizePoint(x, y, this.#parentWidth, this.#parentHeight, this.#rotation);\n  }\n  isEmpty() {\n    return !this.#lines || this.#lines.length === 0;\n  }\n  isCancellable() {\n    return this.#points.length <= 10;\n  }\n  add(x, y) {\n    [x, y] = this.#normalizePoint(x, y);\n    const [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n    const diffX = x - x2;\n    const diffY = y - y2;\n    const d = Math.hypot(this.#parentWidth * diffX, this.#parentHeight * diffY);\n    if (d <= 2) {\n      return null;\n    }\n    this.#points.push(x, y);\n    if (isNaN(x1)) {\n      this.#last.set([x2, y2, x, y], 2);\n      this.#line.push(NaN, NaN, NaN, NaN, x, y);\n      return {\n        path: {\n          d: this.toSVGPath()\n        }\n      };\n    }\n    if (isNaN(this.#last[0])) {\n      this.#line.splice(6, 6);\n    }\n    this.#last.set([x1, y1, x2, y2, x, y], 0);\n    this.#line.push(...Outline.createBezierPoints(x1, y1, x2, y2, x, y));\n    return {\n      path: {\n        d: this.toSVGPath()\n      }\n    };\n  }\n  end(x, y) {\n    const change = this.add(x, y);\n    if (change) {\n      return change;\n    }\n    if (this.#points.length === 2) {\n      return {\n        path: {\n          d: this.toSVGPath()\n        }\n      };\n    }\n    return null;\n  }\n  startNew(x, y, parentWidth, parentHeight, rotation) {\n    this.#parentWidth = parentWidth;\n    this.#parentHeight = parentHeight;\n    this.#rotation = rotation;\n    [x, y] = this.#normalizePoint(x, y);\n    const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n    this.#points = [x, y];\n    const last = this.#lines.at(-1);\n    if (last) {\n      last.line = new Float32Array(last.line);\n      last.points = new Float32Array(last.points);\n    }\n    this.#lines.push({\n      line,\n      points: this.#points\n    });\n    this.#last.set(line, 0);\n    this.#lastIndex = 0;\n    this.toSVGPath();\n    return null;\n  }\n  getLastElement() {\n    return this.#lines.at(-1);\n  }\n  setLastElement(element) {\n    if (!this.#lines) {\n      return this.#outlines.setLastElement(element);\n    }\n    this.#lines.push(element);\n    this.#line = element.line;\n    this.#points = element.points;\n    this.#lastIndex = 0;\n    return {\n      path: {\n        d: this.toSVGPath()\n      }\n    };\n  }\n  removeLastElement() {\n    if (!this.#lines) {\n      return this.#outlines.removeLastElement();\n    }\n    this.#lines.pop();\n    this.#lastSVGPath = \"\";\n    for (let i = 0, ii = this.#lines.length; i < ii; i++) {\n      const {\n        line,\n        points\n      } = this.#lines[i];\n      this.#line = line;\n      this.#points = points;\n      this.#lastIndex = 0;\n      this.toSVGPath();\n    }\n    return {\n      path: {\n        d: this.#lastSVGPath\n      }\n    };\n  }\n  toSVGPath() {\n    const firstX = Outline.svgRound(this.#line[4]);\n    const firstY = Outline.svgRound(this.#line[5]);\n    if (this.#points.length === 2) {\n      this.#lastSVGPath = `${this.#lastSVGPath} M ${firstX} ${firstY} Z`;\n      return this.#lastSVGPath;\n    }\n    if (this.#points.length <= 6) {\n      const i = this.#lastSVGPath.lastIndexOf(\"M\");\n      this.#lastSVGPath = `${this.#lastSVGPath.slice(0, i)} M ${firstX} ${firstY}`;\n      this.#lastIndex = 6;\n    }\n    if (this.#points.length === 4) {\n      const secondX = Outline.svgRound(this.#line[10]);\n      const secondY = Outline.svgRound(this.#line[11]);\n      this.#lastSVGPath = `${this.#lastSVGPath} L ${secondX} ${secondY}`;\n      this.#lastIndex = 12;\n      return this.#lastSVGPath;\n    }\n    const buffer = [];\n    if (this.#lastIndex === 0) {\n      buffer.push(`M ${firstX} ${firstY}`);\n      this.#lastIndex = 6;\n    }\n    for (let i = this.#lastIndex, ii = this.#line.length; i < ii; i += 6) {\n      const [c1x, c1y, c2x, c2y, x, y] = this.#line.slice(i, i + 6).map(Outline.svgRound);\n      buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n    }\n    this.#lastSVGPath += buffer.join(\" \");\n    this.#lastIndex = this.#line.length;\n    return this.#lastSVGPath;\n  }\n  getOutlines(parentWidth, parentHeight, scale, innerMargin) {\n    const last = this.#lines.at(-1);\n    last.line = new Float32Array(last.line);\n    last.points = new Float32Array(last.points);\n    this.#outlines.build(this.#lines, parentWidth, parentHeight, scale, this.#rotation, this.#thickness, innerMargin);\n    this.#last = null;\n    this.#line = null;\n    this.#lines = null;\n    this.#lastSVGPath = null;\n    return this.#outlines;\n  }\n  get defaultSVGProperties() {\n    return {\n      root: {\n        viewBox: \"0 0 10000 10000\"\n      },\n      rootClass: {\n        draw: true\n      },\n      bbox: [0, 0, 1, 1]\n    };\n  }\n}\nclass InkDrawOutline extends Outline {\n  #bbox;\n  #currentRotation = 0;\n  #innerMargin;\n  #lines;\n  #parentWidth;\n  #parentHeight;\n  #parentScale;\n  #rotation;\n  #thickness;\n  build(lines, parentWidth, parentHeight, parentScale, rotation, thickness, innerMargin) {\n    this.#parentWidth = parentWidth;\n    this.#parentHeight = parentHeight;\n    this.#parentScale = parentScale;\n    this.#rotation = rotation;\n    this.#thickness = thickness;\n    this.#innerMargin = innerMargin ?? 0;\n    this.#lines = lines;\n    this.#computeBbox();\n  }\n  setLastElement(element) {\n    this.#lines.push(element);\n    return {\n      path: {\n        d: this.toSVGPath()\n      }\n    };\n  }\n  removeLastElement() {\n    this.#lines.pop();\n    return {\n      path: {\n        d: this.toSVGPath()\n      }\n    };\n  }\n  toSVGPath() {\n    const buffer = [];\n    for (const {\n      line\n    } of this.#lines) {\n      buffer.push(`M${Outline.svgRound(line[4])} ${Outline.svgRound(line[5])}`);\n      if (line.length === 6) {\n        buffer.push(\"Z\");\n        continue;\n      }\n      if (line.length === 12) {\n        buffer.push(`L${Outline.svgRound(line[10])} ${Outline.svgRound(line[11])}`);\n        continue;\n      }\n      for (let i = 6, ii = line.length; i < ii; i += 6) {\n        const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6).map(Outline.svgRound);\n        buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n      }\n    }\n    return buffer.join(\"\");\n  }\n  serialize([pageX, pageY, pageWidth, pageHeight], isForCopying) {\n    const serializedLines = [];\n    const serializedPoints = [];\n    const [x, y, width, height] = this.#getBBoxWithNoMargin();\n    let tx, ty, sx, sy, x1, y1, x2, y2, rescaleFn;\n    switch (this.#rotation) {\n      case 0:\n        rescaleFn = Outline._rescale;\n        tx = pageX;\n        ty = pageY + pageHeight;\n        sx = pageWidth;\n        sy = -pageHeight;\n        x1 = pageX + x * pageWidth;\n        y1 = pageY + (1 - y - height) * pageHeight;\n        x2 = pageX + (x + width) * pageWidth;\n        y2 = pageY + (1 - y) * pageHeight;\n        break;\n      case 90:\n        rescaleFn = Outline._rescaleAndSwap;\n        tx = pageX;\n        ty = pageY;\n        sx = pageWidth;\n        sy = pageHeight;\n        x1 = pageX + y * pageWidth;\n        y1 = pageY + x * pageHeight;\n        x2 = pageX + (y + height) * pageWidth;\n        y2 = pageY + (x + width) * pageHeight;\n        break;\n      case 180:\n        rescaleFn = Outline._rescale;\n        tx = pageX + pageWidth;\n        ty = pageY;\n        sx = -pageWidth;\n        sy = pageHeight;\n        x1 = pageX + (1 - x - width) * pageWidth;\n        y1 = pageY + y * pageHeight;\n        x2 = pageX + (1 - x) * pageWidth;\n        y2 = pageY + (y + height) * pageHeight;\n        break;\n      case 270:\n        rescaleFn = Outline._rescaleAndSwap;\n        tx = pageX + pageWidth;\n        ty = pageY + pageHeight;\n        sx = -pageWidth;\n        sy = -pageHeight;\n        x1 = pageX + (1 - y - height) * pageWidth;\n        y1 = pageY + (1 - x - width) * pageHeight;\n        x2 = pageX + (1 - y) * pageWidth;\n        y2 = pageY + (1 - x) * pageHeight;\n        break;\n    }\n    for (const {\n      line,\n      points\n    } of this.#lines) {\n      serializedLines.push(rescaleFn(line, tx, ty, sx, sy, isForCopying ? new Array(line.length) : null));\n      serializedPoints.push(rescaleFn(points, tx, ty, sx, sy, isForCopying ? new Array(points.length) : null));\n    }\n    return {\n      lines: serializedLines,\n      points: serializedPoints,\n      rect: [x1, y1, x2, y2]\n    };\n  }\n  static deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, {\n    paths: {\n      lines,\n      points\n    },\n    rotation,\n    thickness\n  }) {\n    const newLines = [];\n    let tx, ty, sx, sy, rescaleFn;\n    switch (rotation) {\n      case 0:\n        rescaleFn = Outline._rescale;\n        tx = -pageX / pageWidth;\n        ty = pageY / pageHeight + 1;\n        sx = 1 / pageWidth;\n        sy = -1 / pageHeight;\n        break;\n      case 90:\n        rescaleFn = Outline._rescaleAndSwap;\n        tx = -pageY / pageHeight;\n        ty = -pageX / pageWidth;\n        sx = 1 / pageHeight;\n        sy = 1 / pageWidth;\n        break;\n      case 180:\n        rescaleFn = Outline._rescale;\n        tx = pageX / pageWidth + 1;\n        ty = -pageY / pageHeight;\n        sx = -1 / pageWidth;\n        sy = 1 / pageHeight;\n        break;\n      case 270:\n        rescaleFn = Outline._rescaleAndSwap;\n        tx = pageY / pageHeight + 1;\n        ty = pageX / pageWidth + 1;\n        sx = -1 / pageHeight;\n        sy = -1 / pageWidth;\n        break;\n    }\n    if (!lines) {\n      lines = [];\n      for (const point of points) {\n        const len = point.length;\n        if (len === 2) {\n          lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1]]));\n          continue;\n        }\n        if (len === 4) {\n          lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1], NaN, NaN, NaN, NaN, point[2], point[3]]));\n          continue;\n        }\n        const line = new Float32Array(3 * (len - 2));\n        lines.push(line);\n        let [x1, y1, x2, y2] = point.subarray(0, 4);\n        line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n        for (let i = 4; i < len; i += 2) {\n          const x = point[i];\n          const y = point[i + 1];\n          line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n          [x1, y1, x2, y2] = [x2, y2, x, y];\n        }\n      }\n    }\n    for (let i = 0, ii = lines.length; i < ii; i++) {\n      newLines.push({\n        line: rescaleFn(lines[i].map(x => x ?? NaN), tx, ty, sx, sy),\n        points: rescaleFn(points[i].map(x => x ?? NaN), tx, ty, sx, sy)\n      });\n    }\n    const outlines = new InkDrawOutline();\n    outlines.build(newLines, pageWidth, pageHeight, 1, rotation, thickness, innerMargin);\n    return outlines;\n  }\n  #getMarginComponents(thickness = this.#thickness) {\n    const margin = this.#innerMargin + thickness / 2 * this.#parentScale;\n    return this.#rotation % 180 === 0 ? [margin / this.#parentWidth, margin / this.#parentHeight] : [margin / this.#parentHeight, margin / this.#parentWidth];\n  }\n  #getBBoxWithNoMargin() {\n    const [x, y, width, height] = this.#bbox;\n    const [marginX, marginY] = this.#getMarginComponents(0);\n    return [x + marginX, y + marginY, width - 2 * marginX, height - 2 * marginY];\n  }\n  #computeBbox() {\n    const bbox = this.#bbox = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\n    for (const {\n      line\n    } of this.#lines) {\n      if (line.length <= 12) {\n        for (let i = 4, ii = line.length; i < ii; i += 6) {\n          const [x, y] = line.subarray(i, i + 2);\n          bbox[0] = Math.min(bbox[0], x);\n          bbox[1] = Math.min(bbox[1], y);\n          bbox[2] = Math.max(bbox[2], x);\n          bbox[3] = Math.max(bbox[3], y);\n        }\n        continue;\n      }\n      let lastX = line[4],\n        lastY = line[5];\n      for (let i = 6, ii = line.length; i < ii; i += 6) {\n        const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6);\n        Util.bezierBoundingBox(lastX, lastY, c1x, c1y, c2x, c2y, x, y, bbox);\n        lastX = x;\n        lastY = y;\n      }\n    }\n    const [marginX, marginY] = this.#getMarginComponents();\n    bbox[0] = Math.min(1, Math.max(0, bbox[0] - marginX));\n    bbox[1] = Math.min(1, Math.max(0, bbox[1] - marginY));\n    bbox[2] = Math.min(1, Math.max(0, bbox[2] + marginX));\n    bbox[3] = Math.min(1, Math.max(0, bbox[3] + marginY));\n    bbox[2] -= bbox[0];\n    bbox[3] -= bbox[1];\n  }\n  get box() {\n    return this.#bbox;\n  }\n  updateProperty(name, value) {\n    if (name === \"stroke-width\") {\n      return this.#updateThickness(value);\n    }\n    return null;\n  }\n  #updateThickness(thickness) {\n    const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n    this.#thickness = thickness;\n    const [newMarginX, newMarginY] = this.#getMarginComponents();\n    const [diffMarginX, diffMarginY] = [newMarginX - oldMarginX, newMarginY - oldMarginY];\n    const bbox = this.#bbox;\n    bbox[0] -= diffMarginX;\n    bbox[1] -= diffMarginY;\n    bbox[2] += 2 * diffMarginX;\n    bbox[3] += 2 * diffMarginY;\n    return bbox;\n  }\n  updateParentDimensions([width, height], scale) {\n    const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n    this.#parentWidth = width;\n    this.#parentHeight = height;\n    this.#parentScale = scale;\n    const [newMarginX, newMarginY] = this.#getMarginComponents();\n    const diffMarginX = newMarginX - oldMarginX;\n    const diffMarginY = newMarginY - oldMarginY;\n    const bbox = this.#bbox;\n    bbox[0] -= diffMarginX;\n    bbox[1] -= diffMarginY;\n    bbox[2] += 2 * diffMarginX;\n    bbox[3] += 2 * diffMarginY;\n    return bbox;\n  }\n  updateRotation(rotation) {\n    this.#currentRotation = rotation;\n    return {\n      path: {\n        transform: this.rotationTransform\n      }\n    };\n  }\n  get viewBox() {\n    return this.#bbox.map(Outline.svgRound).join(\" \");\n  }\n  get defaultProperties() {\n    const [x, y] = this.#bbox;\n    return {\n      root: {\n        viewBox: this.viewBox\n      },\n      path: {\n        \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`\n      }\n    };\n  }\n  get rotationTransform() {\n    const [,, width, height] = this.#bbox;\n    let a = 0,\n      b = 0,\n      c = 0,\n      d = 0,\n      e = 0,\n      f = 0;\n    switch (this.#currentRotation) {\n      case 90:\n        b = height / width;\n        c = -width / height;\n        e = width;\n        break;\n      case 180:\n        a = -1;\n        d = -1;\n        e = width;\n        f = height;\n        break;\n      case 270:\n        b = -height / width;\n        c = width / height;\n        f = height;\n        break;\n      default:\n        return \"\";\n    }\n    return `matrix(${a} ${b} ${c} ${d} ${Outline.svgRound(e)} ${Outline.svgRound(f)})`;\n  }\n  getPathResizingSVGProperties([newX, newY, newWidth, newHeight]) {\n    const [marginX, marginY] = this.#getMarginComponents();\n    const [x, y, width, height] = this.#bbox;\n    if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n      const tx = newX + newWidth / 2 - (x + width / 2);\n      const ty = newY + newHeight / 2 - (y + height / 2);\n      return {\n        path: {\n          \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n          transform: `${this.rotationTransform} translate(${tx} ${ty})`\n        }\n      };\n    }\n    const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n    const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n    const s2x = width / newWidth;\n    const s2y = height / newHeight;\n    return {\n      path: {\n        \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`,\n        transform: `${this.rotationTransform} scale(${s2x} ${s2y}) ` + `translate(${Outline.svgRound(marginX)} ${Outline.svgRound(marginY)}) scale(${s1x} ${s1y}) ` + `translate(${Outline.svgRound(-marginX)} ${Outline.svgRound(-marginY)})`\n      }\n    };\n  }\n  getPathResizedSVGProperties([newX, newY, newWidth, newHeight]) {\n    const [marginX, marginY] = this.#getMarginComponents();\n    const bbox = this.#bbox;\n    const [x, y, width, height] = bbox;\n    bbox[0] = newX;\n    bbox[1] = newY;\n    bbox[2] = newWidth;\n    bbox[3] = newHeight;\n    if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n      const tx = newX + newWidth / 2 - (x + width / 2);\n      const ty = newY + newHeight / 2 - (y + height / 2);\n      for (const {\n        line,\n        points\n      } of this.#lines) {\n        Outline._translate(line, tx, ty, line);\n        Outline._translate(points, tx, ty, points);\n      }\n      return {\n        root: {\n          viewBox: this.viewBox\n        },\n        path: {\n          \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n          transform: this.rotationTransform || null,\n          d: this.toSVGPath()\n        }\n      };\n    }\n    const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n    const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n    const tx = -s1x * (x + marginX) + newX + marginX;\n    const ty = -s1y * (y + marginY) + newY + marginY;\n    if (s1x !== 1 || s1y !== 1 || tx !== 0 || ty !== 0) {\n      for (const {\n        line,\n        points\n      } of this.#lines) {\n        Outline._rescale(line, tx, ty, s1x, s1y, line);\n        Outline._rescale(points, tx, ty, s1x, s1y, points);\n      }\n    }\n    return {\n      root: {\n        viewBox: this.viewBox\n      },\n      path: {\n        \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n        transform: this.rotationTransform || null,\n        d: this.toSVGPath()\n      }\n    };\n  }\n  getPathTranslatedSVGProperties([newX, newY], parentDimensions) {\n    const [newParentWidth, newParentHeight] = parentDimensions;\n    const bbox = this.#bbox;\n    const tx = newX - bbox[0];\n    const ty = newY - bbox[1];\n    if (this.#parentWidth === newParentWidth && this.#parentHeight === newParentHeight) {\n      for (const {\n        line,\n        points\n      } of this.#lines) {\n        Outline._translate(line, tx, ty, line);\n        Outline._translate(points, tx, ty, points);\n      }\n    } else {\n      const sx = this.#parentWidth / newParentWidth;\n      const sy = this.#parentHeight / newParentHeight;\n      this.#parentWidth = newParentWidth;\n      this.#parentHeight = newParentHeight;\n      for (const {\n        line,\n        points\n      } of this.#lines) {\n        Outline._rescale(line, tx, ty, sx, sy, line);\n        Outline._rescale(points, tx, ty, sx, sy, points);\n      }\n      bbox[2] *= sx;\n      bbox[3] *= sy;\n    }\n    bbox[0] = newX;\n    bbox[1] = newY;\n    return {\n      root: {\n        viewBox: this.viewBox\n      },\n      path: {\n        d: this.toSVGPath(),\n        \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`\n      }\n    };\n  }\n  get defaultSVGProperties() {\n    const bbox = this.#bbox;\n    return {\n      root: {\n        viewBox: this.viewBox\n      },\n      rootClass: {\n        draw: true\n      },\n      path: {\n        d: this.toSVGPath(),\n        \"transform-origin\": `${Outline.svgRound(bbox[0])} ${Outline.svgRound(bbox[1])}`,\n        transform: this.rotationTransform || null\n      },\n      bbox\n    };\n  }\n}\n\n;// ./src/display/editor/ink.js\n\n\n\n\n\nclass InkDrawingOptions extends DrawingOptions {\n  #viewParameters;\n  constructor(viewerParameters) {\n    super();\n    this.#viewParameters = viewerParameters;\n    super.updateProperties({\n      fill: \"none\",\n      stroke: AnnotationEditor._defaultLineColor,\n      \"stroke-opacity\": 1,\n      \"stroke-width\": 1,\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"stroke-miterlimit\": 10\n    });\n  }\n  updateSVGProperty(name, value) {\n    if (name === \"stroke-width\") {\n      value ??= this[\"stroke-width\"];\n      value *= this.#viewParameters.realScale;\n    }\n    super.updateSVGProperty(name, value);\n  }\n  clone() {\n    const clone = new InkDrawingOptions(this.#viewParameters);\n    clone.updateAll(this);\n    return clone;\n  }\n}\nclass InkEditor extends DrawingEditor {\n  static _type = \"ink\";\n  static _editorType = AnnotationEditorType.INK;\n  static _defaultDrawingOptions = null;\n  constructor(params) {\n    super({\n      ...params,\n      name: \"inkEditor\"\n    });\n    this._willKeepAspectRatio = true;\n  }\n  static initialize(l10n, uiManager) {\n    AnnotationEditor.initialize(l10n, uiManager);\n    this._defaultDrawingOptions = new InkDrawingOptions(uiManager.viewParameters);\n  }\n  static getDefaultDrawingOptions(options) {\n    const clone = this._defaultDrawingOptions.clone();\n    clone.updateProperties(options);\n    return clone;\n  }\n  static get supportMultipleDrawings() {\n    return true;\n  }\n  static get typesMap() {\n    return shadow(this, \"typesMap\", new Map([[AnnotationEditorParamsType.INK_THICKNESS, \"stroke-width\"], [AnnotationEditorParamsType.INK_COLOR, \"stroke\"], [AnnotationEditorParamsType.INK_OPACITY, \"stroke-opacity\"]]));\n  }\n  static createDrawerInstance(x, y, parentWidth, parentHeight, rotation) {\n    return new InkDrawOutliner(x, y, parentWidth, parentHeight, rotation, this._defaultDrawingOptions[\"stroke-width\"]);\n  }\n  static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n    return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n  }\n  static async deserialize(data, parent, uiManager) {\n    let initialData = null;\n    if (data instanceof InkAnnotationElement) {\n      const {\n        data: {\n          inkLists,\n          rect,\n          rotation,\n          id,\n          color,\n          opacity,\n          borderStyle: {\n            rawWidth: thickness\n          },\n          popupRef\n        },\n        parent: {\n          page: {\n            pageNumber\n          }\n        }\n      } = data;\n      initialData = data = {\n        annotationType: AnnotationEditorType.INK,\n        color: Array.from(color),\n        thickness,\n        opacity,\n        paths: {\n          points: inkLists\n        },\n        boxes: null,\n        pageIndex: pageNumber - 1,\n        rect: rect.slice(0),\n        rotation,\n        id,\n        deleted: false,\n        popupRef\n      };\n    }\n    const editor = await super.deserialize(data, parent, uiManager);\n    editor.annotationElementId = data.id || null;\n    editor._initialData = initialData;\n    return editor;\n  }\n  onScaleChanging() {\n    if (!this.parent) {\n      return;\n    }\n    super.onScaleChanging();\n    const {\n      _drawId,\n      _drawingOptions,\n      parent\n    } = this;\n    _drawingOptions.updateSVGProperty(\"stroke-width\");\n    parent.drawLayer.updateProperties(_drawId, _drawingOptions.toSVGProperties());\n  }\n  static onScaleChangingWhenDrawing() {\n    const parent = this._currentParent;\n    if (!parent) {\n      return;\n    }\n    super.onScaleChangingWhenDrawing();\n    this._defaultDrawingOptions.updateSVGProperty(\"stroke-width\");\n    parent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n  }\n  createDrawingOptions({\n    color,\n    thickness,\n    opacity\n  }) {\n    this._drawingOptions = InkEditor.getDefaultDrawingOptions({\n      stroke: Util.makeHexColor(...color),\n      \"stroke-width\": thickness,\n      \"stroke-opacity\": opacity\n    });\n  }\n  serialize(isForCopying = false) {\n    if (this.isEmpty()) {\n      return null;\n    }\n    if (this.deleted) {\n      return this.serializeDeleted();\n    }\n    const {\n      lines,\n      points,\n      rect\n    } = this.serializeDraw(isForCopying);\n    const {\n      _drawingOptions: {\n        stroke,\n        \"stroke-opacity\": opacity,\n        \"stroke-width\": thickness\n      }\n    } = this;\n    const serialized = {\n      annotationType: AnnotationEditorType.INK,\n      color: AnnotationEditor._colorManager.convert(stroke),\n      opacity,\n      thickness,\n      paths: {\n        lines,\n        points\n      },\n      pageIndex: this.pageIndex,\n      rect,\n      rotation: this.rotation,\n      structTreeParentId: this._structTreeParentId\n    };\n    if (isForCopying) {\n      return serialized;\n    }\n    if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n      return null;\n    }\n    serialized.id = this.annotationElementId;\n    return serialized;\n  }\n  #hasElementChanged(serialized) {\n    const {\n      color,\n      thickness,\n      opacity,\n      pageIndex\n    } = this._initialData;\n    return this._hasBeenMoved || this._hasBeenResized || serialized.color.some((c, i) => c !== color[i]) || serialized.thickness !== thickness || serialized.opacity !== opacity || serialized.pageIndex !== pageIndex;\n  }\n  renderAnnotationElement(annotation) {\n    const {\n      points,\n      rect\n    } = this.serializeDraw(false);\n    annotation.updateEdited({\n      rect,\n      thickness: this._drawingOptions[\"stroke-width\"],\n      points\n    });\n    return null;\n  }\n}\n\n;// ./src/display/editor/stamp.js\n\n\n\n\nclass StampEditor extends AnnotationEditor {\n  #bitmap = null;\n  #bitmapId = null;\n  #bitmapPromise = null;\n  #bitmapUrl = null;\n  #bitmapFile = null;\n  #bitmapFileName = \"\";\n  #canvas = null;\n  #resizeTimeoutId = null;\n  #isSvg = false;\n  #hasBeenAddedInUndoStack = false;\n  static _type = \"stamp\";\n  static _editorType = AnnotationEditorType.STAMP;\n  constructor(params) {\n    super({\n      ...params,\n      name: \"stampEditor\"\n    });\n    this.#bitmapUrl = params.bitmapUrl;\n    this.#bitmapFile = params.bitmapFile;\n  }\n  static initialize(l10n, uiManager) {\n    AnnotationEditor.initialize(l10n, uiManager);\n  }\n  static get supportedTypes() {\n    const types = [\"apng\", \"avif\", \"bmp\", \"gif\", \"jpeg\", \"png\", \"svg+xml\", \"webp\", \"x-icon\"];\n    return shadow(this, \"supportedTypes\", types.map(type => `image/${type}`));\n  }\n  static get supportedTypesStr() {\n    return shadow(this, \"supportedTypesStr\", this.supportedTypes.join(\",\"));\n  }\n  static isHandlingMimeForPasting(mime) {\n    return this.supportedTypes.includes(mime);\n  }\n  static paste(item, parent) {\n    parent.pasteEditor(AnnotationEditorType.STAMP, {\n      bitmapFile: item.getAsFile()\n    });\n  }\n  altTextFinish() {\n    if (this._uiManager.useNewAltTextFlow) {\n      this.div.hidden = false;\n    }\n    super.altTextFinish();\n  }\n  get telemetryFinalData() {\n    return {\n      type: \"stamp\",\n      hasAltText: !!this.altTextData?.altText\n    };\n  }\n  static computeTelemetryFinalData(data) {\n    const hasAltTextStats = data.get(\"hasAltText\");\n    return {\n      hasAltText: hasAltTextStats.get(true) ?? 0,\n      hasNoAltText: hasAltTextStats.get(false) ?? 0\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  #getBitmapDone() {\n    this.#bitmapPromise = null;\n    this._uiManager.enableWaiting(false);\n    if (!this.#canvas) {\n      return;\n    }\n    if (this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n      this._editToolbar.hide();\n      this._uiManager.editAltText(this, true);\n      return;\n    }\n    if (!this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n      this._reportTelemetry({\n        action: \"pdfjs.image.image_added\",\n        data: {\n          alt_text_modal: false,\n          alt_text_type: \"empty\"\n        }\n      });\n      try {\n        this.mlGuessAltText();\n      } catch {}\n    }\n    this.div.focus();\n  }\n  async mlGuessAltText(imageData = null, updateAltTextData = true) {\n    if (this.hasAltTextData()) {\n      return null;\n    }\n    const {\n      mlManager\n    } = this._uiManager;\n    if (!mlManager) {\n      throw new Error(\"No ML.\");\n    }\n    if (!(await mlManager.isEnabledFor(\"altText\"))) {\n      throw new Error(\"ML isn't enabled for alt text.\");\n    }\n    const {\n      data,\n      width,\n      height\n    } = imageData || this.copyCanvas(null, null, true).imageData;\n    const response = await mlManager.guess({\n      name: \"altText\",\n      request: {\n        data,\n        width,\n        height,\n        channels: data.length / (width * height)\n      }\n    });\n    if (!response) {\n      throw new Error(\"No response from the AI service.\");\n    }\n    if (response.error) {\n      throw new Error(\"Error from the AI service.\");\n    }\n    if (response.cancel) {\n      return null;\n    }\n    if (!response.output) {\n      throw new Error(\"No valid response from the AI service.\");\n    }\n    const altText = response.output;\n    await this.setGuessedAltText(altText);\n    if (updateAltTextData && !this.hasAltTextData()) {\n      this.altTextData = {\n        alt: altText,\n        decorative: false\n      };\n    }\n    return altText;\n  }\n  #getBitmap() {\n    if (this.#bitmapId) {\n      this._uiManager.enableWaiting(true);\n      this._uiManager.imageManager.getFromId(this.#bitmapId).then(data => this.#getBitmapFetched(data, true)).finally(() => this.#getBitmapDone());\n      return;\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.getFromUrl(url).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n      return;\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.getFromFile(file).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n      return;\n    }\n    const input = document.createElement(\"input\");\n    input.type = \"file\";\n    input.accept = StampEditor.supportedTypesStr;\n    const signal = this._uiManager._signal;\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(input.files[0]);\n          this._reportTelemetry({\n            action: \"pdfjs.image.image_selected\",\n            data: {\n              alt_text_modal: this._uiManager.useNewAltTextFlow\n            }\n          });\n          this.#getBitmapFetched(data);\n        }\n        resolve();\n      }, {\n        signal\n      });\n      input.addEventListener(\"cancel\", () => {\n        this.remove();\n        resolve();\n      }, {\n        signal\n      });\n    }).finally(() => this.#getBitmapDone());\n    input.click();\n  }\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      if (this.#resizeTimeoutId) {\n        clearTimeout(this.#resizeTimeoutId);\n        this.#resizeTimeoutId = null;\n      }\n    }\n    super.remove();\n  }\n  rebuild() {\n    if (!this.parent) {\n      if (this.#bitmapId) {\n        this.#getBitmap();\n      }\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n    if (this.#bitmapId && this.#canvas === null) {\n      this.#getBitmap();\n    }\n    if (!this.isAttachedToDOM) {\n      this.parent.add(this);\n    }\n  }\n  onceAdded(focus) {\n    this._isDraggable = true;\n    if (focus) {\n      this.div.focus();\n    }\n  }\n  isEmpty() {\n    return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile || this.#bitmapId);\n  }\n  get isResizable() {\n    return true;\n  }\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n    let baseX, baseY;\n    if (this.width) {\n      baseX = this.x;\n      baseY = this.y;\n    }\n    super.render();\n    this.div.hidden = true;\n    this.div.setAttribute(\"role\", \"figure\");\n    this.addAltTextButton();\n    if (this.#bitmap) {\n      this.#createCanvas();\n    } else {\n      this.#getBitmap();\n    }\n    if (this.width && !this.annotationElementId) {\n      const [parentWidth, parentHeight] = this.parentDimensions;\n      this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n    }\n    this._uiManager.addShouldRescale(this);\n    return this.div;\n  }\n  _onResized() {\n    this.onScaleChanging();\n  }\n  onScaleChanging() {\n    if (!this.parent) {\n      return;\n    }\n    if (this.#resizeTimeoutId !== null) {\n      clearTimeout(this.#resizeTimeoutId);\n    }\n    const TIME_TO_WAIT = 200;\n    this.#resizeTimeoutId = setTimeout(() => {\n      this.#resizeTimeoutId = null;\n      this.#drawBitmap();\n    }, TIME_TO_WAIT);\n  }\n  #createCanvas() {\n    const {\n      div\n    } = this;\n    let {\n      width,\n      height\n    } = 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 (width > MAX_RATIO * pageWidth || height > MAX_RATIO * pageHeight) {\n      const factor = Math.min(MAX_RATIO * pageWidth / width, MAX_RATIO * pageHeight / height);\n      width *= factor;\n      height *= factor;\n    }\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.setDims(width * parentWidth / pageWidth, height * parentHeight / pageHeight);\n    this._uiManager.enableWaiting(false);\n    const canvas = this.#canvas = document.createElement(\"canvas\");\n    canvas.setAttribute(\"role\", \"img\");\n    this.addContainer(canvas);\n    this.width = width / pageWidth;\n    this.height = height / pageHeight;\n    if (this._initialOptions?.isCentered) {\n      this.center();\n    } else {\n      this.fixAndSetPosition();\n    }\n    this._initialOptions = null;\n    if (!this._uiManager.useNewAltTextWhenAddingImage || !this._uiManager.useNewAltTextFlow || this.annotationElementId) {\n      div.hidden = false;\n    }\n    this.#drawBitmap();\n    if (!this.#hasBeenAddedInUndoStack) {\n      this.parent.addUndoableEditor(this);\n      this.#hasBeenAddedInUndoStack = true;\n    }\n    this._reportTelemetry({\n      action: \"inserted_image\"\n    });\n    if (this.#bitmapFileName) {\n      canvas.setAttribute(\"aria-label\", this.#bitmapFileName);\n    }\n  }\n  copyCanvas(maxDataDimension, maxPreviewDimension, createImageData = false) {\n    if (!maxDataDimension) {\n      maxDataDimension = 224;\n    }\n    const {\n      width: bitmapWidth,\n      height: bitmapHeight\n    } = this.#bitmap;\n    const outputScale = new OutputScale();\n    let bitmap = this.#bitmap;\n    let width = bitmapWidth,\n      height = bitmapHeight;\n    let canvas = null;\n    if (maxPreviewDimension) {\n      if (bitmapWidth > maxPreviewDimension || bitmapHeight > maxPreviewDimension) {\n        const ratio = Math.min(maxPreviewDimension / bitmapWidth, maxPreviewDimension / bitmapHeight);\n        width = Math.floor(bitmapWidth * ratio);\n        height = Math.floor(bitmapHeight * ratio);\n      }\n      canvas = document.createElement(\"canvas\");\n      const scaledWidth = canvas.width = Math.ceil(width * outputScale.sx);\n      const scaledHeight = canvas.height = Math.ceil(height * outputScale.sy);\n      if (!this.#isSvg) {\n        bitmap = this.#scaleBitmap(scaledWidth, scaledHeight);\n      }\n      const ctx = canvas.getContext(\"2d\");\n      ctx.filter = this._uiManager.hcmFilter;\n      let white = \"white\",\n        black = \"#cfcfd8\";\n      if (this._uiManager.hcmFilter !== \"none\") {\n        black = \"black\";\n      } else if (window.matchMedia?.(\"(prefers-color-scheme: dark)\").matches) {\n        white = \"#8f8f9d\";\n        black = \"#42414d\";\n      }\n      const boxDim = 15;\n      const boxDimWidth = boxDim * outputScale.sx;\n      const boxDimHeight = boxDim * outputScale.sy;\n      const pattern = new OffscreenCanvas(boxDimWidth * 2, boxDimHeight * 2);\n      const patternCtx = pattern.getContext(\"2d\");\n      patternCtx.fillStyle = white;\n      patternCtx.fillRect(0, 0, boxDimWidth * 2, boxDimHeight * 2);\n      patternCtx.fillStyle = black;\n      patternCtx.fillRect(0, 0, boxDimWidth, boxDimHeight);\n      patternCtx.fillRect(boxDimWidth, boxDimHeight, boxDimWidth, boxDimHeight);\n      ctx.fillStyle = ctx.createPattern(pattern, \"repeat\");\n      ctx.fillRect(0, 0, scaledWidth, scaledHeight);\n      ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n    }\n    let imageData = null;\n    if (createImageData) {\n      let dataWidth, dataHeight;\n      if (outputScale.symmetric && bitmap.width < maxDataDimension && bitmap.height < maxDataDimension) {\n        dataWidth = bitmap.width;\n        dataHeight = bitmap.height;\n      } else {\n        bitmap = this.#bitmap;\n        if (bitmapWidth > maxDataDimension || bitmapHeight > maxDataDimension) {\n          const ratio = Math.min(maxDataDimension / bitmapWidth, maxDataDimension / bitmapHeight);\n          dataWidth = Math.floor(bitmapWidth * ratio);\n          dataHeight = Math.floor(bitmapHeight * ratio);\n          if (!this.#isSvg) {\n            bitmap = this.#scaleBitmap(dataWidth, dataHeight);\n          }\n        }\n      }\n      const offscreen = new OffscreenCanvas(dataWidth, dataHeight);\n      const offscreenCtx = offscreen.getContext(\"2d\", {\n        willReadFrequently: true\n      });\n      offscreenCtx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, dataWidth, dataHeight);\n      imageData = {\n        width: dataWidth,\n        height: dataHeight,\n        data: offscreenCtx.getImageData(0, 0, dataWidth, dataHeight).data\n      };\n    }\n    return {\n      canvas,\n      width,\n      height,\n      imageData\n    };\n  }\n  #scaleBitmap(width, height) {\n    const {\n      width: bitmapWidth,\n      height: bitmapHeight\n    } = this.#bitmap;\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      if (newWidth > 2 * width) {\n        newWidth = newWidth >= 16384 ? Math.floor(newWidth / 2) - 1 : Math.ceil(newWidth / 2);\n      }\n      if (newHeight > 2 * height) {\n        newHeight = newHeight >= 16384 ? Math.floor(newHeight / 2) - 1 : Math.ceil(newHeight / 2);\n      }\n      const offscreen = new OffscreenCanvas(newWidth, newHeight);\n      const ctx = offscreen.getContext(\"2d\");\n      ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n      bitmap = offscreen.transferToImageBitmap();\n    }\n    return bitmap;\n  }\n  #drawBitmap() {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    const {\n      width,\n      height\n    } = this;\n    const outputScale = new OutputScale();\n    const scaledWidth = Math.ceil(width * parentWidth * outputScale.sx);\n    const scaledHeight = Math.ceil(height * parentHeight * outputScale.sy);\n    const canvas = this.#canvas;\n    if (!canvas || canvas.width === scaledWidth && canvas.height === scaledHeight) {\n      return;\n    }\n    canvas.width = scaledWidth;\n    canvas.height = scaledHeight;\n    const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(scaledWidth, scaledHeight);\n    const ctx = canvas.getContext(\"2d\");\n    ctx.filter = this._uiManager.hcmFilter;\n    ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n  }\n  getImageForAltText() {\n    return this.#canvas;\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      const canvas = document.createElement(\"canvas\");\n      ({\n        width: canvas.width,\n        height: canvas.height\n      } = this.#bitmap);\n      const ctx = canvas.getContext(\"2d\");\n      ctx.drawImage(this.#bitmap, 0, 0);\n      return canvas.toDataURL();\n    }\n    if (this.#isSvg) {\n      const [pageWidth, pageHeight] = this.pageDimensions;\n      const width = Math.round(this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS);\n      const height = Math.round(this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS);\n      const offscreen = new OffscreenCanvas(width, height);\n      const ctx = offscreen.getContext(\"2d\");\n      ctx.drawImage(this.#bitmap, 0, 0, this.#bitmap.width, this.#bitmap.height, 0, 0, width, height);\n      return offscreen.transferToImageBitmap();\n    }\n    return structuredClone(this.#bitmap);\n  }\n  static async deserialize(data, parent, uiManager) {\n    let initialData = null;\n    if (data instanceof StampAnnotationElement) {\n      const {\n        data: {\n          rect,\n          rotation,\n          id,\n          structParent,\n          popupRef\n        },\n        container,\n        parent: {\n          page: {\n            pageNumber\n          }\n        }\n      } = data;\n      const canvas = container.querySelector(\"canvas\");\n      const imageData = uiManager.imageManager.getFromCanvas(container.id, canvas);\n      canvas.remove();\n      const altText = (await parent._structTree.getAriaAttributes(`${AnnotationPrefix}${id}`))?.get(\"aria-label\") || \"\";\n      initialData = data = {\n        annotationType: AnnotationEditorType.STAMP,\n        bitmapId: imageData.id,\n        bitmap: imageData.bitmap,\n        pageIndex: pageNumber - 1,\n        rect: rect.slice(0),\n        rotation,\n        id,\n        deleted: false,\n        accessibilityData: {\n          decorative: false,\n          altText\n        },\n        isSvg: false,\n        structParent,\n        popupRef\n      };\n    }\n    const editor = await super.deserialize(data, parent, uiManager);\n    const {\n      rect,\n      bitmap,\n      bitmapUrl,\n      bitmapId,\n      isSvg,\n      accessibilityData\n    } = data;\n    if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n      editor.#bitmapId = bitmapId;\n      if (bitmap) {\n        editor.#bitmap = bitmap;\n      }\n    } else {\n      editor.#bitmapUrl = bitmapUrl;\n    }\n    editor.#isSvg = isSvg;\n    const [parentWidth, parentHeight] = editor.pageDimensions;\n    editor.width = (rect[2] - rect[0]) / parentWidth;\n    editor.height = (rect[3] - rect[1]) / parentHeight;\n    editor.annotationElementId = data.id || null;\n    if (accessibilityData) {\n      editor.altTextData = accessibilityData;\n    }\n    editor._initialData = initialData;\n    editor.#hasBeenAddedInUndoStack = !!initialData;\n    return editor;\n  }\n  serialize(isForCopying = false, context = null) {\n    if (this.isEmpty()) {\n      return null;\n    }\n    if (this.deleted) {\n      return this.serializeDeleted();\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    if (isForCopying) {\n      serialized.bitmapUrl = this.#serializeBitmap(true);\n      serialized.accessibilityData = this.serializeAltText(true);\n      return serialized;\n    }\n    const {\n      decorative,\n      altText\n    } = this.serializeAltText(false);\n    if (!decorative && altText) {\n      serialized.accessibilityData = {\n        type: \"Figure\",\n        alt: altText\n      };\n    }\n    if (this.annotationElementId) {\n      const changes = this.#hasElementChanged(serialized);\n      if (changes.isSame) {\n        return null;\n      }\n      if (changes.isSameAltText) {\n        delete serialized.accessibilityData;\n      } else {\n        serialized.accessibilityData.structParent = this._initialData.structParent ?? -1;\n      }\n    }\n    serialized.id = this.annotationElementId;\n    if (context === null) {\n      return serialized;\n    }\n    context.stamps ||= new Map();\n    const area = this.#isSvg ? (serialized.rect[2] - serialized.rect[0]) * (serialized.rect[3] - serialized.rect[1]) : null;\n    if (!context.stamps.has(this.#bitmapId)) {\n      context.stamps.set(this.#bitmapId, {\n        area,\n        serialized\n      });\n      serialized.bitmap = this.#serializeBitmap(false);\n    } else if (this.#isSvg) {\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(false);\n      }\n    }\n    return serialized;\n  }\n  #hasElementChanged(serialized) {\n    const {\n      pageIndex,\n      accessibilityData: {\n        altText\n      }\n    } = this._initialData;\n    const isSamePageIndex = serialized.pageIndex === pageIndex;\n    const isSameAltText = (serialized.accessibilityData?.alt || \"\") === altText;\n    return {\n      isSame: !this._hasBeenMoved && !this._hasBeenResized && isSamePageIndex && isSameAltText,\n      isSameAltText\n    };\n  }\n  renderAnnotationElement(annotation) {\n    annotation.updateEdited({\n      rect: this.getRect(0, 0)\n    });\n    return null;\n  }\n}\n\n;// ./src/display/editor/annotation_editor_layer.js\n\n\n\n\n\n\n\nclass AnnotationEditorLayer {\n  #accessibilityManager;\n  #allowClick = false;\n  #annotationLayer = null;\n  #clickAC = null;\n  #editorFocusTimeoutId = null;\n  #editors = new Map();\n  #hadPointerDown = false;\n  #isDisabling = false;\n  #isEnabling = false;\n  #drawingAC = null;\n  #focusedElement = null;\n  #textLayer = null;\n  #textSelectionAC = null;\n  #uiManager;\n  static _initialized = false;\n  static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor].map(type => [type._editorType, type]));\n  constructor({\n    uiManager,\n    pageIndex,\n    div,\n    structTreeLayer,\n    accessibilityManager,\n    annotationLayer,\n    drawLayer,\n    textLayer,\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, uiManager);\n      }\n    }\n    uiManager.registerEditorTypes(editorTypes);\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    this.#textLayer = textLayer;\n    this.drawLayer = drawLayer;\n    this._structTree = structTreeLayer;\n    this.#uiManager.addLayer(this);\n  }\n  get isEmpty() {\n    return this.#editors.size === 0;\n  }\n  get isInvisible() {\n    return this.isEmpty && this.#uiManager.getMode() === AnnotationEditorType.NONE;\n  }\n  updateToolbar(mode) {\n    this.#uiManager.updateToolbar(mode);\n  }\n  updateMode(mode = this.#uiManager.getMode()) {\n    this.#cleanup();\n    switch (mode) {\n      case AnnotationEditorType.NONE:\n        this.disableTextSelection();\n        this.togglePointerEvents(false);\n        this.toggleAnnotationLayerPointerEvents(true);\n        this.disableClick();\n        return;\n      case AnnotationEditorType.INK:\n        this.disableTextSelection();\n        this.togglePointerEvents(true);\n        this.enableClick();\n        break;\n      case AnnotationEditorType.HIGHLIGHT:\n        this.enableTextSelection();\n        this.togglePointerEvents(false);\n        this.disableClick();\n        break;\n      default:\n        this.disableTextSelection();\n        this.togglePointerEvents(true);\n        this.enableClick();\n    }\n    this.toggleAnnotationLayerPointerEvents(false);\n    const {\n      classList\n    } = this.div;\n    for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n      classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType);\n    }\n    this.div.hidden = false;\n  }\n  hasTextLayer(textLayer) {\n    return textLayer === this.#textLayer?.div;\n  }\n  setEditingState(isEditing) {\n    this.#uiManager.setEditingState(isEditing);\n  }\n  addCommands(params) {\n    this.#uiManager.addCommands(params);\n  }\n  cleanUndoStack(type) {\n    this.#uiManager.cleanUndoStack(type);\n  }\n  toggleDrawing(enabled = false) {\n    this.div.classList.toggle(\"drawing\", !enabled);\n  }\n  togglePointerEvents(enabled = false) {\n    this.div.classList.toggle(\"disabled\", !enabled);\n  }\n  toggleAnnotationLayerPointerEvents(enabled = false) {\n    this.#annotationLayer?.div.classList.toggle(\"disabled\", !enabled);\n  }\n  async enable() {\n    this.#isEnabling = true;\n    this.div.tabIndex = 0;\n    this.togglePointerEvents(true);\n    const annotationElementIds = new Set();\n    for (const editor of this.#editors.values()) {\n      editor.enableEditing();\n      editor.show(true);\n      if (editor.annotationElementId) {\n        this.#uiManager.removeChangedExistingAnnotation(editor);\n        annotationElementIds.add(editor.annotationElementId);\n      }\n    }\n    if (!this.#annotationLayer) {\n      this.#isEnabling = false;\n      return;\n    }\n    const editables = this.#annotationLayer.getEditableAnnotations();\n    for (const editable of editables) {\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 = await this.deserialize(editable);\n      if (!editor) {\n        continue;\n      }\n      this.addOrRebuild(editor);\n      editor.enableEditing();\n    }\n    this.#isEnabling = false;\n  }\n  disable() {\n    this.#isDisabling = true;\n    this.div.tabIndex = -1;\n    this.togglePointerEvents(false);\n    const changedAnnotations = new Map();\n    const resetAnnotations = new Map();\n    for (const editor of this.#editors.values()) {\n      editor.disableEditing();\n      if (!editor.annotationElementId) {\n        continue;\n      }\n      if (editor.serialize() !== null) {\n        changedAnnotations.set(editor.annotationElementId, editor);\n        continue;\n      } else {\n        resetAnnotations.set(editor.annotationElementId, editor);\n      }\n      this.getEditableAnnotation(editor.annotationElementId)?.show();\n      editor.remove();\n    }\n    if (this.#annotationLayer) {\n      const editables = this.#annotationLayer.getEditableAnnotations();\n      for (const editable of editables) {\n        const {\n          id\n        } = editable.data;\n        if (this.#uiManager.isDeletedAnnotationElement(id)) {\n          continue;\n        }\n        let editor = resetAnnotations.get(id);\n        if (editor) {\n          editor.resetAnnotationElement(editable);\n          editor.show(false);\n          editable.show();\n          continue;\n        }\n        editor = changedAnnotations.get(id);\n        if (editor) {\n          this.#uiManager.addChangedExistingAnnotation(editor);\n          if (editor.renderAnnotationElement(editable)) {\n            editor.show(false);\n          }\n        }\n        editable.show();\n      }\n    }\n    this.#cleanup();\n    if (this.isEmpty) {\n      this.div.hidden = true;\n    }\n    const {\n      classList\n    } = this.div;\n    for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n      classList.remove(`${editorType._type}Editing`);\n    }\n    this.disableTextSelection();\n    this.toggleAnnotationLayerPointerEvents(true);\n    this.#isDisabling = false;\n  }\n  getEditableAnnotation(id) {\n    return this.#annotationLayer?.getEditableAnnotation(id) || null;\n  }\n  setActiveEditor(editor) {\n    const currentActive = this.#uiManager.getActive();\n    if (currentActive === editor) {\n      return;\n    }\n    this.#uiManager.setActiveEditor(editor);\n  }\n  enableTextSelection() {\n    this.div.tabIndex = -1;\n    if (this.#textLayer?.div && !this.#textSelectionAC) {\n      this.#textSelectionAC = new AbortController();\n      const signal = this.#uiManager.combinedSignal(this.#textSelectionAC);\n      this.#textLayer.div.addEventListener(\"pointerdown\", this.#textLayerPointerDown.bind(this), {\n        signal\n      });\n      this.#textLayer.div.classList.add(\"highlighting\");\n    }\n  }\n  disableTextSelection() {\n    this.div.tabIndex = 0;\n    if (this.#textLayer?.div && this.#textSelectionAC) {\n      this.#textSelectionAC.abort();\n      this.#textSelectionAC = null;\n      this.#textLayer.div.classList.remove(\"highlighting\");\n    }\n  }\n  #textLayerPointerDown(event) {\n    this.#uiManager.unselectAll();\n    const {\n      target\n    } = event;\n    if (target === this.#textLayer.div || (target.getAttribute(\"role\") === \"img\" || target.classList.contains(\"endOfContent\")) && this.#textLayer.div.contains(target)) {\n      const {\n        isMac\n      } = util_FeatureTest.platform;\n      if (event.button !== 0 || event.ctrlKey && isMac) {\n        return;\n      }\n      this.#uiManager.showAllEditors(\"highlight\", true, true);\n      this.#textLayer.div.classList.add(\"free\");\n      this.toggleDrawing();\n      HighlightEditor.startHighlighting(this, this.#uiManager.direction === \"ltr\", {\n        target: this.#textLayer.div,\n        x: event.x,\n        y: event.y\n      });\n      this.#textLayer.div.addEventListener(\"pointerup\", () => {\n        this.#textLayer.div.classList.remove(\"free\");\n        this.toggleDrawing(true);\n      }, {\n        once: true,\n        signal: this.#uiManager._signal\n      });\n      event.preventDefault();\n    }\n  }\n  enableClick() {\n    if (this.#clickAC) {\n      return;\n    }\n    this.#clickAC = new AbortController();\n    const signal = this.#uiManager.combinedSignal(this.#clickAC);\n    this.div.addEventListener(\"pointerdown\", this.pointerdown.bind(this), {\n      signal\n    });\n    const pointerup = this.pointerup.bind(this);\n    this.div.addEventListener(\"pointerup\", pointerup, {\n      signal\n    });\n    this.div.addEventListener(\"pointercancel\", pointerup, {\n      signal\n    });\n  }\n  disableClick() {\n    this.#clickAC?.abort();\n    this.#clickAC = null;\n  }\n  attach(editor) {\n    this.#editors.set(editor.id, editor);\n    const {\n      annotationElementId\n    } = editor;\n    if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) {\n      this.#uiManager.removeDeletedAnnotationElement(editor);\n    }\n  }\n  detach(editor) {\n    this.#editors.delete(editor.id);\n    this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n    if (!this.#isDisabling && editor.annotationElementId) {\n      this.#uiManager.addDeletedAnnotationElement(editor);\n    }\n  }\n  remove(editor) {\n    this.detach(editor);\n    this.#uiManager.removeEditor(editor);\n    editor.div.remove();\n    editor.isAttachedToDOM = false;\n  }\n  changeParent(editor) {\n    if (editor.parent === this) {\n      return;\n    }\n    if (editor.parent && editor.annotationElementId) {\n      this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);\n      AnnotationEditor.deleteAnnotationElement(editor);\n      editor.annotationElementId = null;\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  add(editor) {\n    if (editor.parent === this && editor.isAttachedToDOM) {\n      return;\n    }\n    this.changeParent(editor);\n    this.#uiManager.addEditor(editor);\n    this.attach(editor);\n    if (!editor.isAttachedToDOM) {\n      const div = editor.render();\n      this.div.append(div);\n      editor.isAttachedToDOM = true;\n    }\n    editor.fixAndSetPosition();\n    editor.onceAdded(!this.#isEnabling);\n    this.#uiManager.addToAnnotationStorage(editor);\n    editor._reportTelemetry(editor.telemetryInitialData);\n  }\n  moveEditorInDOM(editor) {\n    if (!editor.isAttachedToDOM) {\n      return;\n    }\n    const {\n      activeElement\n    } = document;\n    if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n      editor._focusEventsAllowed = false;\n      this.#editorFocusTimeoutId = setTimeout(() => {\n        this.#editorFocusTimeoutId = null;\n        if (!editor.div.contains(document.activeElement)) {\n          editor.div.addEventListener(\"focusin\", () => {\n            editor._focusEventsAllowed = true;\n          }, {\n            once: true,\n            signal: this.#uiManager._signal\n          });\n          activeElement.focus();\n        } else {\n          editor._focusEventsAllowed = true;\n        }\n      }, 0);\n    }\n    editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true);\n  }\n  addOrRebuild(editor) {\n    if (editor.needsToBeRebuilt()) {\n      editor.parent ||= this;\n      editor.rebuild();\n      editor.show();\n    } else {\n      this.add(editor);\n    }\n  }\n  addUndoableEditor(editor) {\n    const cmd = () => editor._uiManager.rebuild(editor);\n    const undo = () => {\n      editor.remove();\n    };\n    this.addCommands({\n      cmd,\n      undo,\n      mustExec: false\n    });\n  }\n  getNextId() {\n    return this.#uiManager.getId();\n  }\n  get #currentEditorType() {\n    return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\n  }\n  combinedSignal(ac) {\n    return this.#uiManager.combinedSignal(ac);\n  }\n  #createNewEditor(params) {\n    const editorType = this.#currentEditorType;\n    return editorType ? new editorType.prototype.constructor(params) : null;\n  }\n  canCreateNewEmptyEditor() {\n    return this.#currentEditorType?.canCreateNewEmptyEditor();\n  }\n  pasteEditor(mode, params) {\n    this.#uiManager.updateToolbar(mode);\n    this.#uiManager.updateMode(mode);\n    const {\n      offsetX,\n      offsetY\n    } = 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  async deserialize(data) {\n    return (await AnnotationEditorLayer.#editorTypes.get(data.annotationType ?? data.annotationEditorType)?.deserialize(data, this, this.#uiManager)) || null;\n  }\n  createAndAddNewEditor(event, isCentered, data = {}) {\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      ...data\n    });\n    if (editor) {\n      this.add(editor);\n    }\n    return editor;\n  }\n  #getCenterPoint() {\n    const {\n      x,\n      y,\n      width,\n      height\n    } = 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] = this.viewport.rotation % 180 === 0 ? [centerX, centerY] : [centerY, centerX];\n    return {\n      offsetX,\n      offsetY\n    };\n  }\n  addNewEditor() {\n    this.createAndAddNewEditor(this.#getCenterPoint(), true);\n  }\n  setSelected(editor) {\n    this.#uiManager.setSelected(editor);\n  }\n  toggleSelected(editor) {\n    this.#uiManager.toggleSelected(editor);\n  }\n  unselect(editor) {\n    this.#uiManager.unselect(editor);\n  }\n  pointerup(event) {\n    const {\n      isMac\n    } = util_FeatureTest.platform;\n    if (event.button !== 0 || event.ctrlKey && isMac) {\n      return;\n    }\n    if (event.target !== this.div) {\n      return;\n    }\n    if (!this.#hadPointerDown) {\n      return;\n    }\n    this.#hadPointerDown = false;\n    if (this.#currentEditorType?.isDrawer && this.#currentEditorType.supportMultipleDrawings) {\n      return;\n    }\n    if (!this.#allowClick) {\n      this.#allowClick = true;\n      return;\n    }\n    if (this.#uiManager.getMode() === AnnotationEditorType.STAMP) {\n      this.#uiManager.unselectAll();\n      return;\n    }\n    this.createAndAddNewEditor(event, false);\n  }\n  pointerdown(event) {\n    if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\n      this.enableTextSelection();\n    }\n    if (this.#hadPointerDown) {\n      this.#hadPointerDown = false;\n      return;\n    }\n    const {\n      isMac\n    } = util_FeatureTest.platform;\n    if (event.button !== 0 || event.ctrlKey && isMac) {\n      return;\n    }\n    if (event.target !== this.div) {\n      return;\n    }\n    this.#hadPointerDown = true;\n    if (this.#currentEditorType?.isDrawer) {\n      this.startDrawingSession(event);\n      return;\n    }\n    const editor = this.#uiManager.getActive();\n    this.#allowClick = !editor || editor.isEmpty();\n  }\n  startDrawingSession(event) {\n    this.div.focus();\n    if (this.#drawingAC) {\n      this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n      return;\n    }\n    this.#uiManager.setCurrentDrawingSession(this);\n    this.#drawingAC = new AbortController();\n    const signal = this.#uiManager.combinedSignal(this.#drawingAC);\n    this.div.addEventListener(\"blur\", ({\n      relatedTarget\n    }) => {\n      if (relatedTarget && !this.div.contains(relatedTarget)) {\n        this.#focusedElement = null;\n        this.commitOrRemove();\n      }\n    }, {\n      signal\n    });\n    this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n  }\n  pause(on) {\n    if (on) {\n      const {\n        activeElement\n      } = document;\n      if (this.div.contains(activeElement)) {\n        this.#focusedElement = activeElement;\n      }\n      return;\n    }\n    if (this.#focusedElement) {\n      setTimeout(() => {\n        this.#focusedElement?.focus();\n        this.#focusedElement = null;\n      }, 0);\n    }\n  }\n  endDrawingSession(isAborted = false) {\n    if (!this.#drawingAC) {\n      return null;\n    }\n    this.#uiManager.setCurrentDrawingSession(null);\n    this.#drawingAC.abort();\n    this.#drawingAC = null;\n    this.#focusedElement = null;\n    return this.#currentEditorType.endDrawing(isAborted);\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  commitOrRemove() {\n    if (this.#drawingAC) {\n      this.endDrawingSession();\n      return true;\n    }\n    return false;\n  }\n  onScaleChanging() {\n    if (!this.#drawingAC) {\n      return;\n    }\n    this.#currentEditorType.onScaleChangingWhenDrawing(this);\n  }\n  destroy() {\n    this.commitOrRemove();\n    if (this.#uiManager.getActive()?.parent === this) {\n      this.#uiManager.commitOrRemove();\n      this.#uiManager.setActiveEditor(null);\n    }\n    if (this.#editorFocusTimeoutId) {\n      clearTimeout(this.#editorFocusTimeoutId);\n      this.#editorFocusTimeoutId = null;\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  #cleanup() {\n    for (const editor of this.#editors.values()) {\n      if (editor.isEmpty()) {\n        editor.remove();\n      }\n    }\n  }\n  render({\n    viewport\n  }) {\n    this.viewport = viewport;\n    setLayerDimensions(this.div, viewport);\n    for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n      this.add(editor);\n      editor.rebuild();\n    }\n    this.updateMode();\n  }\n  update({\n    viewport\n  }) {\n    this.#uiManager.commitOrRemove();\n    this.#cleanup();\n    const oldRotation = this.viewport.rotation;\n    const rotation = viewport.rotation;\n    this.viewport = viewport;\n    setLayerDimensions(this.div, {\n      rotation\n    });\n    if (oldRotation !== rotation) {\n      for (const editor of this.#editors.values()) {\n        editor.rotate(rotation);\n      }\n    }\n  }\n  get pageDimensions() {\n    const {\n      pageWidth,\n      pageHeight\n    } = this.viewport.rawDims;\n    return [pageWidth, pageHeight];\n  }\n  get scale() {\n    return this.#uiManager.viewParameters.realScale;\n  }\n}\n\n;// ./src/display/draw_layer.js\n\n\nclass DrawLayer {\n  #parent = null;\n  #id = 0;\n  #mapping = new Map();\n  #toUpdate = new Map();\n  constructor({\n    pageIndex\n  }) {\n    this.pageIndex = pageIndex;\n  }\n  setParent(parent) {\n    if (!this.#parent) {\n      this.#parent = parent;\n      return;\n    }\n    if (this.#parent !== parent) {\n      if (this.#mapping.size > 0) {\n        for (const root of this.#mapping.values()) {\n          root.remove();\n          parent.append(root);\n        }\n      }\n      this.#parent = parent;\n    }\n  }\n  static get _svgFactory() {\n    return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n  }\n  static #setBox(element, [x, y, width, height]) {\n    const {\n      style\n    } = element;\n    style.top = `${100 * y}%`;\n    style.left = `${100 * x}%`;\n    style.width = `${100 * width}%`;\n    style.height = `${100 * height}%`;\n  }\n  #createSVG() {\n    const svg = DrawLayer._svgFactory.create(1, 1, true);\n    this.#parent.append(svg);\n    svg.setAttribute(\"aria-hidden\", true);\n    return svg;\n  }\n  #createClipPath(defs, pathId) {\n    const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n    defs.append(clipPath);\n    const clipPathId = `clip_${pathId}`;\n    clipPath.setAttribute(\"id\", clipPathId);\n    clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n    const clipPathUse = DrawLayer._svgFactory.createElement(\"use\");\n    clipPath.append(clipPathUse);\n    clipPathUse.setAttribute(\"href\", `#${pathId}`);\n    clipPathUse.classList.add(\"clip\");\n    return clipPathId;\n  }\n  #updateProperties(element, properties) {\n    for (const [key, value] of Object.entries(properties)) {\n      if (value === null) {\n        element.removeAttribute(key);\n      } else {\n        element.setAttribute(key, value);\n      }\n    }\n  }\n  draw(properties, isPathUpdatable = false, hasClip = false) {\n    const id = this.#id++;\n    const root = this.#createSVG();\n    const defs = DrawLayer._svgFactory.createElement(\"defs\");\n    root.append(defs);\n    const path = DrawLayer._svgFactory.createElement(\"path\");\n    defs.append(path);\n    const pathId = `path_p${this.pageIndex}_${id}`;\n    path.setAttribute(\"id\", pathId);\n    path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n    if (isPathUpdatable) {\n      this.#toUpdate.set(id, path);\n    }\n    const clipPathId = hasClip ? this.#createClipPath(defs, pathId) : null;\n    const use = DrawLayer._svgFactory.createElement(\"use\");\n    root.append(use);\n    use.setAttribute(\"href\", `#${pathId}`);\n    this.updateProperties(root, properties);\n    this.#mapping.set(id, root);\n    return {\n      id,\n      clipPathId: `url(#${clipPathId})`\n    };\n  }\n  drawOutline(properties, mustRemoveSelfIntersections) {\n    const id = this.#id++;\n    const root = this.#createSVG();\n    const defs = DrawLayer._svgFactory.createElement(\"defs\");\n    root.append(defs);\n    const path = DrawLayer._svgFactory.createElement(\"path\");\n    defs.append(path);\n    const pathId = `path_p${this.pageIndex}_${id}`;\n    path.setAttribute(\"id\", pathId);\n    path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n    let maskId;\n    if (mustRemoveSelfIntersections) {\n      const mask = DrawLayer._svgFactory.createElement(\"mask\");\n      defs.append(mask);\n      maskId = `mask_p${this.pageIndex}_${id}`;\n      mask.setAttribute(\"id\", maskId);\n      mask.setAttribute(\"maskUnits\", \"objectBoundingBox\");\n      const rect = DrawLayer._svgFactory.createElement(\"rect\");\n      mask.append(rect);\n      rect.setAttribute(\"width\", \"1\");\n      rect.setAttribute(\"height\", \"1\");\n      rect.setAttribute(\"fill\", \"white\");\n      const use = DrawLayer._svgFactory.createElement(\"use\");\n      mask.append(use);\n      use.setAttribute(\"href\", `#${pathId}`);\n      use.setAttribute(\"stroke\", \"none\");\n      use.setAttribute(\"fill\", \"black\");\n      use.setAttribute(\"fill-rule\", \"nonzero\");\n      use.classList.add(\"mask\");\n    }\n    const use1 = DrawLayer._svgFactory.createElement(\"use\");\n    root.append(use1);\n    use1.setAttribute(\"href\", `#${pathId}`);\n    if (maskId) {\n      use1.setAttribute(\"mask\", `url(#${maskId})`);\n    }\n    const use2 = use1.cloneNode();\n    root.append(use2);\n    use1.classList.add(\"mainOutline\");\n    use2.classList.add(\"secondaryOutline\");\n    this.updateProperties(root, properties);\n    this.#mapping.set(id, root);\n    return id;\n  }\n  finalizeDraw(id, properties) {\n    this.#toUpdate.delete(id);\n    this.updateProperties(id, properties);\n  }\n  updateProperties(elementOrId, properties) {\n    if (!properties) {\n      return;\n    }\n    const {\n      root,\n      bbox,\n      rootClass,\n      path\n    } = properties;\n    const element = typeof elementOrId === \"number\" ? this.#mapping.get(elementOrId) : elementOrId;\n    if (!element) {\n      return;\n    }\n    if (root) {\n      this.#updateProperties(element, root);\n    }\n    if (bbox) {\n      DrawLayer.#setBox(element, bbox);\n    }\n    if (rootClass) {\n      const {\n        classList\n      } = element;\n      for (const [className, value] of Object.entries(rootClass)) {\n        classList.toggle(className, value);\n      }\n    }\n    if (path) {\n      const defs = element.firstChild;\n      const pathElement = defs.firstChild;\n      this.#updateProperties(pathElement, path);\n    }\n  }\n  updateParent(id, layer) {\n    if (layer === this) {\n      return;\n    }\n    const root = this.#mapping.get(id);\n    if (!root) {\n      return;\n    }\n    layer.#parent.append(root);\n    this.#mapping.delete(id);\n    layer.#mapping.set(id, root);\n  }\n  remove(id) {\n    this.#toUpdate.delete(id);\n    if (this.#parent === null) {\n      return;\n    }\n    this.#mapping.get(id).remove();\n    this.#mapping.delete(id);\n  }\n  destroy() {\n    this.#parent = null;\n    for (const root of this.#mapping.values()) {\n      root.remove();\n    }\n    this.#mapping.clear();\n    this.#toUpdate.clear();\n  }\n}\n\n;// ./src/pdf.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst pdfjsVersion = \"4.10.38\";\nconst pdfjsBuild = \"f9bea397f\";\n{\n  globalThis.pdfjsTestingUtils = {\n    HighlightOutliner: HighlightOutliner\n  };\n}\n\nvar __webpack_exports__AbortException = __webpack_exports__.AbortException;\nvar __webpack_exports__AnnotationEditorLayer = __webpack_exports__.AnnotationEditorLayer;\nvar __webpack_exports__AnnotationEditorParamsType = __webpack_exports__.AnnotationEditorParamsType;\nvar __webpack_exports__AnnotationEditorType = __webpack_exports__.AnnotationEditorType;\nvar __webpack_exports__AnnotationEditorUIManager = __webpack_exports__.AnnotationEditorUIManager;\nvar __webpack_exports__AnnotationLayer = __webpack_exports__.AnnotationLayer;\nvar __webpack_exports__AnnotationMode = __webpack_exports__.AnnotationMode;\nvar __webpack_exports__ColorPicker = __webpack_exports__.ColorPicker;\nvar __webpack_exports__DOMSVGFactory = __webpack_exports__.DOMSVGFactory;\nvar __webpack_exports__DrawLayer = __webpack_exports__.DrawLayer;\nvar __webpack_exports__FeatureTest = __webpack_exports__.FeatureTest;\nvar __webpack_exports__GlobalWorkerOptions = __webpack_exports__.GlobalWorkerOptions;\nvar __webpack_exports__ImageKind = __webpack_exports__.ImageKind;\nvar __webpack_exports__InvalidPDFException = __webpack_exports__.InvalidPDFException;\nvar __webpack_exports__MissingPDFException = __webpack_exports__.MissingPDFException;\nvar __webpack_exports__OPS = __webpack_exports__.OPS;\nvar __webpack_exports__OutputScale = __webpack_exports__.OutputScale;\nvar __webpack_exports__PDFDataRangeTransport = __webpack_exports__.PDFDataRangeTransport;\nvar __webpack_exports__PDFDateString = __webpack_exports__.PDFDateString;\nvar __webpack_exports__PDFWorker = __webpack_exports__.PDFWorker;\nvar __webpack_exports__PasswordResponses = __webpack_exports__.PasswordResponses;\nvar __webpack_exports__PermissionFlag = __webpack_exports__.PermissionFlag;\nvar __webpack_exports__PixelsPerInch = __webpack_exports__.PixelsPerInch;\nvar __webpack_exports__RenderingCancelledException = __webpack_exports__.RenderingCancelledException;\nvar __webpack_exports__TextLayer = __webpack_exports__.TextLayer;\nvar __webpack_exports__TouchManager = __webpack_exports__.TouchManager;\nvar __webpack_exports__UnexpectedResponseException = __webpack_exports__.UnexpectedResponseException;\nvar __webpack_exports__Util = __webpack_exports__.Util;\nvar __webpack_exports__VerbosityLevel = __webpack_exports__.VerbosityLevel;\nvar __webpack_exports__XfaLayer = __webpack_exports__.XfaLayer;\nvar __webpack_exports__build = __webpack_exports__.build;\nvar __webpack_exports__createValidAbsoluteUrl = __webpack_exports__.createValidAbsoluteUrl;\nvar __webpack_exports__fetchData = __webpack_exports__.fetchData;\nvar __webpack_exports__getDocument = __webpack_exports__.getDocument;\nvar __webpack_exports__getFilenameFromUrl = __webpack_exports__.getFilenameFromUrl;\nvar __webpack_exports__getPdfFilenameFromUrl = __webpack_exports__.getPdfFilenameFromUrl;\nvar __webpack_exports__getXfaPageViewport = __webpack_exports__.getXfaPageViewport;\nvar __webpack_exports__isDataScheme = __webpack_exports__.isDataScheme;\nvar __webpack_exports__isPdfFile = __webpack_exports__.isPdfFile;\nvar __webpack_exports__noContextMenu = __webpack_exports__.noContextMenu;\nvar __webpack_exports__normalizeUnicode = __webpack_exports__.normalizeUnicode;\nvar __webpack_exports__setLayerDimensions = __webpack_exports__.setLayerDimensions;\nvar __webpack_exports__shadow = __webpack_exports__.shadow;\nvar __webpack_exports__stopEvent = __webpack_exports__.stopEvent;\nvar __webpack_exports__version = __webpack_exports__.version;\nexport { __webpack_exports__AbortException as AbortException, __webpack_exports__AnnotationEditorLayer as AnnotationEditorLayer, __webpack_exports__AnnotationEditorParamsType as AnnotationEditorParamsType, __webpack_exports__AnnotationEditorType as AnnotationEditorType, __webpack_exports__AnnotationEditorUIManager as AnnotationEditorUIManager, __webpack_exports__AnnotationLayer as AnnotationLayer, __webpack_exports__AnnotationMode as AnnotationMode, __webpack_exports__ColorPicker as ColorPicker, __webpack_exports__DOMSVGFactory as DOMSVGFactory, __webpack_exports__DrawLayer as DrawLayer, __webpack_exports__FeatureTest as FeatureTest, __webpack_exports__GlobalWorkerOptions as GlobalWorkerOptions, __webpack_exports__ImageKind as ImageKind, __webpack_exports__InvalidPDFException as InvalidPDFException, __webpack_exports__MissingPDFException as MissingPDFException, __webpack_exports__OPS as OPS, __webpack_exports__OutputScale as OutputScale, __webpack_exports__PDFDataRangeTransport as PDFDataRangeTransport, __webpack_exports__PDFDateString as PDFDateString, __webpack_exports__PDFWorker as PDFWorker, __webpack_exports__PasswordResponses as PasswordResponses, __webpack_exports__PermissionFlag as PermissionFlag, __webpack_exports__PixelsPerInch as PixelsPerInch, __webpack_exports__RenderingCancelledException as RenderingCancelledException, __webpack_exports__TextLayer as TextLayer, __webpack_exports__TouchManager as TouchManager, __webpack_exports__UnexpectedResponseException as UnexpectedResponseException, __webpack_exports__Util as Util, __webpack_exports__VerbosityLevel as VerbosityLevel, __webpack_exports__XfaLayer as XfaLayer, __webpack_exports__build as build, __webpack_exports__createValidAbsoluteUrl as createValidAbsoluteUrl, __webpack_exports__fetchData as fetchData, __webpack_exports__getDocument as getDocument, __webpack_exports__getFilenameFromUrl as getFilenameFromUrl, __webpack_exports__getPdfFilenameFromUrl as getPdfFilenameFromUrl, __webpack_exports__getXfaPageViewport as getXfaPageViewport, __webpack_exports__isDataScheme as isDataScheme, __webpack_exports__isPdfFile as isPdfFile, __webpack_exports__noContextMenu as noContextMenu, __webpack_exports__normalizeUnicode as normalizeUnicode, __webpack_exports__setLayerDimensions as setLayerDimensions, __webpack_exports__shadow as shadow, __webpack_exports__stopEvent as stopEvent, __webpack_exports__version as version };\n\n//# sourceMappingURL=pdf.mjs.map"],"names":["__webpack_require__","exports","definition","key","obj","prop","__webpack_exports__","AbortException","AnnotationEditorLayer","AnnotationEditorParamsType","AnnotationEditorType","AnnotationEditorUIManager","AnnotationLayer","AnnotationMode","ColorPicker","DOMSVGFactory","DrawLayer","util_FeatureTest","GlobalWorkerOptions","util_ImageKind","InvalidPDFException","MissingPDFException","OPS","OutputScale","PDFDataRangeTransport","PDFDateString","PDFWorker","PasswordResponses","PermissionFlag","PixelsPerInch","RenderingCancelledException","TextLayer","TouchManager","UnexpectedResponseException","Util","VerbosityLevel","XfaLayer","build","createValidAbsoluteUrl","fetchData","getDocument","getFilenameFromUrl","getPdfFilenameFromUrl","getXfaPageViewport","isDataScheme","isPdfFile","noContextMenu","normalizeUnicode","setLayerDimensions","shadow","stopEvent","version","isNodeJS","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","MAX_IMAGE_SIZE_TO_CACHE","LINE_FACTOR","RenderingIntentFlag","AnnotationEditorPrefix","TextRenderingMode","AnnotationType","AnnotationBorderStyleType","verbosity","setVerbosityLevel","level","getVerbosityLevel","info","msg","warn","unreachable","assert","cond","_isValidProtocol","url","baseUrl","options","stringToUTF8String","absoluteUrl","value","nonSerializable","BaseException","message","name","PasswordException","code","UnknownErrorException","details","status","FormatError","bytesToString","bytes","length","MAX_ARGUMENT_COUNT","strBuf","chunkEnd","chunk","stringToBytes","str","i","string32","objectFromMap","map","isLittleEndian","buffer8","isEvalSupported","hexNumbers","n","r","g","b","transform","minMax","temp","m1","m2","p","m","xt","yt","d","p1","p2","p3","p4","transpose","a","c","first","second","sx","sy","rect","rect1","rect2","xLow","xHigh","yLow","yHigh","x0","y0","x1","y1","x2","y2","x3","y3","__privateMethod","_Util_static","getExtremum_fn","getExtremumOnCurve_fn","t","mt","tt","ttt","x","delta","sqrtDelta","a2","__privateAdd","NormalizeRegex","NormalizationMap","_","getUuid","buf","AnnotationPrefix","toBase64Util","arr","fn","args","resolve","SVG_NS","_PixelsPerInch","__publicField","type","isValidFetchUrl","response","reject","request","PageViewport","viewBox","userUnit","scale","rotation","offsetX","offsetY","dontFlip","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","width","height","dims","y","topLeft","bottomRight","extraDelay","ii","filename","defaultFilename","reURI","reFilename","splitURI","suggestedFilename","StatTimer","outBuf","longest","start","end","protocol","e","input","__privateGet","_regex","__privateSet","matches","year","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","xfaPage","getRGB","color","colorRGB","getColorValues","colors","span","computedColor","getCurrentTransform","ctx","f","getCurrentTransformInverse","div","viewport","mustFlip","mustRotate","pageWidth","pageHeight","style","useRound","w","widthStr","heightStr","pixelRatio","_EditorToolbar","editor","_EditorToolbar_instances","_toolbar","_colorPicker","_editor","_buttons","_altText","_l10nRemove","editToolbar","signal","_EditorToolbar_static","pointerDown_fn","buttons","position","addDeleteButton_fn","altText","button","addListenersToElement_fn","divider_get","colorPicker","focusIn_fn","focusOut_fn","element","editorType","_uiManager","divider","EditorToolbar","HighlightToolbar","uiManager","_HighlightToolbar_instances","parent","boxes","isLTR","getLastPoint_fn","render_fn","addHighlightButton_fn","lastY","lastX","box","bindEvents","names","IdManager","_id","__privateWrapper","_ImageManager","_ImageManager_instances","_baseId","_cache","svg","image","promise","file","lastModified","size","get_fn","id","blobPromise","blob","data","canvas","offscreen","bitmap","rawData","mustRemoveAspectRatioPromise","fileReader","imageElement","imagePromise","ImageManager","CommandManager","maxSize","_commands","_locked","_maxSize","_position","cmd","undo","post","mustExec","overwriteIfSameType","keepUndo","save","next","KeyboardManager","callbacks","_KeyboardManager_instances","isMac","keys","callback","isMacKey","self","event","serialize_fn","bubbles","checker","_ColorManager","rgb","RGB","ColorManager","_AnnotationEditorUIManager","container","viewer","altTextManager","eventBus","pdfDocument","pageColors","highlightColors","enableHighlightFloatingButton","enableUpdatedAddImage","enableNewAltTextWhenAddingImage","mlManager","editorUndoBar","supportsPinchToZoom","_AnnotationEditorUIManager_instances","_abortController","_activeEditor","_allEditors","_allLayers","_altTextManager","_annotationStorage","_changedExistingAnnotations","_commandManager","_copyPasteAC","_currentDrawingSession","_currentPageIndex","_deletedAnnotationsElementIds","_draggingEditors","_editorTypes","_editorsToRescale","_enableHighlightFloatingButton","_enableUpdatedAddImage","_enableNewAltTextWhenAddingImage","_filterFactory","_focusMainContainerTimeoutId","_focusManagerAC","_highlightColors","_highlightWhenShiftUp","_highlightToolbar","_idManager","_isEnabled","_isWaiting","_keyboardManagerAC","_lastActiveElement","_mainHighlightColorPicker","_mlManager","_mode","_selectedEditors","_selectedTextNode","_pageColors","_showAllStates","_previousStates","_translation","_translationTimeoutId","_container","_viewer","_updateModeCapability","evt","addSelectionListener_fn","addDragAndDropListeners_fn","addKeyboardManager_fn","proto","arrowChecker","textInputChecker","_self","el","small","big","layer","ac","pair","firstTime","mode","pageNumber","layerX","layerY","pagesRotation","methodOfCreation","selection","anchorNode","anchorOffset","focusNode","focusOffset","text","textLayer","getAnchorElementForSelection_fn","getLayerForTextLayer_fn","isNoneMode","onSelectEnd_fn","activeElement","lastEditor","lastActiveElement","addCopyPasteListeners_fn","removeKeyboardManager_fn","removeCopyPasteListeners_fn","item","editors","serialized","clipboardData","ex","newEditors","deserializedEditor","addEditorToLayer_fn","selectEditors_fn","isEditing","addFocusManager_fn","dispatchUpdateStates_fn","isEmpty_fn","removeFocusManager_fn","types","dispatchUpdateUI_fn","pageIndex","editId","isFromKeyboard","disableAll_fn","enableAll_fn","visible","updateButton","mustWait","annotationElementId","lastSelectedEditor_get","ed","params","drawingEditor","noCommit","totalX","totalY","TIME_TO_WAIT","mustBeAddedInUndoStack","move","newX","newY","newPageIndex","savedX","savedY","savedPageIndex","tx","ty","parentWidth","parentHeight","rotator","h","range","annotation","editorId","currentLayer","displayHighlightToolbar_fn","selectionChange_fn","activeLayer","pointerup","promises","_AltText","_AltText_instances","_altTextDecorative","_altTextButton","_altTextButtonLabel","_altTextTooltip","_altTextTooltipTimeout","_altTextWasFromKeyBoard","_badge","_guessedText","_textWithDisclaimer","_useNewAltTextFlow","_l10nNewButton","l10n","label","onClick","label_get","setState_fn","guessedText","visibility","badge","isForCopying","decorative","textWithDisclaimer","cancel","enabled","tooltip","DELAY_TO_SHOW_TOOLTIP","AltText","_TouchManager","isPinchingDisabled","isPinchingStopped","onPinchStart","onPinching","onPinchEnd","_TouchManager_instances","_isPinching","_isPinchingStopped","_isPinchingDisabled","_onPinchStart","_onPinching","_onPinchEnd","_signal","_touchInfo","_touchManagerAC","_touchMoveAC","onTouchStart_fn","_a","opt","onTouchMove_fn","onTouchEnd_fn","_b","_c","touch0","touch1","screen0X","screen0Y","screen1X","screen1Y","touchInfo","pTouch0X","pTouch0Y","pTouch1X","pTouch1Y","prevGapX","prevGapY","currGapX","currGapY","distance","pDistance","origin","_AnnotationEditor","parameters","_AnnotationEditor_instances","_accessibilityData","_allResizerDivs","_disabled","_dragPointerId","_dragPointerType","_keepAspectRatio","_resizersDiv","_lastPointerCoords","_savedDimensions","_focusAC","_focusedResizerName","_hasBeenClicked","_initialRect","_isEditing","_isInEditMode","_isResizerEnabledForKeyboard","_moveInDOMTimeout","_prevDragX","_prevDragY","_telemetryTimeouts","_touchManager","_isDraggable","_zIndex","pageX","pageY","resize","fakeEditor","FakeEditor","_type","_value","mime","stopResizing_fn","translate_fn","bx","by","_borderLineWidth","_AnnotationEditor_static","rotatePoint_fn","parentScale","widthPercent","heightPercent","editToolbarDiv","addFocusListeners_fn","touchPinchStartCallback_fn","touchPinchCallback_fn","touchPinchEndCallback_fn","setUpDragSession_fn","selectOnPointerEvent_fn","shiftX","shiftY","focus","top","left","bottom","right","innerHeight","innerWidth","_angle","context","timeout","createResizers_fn","children","boundResizerKeydown","resizerKeydown_fn","boundResizerBlur","resizerBlur_fn","resizerFocus_fn","firstPosition","nextFirstPosition","child","setResizerTabIndex_fn","resizerPointermove_fn","aspectRatio","action","content","firstChild","angle","getRotationMatrix_fn","classes","resizerPointerdown_fn","savedDraggable","savedParentCursor","savedCursor","pointerUpCallback","addResizeToUndoStack_fn","resize_fn","savedWidth","savedHeight","newWidth","newHeight","minWidth","minHeight","rotationMatrix","transf","invRotationMatrix","invTransf","getPoint","getOpposite","isDiagonal","isHorizontal","point","oppositePoint","transfOppositePoint","oppositeX","oppositeY","ratioX","ratioY","deltaX","deltaY","screenX","screenY","lastScreenX","lastScreenY","oldDiag","_origin","prevDistance","factor","transfCenterPoint","newTransfCenterPoint","isSelected","hasDraggingStarted","opts","cancelDrag","pointerId","AnnotationEditor","SEED","MASK_HIGH","MASK_LOW","MurmurHash3_64","seed","blockCounts","tailLength","dataUint32","k1","k2","h1","h2","C1","C2","C1_LOW","C2_LOW","SerializableEmpty","AnnotationStorage","_AnnotationStorage_instances","_modified","_modifiedIds","_storage","defaultValue","modified","entry","val","setModified_fn","PrintAnnotationStorage","hash","transfer","hasBitmap","stats","typeToEditor","editorStats","counters","count","ids","_serializable","clone","FontLoader","ownerDocument","styleElement","_systemFonts","nativeFontFace","rule","styleSheet","_inspectFont","loadedName","src","fontFace","font","hasFonts","supported","completeRequest","loadingRequests","otherRequest","testFont","int32","offset","spliceString","s","remove","insert","chunk1","chunk2","called","isFontReady","loadTestFontId","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","FontFaceObject","translatedData","disableFontFace","fontExtraProperties","inspectFont","css","objs","character","objId","cmds","path","CallbackKind","StreamKind","onFn","wrapReason","MessageHandler","sourceName","targetName","comObj","_MessageHandler_instances","_messageAC","onMessage_fn","actionName","handler","ah","transfers","callbackId","capability","queueingStrategy","streamId","controller","startCapability","pullCapability","reason","cancelCapability","processStreamMessage_fn","result","createStreamSink_fn","streamSink","lastDesiredSize","streamController","deleteStreamController_fn","dataReason","BaseCanvasFactory","enableHWA","_enableHWA","canvasAndContext","DOMCanvasFactory","BaseCMapReaderFactory","isCompressed","cMapData","DOMCMapReaderFactory","BaseFilterFactory","maps","fgColor","bgColor","filterName","newFgColor","newBgColor","keepHCM","DOMFilterFactory","docId","_DOMFilterFactory_instances","_baseUrl","__cache","__defs","_docId","_document","__hcmCache","cache_get","tableR","tableG","tableB","createTables_fn","createUrl_fn","filter","createFilter_fn","addTransferMapConversion_fn","hcmCache_get","fgRGB","getRGB_fn","bgRGB","defs_get","table","addGrayConversion_fn","getSteps","tableA","addTransferMapAlphaConversion_fn","addLuminosityConversion_fn","fgGray","bgGray","newFgRGB","newBgRGB","fg","bg","step","newStart","newStep","prev","k","j","mapR","buffer","mapG","mapB","bufferR","bufferG","bufferB","feColorMatrix","appendFeFunc_fn","feComponentTransfer","func","feFunc","rTable","gTable","bTable","aTable","BaseStandardFontDataFactory","DOMStandardFontDataFactory","node_utils_fetchData","NodeFilterFactory","NodeCanvasFactory","NodeCMapReaderFactory","NodeStandardFontDataFactory","PathType","applyBoundingBox","bbox","region","BaseShadingPattern","RadialAxialShadingPattern","IR","grad","colorStop","owner","inverse","pathType","pattern","ownerBBox","tmpCanvas","tmpCtx","domMatrix","drawTriangle","c1","c2","c3","coords","rowSize","tmp","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","combinedScale","backgroundColor","cachedCanvases","boundsWidth","boundsHeight","scaleX","scaleY","paddedWidth","paddedHeight","matrixScale","temporaryPatternCanvas","DummyShadingPattern","getShadingPattern","PaintType","_TilingPattern","canvasGraphicsFactory","baseTransform","operatorList","paintType","tilingType","xstep","ystep","curMatrixScale","combinedScaleX","combinedScaleY","canvasWidth","canvasHeight","redrawHorizontally","redrawVertically","xScaledStep","yScaledStep","xScaledWidth","yScaledHeight","dimx","dimy","graphics","dimx2","dimy2","xSize","ySize","tmpCanvas2","tmpCtx2","jj","realOutputSize","bboxWidth","bboxHeight","current","cssColor","matrix","TilingPattern","convertBlackAndWhiteToRGBA","srcPos","dest","nonBlackColor","inverseDecode","black","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","destPos","max","elem","MIN_FONT_SIZE","MAX_FONT_SIZE","EXECUTION_TIME","EXECUTION_STEPS","MAX_SIZE_TO_COMPILE","FULL_CHUNK_HEIGHT","mirrorContextOperations","destCtx","cp1x","cp1y","cp2x","cp2y","CachedCanvases","canvasFactory","canvasEntry","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","compileType3Glyph","imgData","POINT_TO_PROCESS_LIMIT","POINT_TYPES","width1","points","j0","lineSize","pos","mask","sum","steps","p0","pp","CanvasExtraState","xStrokePad","yStrokePad","intersect","putBinaryImageData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","thisChunkHeight","elemsInThisChunk","dest32","dest32DataLength","fullSrcDiff","white","srcDiff","kEnd","kEndUnrolled","srcByte","putBinaryImageMask","copyCtxState","sourceCtx","properties","property","resetCtxToDefault","getImageSmoothingEnabled","interpolate","actualScale","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","_CanvasGraphics","canvasCtx","commonObjs","filterFactory","optionalContentConfig","markedContentStack","annotationCanvasMap","_CanvasGraphics_instances","fallback","transparency","background","savedFillStyle","transparentCanvas","executionStartIdx","continueCallback","stepper","argsArray","fnArray","argsArrayLen","chunkOperations","endTime","fnId","depObjId","objsPool","restoreInitialState_fn","cache","drawFilter_fn","img","inverseTransform","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","fillColor","isPatternFill","currentTransform","cacheKey","scaled","maskCanvas","mainKey","cachedImage","maskToCanvas","minX","maxX","drawnWidth","drawnHeight","fillCanvas","fillCtx","limit","dashArray","dashPhase","intent","flatness","states","inSMaskMode","cacheId","scratchCanvas","dirtyBox","smask","suspendedCtx","layerCtx","layerBox","layerOffsetX","layerOffsetY","layerWidth","layerHeight","maskCtx","subtype","backdrop","transferMap","maskOffsetX","maskOffsetY","maskX","maskY","backdropRGB","clip","old","ops","startX","startY","isScalingMatrix","minMaxForBezier","xw","yh","consumePath","strokeColor","needRestore","paths","newPath","fontSize","spacing","leading","fontRefName","fontObj","typeface","bold","italic","browserFontSize","rise","patternFillTransform","patternStrokeTransform","textRenderingMode","fillStrokeMode","isAddToPathSet","patternFill","patternStroke","getScaledPath_fn","glyphs","fontSizeScale","charSpacing","wordSpacing","fontDirection","textHScale","glyphsLength","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","lineWidth","chars","glyph","restoreNeeded","accent","scaledX","scaledY","vmetric","vx","vy","measuredWidth","characterScaleX","scaledAccentX","scaledAccentY","charWidth","fontMatrix","isTextInvisible","spacingLength","xWidth","yWidth","llx","lly","urx","ury","inv","group","currentCtx","bounds","canvasBounds","groupCtx","currentMtx","hasOwnCanvas","viewportScale","skewX","skewY","positions","trans","images","imgToPaint","tag","clipBox","isEmpty","absDet","normX","normY","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","dashes","hcmFilterId","savedFilter","CanvasGraphics","op","_port","_src","Metadata","parsedData","_metadataMap","_data","INTERNAL","OptionalContentGroup","renderingIntent","usage","rbGroups","_isDisplay","_isPrint","_userSet","_visible","print","view","internal","userSet","OptionalContentConfig","_OptionalContentConfig_instances","_cachedGetHash","_groups","_initialHash","_order","on","off","evaluateVisibilityExpression_fn","preserveRB","rbGroup","otherId","state","operator","array","PDFDataTransportStream","pdfDataRangeTransport","disableRange","disableStream","initialData","progressiveDone","contentDispositionFilename","begin","loaded","total","found","rangeReader","reader","queuedChunks","PDFDataTransportStreamReader","PDFDataTransportStreamRangeReader","stream","requestCapability","getFilenameFromContentDispositionHeader","contentDisposition","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","attributePattern","flags","textdecode","encoding","decoder","contentDispositionStr","match","iter","quot","part","parts","quotindex","extvalue","encodingend","charset","hex","createHeaders","isHttp","httpHeaders","headers","getResponseOrigin","validateRangeRequestCapabilities","responseHeaders","rangeChunkSize","returnValues","extractFilenameFromHeader","createResponseStatusError","validateResponseStatus","createFetchOptions","withCredentials","abortController","getArrayBuffer","PDFFetchStream","source","PDFFetchStreamReader","PDFFetchStreamRangeReader","allowRangeRequests","suggestedLength","done","responseOrigin","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","network_getArrayBuffer","xhr","NetworkManager","xhrId","pendingRequest","xhrStatus","rangeHeader","PDFNetworkStream","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","manager","fullRequestXhrId","fullRequestXhr","rawResponseHeaders","urlRegex","parseUrlOrPath","sourceUrl","PDFNodeStream","PDFNodeStreamFsFullReader","PDFNodeStreamFsRangeReader","fs","stat","error","readableStream","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_SIZE","DEFAULT_FONT_ASCENT","_TextLayer","textContentSource","_TextLayer_instances","_capability","_disableProcessItems","_fontInspectorEnabled","_lang","_layoutTextParams","_pageHeight","_pageWidth","_reader","_rootContainer","_rotation","_scale","_styleCache","_textContentItemsStr","_textContentSource","_textDivs","_textDivProperties","_transform","_TextLayer_static","ensureMinFontSizeComputed_fn","_pendingTextLayers","isWindows","isFirefox","pump","processItems_fn","onBefore","getCtx_fn","layout_fn","abortEx","_ascentCache","_canvasContexts","_canvasCtxFonts","_minFontSize","items","textDivs","textContentItemsStr","appendText_fn","geom","textDiv","textDivProperties","fontFamily","fontHeight","fontAscent","getAscent_fn","scaleFactorStr","divStyle","shouldScaleText","absScaleX","absScaleY","br","ensureCtxFont_fn","lang","family","cached","cachedAscent","metrics","ascent","descent","ratio","pixels","XfaText","xfa","output","walk","node","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","DELAYED_CLEANUP_TIMEOUT","DefaultCanvasFactory","DefaultCMapReaderFactory","DefaultFilterFactory","DefaultStandardFontDataFactory","task","PDFDocumentLoadingTask","getUrlProp","getDataProp","password","rangeTransport","worker","docBaseUrl","cMapUrl","cMapPacked","CMapReaderFactory","standardFontDataUrl","StandardFontDataFactory","ignoreErrors","maxImageSize","isOffscreenCanvasSupported","isImageDecoderSupported","canvasMaxAreaInBytes","enableXfa","disableAutoFetch","pdfBug","CanvasFactory","FilterFactory","useSystemFonts","useWorkerFetch","transportFactory","workerParams","docParams","transportParams","workerIdPromise","networkStream","NetworkStream","workerId","messageHandler","transport","WorkerTransport","isRefProxy","ref","_PDFDocumentLoadingTask","listener","PDFDocumentProxy","pdfInfo","keepLoadedFonts","PDFPageProxy","pageInfo","_PDFPageProxy_instances","_delayedCleanupTimeout","_pendingCleanup","PDFObjects","canvasContext","annotationMode","optionalContentConfigPromise","printAnnotationStorage","intentArgs","abortDelayedCleanup_fn","intentState","intentPrint","complete","internalRenderTask","tryCleanup_fn","InternalRenderTask","renderTask","operatorListChanged","opListTask","includeMarkedContent","disableNormalization","textContent","waitOn","resetStats","success","operatorListChunk","annotationStorageSerializable","modifiedIds","force","delay","curCacheKey","curIntentState","delayed","renderTasks","LoopbackPort","_listeners","_deferred","rmAbort","onAbort","_PDFWorker","port","_PDFWorker_instances","_workerPorts","resolve_fn","_isWorkerDisabled","_PDFWorker_static","mainThreadWorkerMessageHandler_get","workerSrc","terminateEarly","sendTest","testObj","WorkerMessageHandler","_fakeWorkerId","workerHandler","cachedPort","otherUrl","base","other","wrapper","loadingTask","factory","_WorkerTransport_instances","_methodPromises","_pageCache","_pagePromises","_pageRefCache","_passwordCapability","isOpList","annotationStorage","modifiedIdsHash","cacheKeyBuf","page","terminated","sink","readyReason","isStreamingSupported","isRangeSupported","contentLength","updatePassword","err","exportedData","exportedError","imageRef","pageProxy","imageData","cachedPromise","cacheSimpleMethod_fn","results","refStr","INITIAL_DATA","_PDFObjects_instances","_objs","ensureObj_fn","RenderTask","_internalRenderTask","separateAnnots","_InternalRenderTask","useRequestAnimationFrame","_rAF","_canvasInUse","makeColorComp","scaleAndClamp","ColorConverters","G","components","BaseSVGFactory","skipDimensions","html","storage","storedData","option","linkService","attributes","isHTMLAnchorElement","root","rootHtml","isNotForRichText","rootDiv","stack","childHtml","DEFAULT_TAB_INDEX","annotation_layer_DEFAULT_FONT_SIZE","GetElementsByNameSet","getRectDims","AnnotationElementFactory","LinkAnnotationElement","TextAnnotationElement","TextWidgetAnnotationElement","RadioButtonWidgetAnnotationElement","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","SignatureWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","_AnnotationElement","isRenderable","ignoreBorder","createQuadrilaterals","_AnnotationElement_instances","_updates","_hasBorder","_popupElement","titleObj","contentsObj","richText","setRectEdited_fn","horizontalRadius","verticalRadius","radius","borderColor","elementWidth","elementHeight","setColor","jsName","styleName","colorType","colorArray","display","hidden","actions","jsEvent","commonActions","detail","eventProxy","quadPoints","rectBlX","rectBlY","rectTrX","rectTrY","trX","trY","blX","blY","svgBuffer","borderWidth","svgFactory","defs","clipPath","rectWidth","rectHeight","popup","skipId","fields","fieldObj","exportValues","exportValue","domElement","triggers","currentRect","_LinkAnnotationElement_instances","link","isBound","bindAttachment_fn","bindSetOCGState_fn","destination","setInternalLink_fn","resetForm","otherClickAction","resetFormFields","resetFormRefs","include","allFields","fieldIds","fieldName","field","allIds","attachment","elementData","baseName","eventName","valueGetter","getter","TEXT_ALIGNMENT","fontColor","computedFontSize","BORDER_SIZE","roundToOneDecimal","numberOfLines","lineHeight","isRequired","keyInStorage","maxLen","fieldFormattedValues","blurListener","formattedValue","target","charLimit","commitKey","_blurListener","selectionStart","selectionEnd","selStart","selEnd","combWidth","checked","checkbox","curChecked","radio","pdfButtonValue","linkElement","selectElement","addAnEmptyEntry","optionElement","removeEmptyEntry","noneOptionElement","getValue","isExport","multiple","selectedValues","getItems","values","index","displayValue","selectChild","indices","change","elements","PopupElement","elementIds","modificationDate","parentRect","open","_PopupElement_instances","_boundKeyDown","keyDown_fn","_boundHide","hide_fn","_boundShow","show_fn","_boundToggle","toggle_fn","_color","_contentsObj","_dateObj","_elements","_parent","_parentRect","_pinned","_popup","_rect","_richText","_titleObj","_wasVisible","baseColor","header","title","html_get","contents","dir","lines","line","popupContent","makePopupContent_fn","fontSize_get","fontColor_get","popupLines","lineAttributes","setPosition_fn","useParentRect","normalizedRect","popupLeft","popupTop","lineSpan","_line","_square","square","_circle","circle","_polyline","vertices","borderStyle","popupRef","polyline","_InkAnnotationElement_instances","_polylinesGroupElement","_polylines","inkLists","getTransform_fn","thickness","_FileAttachmentAnnotationElement_instances","_trigger","trigger","download_fn","accessibilityManager","annotationEditorUIManager","structTreeLayer","_AnnotationLayer_instances","_accessibilityManager","_annotationCanvasMap","_editableAnnotations","_structTreeLayer","annotations","popupToElements","elementParams","isPopupAnnotation","rendered","appendElement_fn","setAnnotationCanvasMap_fn","contentElement","annotationId","ariaAttributes","EOL_PATTERN","_FreeTextEditor","_FreeTextEditor_instances","_content","_editorDivId","_editModeAC","_fontSize","updateFontSize_fn","updateColor_fn","savedText","newText","extractText_fn","setText","setContent_fn","setEditorDimensions_fn","baseX","baseY","posX","posY","paste","_FreeTextEditor_static","deserializeContent_fn","startContainer","startOffset","bufferBefore","bufferAfter","getNodeContent_fn","newRange","beforeLength","acc","textPosition","padding","serializeContent_fn","hasElementChanged_fn","setFontsize","savedFontsize","col","savedColor","prevChild","savedDisplay","savedVisibility","FreeTextEditor","Outline","_bbox","_FreeDrawOutliner","scaleFactor","innerMargin","_FreeDrawOutliner_instances","_box","_bottom","_innerMargin","_isLTR","_top","_last","_lastX","_lastY","_min","_min_dist","_scaleFactor","_thickness","_points","_MIN_DIST","_MIN","diffX","diffY","diffD","K","nX","nY","thX","thY","toSVGPathTwoPoints_fn","toSVGPathEnd_fn","toSVGPathStart_fn","outline","FreeDrawOutline","last","getOutlineTwoPoints_fn","N","getOutlineEnd_fn","getOutlineStart_fn","_MIN_DIFF","getLastCoords_fn","lastTop","lastBottom","lastTopX","lastTopY","lastBottomX","lastBottomY","FreeDrawOutliner","_FreeDrawOutline_instances","_outline","computeMinMax_fn","outliner","lastPointX","lastPointY","ltrCallback","HighlightOutliner","_HighlightOutliner_instances","_lastPoint","_verticalEdges","_intervals","EPSILON","shiftedMinX","shiftedMinY","lastEdge","lastPoint","edge","outlineVerticalEdges","breakEdge_fn","insert_fn","remove_fn","getOutlines_fn","edges","allEdges","edge1","edge2","outlines","HighlightOutline","binarySearch_fn","middle","y4","_outlines","polygon","prevX","prevY","FreeHighlightOutliner","FreeHighlightOutline","_ColorPicker","_ColorPicker_instances","_button","_buttonSwatch","_defaultColor","_dropdown","_dropdownWasFromKeyboard","_isMainColorPicker","_eventBus","_openDropdownAC","_l10nColor","openDropdown_fn","swatch","dropdown","getDropdownRoot_fn","colorSelect_fn","isDropdownVisible_get","_HighlightEditor","_HighlightEditor_instances","_anchorNode","_anchorOffset","_boxes","_clipPathId","_focusOutlines","_focusNode","_focusOffset","_highlightDiv","_highlightOutlines","_isFreeHighlight","_opacity","_outlineId","_text","_methodOfCreation","createFreeOutlines_fn","addToDrawLayer_fn","createOutlines_fn","updateThickness_fn","toolbar","getRotation_fn","cleanDrawLayer_fn","mustBeSelected","drawLayer","_HighlightEditor_static","rotateBbox_fn","keydown_fn","highlightDiv","direction","setCaret_fn","endHighlight_fn","highlightMove_fn","opacity","clipPathId","_d","serializeBoxes_fn","serializeOutlines_fn","outlinerForOutline","highlightOutlines","highlightId","setColorAndOpacity","opa","savedOpacity","savedThickness","setThickness","th","changeThickness_fn","HighlightEditor","DrawingOptions","_svgProperties","_DrawingEditor","_DrawingEditor_instances","_drawOutlines","_mustBeCommitted","createDrawOutlines_fn","p1Keys","_options","propertyName","_currentDraw","_drawingOptions","savedValue","setter","updateBbox_fn","convertToDrawSpace_fn","rotateBox_fn","drawDiv","_x","_y","_parentWidth","_parentHeight","pointerType","_currentPointerType","_currentDrawingAC","_currentPointerId","_currentPointerIds","_currentMoveTimestamp","_currentDrawingOptions","all","draw","drawId","lastElement","isAborted","_pageX","_pageY","_innerWidth","drawOutlines","drawingOptions","createDrawing_fn","convertToParentSpace_fn","pW","pH","parentRotation","DrawingEditor","InkDrawOutliner","_InkDrawOutliner_instances","_lines","_lastSVGPath","_lastIndex","InkDrawOutline","normalizePoint_fn","firstX","firstY","secondX","secondY","c1x","c1y","c2x","c2y","_InkDrawOutline","_InkDrawOutline_instances","_currentRotation","_parentScale","computeBbox_fn","serializedLines","serializedPoints","getBBoxWithNoMargin_fn","rescaleFn","newLines","len","oldMarginX","oldMarginY","getMarginComponents_fn","newMarginX","newMarginY","diffMarginX","diffMarginY","marginX","marginY","s1x","s1y","s2x","s2y","parentDimensions","newParentWidth","newParentHeight","margin","_InkDrawingOptions","viewerParameters","_viewParameters","InkDrawingOptions","_InkEditor","_InkEditor_instances","_drawId","stroke","InkEditor","_StampEditor","_StampEditor_instances","_bitmap","_bitmapId","_bitmapPromise","_bitmapUrl","_bitmapFile","_bitmapFileName","_canvas","_resizeTimeoutId","_isSvg","_hasBeenAddedInUndoStack","hasAltTextStats","updateAltTextData","getBitmap_fn","createCanvas_fn","drawBitmap_fn","maxDataDimension","maxPreviewDimension","createImageData","bitmapWidth","bitmapHeight","outputScale","scaledWidth","scaledHeight","scaleBitmap_fn","boxDim","boxDimWidth","boxDimHeight","patternCtx","dataWidth","dataHeight","offscreenCtx","structParent","bitmapUrl","bitmapId","isSvg","accessibilityData","serializeBitmap_fn","changes","area","prevData","getBitmapFetched_fn","fromId","getBitmapDone_fn","MAX_RATIO","prevWidth","prevHeight","toUrl","isSamePageIndex","isSameAltText","StampEditor","_AnnotationEditorLayer","annotationLayer","_AnnotationEditorLayer_instances","_allowClick","_annotationLayer","_clickAC","_editorFocusTimeoutId","_editors","_hadPointerDown","_isDisabling","_isEnabling","_drawingAC","_focusedElement","_textLayer","_textSelectionAC","editorTypes","cleanup_fn","classList","annotationElementIds","editables","editable","changedAnnotations","resetAnnotations","textLayerPointerDown_fn","currentEditorType_get","getCenterPoint_fn","createNewEditor_fn","isCentered","relatedTarget","oldRotation","_DrawLayer","_DrawLayer_instances","_mapping","_toUpdate","isPathUpdatable","hasClip","createSVG_fn","pathId","createClipPath_fn","use","mustRemoveSelfIntersections","maskId","use1","use2","elementOrId","rootClass","updateProperties_fn","_DrawLayer_static","setBox_fn","className","pathElement","clipPathUse","__webpack_exports__AbortException","__webpack_exports__AnnotationEditorLayer","__webpack_exports__AnnotationEditorParamsType","__webpack_exports__AnnotationEditorType","__webpack_exports__AnnotationEditorUIManager","__webpack_exports__AnnotationLayer","__webpack_exports__AnnotationMode","__webpack_exports__ColorPicker","__webpack_exports__DOMSVGFactory","__webpack_exports__DrawLayer","__webpack_exports__FeatureTest","__webpack_exports__GlobalWorkerOptions","__webpack_exports__ImageKind","__webpack_exports__InvalidPDFException","__webpack_exports__MissingPDFException","__webpack_exports__OPS","__webpack_exports__OutputScale","__webpack_exports__PDFDataRangeTransport","__webpack_exports__PDFDateString","__webpack_exports__PDFWorker","__webpack_exports__PasswordResponses","__webpack_exports__PermissionFlag","__webpack_exports__PixelsPerInch","__webpack_exports__RenderingCancelledException","__webpack_exports__TextLayer","__webpack_exports__TouchManager","__webpack_exports__UnexpectedResponseException","__webpack_exports__Util","__webpack_exports__VerbosityLevel","__webpack_exports__XfaLayer","__webpack_exports__build","__webpack_exports__createValidAbsoluteUrl","__webpack_exports__fetchData","__webpack_exports__getDocument","__webpack_exports__getFilenameFromUrl","__webpack_exports__getPdfFilenameFromUrl","__webpack_exports__getXfaPageViewport","__webpack_exports__isDataScheme","__webpack_exports__isPdfFile","__webpack_exports__noContextMenu","__webpack_exports__normalizeUnicode","__webpack_exports__setLayerDimensions","__webpack_exports__shadow","__webpack_exports__stopEvent","__webpack_exports__version"],"mappings":"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","x_google_ignoreList":[0]}