{"version":3,"file":"pdf.image_decoders.mjs","mappings":"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","sources":["webpack://pdf.js/webpack/bootstrap","webpack://pdf.js/webpack/runtime/define property getters","webpack://pdf.js/webpack/runtime/hasOwnProperty shorthand","webpack://pdf.js/src/shared/util.js","webpack://pdf.js/src/core/primitives.js","webpack://pdf.js/src/core/base_stream.js","webpack://pdf.js/src/core/core_utils.js","webpack://pdf.js/src/core/arithmetic_decoder.js","webpack://pdf.js/src/core/ccitt.js","webpack://pdf.js/src/core/jbig2.js","webpack://pdf.js/src/shared/image_utils.js","webpack://pdf.js/src/core/jpg.js","webpack://pdf.js/src/core/jpx.js","webpack://pdf.js/src/pdf.image_decoders.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n  (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n  typeof process === \"object\" &&\n  process + \"\" === \"[object process]\" &&\n  !process.versions.nw &&\n  !(process.versions.electron && process.type && process.type !== \"browser\");\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\nconst MAX_IMAGE_SIZE_TO_CACHE = 10e6; // Ten megabytes.\n\n// Represent the percentage of the height of a single-line field over\n// the font size. Acrobat seems to use this value.\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n *  - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n *    `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n *  - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n *    annotations are rendered onto the canvas (i.e. by being included in the\n *    operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n *    and their `annotationMode`-option.\n *  - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n *    `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n  ANY: 0x01,\n  DISPLAY: 0x02,\n  PRINT: 0x04,\n  SAVE: 0x08,\n  ANNOTATIONS_FORMS: 0x10,\n  ANNOTATIONS_STORAGE: 0x20,\n  ANNOTATIONS_DISABLE: 0x40,\n  OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n  DISABLE: 0,\n  ENABLE: 1,\n  ENABLE_FORMS: 2,\n  ENABLE_STORAGE: 3,\n};\n\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\n\nconst AnnotationEditorType = {\n  DISABLE: -1,\n  NONE: 0,\n  FREETEXT: 3,\n  STAMP: 13,\n  INK: 15,\n};\n\nconst AnnotationEditorParamsType = {\n  RESIZE: 1,\n  CREATE: 2,\n  FREETEXT_SIZE: 11,\n  FREETEXT_COLOR: 12,\n  FREETEXT_OPACITY: 13,\n  INK_COLOR: 21,\n  INK_THICKNESS: 22,\n  INK_OPACITY: 23,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n  PRINT: 0x04,\n  MODIFY_CONTENTS: 0x08,\n  COPY: 0x10,\n  MODIFY_ANNOTATIONS: 0x20,\n  FILL_INTERACTIVE_FORMS: 0x100,\n  COPY_FOR_ACCESSIBILITY: 0x200,\n  ASSEMBLE: 0x400,\n  PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n  FILL: 0,\n  STROKE: 1,\n  FILL_STROKE: 2,\n  INVISIBLE: 3,\n  FILL_ADD_TO_PATH: 4,\n  STROKE_ADD_TO_PATH: 5,\n  FILL_STROKE_ADD_TO_PATH: 6,\n  ADD_TO_PATH: 7,\n  FILL_STROKE_MASK: 3,\n  ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n  GRAYSCALE_1BPP: 1,\n  RGB_24BPP: 2,\n  RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n  TEXT: 1,\n  LINK: 2,\n  FREETEXT: 3,\n  LINE: 4,\n  SQUARE: 5,\n  CIRCLE: 6,\n  POLYGON: 7,\n  POLYLINE: 8,\n  HIGHLIGHT: 9,\n  UNDERLINE: 10,\n  SQUIGGLY: 11,\n  STRIKEOUT: 12,\n  STAMP: 13,\n  CARET: 14,\n  INK: 15,\n  POPUP: 16,\n  FILEATTACHMENT: 17,\n  SOUND: 18,\n  MOVIE: 19,\n  WIDGET: 20,\n  SCREEN: 21,\n  PRINTERMARK: 22,\n  TRAPNET: 23,\n  WATERMARK: 24,\n  THREED: 25,\n  REDACT: 26,\n};\n\nconst AnnotationReplyType = {\n  GROUP: \"Group\",\n  REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n  INVISIBLE: 0x01,\n  HIDDEN: 0x02,\n  PRINT: 0x04,\n  NOZOOM: 0x08,\n  NOROTATE: 0x10,\n  NOVIEW: 0x20,\n  READONLY: 0x40,\n  LOCKED: 0x80,\n  TOGGLENOVIEW: 0x100,\n  LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n  READONLY: 0x0000001,\n  REQUIRED: 0x0000002,\n  NOEXPORT: 0x0000004,\n  MULTILINE: 0x0001000,\n  PASSWORD: 0x0002000,\n  NOTOGGLETOOFF: 0x0004000,\n  RADIO: 0x0008000,\n  PUSHBUTTON: 0x0010000,\n  COMBO: 0x0020000,\n  EDIT: 0x0040000,\n  SORT: 0x0080000,\n  FILESELECT: 0x0100000,\n  MULTISELECT: 0x0200000,\n  DONOTSPELLCHECK: 0x0400000,\n  DONOTSCROLL: 0x0800000,\n  COMB: 0x1000000,\n  RICHTEXT: 0x2000000,\n  RADIOSINUNISON: 0x2000000,\n  COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n  SOLID: 1,\n  DASHED: 2,\n  BEVELED: 3,\n  INSET: 4,\n  UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n  E: \"Mouse Enter\",\n  X: \"Mouse Exit\",\n  D: \"Mouse Down\",\n  U: \"Mouse Up\",\n  Fo: \"Focus\",\n  Bl: \"Blur\",\n  PO: \"PageOpen\",\n  PC: \"PageClose\",\n  PV: \"PageVisible\",\n  PI: \"PageInvisible\",\n  K: \"Keystroke\",\n  F: \"Format\",\n  V: \"Validate\",\n  C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n  WC: \"WillClose\",\n  WS: \"WillSave\",\n  DS: \"DidSave\",\n  WP: \"WillPrint\",\n  DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n  O: \"PageOpen\",\n  C: \"PageClose\",\n};\n\nconst VerbosityLevel = {\n  ERRORS: 0,\n  WARNINGS: 1,\n  INFOS: 5,\n};\n\nconst CMapCompressionType = {\n  NONE: 0,\n  BINARY: 1,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n  // Intentionally start from 1 so it is easy to spot bad operators that will be\n  // 0's.\n  // PLEASE NOTE: We purposely keep any removed operators commented out, since\n  //              re-numbering the list would risk breaking third-party users.\n  dependency: 1,\n  setLineWidth: 2,\n  setLineCap: 3,\n  setLineJoin: 4,\n  setMiterLimit: 5,\n  setDash: 6,\n  setRenderingIntent: 7,\n  setFlatness: 8,\n  setGState: 9,\n  save: 10,\n  restore: 11,\n  transform: 12,\n  moveTo: 13,\n  lineTo: 14,\n  curveTo: 15,\n  curveTo2: 16,\n  curveTo3: 17,\n  closePath: 18,\n  rectangle: 19,\n  stroke: 20,\n  closeStroke: 21,\n  fill: 22,\n  eoFill: 23,\n  fillStroke: 24,\n  eoFillStroke: 25,\n  closeFillStroke: 26,\n  closeEOFillStroke: 27,\n  endPath: 28,\n  clip: 29,\n  eoClip: 30,\n  beginText: 31,\n  endText: 32,\n  setCharSpacing: 33,\n  setWordSpacing: 34,\n  setHScale: 35,\n  setLeading: 36,\n  setFont: 37,\n  setTextRenderingMode: 38,\n  setTextRise: 39,\n  moveText: 40,\n  setLeadingMoveText: 41,\n  setTextMatrix: 42,\n  nextLine: 43,\n  showText: 44,\n  showSpacedText: 45,\n  nextLineShowText: 46,\n  nextLineSetSpacingShowText: 47,\n  setCharWidth: 48,\n  setCharWidthAndBounds: 49,\n  setStrokeColorSpace: 50,\n  setFillColorSpace: 51,\n  setStrokeColor: 52,\n  setStrokeColorN: 53,\n  setFillColor: 54,\n  setFillColorN: 55,\n  setStrokeGray: 56,\n  setFillGray: 57,\n  setStrokeRGBColor: 58,\n  setFillRGBColor: 59,\n  setStrokeCMYKColor: 60,\n  setFillCMYKColor: 61,\n  shadingFill: 62,\n  beginInlineImage: 63,\n  beginImageData: 64,\n  endInlineImage: 65,\n  paintXObject: 66,\n  markPoint: 67,\n  markPointProps: 68,\n  beginMarkedContent: 69,\n  beginMarkedContentProps: 70,\n  endMarkedContent: 71,\n  beginCompat: 72,\n  endCompat: 73,\n  paintFormXObjectBegin: 74,\n  paintFormXObjectEnd: 75,\n  beginGroup: 76,\n  endGroup: 77,\n  // beginAnnotations: 78,\n  // endAnnotations: 79,\n  beginAnnotation: 80,\n  endAnnotation: 81,\n  // paintJpegXObject: 82,\n  paintImageMaskXObject: 83,\n  paintImageMaskXObjectGroup: 84,\n  paintImageXObject: 85,\n  paintInlineImageXObject: 86,\n  paintInlineImageXObjectGroup: 87,\n  paintImageXObjectRepeat: 88,\n  paintImageMaskXObjectRepeat: 89,\n  paintSolidColorImageMask: 90,\n  constructPath: 91,\n};\n\nconst PasswordResponses = {\n  NEED_PASSWORD: 1,\n  INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n  if (Number.isInteger(level)) {\n    verbosity = level;\n  }\n}\n\nfunction getVerbosityLevel() {\n  return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n  if (verbosity >= VerbosityLevel.INFOS) {\n    console.log(`Info: ${msg}`);\n  }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n  if (verbosity >= VerbosityLevel.WARNINGS) {\n    console.log(`Warning: ${msg}`);\n  }\n}\n\nfunction unreachable(msg) {\n  throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n  if (!cond) {\n    unreachable(msg);\n  }\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n  switch (url?.protocol) {\n    case \"http:\":\n    case \"https:\":\n    case \"ftp:\":\n    case \"mailto:\":\n    case \"tel:\":\n      return true;\n    default:\n      return false;\n  }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n  if (!url) {\n    return null;\n  }\n  try {\n    if (options && typeof url === \"string\") {\n      // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n      if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n        const dots = url.match(/\\./g);\n        // Avoid accidentally matching a *relative* URL pointing to a file named\n        // e.g. \"www.pdf\" or similar.\n        if (dots?.length >= 2) {\n          url = `http://${url}`;\n        }\n      }\n\n      // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n      // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n      if (options.tryConvertEncoding) {\n        try {\n          url = stringToUTF8String(url);\n        } catch {}\n      }\n    }\n\n    const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n    if (_isValidProtocol(absoluteUrl)) {\n      return absoluteUrl;\n    }\n  } catch {\n    /* `new URL()` will throw on incorrect data. */\n  }\n  return null;\n}\n\nfunction shadow(obj, prop, value, nonSerializable = false) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n    assert(\n      prop in obj,\n      `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n    );\n  }\n  Object.defineProperty(obj, prop, {\n    value,\n    enumerable: !nonSerializable,\n    configurable: true,\n    writable: false,\n  });\n  return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n  // eslint-disable-next-line no-shadow\n  function BaseException(message, name) {\n    if (this.constructor === BaseException) {\n      unreachable(\"Cannot initialize BaseException.\");\n    }\n    this.message = message;\n    this.name = name;\n  }\n  BaseException.prototype = new Error();\n  BaseException.constructor = BaseException;\n\n  return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n  constructor(msg, code) {\n    super(msg, \"PasswordException\");\n    this.code = code;\n  }\n}\n\nclass UnknownErrorException extends BaseException {\n  constructor(msg, details) {\n    super(msg, \"UnknownErrorException\");\n    this.details = details;\n  }\n}\n\nclass InvalidPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"InvalidPDFException\");\n  }\n}\n\nclass MissingPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"MissingPDFException\");\n  }\n}\n\nclass UnexpectedResponseException extends BaseException {\n  constructor(msg, status) {\n    super(msg, \"UnexpectedResponseException\");\n    this.status = status;\n  }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n  constructor(msg) {\n    super(msg, \"FormatError\");\n  }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n  constructor(msg) {\n    super(msg, \"AbortException\");\n  }\n}\n\nfunction bytesToString(bytes) {\n  if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n    unreachable(\"Invalid argument for bytesToString\");\n  }\n  const length = bytes.length;\n  const MAX_ARGUMENT_COUNT = 8192;\n  if (length < MAX_ARGUMENT_COUNT) {\n    return String.fromCharCode.apply(null, bytes);\n  }\n  const strBuf = [];\n  for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n    const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n    const chunk = bytes.subarray(i, chunkEnd);\n    strBuf.push(String.fromCharCode.apply(null, chunk));\n  }\n  return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n  if (typeof str !== \"string\") {\n    unreachable(\"Invalid argument for stringToBytes\");\n  }\n  const length = str.length;\n  const bytes = new Uint8Array(length);\n  for (let i = 0; i < length; ++i) {\n    bytes[i] = str.charCodeAt(i) & 0xff;\n  }\n  return bytes;\n}\n\nfunction string32(value) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n    assert(\n      typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n      `string32: Unexpected input \"${value}\".`\n    );\n  }\n  return String.fromCharCode(\n    (value >> 24) & 0xff,\n    (value >> 16) & 0xff,\n    (value >> 8) & 0xff,\n    value & 0xff\n  );\n}\n\nfunction objectSize(obj) {\n  return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n  const obj = Object.create(null);\n  for (const [key, value] of map) {\n    obj[key] = value;\n  }\n  return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n  const buffer8 = new Uint8Array(4);\n  buffer8[0] = 1;\n  const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n  return view32[0] === 1;\n}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n  try {\n    new Function(\"\"); // eslint-disable-line no-new, no-new-func\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nclass FeatureTest {\n  static get isLittleEndian() {\n    return shadow(this, \"isLittleEndian\", isLittleEndian());\n  }\n\n  static get isEvalSupported() {\n    return shadow(this, \"isEvalSupported\", isEvalSupported());\n  }\n\n  static get isOffscreenCanvasSupported() {\n    return shadow(\n      this,\n      \"isOffscreenCanvasSupported\",\n      typeof OffscreenCanvas !== \"undefined\"\n    );\n  }\n\n  static get platform() {\n    if (\n      (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n      (typeof navigator !== \"undefined\" &&\n        typeof navigator?.platform === \"string\")\n    ) {\n      return shadow(this, \"platform\", {\n        isMac: navigator.platform.includes(\"Mac\"),\n      });\n    }\n    return shadow(this, \"platform\", { isMac: false });\n  }\n\n  static get isCSSRoundSupported() {\n    return shadow(\n      this,\n      \"isCSSRoundSupported\",\n      globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\")\n    );\n  }\n}\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n  n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n  static makeHexColor(r, g, b) {\n    return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n  }\n\n  // Apply a scaling matrix to some min/max values.\n  // If a scaling factor is negative then min and max must be\n  // swaped.\n  static scaleMinMax(transform, minMax) {\n    let temp;\n    if (transform[0]) {\n      if (transform[0] < 0) {\n        temp = minMax[0];\n        minMax[0] = minMax[1];\n        minMax[1] = temp;\n      }\n      minMax[0] *= transform[0];\n      minMax[1] *= transform[0];\n\n      if (transform[3] < 0) {\n        temp = minMax[2];\n        minMax[2] = minMax[3];\n        minMax[3] = temp;\n      }\n      minMax[2] *= transform[3];\n      minMax[3] *= transform[3];\n    } else {\n      temp = minMax[0];\n      minMax[0] = minMax[2];\n      minMax[2] = temp;\n      temp = minMax[1];\n      minMax[1] = minMax[3];\n      minMax[3] = temp;\n\n      if (transform[1] < 0) {\n        temp = minMax[2];\n        minMax[2] = minMax[3];\n        minMax[3] = temp;\n      }\n      minMax[2] *= transform[1];\n      minMax[3] *= transform[1];\n\n      if (transform[2] < 0) {\n        temp = minMax[0];\n        minMax[0] = minMax[1];\n        minMax[1] = temp;\n      }\n      minMax[0] *= transform[2];\n      minMax[1] *= transform[2];\n    }\n    minMax[0] += transform[4];\n    minMax[1] += transform[4];\n    minMax[2] += transform[5];\n    minMax[3] += transform[5];\n  }\n\n  // Concatenates two transformation matrices together and returns the result.\n  static transform(m1, m2) {\n    return [\n      m1[0] * m2[0] + m1[2] * m2[1],\n      m1[1] * m2[0] + m1[3] * m2[1],\n      m1[0] * m2[2] + m1[2] * m2[3],\n      m1[1] * m2[2] + m1[3] * m2[3],\n      m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n      m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n    ];\n  }\n\n  // For 2d affine transforms\n  static applyTransform(p, m) {\n    const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n    const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n    return [xt, yt];\n  }\n\n  static applyInverseTransform(p, m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n    const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n    return [xt, yt];\n  }\n\n  // Applies the transform to the rectangle and finds the minimum axially\n  // aligned bounding box.\n  static getAxialAlignedBoundingBox(r, m) {\n    const p1 = this.applyTransform(r, m);\n    const p2 = this.applyTransform(r.slice(2, 4), m);\n    const p3 = this.applyTransform([r[0], r[3]], m);\n    const p4 = this.applyTransform([r[2], r[1]], m);\n    return [\n      Math.min(p1[0], p2[0], p3[0], p4[0]),\n      Math.min(p1[1], p2[1], p3[1], p4[1]),\n      Math.max(p1[0], p2[0], p3[0], p4[0]),\n      Math.max(p1[1], p2[1], p3[1], p4[1]),\n    ];\n  }\n\n  static inverseTransform(m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    return [\n      m[3] / d,\n      -m[1] / d,\n      -m[2] / d,\n      m[0] / d,\n      (m[2] * m[5] - m[4] * m[3]) / d,\n      (m[4] * m[1] - m[5] * m[0]) / d,\n    ];\n  }\n\n  // This calculation uses Singular Value Decomposition.\n  // The SVD can be represented with formula A = USV. We are interested in the\n  // matrix S here because it represents the scale values.\n  static singularValueDecompose2dScale(m) {\n    const transpose = [m[0], m[2], m[1], m[3]];\n\n    // Multiply matrix m with its transpose.\n    const a = m[0] * transpose[0] + m[1] * transpose[2];\n    const b = m[0] * transpose[1] + m[1] * transpose[3];\n    const c = m[2] * transpose[0] + m[3] * transpose[2];\n    const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n    // Solve the second degree polynomial to get roots.\n    const first = (a + d) / 2;\n    const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n    const sx = first + second || 1;\n    const sy = first - second || 1;\n\n    // Scale values are the square roots of the eigenvalues.\n    return [Math.sqrt(sx), Math.sqrt(sy)];\n  }\n\n  // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n  // For coordinate systems whose origin lies in the bottom-left, this\n  // means normalization to (BL,TR) ordering. For systems with origin in the\n  // top-left, this means (TL,BR) ordering.\n  static normalizeRect(rect) {\n    const r = rect.slice(0); // clone rect\n    if (rect[0] > rect[2]) {\n      r[0] = rect[2];\n      r[2] = rect[0];\n    }\n    if (rect[1] > rect[3]) {\n      r[1] = rect[3];\n      r[3] = rect[1];\n    }\n    return r;\n  }\n\n  // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n  // intersection of rect1 and rect2. If no intersection, returns 'null'\n  // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n  static intersect(rect1, rect2) {\n    const xLow = Math.max(\n      Math.min(rect1[0], rect1[2]),\n      Math.min(rect2[0], rect2[2])\n    );\n    const xHigh = Math.min(\n      Math.max(rect1[0], rect1[2]),\n      Math.max(rect2[0], rect2[2])\n    );\n    if (xLow > xHigh) {\n      return null;\n    }\n    const yLow = Math.max(\n      Math.min(rect1[1], rect1[3]),\n      Math.min(rect2[1], rect2[3])\n    );\n    const yHigh = Math.min(\n      Math.max(rect1[1], rect1[3]),\n      Math.max(rect2[1], rect2[3])\n    );\n    if (yLow > yHigh) {\n      return null;\n    }\n\n    return [xLow, yLow, xHigh, yHigh];\n  }\n\n  // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n  static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n    const tvalues = [],\n      bounds = [[], []];\n    let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n    for (let i = 0; i < 2; ++i) {\n      if (i === 0) {\n        b = 6 * x0 - 12 * x1 + 6 * x2;\n        a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n        c = 3 * x1 - 3 * x0;\n      } else {\n        b = 6 * y0 - 12 * y1 + 6 * y2;\n        a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n        c = 3 * y1 - 3 * y0;\n      }\n      if (Math.abs(a) < 1e-12) {\n        if (Math.abs(b) < 1e-12) {\n          continue;\n        }\n        t = -c / b;\n        if (0 < t && t < 1) {\n          tvalues.push(t);\n        }\n        continue;\n      }\n      b2ac = b * b - 4 * c * a;\n      sqrtb2ac = Math.sqrt(b2ac);\n      if (b2ac < 0) {\n        continue;\n      }\n      t1 = (-b + sqrtb2ac) / (2 * a);\n      if (0 < t1 && t1 < 1) {\n        tvalues.push(t1);\n      }\n      t2 = (-b - sqrtb2ac) / (2 * a);\n      if (0 < t2 && t2 < 1) {\n        tvalues.push(t2);\n      }\n    }\n\n    let j = tvalues.length,\n      mt;\n    const jlen = j;\n    while (j--) {\n      t = tvalues[j];\n      mt = 1 - t;\n      bounds[0][j] =\n        mt * mt * mt * x0 +\n        3 * mt * mt * t * x1 +\n        3 * mt * t * t * x2 +\n        t * t * t * x3;\n      bounds[1][j] =\n        mt * mt * mt * y0 +\n        3 * mt * mt * t * y1 +\n        3 * mt * t * t * y2 +\n        t * t * t * y3;\n    }\n\n    bounds[0][jlen] = x0;\n    bounds[1][jlen] = y0;\n    bounds[0][jlen + 1] = x3;\n    bounds[1][jlen + 1] = y3;\n    bounds[0].length = bounds[1].length = jlen + 2;\n\n    return [\n      Math.min(...bounds[0]),\n      Math.min(...bounds[1]),\n      Math.max(...bounds[0]),\n      Math.max(...bounds[1]),\n    ];\n  }\n}\n\nconst PDFStringTranslateTable = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n  0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n  0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n  0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n  0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n  if (str[0] >= \"\\xEF\") {\n    let encoding;\n    if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n      encoding = \"utf-16be\";\n    } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n      encoding = \"utf-16le\";\n    } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n      encoding = \"utf-8\";\n    }\n\n    if (encoding) {\n      try {\n        const decoder = new TextDecoder(encoding, { fatal: true });\n        const buffer = stringToBytes(str);\n        return decoder.decode(buffer);\n      } catch (ex) {\n        warn(`stringToPDFString: \"${ex}\".`);\n      }\n    }\n  }\n  // ISO Latin 1\n  const strBuf = [];\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const code = PDFStringTranslateTable[str.charCodeAt(i)];\n    strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n  }\n  return strBuf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n  return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n  return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n  return typeof v === \"object\" && v?.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n  if (arr1.length !== arr2.length) {\n    return false;\n  }\n  for (let i = 0, ii = arr1.length; i < ii; i++) {\n    if (arr1[i] !== arr2[i]) {\n      return false;\n    }\n  }\n  return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n  const buffer = [\n    date.getUTCFullYear().toString(),\n    (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n    date.getUTCDate().toString().padStart(2, \"0\"),\n    date.getUTCHours().toString().padStart(2, \"0\"),\n    date.getUTCMinutes().toString().padStart(2, \"0\"),\n    date.getUTCSeconds().toString().padStart(2, \"0\"),\n  ];\n\n  return buffer.join(\"\");\n}\n\nclass PromiseCapability {\n  #settled = false;\n\n  constructor() {\n    /**\n     * @type {Promise<any>} The Promise object.\n     */\n    this.promise = new Promise((resolve, reject) => {\n      /**\n       * @type {function} Fulfills the Promise.\n       */\n      this.resolve = data => {\n        this.#settled = true;\n        resolve(data);\n      };\n\n      /**\n       * @type {function} Rejects the Promise.\n       */\n      this.reject = reason => {\n        if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n          assert(reason instanceof Error, 'Expected valid \"reason\" argument.');\n        }\n        this.#settled = true;\n        reject(reason);\n      };\n    });\n  }\n\n  /**\n   * @type {boolean} If the Promise has been fulfilled/rejected.\n   */\n  get settled() {\n    return this.#settled;\n  }\n}\n\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n  if (!NormalizeRegex) {\n    // In order to generate the following regex:\n    //  - create a PDF containing all the chars in the range 0000-FFFF with\n    //    a NFKC which is different of the char.\n    //  - copy and paste all those chars and get the ones where NFKC is\n    //    required.\n    // It appears that most the chars here contain some ligatures.\n    NormalizeRegex =\n      /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n    NormalizationMap = new Map([[\"ﬅ\", \"ſt\"]]);\n  }\n  return str.replaceAll(NormalizeRegex, (_, p1, p2) => {\n    return p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2);\n  });\n}\n\nfunction getUuid() {\n  if (\n    (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n    (typeof crypto !== \"undefined\" && typeof crypto?.randomUUID === \"function\")\n  ) {\n    return crypto.randomUUID();\n  }\n  const buf = new Uint8Array(32);\n  if (\n    typeof crypto !== \"undefined\" &&\n    typeof crypto?.getRandomValues === \"function\"\n  ) {\n    crypto.getRandomValues(buf);\n  } else {\n    for (let i = 0; i < 32; i++) {\n      buf[i] = Math.floor(Math.random() * 255);\n    }\n  }\n  return bytesToString(buf);\n}\n\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\n\nexport {\n  AbortException,\n  AnnotationActionEventType,\n  AnnotationBorderStyleType,\n  AnnotationEditorParamsType,\n  AnnotationEditorPrefix,\n  AnnotationEditorType,\n  AnnotationFieldFlag,\n  AnnotationFlag,\n  AnnotationMode,\n  AnnotationPrefix,\n  AnnotationReplyType,\n  AnnotationType,\n  assert,\n  BaseException,\n  BASELINE_FACTOR,\n  bytesToString,\n  CMapCompressionType,\n  createValidAbsoluteUrl,\n  DocumentActionEventType,\n  FeatureTest,\n  FONT_IDENTITY_MATRIX,\n  FormatError,\n  getModificationDate,\n  getUuid,\n  getVerbosityLevel,\n  IDENTITY_MATRIX,\n  ImageKind,\n  info,\n  InvalidPDFException,\n  isArrayBuffer,\n  isArrayEqual,\n  isNodeJS,\n  LINE_DESCENT_FACTOR,\n  LINE_FACTOR,\n  MAX_IMAGE_SIZE_TO_CACHE,\n  MissingPDFException,\n  normalizeUnicode,\n  objectFromMap,\n  objectSize,\n  OPS,\n  PageActionEventType,\n  PasswordException,\n  PasswordResponses,\n  PermissionFlag,\n  PromiseCapability,\n  RenderingIntentFlag,\n  setVerbosityLevel,\n  shadow,\n  string32,\n  stringToBytes,\n  stringToPDFString,\n  stringToUTF8String,\n  TextRenderingMode,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  unreachable,\n  utf8StringToString,\n  Util,\n  VerbosityLevel,\n  warn,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, shadow, unreachable } from \"../shared/util.js\";\n\nconst CIRCULAR_REF = Symbol(\"CIRCULAR_REF\");\nconst EOF = Symbol(\"EOF\");\n\nlet CmdCache = Object.create(null);\nlet NameCache = Object.create(null);\nlet RefCache = Object.create(null);\n\nfunction clearPrimitiveCaches() {\n  CmdCache = Object.create(null);\n  NameCache = Object.create(null);\n  RefCache = Object.create(null);\n}\n\nclass Name {\n  constructor(name) {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      typeof name !== \"string\"\n    ) {\n      unreachable('Name: The \"name\" must be a string.');\n    }\n    this.name = name;\n  }\n\n  static get(name) {\n    // eslint-disable-next-line no-restricted-syntax\n    return (NameCache[name] ||= new Name(name));\n  }\n}\n\nclass Cmd {\n  constructor(cmd) {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      typeof cmd !== \"string\"\n    ) {\n      unreachable('Cmd: The \"cmd\" must be a string.');\n    }\n    this.cmd = cmd;\n  }\n\n  static get(cmd) {\n    // eslint-disable-next-line no-restricted-syntax\n    return (CmdCache[cmd] ||= new Cmd(cmd));\n  }\n}\n\nconst nonSerializable = function nonSerializableClosure() {\n  return nonSerializable; // Creating closure on some variable.\n};\n\nclass Dict {\n  constructor(xref = null) {\n    // Map should only be used internally, use functions below to access.\n    this._map = Object.create(null);\n    this.xref = xref;\n    this.objId = null;\n    this.suppressEncryption = false;\n    this.__nonSerializable__ = nonSerializable; // Disable cloning of the Dict.\n  }\n\n  assignXref(newXref) {\n    this.xref = newXref;\n  }\n\n  get size() {\n    return Object.keys(this._map).length;\n  }\n\n  // Automatically dereferences Ref objects.\n  get(key1, key2, key3) {\n    let value = this._map[key1];\n    if (value === undefined && key2 !== undefined) {\n      if (\n        (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n        key2.length < key1.length\n      ) {\n        unreachable(\"Dict.get: Expected keys to be ordered by length.\");\n      }\n      value = this._map[key2];\n      if (value === undefined && key3 !== undefined) {\n        if (\n          (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n          key3.length < key2.length\n        ) {\n          unreachable(\"Dict.get: Expected keys to be ordered by length.\");\n        }\n        value = this._map[key3];\n      }\n    }\n    if (value instanceof Ref && this.xref) {\n      return this.xref.fetch(value, this.suppressEncryption);\n    }\n    return value;\n  }\n\n  // Same as get(), but returns a promise and uses fetchIfRefAsync().\n  async getAsync(key1, key2, key3) {\n    let value = this._map[key1];\n    if (value === undefined && key2 !== undefined) {\n      if (\n        (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n        key2.length < key1.length\n      ) {\n        unreachable(\"Dict.getAsync: Expected keys to be ordered by length.\");\n      }\n      value = this._map[key2];\n      if (value === undefined && key3 !== undefined) {\n        if (\n          (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n          key3.length < key2.length\n        ) {\n          unreachable(\"Dict.getAsync: Expected keys to be ordered by length.\");\n        }\n        value = this._map[key3];\n      }\n    }\n    if (value instanceof Ref && this.xref) {\n      return this.xref.fetchAsync(value, this.suppressEncryption);\n    }\n    return value;\n  }\n\n  // Same as get(), but dereferences all elements if the result is an Array.\n  getArray(key1, key2, key3) {\n    let value = this._map[key1];\n    if (value === undefined && key2 !== undefined) {\n      if (\n        (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n        key2.length < key1.length\n      ) {\n        unreachable(\"Dict.getArray: Expected keys to be ordered by length.\");\n      }\n      value = this._map[key2];\n      if (value === undefined && key3 !== undefined) {\n        if (\n          (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n          key3.length < key2.length\n        ) {\n          unreachable(\"Dict.getArray: Expected keys to be ordered by length.\");\n        }\n        value = this._map[key3];\n      }\n    }\n    if (value instanceof Ref && this.xref) {\n      value = this.xref.fetch(value, this.suppressEncryption);\n    }\n\n    if (Array.isArray(value)) {\n      value = value.slice(); // Ensure that we don't modify the Dict data.\n      for (let i = 0, ii = value.length; i < ii; i++) {\n        if (value[i] instanceof Ref && this.xref) {\n          value[i] = this.xref.fetch(value[i], this.suppressEncryption);\n        }\n      }\n    }\n    return value;\n  }\n\n  // No dereferencing.\n  getRaw(key) {\n    return this._map[key];\n  }\n\n  getKeys() {\n    return Object.keys(this._map);\n  }\n\n  // No dereferencing.\n  getRawValues() {\n    return Object.values(this._map);\n  }\n\n  set(key, value) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      if (typeof key !== \"string\") {\n        unreachable('Dict.set: The \"key\" must be a string.');\n      } else if (value === undefined) {\n        unreachable('Dict.set: The \"value\" cannot be undefined.');\n      }\n    }\n    this._map[key] = value;\n  }\n\n  has(key) {\n    return this._map[key] !== undefined;\n  }\n\n  forEach(callback) {\n    for (const key in this._map) {\n      callback(key, this.get(key));\n    }\n  }\n\n  static get empty() {\n    const emptyDict = new Dict(null);\n\n    emptyDict.set = (key, value) => {\n      unreachable(\"Should not call `set` on the empty dictionary.\");\n    };\n    return shadow(this, \"empty\", emptyDict);\n  }\n\n  static merge({ xref, dictArray, mergeSubDicts = false }) {\n    const mergedDict = new Dict(xref),\n      properties = new Map();\n\n    for (const dict of dictArray) {\n      if (!(dict instanceof Dict)) {\n        continue;\n      }\n      for (const [key, value] of Object.entries(dict._map)) {\n        let property = properties.get(key);\n        if (property === undefined) {\n          property = [];\n          properties.set(key, property);\n        } else if (!mergeSubDicts || !(value instanceof Dict)) {\n          // Ignore additional entries, if either:\n          //  - This is a \"shallow\" merge, where only the first element matters.\n          //  - The value is *not* a `Dict`, since other types cannot be merged.\n          continue;\n        }\n        property.push(value);\n      }\n    }\n    for (const [name, values] of properties) {\n      if (values.length === 1 || !(values[0] instanceof Dict)) {\n        mergedDict._map[name] = values[0];\n        continue;\n      }\n      const subDict = new Dict(xref);\n\n      for (const dict of values) {\n        for (const [key, value] of Object.entries(dict._map)) {\n          if (subDict._map[key] === undefined) {\n            subDict._map[key] = value;\n          }\n        }\n      }\n      if (subDict.size > 0) {\n        mergedDict._map[name] = subDict;\n      }\n    }\n    properties.clear();\n\n    return mergedDict.size > 0 ? mergedDict : Dict.empty;\n  }\n\n  clone() {\n    const dict = new Dict(this.xref);\n    for (const key of this.getKeys()) {\n      dict.set(key, this.getRaw(key));\n    }\n    return dict;\n  }\n}\n\nclass Ref {\n  constructor(num, gen) {\n    this.num = num;\n    this.gen = gen;\n  }\n\n  toString() {\n    // This function is hot, so we make the string as compact as possible.\n    // |this.gen| is almost always zero, so we treat that case specially.\n    if (this.gen === 0) {\n      return `${this.num}R`;\n    }\n    return `${this.num}R${this.gen}`;\n  }\n\n  static fromString(str) {\n    const ref = RefCache[str];\n    if (ref) {\n      return ref;\n    }\n    const m = /^(\\d+)R(\\d*)$/.exec(str);\n    if (!m || m[1] === \"0\") {\n      return null;\n    }\n\n    // eslint-disable-next-line no-restricted-syntax\n    return (RefCache[str] = new Ref(\n      parseInt(m[1]),\n      !m[2] ? 0 : parseInt(m[2])\n    ));\n  }\n\n  static get(num, gen) {\n    const key = gen === 0 ? `${num}R` : `${num}R${gen}`;\n    // eslint-disable-next-line no-restricted-syntax\n    return (RefCache[key] ||= new Ref(num, gen));\n  }\n}\n\n// The reference is identified by number and generation.\n// This structure stores only one instance of the reference.\nclass RefSet {\n  constructor(parent = null) {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      parent &&\n      !(parent instanceof RefSet)\n    ) {\n      unreachable('RefSet: Invalid \"parent\" value.');\n    }\n    this._set = new Set(parent?._set);\n  }\n\n  has(ref) {\n    return this._set.has(ref.toString());\n  }\n\n  put(ref) {\n    this._set.add(ref.toString());\n  }\n\n  remove(ref) {\n    this._set.delete(ref.toString());\n  }\n\n  [Symbol.iterator]() {\n    return this._set.values();\n  }\n\n  clear() {\n    this._set.clear();\n  }\n}\n\nclass RefSetCache {\n  constructor() {\n    this._map = new Map();\n  }\n\n  get size() {\n    return this._map.size;\n  }\n\n  get(ref) {\n    return this._map.get(ref.toString());\n  }\n\n  has(ref) {\n    return this._map.has(ref.toString());\n  }\n\n  put(ref, obj) {\n    this._map.set(ref.toString(), obj);\n  }\n\n  putAlias(ref, aliasRef) {\n    this._map.set(ref.toString(), this.get(aliasRef));\n  }\n\n  [Symbol.iterator]() {\n    return this._map.values();\n  }\n\n  clear() {\n    this._map.clear();\n  }\n}\n\nfunction isName(v, name) {\n  return v instanceof Name && (name === undefined || v.name === name);\n}\n\nfunction isCmd(v, cmd) {\n  return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\n\nfunction isDict(v, type) {\n  return (\n    v instanceof Dict && (type === undefined || isName(v.get(\"Type\"), type))\n  );\n}\n\nfunction isRefsEqual(v1, v2) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n    assert(\n      v1 instanceof Ref && v2 instanceof Ref,\n      \"isRefsEqual: Both parameters should be `Ref`s.\"\n    );\n  }\n  return v1.num === v2.num && v1.gen === v2.gen;\n}\n\nexport {\n  CIRCULAR_REF,\n  clearPrimitiveCaches,\n  Cmd,\n  Dict,\n  EOF,\n  isCmd,\n  isDict,\n  isName,\n  isRefsEqual,\n  Name,\n  Ref,\n  RefSet,\n  RefSetCache,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bytesToString, shadow, unreachable } from \"../shared/util.js\";\n\nclass BaseStream {\n  constructor() {\n    if (this.constructor === BaseStream) {\n      unreachable(\"Cannot initialize BaseStream.\");\n    }\n  }\n\n  // eslint-disable-next-line getter-return\n  get length() {\n    unreachable(\"Abstract getter `length` accessed\");\n  }\n\n  // eslint-disable-next-line getter-return\n  get isEmpty() {\n    unreachable(\"Abstract getter `isEmpty` accessed\");\n  }\n\n  get isDataLoaded() {\n    return shadow(this, \"isDataLoaded\", true);\n  }\n\n  getByte() {\n    unreachable(\"Abstract method `getByte` called\");\n  }\n\n  getBytes(length) {\n    unreachable(\"Abstract method `getBytes` called\");\n  }\n\n  peekByte() {\n    const peekedByte = this.getByte();\n    if (peekedByte !== -1) {\n      this.pos--;\n    }\n    return peekedByte;\n  }\n\n  peekBytes(length) {\n    const bytes = this.getBytes(length);\n    this.pos -= bytes.length;\n    return bytes;\n  }\n\n  getUint16() {\n    const b0 = this.getByte();\n    const b1 = this.getByte();\n    if (b0 === -1 || b1 === -1) {\n      return -1;\n    }\n    return (b0 << 8) + b1;\n  }\n\n  getInt32() {\n    const b0 = this.getByte();\n    const b1 = this.getByte();\n    const b2 = this.getByte();\n    const b3 = this.getByte();\n    return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n  }\n\n  getByteRange(begin, end) {\n    unreachable(\"Abstract method `getByteRange` called\");\n  }\n\n  getString(length) {\n    return bytesToString(this.getBytes(length));\n  }\n\n  skip(n) {\n    this.pos += n || 1;\n  }\n\n  reset() {\n    unreachable(\"Abstract method `reset` called\");\n  }\n\n  moveStart() {\n    unreachable(\"Abstract method `moveStart` called\");\n  }\n\n  makeSubStream(start, length, dict = null) {\n    unreachable(\"Abstract method `makeSubStream` called\");\n  }\n\n  /**\n   * @returns {Array | null}\n   */\n  getBaseStreams() {\n    return null;\n  }\n}\n\nexport { BaseStream };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AnnotationEditorPrefix,\n  assert,\n  BaseException,\n  objectSize,\n  stringToPDFString,\n  warn,\n} from \"../shared/util.js\";\nimport { Dict, isName, Ref, RefSet } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\n\nconst PDF_VERSION_REGEXP = /^[1-9]\\.\\d$/;\n\nfunction getLookupTableFactory(initializer) {\n  let lookup;\n  return function () {\n    if (initializer) {\n      lookup = Object.create(null);\n      initializer(lookup);\n      initializer = null;\n    }\n    return lookup;\n  };\n}\n\nclass MissingDataException extends BaseException {\n  constructor(begin, end) {\n    super(`Missing data [${begin}, ${end})`, \"MissingDataException\");\n    this.begin = begin;\n    this.end = end;\n  }\n}\n\nclass ParserEOFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"ParserEOFException\");\n  }\n}\n\nclass XRefEntryException extends BaseException {\n  constructor(msg) {\n    super(msg, \"XRefEntryException\");\n  }\n}\n\nclass XRefParseException extends BaseException {\n  constructor(msg) {\n    super(msg, \"XRefParseException\");\n  }\n}\n\n/**\n * Combines multiple ArrayBuffers into a single Uint8Array.\n * @param {Array<ArrayBuffer>} arr - An array of ArrayBuffers.\n * @returns {Uint8Array}\n */\nfunction arrayBuffersToBytes(arr) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n    for (const item of arr) {\n      assert(\n        item instanceof ArrayBuffer,\n        \"arrayBuffersToBytes - expected an ArrayBuffer.\"\n      );\n    }\n  }\n  const length = arr.length;\n  if (length === 0) {\n    return new Uint8Array(0);\n  }\n  if (length === 1) {\n    return new Uint8Array(arr[0]);\n  }\n  let dataLength = 0;\n  for (let i = 0; i < length; i++) {\n    dataLength += arr[i].byteLength;\n  }\n  const data = new Uint8Array(dataLength);\n  let pos = 0;\n  for (let i = 0; i < length; i++) {\n    const item = new Uint8Array(arr[i]);\n    data.set(item, pos);\n    pos += item.byteLength;\n  }\n  return data;\n}\n\n/**\n * Get the value of an inheritable property.\n *\n * If the PDF specification explicitly lists a property in a dictionary as\n * inheritable, then the value of the property may be present in the dictionary\n * itself or in one or more parents of the dictionary.\n *\n * If the key is not found in the tree, `undefined` is returned. Otherwise,\n * the value for the key is returned or, if `stopWhenFound` is `false`, a list\n * of values is returned.\n *\n * @param {Dict} dict - Dictionary from where to start the traversal.\n * @param {string} key - The key of the property to find the value for.\n * @param {boolean} getArray - Whether or not the value should be fetched as an\n *   array. The default value is `false`.\n * @param {boolean} stopWhenFound - Whether or not to stop the traversal when\n *   the key is found. If set to `false`, we always walk up the entire parent\n *   chain, for example to be able to find `\\Resources` placed on multiple\n *   levels of the tree. The default value is `true`.\n */\nfunction getInheritableProperty({\n  dict,\n  key,\n  getArray = false,\n  stopWhenFound = true,\n}) {\n  let values;\n  const visited = new RefSet();\n\n  while (dict instanceof Dict && !(dict.objId && visited.has(dict.objId))) {\n    if (dict.objId) {\n      visited.put(dict.objId);\n    }\n    const value = getArray ? dict.getArray(key) : dict.get(key);\n    if (value !== undefined) {\n      if (stopWhenFound) {\n        return value;\n      }\n      (values ||= []).push(value);\n    }\n    dict = dict.get(\"Parent\");\n  }\n  return values;\n}\n\n// prettier-ignore\nconst ROMAN_NUMBER_MAP = [\n  \"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\",\n  \"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\",\n  \"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"\n];\n\n/**\n * Converts positive integers to (upper case) Roman numerals.\n * @param {number} number - The number that should be converted.\n * @param {boolean} lowerCase - Indicates if the result should be converted\n *   to lower case letters. The default value is `false`.\n * @returns {string} The resulting Roman number.\n */\nfunction toRomanNumerals(number, lowerCase = false) {\n  assert(\n    Number.isInteger(number) && number > 0,\n    \"The number should be a positive integer.\"\n  );\n  const romanBuf = [];\n  let pos;\n  // Thousands\n  while (number >= 1000) {\n    number -= 1000;\n    romanBuf.push(\"M\");\n  }\n  // Hundreds\n  pos = (number / 100) | 0;\n  number %= 100;\n  romanBuf.push(ROMAN_NUMBER_MAP[pos]);\n  // Tens\n  pos = (number / 10) | 0;\n  number %= 10;\n  romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\n  // Ones\n  romanBuf.push(ROMAN_NUMBER_MAP[20 + number]); // eslint-disable-line unicorn/no-array-push-push\n\n  const romanStr = romanBuf.join(\"\");\n  return lowerCase ? romanStr.toLowerCase() : romanStr;\n}\n\n// Calculate the base 2 logarithm of the number `x`. This differs from the\n// native function in the sense that it returns the ceiling value and that it\n// returns 0 instead of `Infinity`/`NaN` for `x` values smaller than/equal to 0.\nfunction log2(x) {\n  if (x <= 0) {\n    return 0;\n  }\n  return Math.ceil(Math.log2(x));\n}\n\nfunction readInt8(data, offset) {\n  return (data[offset] << 24) >> 24;\n}\n\nfunction readUint16(data, offset) {\n  return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction readUint32(data, offset) {\n  return (\n    ((data[offset] << 24) |\n      (data[offset + 1] << 16) |\n      (data[offset + 2] << 8) |\n      data[offset + 3]) >>>\n    0\n  );\n}\n\n// Checks if ch is one of the following characters: SPACE, TAB, CR or LF.\nfunction isWhiteSpace(ch) {\n  return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\n}\n\n/**\n * AcroForm field names use an array like notation to refer to\n * repeated XFA elements e.g. foo.bar[nnn].\n * see: XFA Spec Chapter 3 - Repeated Elements\n *\n * @param {string} path - XFA path name.\n * @returns {Array} - Array of Objects with the name and pos of\n * each part of the path.\n */\nfunction parseXFAPath(path) {\n  const positionPattern = /(.+)\\[(\\d+)\\]$/;\n  return path.split(\".\").map(component => {\n    const m = component.match(positionPattern);\n    if (m) {\n      return { name: m[1], pos: parseInt(m[2], 10) };\n    }\n    return { name: component, pos: 0 };\n  });\n}\n\nfunction escapePDFName(str) {\n  const buffer = [];\n  let start = 0;\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const char = str.charCodeAt(i);\n    // Whitespace or delimiters aren't regular chars, so escape them.\n    if (\n      char < 0x21 ||\n      char > 0x7e ||\n      char === 0x23 /* # */ ||\n      char === 0x28 /* ( */ ||\n      char === 0x29 /* ) */ ||\n      char === 0x3c /* < */ ||\n      char === 0x3e /* > */ ||\n      char === 0x5b /* [ */ ||\n      char === 0x5d /* ] */ ||\n      char === 0x7b /* { */ ||\n      char === 0x7d /* } */ ||\n      char === 0x2f /* / */ ||\n      char === 0x25 /* % */\n    ) {\n      if (start < i) {\n        buffer.push(str.substring(start, i));\n      }\n      buffer.push(`#${char.toString(16)}`);\n      start = i + 1;\n    }\n  }\n\n  if (buffer.length === 0) {\n    return str;\n  }\n\n  if (start < str.length) {\n    buffer.push(str.substring(start, str.length));\n  }\n\n  return buffer.join(\"\");\n}\n\n// Replace \"(\", \")\", \"\\n\", \"\\r\" and \"\\\" by \"\\(\", \"\\)\", \"\\\\n\", \"\\\\r\" and \"\\\\\"\n// in order to write it in a PDF file.\nfunction escapeString(str) {\n  return str.replaceAll(/([()\\\\\\n\\r])/g, match => {\n    if (match === \"\\n\") {\n      return \"\\\\n\";\n    } else if (match === \"\\r\") {\n      return \"\\\\r\";\n    }\n    return `\\\\${match}`;\n  });\n}\n\nfunction _collectJS(entry, xref, list, parents) {\n  if (!entry) {\n    return;\n  }\n\n  let parent = null;\n  if (entry instanceof Ref) {\n    if (parents.has(entry)) {\n      // If we've already found entry then we've a cycle.\n      return;\n    }\n    parent = entry;\n    parents.put(parent);\n    entry = xref.fetch(entry);\n  }\n  if (Array.isArray(entry)) {\n    for (const element of entry) {\n      _collectJS(element, xref, list, parents);\n    }\n  } else if (entry instanceof Dict) {\n    if (isName(entry.get(\"S\"), \"JavaScript\")) {\n      const js = entry.get(\"JS\");\n      let code;\n      if (js instanceof BaseStream) {\n        code = js.getString();\n      } else if (typeof js === \"string\") {\n        code = js;\n      }\n      code &&= stringToPDFString(code).replaceAll(\"\\x00\", \"\");\n      if (code) {\n        list.push(code);\n      }\n    }\n    _collectJS(entry.getRaw(\"Next\"), xref, list, parents);\n  }\n\n  if (parent) {\n    parents.remove(parent);\n  }\n}\n\nfunction collectActions(xref, dict, eventType) {\n  const actions = Object.create(null);\n  const additionalActionsDicts = getInheritableProperty({\n    dict,\n    key: \"AA\",\n    stopWhenFound: false,\n  });\n  if (additionalActionsDicts) {\n    // additionalActionsDicts contains dicts from ancestors\n    // as they're found in the tree from bottom to top.\n    // So the dicts are visited in reverse order to guarantee\n    // that actions from elder ancestors will be overwritten\n    // by ones from younger ancestors.\n    for (let i = additionalActionsDicts.length - 1; i >= 0; i--) {\n      const additionalActions = additionalActionsDicts[i];\n      if (!(additionalActions instanceof Dict)) {\n        continue;\n      }\n      for (const key of additionalActions.getKeys()) {\n        const action = eventType[key];\n        if (!action) {\n          continue;\n        }\n        const actionDict = additionalActions.getRaw(key);\n        const parents = new RefSet();\n        const list = [];\n        _collectJS(actionDict, xref, list, parents);\n        if (list.length > 0) {\n          actions[action] = list;\n        }\n      }\n    }\n  }\n  // Collect the Action if any (we may have one on pushbutton).\n  if (dict.has(\"A\")) {\n    const actionDict = dict.get(\"A\");\n    const parents = new RefSet();\n    const list = [];\n    _collectJS(actionDict, xref, list, parents);\n    if (list.length > 0) {\n      actions.Action = list;\n    }\n  }\n  return objectSize(actions) > 0 ? actions : null;\n}\n\nconst XMLEntities = {\n  /* < */ 0x3c: \"&lt;\",\n  /* > */ 0x3e: \"&gt;\",\n  /* & */ 0x26: \"&amp;\",\n  /* \" */ 0x22: \"&quot;\",\n  /* ' */ 0x27: \"&apos;\",\n};\n\nfunction encodeToXmlString(str) {\n  const buffer = [];\n  let start = 0;\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const char = str.codePointAt(i);\n    if (0x20 <= char && char <= 0x7e) {\n      // ascii\n      const entity = XMLEntities[char];\n      if (entity) {\n        if (start < i) {\n          buffer.push(str.substring(start, i));\n        }\n        buffer.push(entity);\n        start = i + 1;\n      }\n    } else {\n      if (start < i) {\n        buffer.push(str.substring(start, i));\n      }\n      buffer.push(`&#x${char.toString(16).toUpperCase()};`);\n      if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) {\n        // char is represented by two u16\n        i++;\n      }\n      start = i + 1;\n    }\n  }\n\n  if (buffer.length === 0) {\n    return str;\n  }\n  if (start < str.length) {\n    buffer.push(str.substring(start, str.length));\n  }\n  return buffer.join(\"\");\n}\n\nfunction validateFontName(fontFamily, mustWarn = false) {\n  // See https://developer.mozilla.org/en-US/docs/Web/CSS/string.\n  const m = /^(\"|').*(\"|')$/.exec(fontFamily);\n  if (m && m[1] === m[2]) {\n    const re = new RegExp(`[^\\\\\\\\]${m[1]}`);\n    if (re.test(fontFamily.slice(1, -1))) {\n      if (mustWarn) {\n        warn(`FontFamily contains unescaped ${m[1]}: ${fontFamily}.`);\n      }\n      return false;\n    }\n  } else {\n    // See https://developer.mozilla.org/en-US/docs/Web/CSS/custom-ident.\n    for (const ident of fontFamily.split(/[ \\t]+/)) {\n      if (/^(\\d|(-(\\d|-)))/.test(ident) || !/^[\\w-\\\\]+$/.test(ident)) {\n        if (mustWarn) {\n          warn(`FontFamily contains invalid <custom-ident>: ${fontFamily}.`);\n        }\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nfunction validateCSSFont(cssFontInfo) {\n  // See https://developer.mozilla.org/en-US/docs/Web/CSS/font-style.\n  const DEFAULT_CSS_FONT_OBLIQUE = \"14\";\n  // See https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight.\n  const DEFAULT_CSS_FONT_WEIGHT = \"400\";\n  const CSS_FONT_WEIGHT_VALUES = new Set([\n    \"100\",\n    \"200\",\n    \"300\",\n    \"400\",\n    \"500\",\n    \"600\",\n    \"700\",\n    \"800\",\n    \"900\",\n    \"1000\",\n    \"normal\",\n    \"bold\",\n    \"bolder\",\n    \"lighter\",\n  ]);\n\n  const { fontFamily, fontWeight, italicAngle } = cssFontInfo;\n\n  if (!validateFontName(fontFamily, true)) {\n    return false;\n  }\n\n  const weight = fontWeight ? fontWeight.toString() : \"\";\n  cssFontInfo.fontWeight = CSS_FONT_WEIGHT_VALUES.has(weight)\n    ? weight\n    : DEFAULT_CSS_FONT_WEIGHT;\n\n  const angle = parseFloat(italicAngle);\n  cssFontInfo.italicAngle =\n    isNaN(angle) || angle < -90 || angle > 90\n      ? DEFAULT_CSS_FONT_OBLIQUE\n      : italicAngle.toString();\n\n  return true;\n}\n\nfunction recoverJsURL(str) {\n  // Attempt to recover valid URLs from `JS` entries with certain\n  // white-listed formats:\n  //  - window.open('http://example.com')\n  //  - app.launchURL('http://example.com', true)\n  //  - xfa.host.gotoURL('http://example.com')\n  const URL_OPEN_METHODS = [\"app.launchURL\", \"window.open\", \"xfa.host.gotoURL\"];\n  const regex = new RegExp(\n    \"^\\\\s*(\" +\n      URL_OPEN_METHODS.join(\"|\").replaceAll(\".\", \"\\\\.\") +\n      \")\\\\((?:'|\\\")([^'\\\"]*)(?:'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))\",\n    \"i\"\n  );\n\n  const jsUrl = regex.exec(str);\n  if (jsUrl?.[2]) {\n    const url = jsUrl[2];\n    let newWindow = false;\n\n    if (jsUrl[3] === \"true\" && jsUrl[1] === \"app.launchURL\") {\n      newWindow = true;\n    }\n    return { url, newWindow };\n  }\n\n  return null;\n}\n\nfunction numberToString(value) {\n  if (Number.isInteger(value)) {\n    return value.toString();\n  }\n\n  const roundedValue = Math.round(value * 100);\n  if (roundedValue % 100 === 0) {\n    return (roundedValue / 100).toString();\n  }\n\n  if (roundedValue % 10 === 0) {\n    return value.toFixed(1);\n  }\n\n  return value.toFixed(2);\n}\n\nfunction getNewAnnotationsMap(annotationStorage) {\n  if (!annotationStorage) {\n    return null;\n  }\n  const newAnnotationsByPage = new Map();\n  // The concept of page in a XFA is very different, so\n  // editing is just not implemented.\n  for (const [key, value] of annotationStorage) {\n    if (!key.startsWith(AnnotationEditorPrefix)) {\n      continue;\n    }\n    let annotations = newAnnotationsByPage.get(value.pageIndex);\n    if (!annotations) {\n      annotations = [];\n      newAnnotationsByPage.set(value.pageIndex, annotations);\n    }\n    annotations.push(value);\n  }\n  return newAnnotationsByPage.size > 0 ? newAnnotationsByPage : null;\n}\n\nfunction isAscii(str) {\n  return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16HexString(str) {\n  const buf = [];\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const char = str.charCodeAt(i);\n    buf.push(\n      ((char >> 8) & 0xff).toString(16).padStart(2, \"0\"),\n      (char & 0xff).toString(16).padStart(2, \"0\")\n    );\n  }\n  return buf.join(\"\");\n}\n\nfunction stringToUTF16String(str, bigEndian = false) {\n  const buf = [];\n  if (bigEndian) {\n    buf.push(\"\\xFE\\xFF\");\n  }\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const char = str.charCodeAt(i);\n    buf.push(\n      String.fromCharCode((char >> 8) & 0xff),\n      String.fromCharCode(char & 0xff)\n    );\n  }\n  return buf.join(\"\");\n}\n\nfunction getRotationMatrix(rotation, width, height) {\n  switch (rotation) {\n    case 90:\n      return [0, 1, -1, 0, width, 0];\n    case 180:\n      return [-1, 0, 0, -1, width, height];\n    case 270:\n      return [0, -1, 1, 0, 0, height];\n    default:\n      throw new Error(\"Invalid rotation\");\n  }\n}\n\nexport {\n  arrayBuffersToBytes,\n  collectActions,\n  encodeToXmlString,\n  escapePDFName,\n  escapeString,\n  getInheritableProperty,\n  getLookupTableFactory,\n  getNewAnnotationsMap,\n  getRotationMatrix,\n  isAscii,\n  isWhiteSpace,\n  log2,\n  MissingDataException,\n  numberToString,\n  ParserEOFException,\n  parseXFAPath,\n  PDF_VERSION_REGEXP,\n  readInt8,\n  readUint16,\n  readUint32,\n  recoverJsURL,\n  stringToUTF16HexString,\n  stringToUTF16String,\n  toRomanNumerals,\n  validateCSSFont,\n  validateFontName,\n  XRefEntryException,\n  XRefParseException,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Table C-2\nconst QeTable = [\n  { qe: 0x5601, nmps: 1, nlps: 1, switchFlag: 1 },\n  { qe: 0x3401, nmps: 2, nlps: 6, switchFlag: 0 },\n  { qe: 0x1801, nmps: 3, nlps: 9, switchFlag: 0 },\n  { qe: 0x0ac1, nmps: 4, nlps: 12, switchFlag: 0 },\n  { qe: 0x0521, nmps: 5, nlps: 29, switchFlag: 0 },\n  { qe: 0x0221, nmps: 38, nlps: 33, switchFlag: 0 },\n  { qe: 0x5601, nmps: 7, nlps: 6, switchFlag: 1 },\n  { qe: 0x5401, nmps: 8, nlps: 14, switchFlag: 0 },\n  { qe: 0x4801, nmps: 9, nlps: 14, switchFlag: 0 },\n  { qe: 0x3801, nmps: 10, nlps: 14, switchFlag: 0 },\n  { qe: 0x3001, nmps: 11, nlps: 17, switchFlag: 0 },\n  { qe: 0x2401, nmps: 12, nlps: 18, switchFlag: 0 },\n  { qe: 0x1c01, nmps: 13, nlps: 20, switchFlag: 0 },\n  { qe: 0x1601, nmps: 29, nlps: 21, switchFlag: 0 },\n  { qe: 0x5601, nmps: 15, nlps: 14, switchFlag: 1 },\n  { qe: 0x5401, nmps: 16, nlps: 14, switchFlag: 0 },\n  { qe: 0x5101, nmps: 17, nlps: 15, switchFlag: 0 },\n  { qe: 0x4801, nmps: 18, nlps: 16, switchFlag: 0 },\n  { qe: 0x3801, nmps: 19, nlps: 17, switchFlag: 0 },\n  { qe: 0x3401, nmps: 20, nlps: 18, switchFlag: 0 },\n  { qe: 0x3001, nmps: 21, nlps: 19, switchFlag: 0 },\n  { qe: 0x2801, nmps: 22, nlps: 19, switchFlag: 0 },\n  { qe: 0x2401, nmps: 23, nlps: 20, switchFlag: 0 },\n  { qe: 0x2201, nmps: 24, nlps: 21, switchFlag: 0 },\n  { qe: 0x1c01, nmps: 25, nlps: 22, switchFlag: 0 },\n  { qe: 0x1801, nmps: 26, nlps: 23, switchFlag: 0 },\n  { qe: 0x1601, nmps: 27, nlps: 24, switchFlag: 0 },\n  { qe: 0x1401, nmps: 28, nlps: 25, switchFlag: 0 },\n  { qe: 0x1201, nmps: 29, nlps: 26, switchFlag: 0 },\n  { qe: 0x1101, nmps: 30, nlps: 27, switchFlag: 0 },\n  { qe: 0x0ac1, nmps: 31, nlps: 28, switchFlag: 0 },\n  { qe: 0x09c1, nmps: 32, nlps: 29, switchFlag: 0 },\n  { qe: 0x08a1, nmps: 33, nlps: 30, switchFlag: 0 },\n  { qe: 0x0521, nmps: 34, nlps: 31, switchFlag: 0 },\n  { qe: 0x0441, nmps: 35, nlps: 32, switchFlag: 0 },\n  { qe: 0x02a1, nmps: 36, nlps: 33, switchFlag: 0 },\n  { qe: 0x0221, nmps: 37, nlps: 34, switchFlag: 0 },\n  { qe: 0x0141, nmps: 38, nlps: 35, switchFlag: 0 },\n  { qe: 0x0111, nmps: 39, nlps: 36, switchFlag: 0 },\n  { qe: 0x0085, nmps: 40, nlps: 37, switchFlag: 0 },\n  { qe: 0x0049, nmps: 41, nlps: 38, switchFlag: 0 },\n  { qe: 0x0025, nmps: 42, nlps: 39, switchFlag: 0 },\n  { qe: 0x0015, nmps: 43, nlps: 40, switchFlag: 0 },\n  { qe: 0x0009, nmps: 44, nlps: 41, switchFlag: 0 },\n  { qe: 0x0005, nmps: 45, nlps: 42, switchFlag: 0 },\n  { qe: 0x0001, nmps: 45, nlps: 43, switchFlag: 0 },\n  { qe: 0x5601, nmps: 46, nlps: 46, switchFlag: 0 },\n];\n\n/**\n * This class implements the QM Coder decoding as defined in\n *   JPEG 2000 Part I Final Committee Draft Version 1.0\n *   Annex C.3 Arithmetic decoding procedure\n * available at http://www.jpeg.org/public/fcd15444-1.pdf\n *\n * The arithmetic decoder is used in conjunction with context models to decode\n * JPEG2000 and JBIG2 streams.\n */\nclass ArithmeticDecoder {\n  // C.3.5 Initialisation of the decoder (INITDEC)\n  constructor(data, start, end) {\n    this.data = data;\n    this.bp = start;\n    this.dataEnd = end;\n\n    this.chigh = data[start];\n    this.clow = 0;\n\n    this.byteIn();\n\n    this.chigh = ((this.chigh << 7) & 0xffff) | ((this.clow >> 9) & 0x7f);\n    this.clow = (this.clow << 7) & 0xffff;\n    this.ct -= 7;\n    this.a = 0x8000;\n  }\n\n  // C.3.4 Compressed data input (BYTEIN)\n  byteIn() {\n    const data = this.data;\n    let bp = this.bp;\n\n    if (data[bp] === 0xff) {\n      if (data[bp + 1] > 0x8f) {\n        this.clow += 0xff00;\n        this.ct = 8;\n      } else {\n        bp++;\n        this.clow += data[bp] << 9;\n        this.ct = 7;\n        this.bp = bp;\n      }\n    } else {\n      bp++;\n      this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xff00;\n      this.ct = 8;\n      this.bp = bp;\n    }\n    if (this.clow > 0xffff) {\n      this.chigh += this.clow >> 16;\n      this.clow &= 0xffff;\n    }\n  }\n\n  // C.3.2 Decoding a decision (DECODE)\n  readBit(contexts, pos) {\n    // Contexts are packed into 1 byte:\n    // highest 7 bits carry cx.index, lowest bit carries cx.mps\n    let cx_index = contexts[pos] >> 1,\n      cx_mps = contexts[pos] & 1;\n    const qeTableIcx = QeTable[cx_index];\n    const qeIcx = qeTableIcx.qe;\n    let d;\n    let a = this.a - qeIcx;\n\n    if (this.chigh < qeIcx) {\n      // exchangeLps\n      if (a < qeIcx) {\n        a = qeIcx;\n        d = cx_mps;\n        cx_index = qeTableIcx.nmps;\n      } else {\n        a = qeIcx;\n        d = 1 ^ cx_mps;\n        if (qeTableIcx.switchFlag === 1) {\n          cx_mps = d;\n        }\n        cx_index = qeTableIcx.nlps;\n      }\n    } else {\n      this.chigh -= qeIcx;\n      if ((a & 0x8000) !== 0) {\n        this.a = a;\n        return cx_mps;\n      }\n      // exchangeMps\n      if (a < qeIcx) {\n        d = 1 ^ cx_mps;\n        if (qeTableIcx.switchFlag === 1) {\n          cx_mps = d;\n        }\n        cx_index = qeTableIcx.nlps;\n      } else {\n        d = cx_mps;\n        cx_index = qeTableIcx.nmps;\n      }\n    }\n    // C.3.3 renormD;\n    do {\n      if (this.ct === 0) {\n        this.byteIn();\n      }\n\n      a <<= 1;\n      this.chigh = ((this.chigh << 1) & 0xffff) | ((this.clow >> 15) & 1);\n      this.clow = (this.clow << 1) & 0xffff;\n      this.ct--;\n    } while ((a & 0x8000) === 0);\n    this.a = a;\n\n    contexts[pos] = (cx_index << 1) | cx_mps;\n    return d;\n  }\n}\n\nexport { ArithmeticDecoder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The CCITT stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\nimport { FormatError, info } from \"../shared/util.js\";\n\n/**\n * @typedef {Object} CCITTFaxDecoderSource\n * @property {function} next - Method that return one byte of data for decoding,\n *   or -1 when EOF is reached.\n */\n\nconst ccittEOL = -2;\nconst ccittEOF = -1;\nconst twoDimPass = 0;\nconst twoDimHoriz = 1;\nconst twoDimVert0 = 2;\nconst twoDimVertR1 = 3;\nconst twoDimVertL1 = 4;\nconst twoDimVertR2 = 5;\nconst twoDimVertL2 = 6;\nconst twoDimVertR3 = 7;\nconst twoDimVertL3 = 8;\n\n// prettier-ignore\nconst twoDimTable = [\n  [-1, -1], [-1, -1],                   // 000000x\n  [7, twoDimVertL3],                    // 0000010\n  [7, twoDimVertR3],                    // 0000011\n  [6, twoDimVertL2], [6, twoDimVertL2], // 000010x\n  [6, twoDimVertR2], [6, twoDimVertR2], // 000011x\n  [4, twoDimPass], [4, twoDimPass],     // 0001xxx\n  [4, twoDimPass], [4, twoDimPass],\n  [4, twoDimPass], [4, twoDimPass],\n  [4, twoDimPass], [4, twoDimPass],\n  [3, twoDimHoriz], [3, twoDimHoriz],   // 001xxxx\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimVertL1], [3, twoDimVertL1], // 010xxxx\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertR1], [3, twoDimVertR1], // 011xxxx\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [1, twoDimVert0], [1, twoDimVert0],   // 1xxxxxx\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0]\n];\n\n// prettier-ignore\nconst whiteTable1 = [\n  [-1, -1],                               // 00000\n  [12, ccittEOL],                         // 00001\n  [-1, -1], [-1, -1],                     // 0001x\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 001xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 010xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 011xx\n  [11, 1792], [11, 1792],                 // 1000x\n  [12, 1984],                             // 10010\n  [12, 2048],                             // 10011\n  [12, 2112],                             // 10100\n  [12, 2176],                             // 10101\n  [12, 2240],                             // 10110\n  [12, 2304],                             // 10111\n  [11, 1856], [11, 1856],                 // 1100x\n  [11, 1920], [11, 1920],                 // 1101x\n  [12, 2368],                             // 11100\n  [12, 2432],                             // 11101\n  [12, 2496],                             // 11110\n  [12, 2560]                              // 11111\n];\n\n// prettier-ignore\nconst whiteTable2 = [\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],     // 0000000xx\n  [8, 29], [8, 29],                           // 00000010x\n  [8, 30], [8, 30],                           // 00000011x\n  [8, 45], [8, 45],                           // 00000100x\n  [8, 46], [8, 46],                           // 00000101x\n  [7, 22], [7, 22], [7, 22], [7, 22],         // 0000011xx\n  [7, 23], [7, 23], [7, 23], [7, 23],         // 0000100xx\n  [8, 47], [8, 47],                           // 00001010x\n  [8, 48], [8, 48],                           // 00001011x\n  [6, 13], [6, 13], [6, 13], [6, 13],         // 000011xxx\n  [6, 13], [6, 13], [6, 13], [6, 13],\n  [7, 20], [7, 20], [7, 20], [7, 20],         // 0001000xx\n  [8, 33], [8, 33],                           // 00010010x\n  [8, 34], [8, 34],                           // 00010011x\n  [8, 35], [8, 35],                           // 00010100x\n  [8, 36], [8, 36],                           // 00010101x\n  [8, 37], [8, 37],                           // 00010110x\n  [8, 38], [8, 38],                           // 00010111x\n  [7, 19], [7, 19], [7, 19], [7, 19],         // 0001100xx\n  [8, 31], [8, 31],                           // 00011010x\n  [8, 32], [8, 32],                           // 00011011x\n  [6, 1], [6, 1], [6, 1], [6, 1],             // 000111xxx\n  [6, 1], [6, 1], [6, 1], [6, 1],\n  [6, 12], [6, 12], [6, 12], [6, 12],         // 001000xxx\n  [6, 12], [6, 12], [6, 12], [6, 12],\n  [8, 53], [8, 53],                           // 00100100x\n  [8, 54], [8, 54],                           // 00100101x\n  [7, 26], [7, 26], [7, 26], [7, 26],         // 0010011xx\n  [8, 39], [8, 39],                           // 00101000x\n  [8, 40], [8, 40],                           // 00101001x\n  [8, 41], [8, 41],                           // 00101010x\n  [8, 42], [8, 42],                           // 00101011x\n  [8, 43], [8, 43],                           // 00101100x\n  [8, 44], [8, 44],                           // 00101101x\n  [7, 21], [7, 21], [7, 21], [7, 21],         // 0010111xx\n  [7, 28], [7, 28], [7, 28], [7, 28],         // 0011000xx\n  [8, 61], [8, 61],                           // 00110010x\n  [8, 62], [8, 62],                           // 00110011x\n  [8, 63], [8, 63],                           // 00110100x\n  [8, 0], [8, 0],                             // 00110101x\n  [8, 320], [8, 320],                         // 00110110x\n  [8, 384], [8, 384],                         // 00110111x\n  [5, 10], [5, 10], [5, 10], [5, 10],         // 00111xxxx\n  [5, 10], [5, 10], [5, 10], [5, 10],\n  [5, 10], [5, 10], [5, 10], [5, 10],\n  [5, 10], [5, 10], [5, 10], [5, 10],\n  [5, 11], [5, 11], [5, 11], [5, 11],         // 01000xxxx\n  [5, 11], [5, 11], [5, 11], [5, 11],\n  [5, 11], [5, 11], [5, 11], [5, 11],\n  [5, 11], [5, 11], [5, 11], [5, 11],\n  [7, 27], [7, 27], [7, 27], [7, 27],         // 0100100xx\n  [8, 59], [8, 59],                           // 01001010x\n  [8, 60], [8, 60],                           // 01001011x\n  [9, 1472],                                  // 010011000\n  [9, 1536],                                  // 010011001\n  [9, 1600],                                  // 010011010\n  [9, 1728],                                  // 010011011\n  [7, 18], [7, 18], [7, 18], [7, 18],         // 0100111xx\n  [7, 24], [7, 24], [7, 24], [7, 24],         // 0101000xx\n  [8, 49], [8, 49],                           // 01010010x\n  [8, 50], [8, 50],                           // 01010011x\n  [8, 51], [8, 51],                           // 01010100x\n  [8, 52], [8, 52],                           // 01010101x\n  [7, 25], [7, 25], [7, 25], [7, 25],         // 0101011xx\n  [8, 55], [8, 55],                           // 01011000x\n  [8, 56], [8, 56],                           // 01011001x\n  [8, 57], [8, 57],                           // 01011010x\n  [8, 58], [8, 58],                           // 01011011x\n  [6, 192], [6, 192], [6, 192], [6, 192],     // 010111xxx\n  [6, 192], [6, 192], [6, 192], [6, 192],\n  [6, 1664], [6, 1664], [6, 1664], [6, 1664], // 011000xxx\n  [6, 1664], [6, 1664], [6, 1664], [6, 1664],\n  [8, 448], [8, 448],                         // 01100100x\n  [8, 512], [8, 512],                         // 01100101x\n  [9, 704],                                   // 011001100\n  [9, 768],                                   // 011001101\n  [8, 640], [8, 640],                         // 01100111x\n  [8, 576], [8, 576],                         // 01101000x\n  [9, 832],                                   // 011010010\n  [9, 896],                                   // 011010011\n  [9, 960],                                   // 011010100\n  [9, 1024],                                  // 011010101\n  [9, 1088],                                  // 011010110\n  [9, 1152],                                  // 011010111\n  [9, 1216],                                  // 011011000\n  [9, 1280],                                  // 011011001\n  [9, 1344],                                  // 011011010\n  [9, 1408],                                  // 011011011\n  [7, 256], [7, 256], [7, 256], [7, 256],     // 0110111xx\n  [4, 2], [4, 2], [4, 2], [4, 2],             // 0111xxxxx\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 3], [4, 3], [4, 3], [4, 3],             // 1000xxxxx\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [5, 128], [5, 128], [5, 128], [5, 128],     // 10010xxxx\n  [5, 128], [5, 128], [5, 128], [5, 128],\n  [5, 128], [5, 128], [5, 128], [5, 128],\n  [5, 128], [5, 128], [5, 128], [5, 128],\n  [5, 8], [5, 8], [5, 8], [5, 8],             // 10011xxxx\n  [5, 8], [5, 8], [5, 8], [5, 8],\n  [5, 8], [5, 8], [5, 8], [5, 8],\n  [5, 8], [5, 8], [5, 8], [5, 8],\n  [5, 9], [5, 9], [5, 9], [5, 9],             // 10100xxxx\n  [5, 9], [5, 9], [5, 9], [5, 9],\n  [5, 9], [5, 9], [5, 9], [5, 9],\n  [5, 9], [5, 9], [5, 9], [5, 9],\n  [6, 16], [6, 16], [6, 16], [6, 16],         // 101010xxx\n  [6, 16], [6, 16], [6, 16], [6, 16],\n  [6, 17], [6, 17], [6, 17], [6, 17],         // 101011xxx\n  [6, 17], [6, 17], [6, 17], [6, 17],\n  [4, 4], [4, 4], [4, 4], [4, 4],             // 1011xxxxx\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 5], [4, 5], [4, 5], [4, 5],             // 1100xxxxx\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [6, 14], [6, 14], [6, 14], [6, 14],         // 110100xxx\n  [6, 14], [6, 14], [6, 14], [6, 14],\n  [6, 15], [6, 15], [6, 15], [6, 15],         // 110101xxx\n  [6, 15], [6, 15], [6, 15], [6, 15],\n  [5, 64], [5, 64], [5, 64], [5, 64],         // 11011xxxx\n  [5, 64], [5, 64], [5, 64], [5, 64],\n  [5, 64], [5, 64], [5, 64], [5, 64],\n  [5, 64], [5, 64], [5, 64], [5, 64],\n  [4, 6], [4, 6], [4, 6], [4, 6],             // 1110xxxxx\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 7], [4, 7], [4, 7], [4, 7],             // 1111xxxxx\n  [4, 7], [4, 7], [4, 7], [4, 7],\n  [4, 7], [4, 7], [4, 7], [4, 7],\n  [4, 7], [4, 7], [4, 7], [4, 7],\n  [4, 7], [4, 7], [4, 7], [4, 7],\n  [4, 7], [4, 7], [4, 7], [4, 7],\n  [4, 7], [4, 7], [4, 7], [4, 7],\n  [4, 7], [4, 7], [4, 7], [4, 7]\n];\n\n// prettier-ignore\nconst blackTable1 = [\n  [-1, -1], [-1, -1],                             // 000000000000x\n  [12, ccittEOL], [12, ccittEOL],                 // 000000000001x\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000001xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000010xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000011xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000100xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000101xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000110xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000111xx\n  [11, 1792], [11, 1792], [11, 1792], [11, 1792], // 00000001000xx\n  [12, 1984], [12, 1984],                         // 000000010010x\n  [12, 2048], [12, 2048],                         // 000000010011x\n  [12, 2112], [12, 2112],                         // 000000010100x\n  [12, 2176], [12, 2176],                         // 000000010101x\n  [12, 2240], [12, 2240],                         // 000000010110x\n  [12, 2304], [12, 2304],                         // 000000010111x\n  [11, 1856], [11, 1856], [11, 1856], [11, 1856], // 00000001100xx\n  [11, 1920], [11, 1920], [11, 1920], [11, 1920], // 00000001101xx\n  [12, 2368], [12, 2368],                         // 000000011100x\n  [12, 2432], [12, 2432],                         // 000000011101x\n  [12, 2496], [12, 2496],                         // 000000011110x\n  [12, 2560], [12, 2560],                         // 000000011111x\n  [10, 18], [10, 18], [10, 18], [10, 18],         // 0000001000xxx\n  [10, 18], [10, 18], [10, 18], [10, 18],\n  [12, 52], [12, 52],                             // 000000100100x\n  [13, 640],                                      // 0000001001010\n  [13, 704],                                      // 0000001001011\n  [13, 768],                                      // 0000001001100\n  [13, 832],                                      // 0000001001101\n  [12, 55], [12, 55],                             // 000000100111x\n  [12, 56], [12, 56],                             // 000000101000x\n  [13, 1280],                                     // 0000001010010\n  [13, 1344],                                     // 0000001010011\n  [13, 1408],                                     // 0000001010100\n  [13, 1472],                                     // 0000001010101\n  [12, 59], [12, 59],                             // 000000101011x\n  [12, 60], [12, 60],                             // 000000101100x\n  [13, 1536],                                     // 0000001011010\n  [13, 1600],                                     // 0000001011011\n  [11, 24], [11, 24], [11, 24], [11, 24],         // 00000010111xx\n  [11, 25], [11, 25], [11, 25], [11, 25],         // 00000011000xx\n  [13, 1664],                                     // 0000001100100\n  [13, 1728],                                     // 0000001100101\n  [12, 320], [12, 320],                           // 000000110011x\n  [12, 384], [12, 384],                           // 000000110100x\n  [12, 448], [12, 448],                           // 000000110101x\n  [13, 512],                                      // 0000001101100\n  [13, 576],                                      // 0000001101101\n  [12, 53], [12, 53],                             // 000000110111x\n  [12, 54], [12, 54],                             // 000000111000x\n  [13, 896],                                      // 0000001110010\n  [13, 960],                                      // 0000001110011\n  [13, 1024],                                     // 0000001110100\n  [13, 1088],                                     // 0000001110101\n  [13, 1152],                                     // 0000001110110\n  [13, 1216],                                     // 0000001110111\n  [10, 64], [10, 64], [10, 64], [10, 64],         // 0000001111xxx\n  [10, 64], [10, 64], [10, 64], [10, 64]\n];\n\n// prettier-ignore\nconst blackTable2 = [\n  [8, 13], [8, 13], [8, 13], [8, 13],     // 00000100xxxx\n  [8, 13], [8, 13], [8, 13], [8, 13],\n  [8, 13], [8, 13], [8, 13], [8, 13],\n  [8, 13], [8, 13], [8, 13], [8, 13],\n  [11, 23], [11, 23],                     // 00000101000x\n  [12, 50],                               // 000001010010\n  [12, 51],                               // 000001010011\n  [12, 44],                               // 000001010100\n  [12, 45],                               // 000001010101\n  [12, 46],                               // 000001010110\n  [12, 47],                               // 000001010111\n  [12, 57],                               // 000001011000\n  [12, 58],                               // 000001011001\n  [12, 61],                               // 000001011010\n  [12, 256],                              // 000001011011\n  [10, 16], [10, 16], [10, 16], [10, 16], // 0000010111xx\n  [10, 17], [10, 17], [10, 17], [10, 17], // 0000011000xx\n  [12, 48],                               // 000001100100\n  [12, 49],                               // 000001100101\n  [12, 62],                               // 000001100110\n  [12, 63],                               // 000001100111\n  [12, 30],                               // 000001101000\n  [12, 31],                               // 000001101001\n  [12, 32],                               // 000001101010\n  [12, 33],                               // 000001101011\n  [12, 40],                               // 000001101100\n  [12, 41],                               // 000001101101\n  [11, 22], [11, 22],                     // 00000110111x\n  [8, 14], [8, 14], [8, 14], [8, 14],     // 00000111xxxx\n  [8, 14], [8, 14], [8, 14], [8, 14],\n  [8, 14], [8, 14], [8, 14], [8, 14],\n  [8, 14], [8, 14], [8, 14], [8, 14],\n  [7, 10], [7, 10], [7, 10], [7, 10],     // 0000100xxxxx\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 11], [7, 11], [7, 11], [7, 11],     // 0000101xxxxx\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [9, 15], [9, 15], [9, 15], [9, 15],     // 000011000xxx\n  [9, 15], [9, 15], [9, 15], [9, 15],\n  [12, 128],                              // 000011001000\n  [12, 192],                              // 000011001001\n  [12, 26],                               // 000011001010\n  [12, 27],                               // 000011001011\n  [12, 28],                               // 000011001100\n  [12, 29],                               // 000011001101\n  [11, 19], [11, 19],                     // 00001100111x\n  [11, 20], [11, 20],                     // 00001101000x\n  [12, 34],                               // 000011010010\n  [12, 35],                               // 000011010011\n  [12, 36],                               // 000011010100\n  [12, 37],                               // 000011010101\n  [12, 38],                               // 000011010110\n  [12, 39],                               // 000011010111\n  [11, 21], [11, 21],                     // 00001101100x\n  [12, 42],                               // 000011011010\n  [12, 43],                               // 000011011011\n  [10, 0], [10, 0], [10, 0], [10, 0],     // 0000110111xx\n  [7, 12], [7, 12], [7, 12], [7, 12],     // 0000111xxxxx\n  [7, 12], [7, 12], [7, 12], [7, 12],\n  [7, 12], [7, 12], [7, 12], [7, 12],\n  [7, 12], [7, 12], [7, 12], [7, 12],\n  [7, 12], [7, 12], [7, 12], [7, 12],\n  [7, 12], [7, 12], [7, 12], [7, 12],\n  [7, 12], [7, 12], [7, 12], [7, 12],\n  [7, 12], [7, 12], [7, 12], [7, 12]\n];\n\n// prettier-ignore\nconst blackTable3 = [\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000xx\n  [6, 9],                                 // 000100\n  [6, 8],                                 // 000101\n  [5, 7], [5, 7],                         // 00011x\n  [4, 6], [4, 6], [4, 6], [4, 6],         // 0010xx\n  [4, 5], [4, 5], [4, 5], [4, 5],         // 0011xx\n  [3, 1], [3, 1], [3, 1], [3, 1],         // 010xxx\n  [3, 1], [3, 1], [3, 1], [3, 1],\n  [3, 4], [3, 4], [3, 4], [3, 4],         // 011xxx\n  [3, 4], [3, 4], [3, 4], [3, 4],\n  [2, 3], [2, 3], [2, 3], [2, 3],         // 10xxxx\n  [2, 3], [2, 3], [2, 3], [2, 3],\n  [2, 3], [2, 3], [2, 3], [2, 3],\n  [2, 3], [2, 3], [2, 3], [2, 3],\n  [2, 2], [2, 2], [2, 2], [2, 2],         // 11xxxx\n  [2, 2], [2, 2], [2, 2], [2, 2],\n  [2, 2], [2, 2], [2, 2], [2, 2],\n  [2, 2], [2, 2], [2, 2], [2, 2]\n];\n\n/**\n * @param {CCITTFaxDecoderSource} source - The data which should be decoded.\n * @param {Object} [options] - Decoding options.\n */\nclass CCITTFaxDecoder {\n  constructor(source, options = {}) {\n    if (!source || typeof source.next !== \"function\") {\n      throw new Error('CCITTFaxDecoder - invalid \"source\" parameter.');\n    }\n    this.source = source;\n    this.eof = false;\n\n    this.encoding = options.K || 0;\n    this.eoline = options.EndOfLine || false;\n    this.byteAlign = options.EncodedByteAlign || false;\n    this.columns = options.Columns || 1728;\n    this.rows = options.Rows || 0;\n    this.eoblock = options.EndOfBlock ?? true;\n    this.black = options.BlackIs1 || false;\n\n    this.codingLine = new Uint32Array(this.columns + 1);\n    this.refLine = new Uint32Array(this.columns + 2);\n\n    this.codingLine[0] = this.columns;\n    this.codingPos = 0;\n\n    this.row = 0;\n    this.nextLine2D = this.encoding < 0;\n    this.inputBits = 0;\n    this.inputBuf = 0;\n    this.outputBits = 0;\n    this.rowsDone = false;\n\n    let code1;\n    while ((code1 = this._lookBits(12)) === 0) {\n      this._eatBits(1);\n    }\n    if (code1 === 1) {\n      this._eatBits(12);\n    }\n    if (this.encoding > 0) {\n      this.nextLine2D = !this._lookBits(1);\n      this._eatBits(1);\n    }\n  }\n\n  readNextChar() {\n    if (this.eof) {\n      return -1;\n    }\n    const refLine = this.refLine;\n    const codingLine = this.codingLine;\n    const columns = this.columns;\n\n    let refPos, blackPixels, bits, i;\n\n    if (this.outputBits === 0) {\n      if (this.rowsDone) {\n        this.eof = true;\n      }\n      if (this.eof) {\n        return -1;\n      }\n      this.err = false;\n\n      let code1, code2, code3;\n      if (this.nextLine2D) {\n        for (i = 0; codingLine[i] < columns; ++i) {\n          refLine[i] = codingLine[i];\n        }\n        refLine[i++] = columns;\n        refLine[i] = columns;\n        codingLine[0] = 0;\n        this.codingPos = 0;\n        refPos = 0;\n        blackPixels = 0;\n\n        while (codingLine[this.codingPos] < columns) {\n          code1 = this._getTwoDimCode();\n          switch (code1) {\n            case twoDimPass:\n              this._addPixels(refLine[refPos + 1], blackPixels);\n              if (refLine[refPos + 1] < columns) {\n                refPos += 2;\n              }\n              break;\n            case twoDimHoriz:\n              code1 = code2 = 0;\n              if (blackPixels) {\n                do {\n                  code1 += code3 = this._getBlackCode();\n                } while (code3 >= 64);\n                do {\n                  code2 += code3 = this._getWhiteCode();\n                } while (code3 >= 64);\n              } else {\n                do {\n                  code1 += code3 = this._getWhiteCode();\n                } while (code3 >= 64);\n                do {\n                  code2 += code3 = this._getBlackCode();\n                } while (code3 >= 64);\n              }\n              this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n              if (codingLine[this.codingPos] < columns) {\n                this._addPixels(\n                  codingLine[this.codingPos] + code2,\n                  blackPixels ^ 1\n                );\n              }\n              while (\n                refLine[refPos] <= codingLine[this.codingPos] &&\n                refLine[refPos] < columns\n              ) {\n                refPos += 2;\n              }\n              break;\n            case twoDimVertR3:\n              this._addPixels(refLine[refPos] + 3, blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                ++refPos;\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case twoDimVertR2:\n              this._addPixels(refLine[refPos] + 2, blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                ++refPos;\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case twoDimVertR1:\n              this._addPixels(refLine[refPos] + 1, blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                ++refPos;\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case twoDimVert0:\n              this._addPixels(refLine[refPos], blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                ++refPos;\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case twoDimVertL3:\n              this._addPixelsNeg(refLine[refPos] - 3, blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                if (refPos > 0) {\n                  --refPos;\n                } else {\n                  ++refPos;\n                }\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case twoDimVertL2:\n              this._addPixelsNeg(refLine[refPos] - 2, blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                if (refPos > 0) {\n                  --refPos;\n                } else {\n                  ++refPos;\n                }\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case twoDimVertL1:\n              this._addPixelsNeg(refLine[refPos] - 1, blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                if (refPos > 0) {\n                  --refPos;\n                } else {\n                  ++refPos;\n                }\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case ccittEOF:\n              this._addPixels(columns, 0);\n              this.eof = true;\n              break;\n            default:\n              info(\"bad 2d code\");\n              this._addPixels(columns, 0);\n              this.err = true;\n          }\n        }\n      } else {\n        codingLine[0] = 0;\n        this.codingPos = 0;\n        blackPixels = 0;\n        while (codingLine[this.codingPos] < columns) {\n          code1 = 0;\n          if (blackPixels) {\n            do {\n              code1 += code3 = this._getBlackCode();\n            } while (code3 >= 64);\n          } else {\n            do {\n              code1 += code3 = this._getWhiteCode();\n            } while (code3 >= 64);\n          }\n          this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n          blackPixels ^= 1;\n        }\n      }\n\n      let gotEOL = false;\n\n      if (this.byteAlign) {\n        this.inputBits &= ~7;\n      }\n\n      if (!this.eoblock && this.row === this.rows - 1) {\n        this.rowsDone = true;\n      } else {\n        code1 = this._lookBits(12);\n        if (this.eoline) {\n          while (code1 !== ccittEOF && code1 !== 1) {\n            this._eatBits(1);\n            code1 = this._lookBits(12);\n          }\n        } else {\n          while (code1 === 0) {\n            this._eatBits(1);\n            code1 = this._lookBits(12);\n          }\n        }\n        if (code1 === 1) {\n          this._eatBits(12);\n          gotEOL = true;\n        } else if (code1 === ccittEOF) {\n          this.eof = true;\n        }\n      }\n\n      if (!this.eof && this.encoding > 0 && !this.rowsDone) {\n        this.nextLine2D = !this._lookBits(1);\n        this._eatBits(1);\n      }\n\n      if (this.eoblock && gotEOL && this.byteAlign) {\n        code1 = this._lookBits(12);\n        if (code1 === 1) {\n          this._eatBits(12);\n          if (this.encoding > 0) {\n            this._lookBits(1);\n            this._eatBits(1);\n          }\n          if (this.encoding >= 0) {\n            for (i = 0; i < 4; ++i) {\n              code1 = this._lookBits(12);\n              if (code1 !== 1) {\n                info(\"bad rtc code: \" + code1);\n              }\n              this._eatBits(12);\n              if (this.encoding > 0) {\n                this._lookBits(1);\n                this._eatBits(1);\n              }\n            }\n          }\n          this.eof = true;\n        }\n      } else if (this.err && this.eoline) {\n        while (true) {\n          code1 = this._lookBits(13);\n          if (code1 === ccittEOF) {\n            this.eof = true;\n            return -1;\n          }\n          if (code1 >> 1 === 1) {\n            break;\n          }\n          this._eatBits(1);\n        }\n        this._eatBits(12);\n        if (this.encoding > 0) {\n          this._eatBits(1);\n          this.nextLine2D = !(code1 & 1);\n        }\n      }\n\n      this.outputBits =\n        codingLine[0] > 0\n          ? codingLine[(this.codingPos = 0)]\n          : codingLine[(this.codingPos = 1)];\n      this.row++;\n    }\n\n    let c;\n    if (this.outputBits >= 8) {\n      c = this.codingPos & 1 ? 0 : 0xff;\n      this.outputBits -= 8;\n      if (this.outputBits === 0 && codingLine[this.codingPos] < columns) {\n        this.codingPos++;\n        this.outputBits =\n          codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n      }\n    } else {\n      bits = 8;\n      c = 0;\n      do {\n        if (typeof this.outputBits !== \"number\") {\n          throw new FormatError(\n            'Invalid /CCITTFaxDecode data, \"outputBits\" must be a number.'\n          );\n        }\n\n        if (this.outputBits > bits) {\n          c <<= bits;\n          if (!(this.codingPos & 1)) {\n            c |= 0xff >> (8 - bits);\n          }\n          this.outputBits -= bits;\n          bits = 0;\n        } else {\n          c <<= this.outputBits;\n          if (!(this.codingPos & 1)) {\n            c |= 0xff >> (8 - this.outputBits);\n          }\n          bits -= this.outputBits;\n          this.outputBits = 0;\n          if (codingLine[this.codingPos] < columns) {\n            this.codingPos++;\n            this.outputBits =\n              codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n          } else if (bits > 0) {\n            c <<= bits;\n            bits = 0;\n          }\n        }\n      } while (bits);\n    }\n    if (this.black) {\n      c ^= 0xff;\n    }\n    return c;\n  }\n\n  /**\n   * @private\n   */\n  _addPixels(a1, blackPixels) {\n    const codingLine = this.codingLine;\n    let codingPos = this.codingPos;\n\n    if (a1 > codingLine[codingPos]) {\n      if (a1 > this.columns) {\n        info(\"row is wrong length\");\n        this.err = true;\n        a1 = this.columns;\n      }\n      if ((codingPos & 1) ^ blackPixels) {\n        ++codingPos;\n      }\n\n      codingLine[codingPos] = a1;\n    }\n    this.codingPos = codingPos;\n  }\n\n  /**\n   * @private\n   */\n  _addPixelsNeg(a1, blackPixels) {\n    const codingLine = this.codingLine;\n    let codingPos = this.codingPos;\n\n    if (a1 > codingLine[codingPos]) {\n      if (a1 > this.columns) {\n        info(\"row is wrong length\");\n        this.err = true;\n        a1 = this.columns;\n      }\n      if ((codingPos & 1) ^ blackPixels) {\n        ++codingPos;\n      }\n\n      codingLine[codingPos] = a1;\n    } else if (a1 < codingLine[codingPos]) {\n      if (a1 < 0) {\n        info(\"invalid code\");\n        this.err = true;\n        a1 = 0;\n      }\n      while (codingPos > 0 && a1 < codingLine[codingPos - 1]) {\n        --codingPos;\n      }\n      codingLine[codingPos] = a1;\n    }\n\n    this.codingPos = codingPos;\n  }\n\n  /**\n   * This function returns the code found from the table.\n   * The start and end parameters set the boundaries for searching the table.\n   * The limit parameter is optional. Function returns an array with three\n   * values. The first array element indicates whether a valid code is being\n   * returned. The second array element is the actual code. The third array\n   * element indicates whether EOF was reached.\n   * @private\n   */\n  _findTableCode(start, end, table, limit) {\n    const limitValue = limit || 0;\n    for (let i = start; i <= end; ++i) {\n      let code = this._lookBits(i);\n      if (code === ccittEOF) {\n        return [true, 1, false];\n      }\n      if (i < end) {\n        code <<= end - i;\n      }\n      if (!limitValue || code >= limitValue) {\n        const p = table[code - limitValue];\n        if (p[0] === i) {\n          this._eatBits(i);\n          return [true, p[1], true];\n        }\n      }\n    }\n    return [false, 0, false];\n  }\n\n  /**\n   * @private\n   */\n  _getTwoDimCode() {\n    let code = 0;\n    let p;\n    if (this.eoblock) {\n      code = this._lookBits(7);\n      p = twoDimTable[code];\n      if (p?.[0] > 0) {\n        this._eatBits(p[0]);\n        return p[1];\n      }\n    } else {\n      const result = this._findTableCode(1, 7, twoDimTable);\n      if (result[0] && result[2]) {\n        return result[1];\n      }\n    }\n    info(\"Bad two dim code\");\n    return ccittEOF;\n  }\n\n  /**\n   * @private\n   */\n  _getWhiteCode() {\n    let code = 0;\n    let p;\n    if (this.eoblock) {\n      code = this._lookBits(12);\n      if (code === ccittEOF) {\n        return 1;\n      }\n\n      p = code >> 5 === 0 ? whiteTable1[code] : whiteTable2[code >> 3];\n\n      if (p[0] > 0) {\n        this._eatBits(p[0]);\n        return p[1];\n      }\n    } else {\n      let result = this._findTableCode(1, 9, whiteTable2);\n      if (result[0]) {\n        return result[1];\n      }\n\n      result = this._findTableCode(11, 12, whiteTable1);\n      if (result[0]) {\n        return result[1];\n      }\n    }\n    info(\"bad white code\");\n    this._eatBits(1);\n    return 1;\n  }\n\n  /**\n   * @private\n   */\n  _getBlackCode() {\n    let code, p;\n    if (this.eoblock) {\n      code = this._lookBits(13);\n      if (code === ccittEOF) {\n        return 1;\n      }\n      if (code >> 7 === 0) {\n        p = blackTable1[code];\n      } else if (code >> 9 === 0 && code >> 7 !== 0) {\n        p = blackTable2[(code >> 1) - 64];\n      } else {\n        p = blackTable3[code >> 7];\n      }\n\n      if (p[0] > 0) {\n        this._eatBits(p[0]);\n        return p[1];\n      }\n    } else {\n      let result = this._findTableCode(2, 6, blackTable3);\n      if (result[0]) {\n        return result[1];\n      }\n\n      result = this._findTableCode(7, 12, blackTable2, 64);\n      if (result[0]) {\n        return result[1];\n      }\n\n      result = this._findTableCode(10, 13, blackTable1);\n      if (result[0]) {\n        return result[1];\n      }\n    }\n    info(\"bad black code\");\n    this._eatBits(1);\n    return 1;\n  }\n\n  /**\n   * @private\n   */\n  _lookBits(n) {\n    let c;\n    while (this.inputBits < n) {\n      if ((c = this.source.next()) === -1) {\n        if (this.inputBits === 0) {\n          return ccittEOF;\n        }\n        return (this.inputBuf << (n - this.inputBits)) & (0xffff >> (16 - n));\n      }\n      this.inputBuf = (this.inputBuf << 8) | c;\n      this.inputBits += 8;\n    }\n    return (this.inputBuf >> (this.inputBits - n)) & (0xffff >> (16 - n));\n  }\n\n  /**\n   * @private\n   */\n  _eatBits(n) {\n    if ((this.inputBits -= n) < 0) {\n      this.inputBits = 0;\n    }\n  }\n}\n\nexport { CCITTFaxDecoder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseException, shadow } from \"../shared/util.js\";\nimport { log2, readInt8, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\n\nclass Jbig2Error extends BaseException {\n  constructor(msg) {\n    super(`JBIG2 error: ${msg}`, \"Jbig2Error\");\n  }\n}\n\n// Utility data structures\nclass ContextCache {\n  getContexts(id) {\n    if (id in this) {\n      return this[id];\n    }\n    return (this[id] = new Int8Array(1 << 16));\n  }\n}\n\nclass DecodingContext {\n  constructor(data, start, end) {\n    this.data = data;\n    this.start = start;\n    this.end = end;\n  }\n\n  get decoder() {\n    const decoder = new ArithmeticDecoder(this.data, this.start, this.end);\n    return shadow(this, \"decoder\", decoder);\n  }\n\n  get contextCache() {\n    const cache = new ContextCache();\n    return shadow(this, \"contextCache\", cache);\n  }\n}\n\nconst MAX_INT_32 = 2 ** 31 - 1;\nconst MIN_INT_32 = -(2 ** 31);\n\n// Annex A. Arithmetic Integer Decoding Procedure\n// A.2 Procedure for decoding values\nfunction decodeInteger(contextCache, procedure, decoder) {\n  const contexts = contextCache.getContexts(procedure);\n  let prev = 1;\n\n  function readBits(length) {\n    let v = 0;\n    for (let i = 0; i < length; i++) {\n      const bit = decoder.readBit(contexts, prev);\n      prev = prev < 256 ? (prev << 1) | bit : (((prev << 1) | bit) & 511) | 256;\n      v = (v << 1) | bit;\n    }\n    return v >>> 0;\n  }\n\n  const sign = readBits(1);\n  // prettier-ignore\n  /* eslint-disable no-nested-ternary */\n  const value = readBits(1) ?\n                  (readBits(1) ?\n                    (readBits(1) ?\n                      (readBits(1) ?\n                        (readBits(1) ?\n                          (readBits(32) + 4436) :\n                        readBits(12) + 340) :\n                      readBits(8) + 84) :\n                    readBits(6) + 20) :\n                  readBits(4) + 4) :\n                readBits(2);\n  /* eslint-enable no-nested-ternary */\n  let signedValue;\n  if (sign === 0) {\n    signedValue = value;\n  } else if (value > 0) {\n    signedValue = -value;\n  }\n  // Ensure that the integer value doesn't underflow or overflow.\n  if (signedValue >= MIN_INT_32 && signedValue <= MAX_INT_32) {\n    return signedValue;\n  }\n  return null;\n}\n\n// A.3 The IAID decoding procedure\nfunction decodeIAID(contextCache, decoder, codeLength) {\n  const contexts = contextCache.getContexts(\"IAID\");\n\n  let prev = 1;\n  for (let i = 0; i < codeLength; i++) {\n    const bit = decoder.readBit(contexts, prev);\n    prev = (prev << 1) | bit;\n  }\n  if (codeLength < 31) {\n    return prev & ((1 << codeLength) - 1);\n  }\n  return prev & 0x7fffffff;\n}\n\n// 7.3 Segment types\nconst SegmentTypes = [\n  \"SymbolDictionary\",\n  null,\n  null,\n  null,\n  \"IntermediateTextRegion\",\n  null,\n  \"ImmediateTextRegion\",\n  \"ImmediateLosslessTextRegion\",\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  \"PatternDictionary\",\n  null,\n  null,\n  null,\n  \"IntermediateHalftoneRegion\",\n  null,\n  \"ImmediateHalftoneRegion\",\n  \"ImmediateLosslessHalftoneRegion\",\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  \"IntermediateGenericRegion\",\n  null,\n  \"ImmediateGenericRegion\",\n  \"ImmediateLosslessGenericRegion\",\n  \"IntermediateGenericRefinementRegion\",\n  null,\n  \"ImmediateGenericRefinementRegion\",\n  \"ImmediateLosslessGenericRefinementRegion\",\n  null,\n  null,\n  null,\n  null,\n  \"PageInformation\",\n  \"EndOfPage\",\n  \"EndOfStripe\",\n  \"EndOfFile\",\n  \"Profiles\",\n  \"Tables\",\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  \"Extension\",\n];\n\nconst CodingTemplates = [\n  [\n    { x: -1, y: -2 },\n    { x: 0, y: -2 },\n    { x: 1, y: -2 },\n    { x: -2, y: -1 },\n    { x: -1, y: -1 },\n    { x: 0, y: -1 },\n    { x: 1, y: -1 },\n    { x: 2, y: -1 },\n    { x: -4, y: 0 },\n    { x: -3, y: 0 },\n    { x: -2, y: 0 },\n    { x: -1, y: 0 },\n  ],\n  [\n    { x: -1, y: -2 },\n    { x: 0, y: -2 },\n    { x: 1, y: -2 },\n    { x: 2, y: -2 },\n    { x: -2, y: -1 },\n    { x: -1, y: -1 },\n    { x: 0, y: -1 },\n    { x: 1, y: -1 },\n    { x: 2, y: -1 },\n    { x: -3, y: 0 },\n    { x: -2, y: 0 },\n    { x: -1, y: 0 },\n  ],\n  [\n    { x: -1, y: -2 },\n    { x: 0, y: -2 },\n    { x: 1, y: -2 },\n    { x: -2, y: -1 },\n    { x: -1, y: -1 },\n    { x: 0, y: -1 },\n    { x: 1, y: -1 },\n    { x: -2, y: 0 },\n    { x: -1, y: 0 },\n  ],\n  [\n    { x: -3, y: -1 },\n    { x: -2, y: -1 },\n    { x: -1, y: -1 },\n    { x: 0, y: -1 },\n    { x: 1, y: -1 },\n    { x: -4, y: 0 },\n    { x: -3, y: 0 },\n    { x: -2, y: 0 },\n    { x: -1, y: 0 },\n  ],\n];\n\nconst RefinementTemplates = [\n  {\n    coding: [\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: -1, y: 0 },\n    ],\n    reference: [\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: -1, y: 0 },\n      { x: 0, y: 0 },\n      { x: 1, y: 0 },\n      { x: -1, y: 1 },\n      { x: 0, y: 1 },\n      { x: 1, y: 1 },\n    ],\n  },\n  {\n    coding: [\n      { x: -1, y: -1 },\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: -1, y: 0 },\n    ],\n    reference: [\n      { x: 0, y: -1 },\n      { x: -1, y: 0 },\n      { x: 0, y: 0 },\n      { x: 1, y: 0 },\n      { x: 0, y: 1 },\n      { x: 1, y: 1 },\n    ],\n  },\n];\n\n// See 6.2.5.7 Decoding the bitmap.\nconst ReusedContexts = [\n  0x9b25, // 10011 0110010 0101\n  0x0795, // 0011 110010 101\n  0x00e5, // 001 11001 01\n  0x0195, // 011001 0101\n];\n\nconst RefinementReusedContexts = [\n  0x0020, // '000' + '0' (coding) + '00010000' + '0' (reference)\n  0x0008, // '0000' + '001000'\n];\n\nfunction decodeBitmapTemplate0(width, height, decodingContext) {\n  const decoder = decodingContext.decoder;\n  const contexts = decodingContext.contextCache.getContexts(\"GB\");\n  const bitmap = [];\n  let contextLabel, i, j, pixel, row, row1, row2;\n\n  // ...ooooo....\n  // ..ooooooo... Context template for current pixel (X)\n  // .ooooX...... (concatenate values of 'o'-pixels to get contextLabel)\n  const OLD_PIXEL_MASK = 0x7bf7; // 01111 0111111 0111\n\n  for (i = 0; i < height; i++) {\n    row = bitmap[i] = new Uint8Array(width);\n    row1 = i < 1 ? row : bitmap[i - 1];\n    row2 = i < 2 ? row : bitmap[i - 2];\n\n    // At the beginning of each row:\n    // Fill contextLabel with pixels that are above/right of (X)\n    contextLabel =\n      (row2[0] << 13) |\n      (row2[1] << 12) |\n      (row2[2] << 11) |\n      (row1[0] << 7) |\n      (row1[1] << 6) |\n      (row1[2] << 5) |\n      (row1[3] << 4);\n\n    for (j = 0; j < width; j++) {\n      row[j] = pixel = decoder.readBit(contexts, contextLabel);\n\n      // At each pixel: Clear contextLabel pixels that are shifted\n      // out of the context, then add new ones.\n      contextLabel =\n        ((contextLabel & OLD_PIXEL_MASK) << 1) |\n        (j + 3 < width ? row2[j + 3] << 11 : 0) |\n        (j + 4 < width ? row1[j + 4] << 4 : 0) |\n        pixel;\n    }\n  }\n\n  return bitmap;\n}\n\n// 6.2 Generic Region Decoding Procedure\nfunction decodeBitmap(\n  mmr,\n  width,\n  height,\n  templateIndex,\n  prediction,\n  skip,\n  at,\n  decodingContext\n) {\n  if (mmr) {\n    const input = new Reader(\n      decodingContext.data,\n      decodingContext.start,\n      decodingContext.end\n    );\n    return decodeMMRBitmap(input, width, height, false);\n  }\n\n  // Use optimized version for the most common case\n  if (\n    templateIndex === 0 &&\n    !skip &&\n    !prediction &&\n    at.length === 4 &&\n    at[0].x === 3 &&\n    at[0].y === -1 &&\n    at[1].x === -3 &&\n    at[1].y === -1 &&\n    at[2].x === 2 &&\n    at[2].y === -2 &&\n    at[3].x === -2 &&\n    at[3].y === -2\n  ) {\n    return decodeBitmapTemplate0(width, height, decodingContext);\n  }\n\n  const useskip = !!skip;\n  const template = CodingTemplates[templateIndex].concat(at);\n\n  // Sorting is non-standard, and it is not required. But sorting increases\n  // the number of template bits that can be reused from the previous\n  // contextLabel in the main loop.\n  template.sort(function (a, b) {\n    return a.y - b.y || a.x - b.x;\n  });\n\n  const templateLength = template.length;\n  const templateX = new Int8Array(templateLength);\n  const templateY = new Int8Array(templateLength);\n  const changingTemplateEntries = [];\n  let reuseMask = 0,\n    minX = 0,\n    maxX = 0,\n    minY = 0;\n  let c, k;\n\n  for (k = 0; k < templateLength; k++) {\n    templateX[k] = template[k].x;\n    templateY[k] = template[k].y;\n    minX = Math.min(minX, template[k].x);\n    maxX = Math.max(maxX, template[k].x);\n    minY = Math.min(minY, template[k].y);\n    // Check if the template pixel appears in two consecutive context labels,\n    // so it can be reused. Otherwise, we add it to the list of changing\n    // template entries.\n    if (\n      k < templateLength - 1 &&\n      template[k].y === template[k + 1].y &&\n      template[k].x === template[k + 1].x - 1\n    ) {\n      reuseMask |= 1 << (templateLength - 1 - k);\n    } else {\n      changingTemplateEntries.push(k);\n    }\n  }\n  const changingEntriesLength = changingTemplateEntries.length;\n\n  const changingTemplateX = new Int8Array(changingEntriesLength);\n  const changingTemplateY = new Int8Array(changingEntriesLength);\n  const changingTemplateBit = new Uint16Array(changingEntriesLength);\n  for (c = 0; c < changingEntriesLength; c++) {\n    k = changingTemplateEntries[c];\n    changingTemplateX[c] = template[k].x;\n    changingTemplateY[c] = template[k].y;\n    changingTemplateBit[c] = 1 << (templateLength - 1 - k);\n  }\n\n  // Get the safe bounding box edges from the width, height, minX, maxX, minY\n  const sbb_left = -minX;\n  const sbb_top = -minY;\n  const sbb_right = width - maxX;\n\n  const pseudoPixelContext = ReusedContexts[templateIndex];\n  let row = new Uint8Array(width);\n  const bitmap = [];\n\n  const decoder = decodingContext.decoder;\n  const contexts = decodingContext.contextCache.getContexts(\"GB\");\n\n  let ltp = 0,\n    j,\n    i0,\n    j0,\n    contextLabel = 0,\n    bit,\n    shift;\n  for (let i = 0; i < height; i++) {\n    if (prediction) {\n      const sltp = decoder.readBit(contexts, pseudoPixelContext);\n      ltp ^= sltp;\n      if (ltp) {\n        bitmap.push(row); // duplicate previous row\n        continue;\n      }\n    }\n    row = new Uint8Array(row);\n    bitmap.push(row);\n    for (j = 0; j < width; j++) {\n      if (useskip && skip[i][j]) {\n        row[j] = 0;\n        continue;\n      }\n      // Are we in the middle of a scanline, so we can reuse contextLabel\n      // bits?\n      if (j >= sbb_left && j < sbb_right && i >= sbb_top) {\n        // If yes, we can just shift the bits that are reusable and only\n        // fetch the remaining ones.\n        contextLabel = (contextLabel << 1) & reuseMask;\n        for (k = 0; k < changingEntriesLength; k++) {\n          i0 = i + changingTemplateY[k];\n          j0 = j + changingTemplateX[k];\n          bit = bitmap[i0][j0];\n          if (bit) {\n            bit = changingTemplateBit[k];\n            contextLabel |= bit;\n          }\n        }\n      } else {\n        // compute the contextLabel from scratch\n        contextLabel = 0;\n        shift = templateLength - 1;\n        for (k = 0; k < templateLength; k++, shift--) {\n          j0 = j + templateX[k];\n          if (j0 >= 0 && j0 < width) {\n            i0 = i + templateY[k];\n            if (i0 >= 0) {\n              bit = bitmap[i0][j0];\n              if (bit) {\n                contextLabel |= bit << shift;\n              }\n            }\n          }\n        }\n      }\n      const pixel = decoder.readBit(contexts, contextLabel);\n      row[j] = pixel;\n    }\n  }\n  return bitmap;\n}\n\n// 6.3.2 Generic Refinement Region Decoding Procedure\nfunction decodeRefinement(\n  width,\n  height,\n  templateIndex,\n  referenceBitmap,\n  offsetX,\n  offsetY,\n  prediction,\n  at,\n  decodingContext\n) {\n  let codingTemplate = RefinementTemplates[templateIndex].coding;\n  if (templateIndex === 0) {\n    codingTemplate = codingTemplate.concat([at[0]]);\n  }\n  const codingTemplateLength = codingTemplate.length;\n  const codingTemplateX = new Int32Array(codingTemplateLength);\n  const codingTemplateY = new Int32Array(codingTemplateLength);\n  let k;\n  for (k = 0; k < codingTemplateLength; k++) {\n    codingTemplateX[k] = codingTemplate[k].x;\n    codingTemplateY[k] = codingTemplate[k].y;\n  }\n\n  let referenceTemplate = RefinementTemplates[templateIndex].reference;\n  if (templateIndex === 0) {\n    referenceTemplate = referenceTemplate.concat([at[1]]);\n  }\n  const referenceTemplateLength = referenceTemplate.length;\n  const referenceTemplateX = new Int32Array(referenceTemplateLength);\n  const referenceTemplateY = new Int32Array(referenceTemplateLength);\n  for (k = 0; k < referenceTemplateLength; k++) {\n    referenceTemplateX[k] = referenceTemplate[k].x;\n    referenceTemplateY[k] = referenceTemplate[k].y;\n  }\n  const referenceWidth = referenceBitmap[0].length;\n  const referenceHeight = referenceBitmap.length;\n\n  const pseudoPixelContext = RefinementReusedContexts[templateIndex];\n  const bitmap = [];\n\n  const decoder = decodingContext.decoder;\n  const contexts = decodingContext.contextCache.getContexts(\"GR\");\n\n  let ltp = 0;\n  for (let i = 0; i < height; i++) {\n    if (prediction) {\n      const sltp = decoder.readBit(contexts, pseudoPixelContext);\n      ltp ^= sltp;\n      if (ltp) {\n        throw new Jbig2Error(\"prediction is not supported\");\n      }\n    }\n    const row = new Uint8Array(width);\n    bitmap.push(row);\n    for (let j = 0; j < width; j++) {\n      let i0, j0;\n      let contextLabel = 0;\n      for (k = 0; k < codingTemplateLength; k++) {\n        i0 = i + codingTemplateY[k];\n        j0 = j + codingTemplateX[k];\n        if (i0 < 0 || j0 < 0 || j0 >= width) {\n          contextLabel <<= 1; // out of bound pixel\n        } else {\n          contextLabel = (contextLabel << 1) | bitmap[i0][j0];\n        }\n      }\n      for (k = 0; k < referenceTemplateLength; k++) {\n        i0 = i + referenceTemplateY[k] - offsetY;\n        j0 = j + referenceTemplateX[k] - offsetX;\n        if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || j0 >= referenceWidth) {\n          contextLabel <<= 1; // out of bound pixel\n        } else {\n          contextLabel = (contextLabel << 1) | referenceBitmap[i0][j0];\n        }\n      }\n      const pixel = decoder.readBit(contexts, contextLabel);\n      row[j] = pixel;\n    }\n  }\n\n  return bitmap;\n}\n\n// 6.5.5 Decoding the symbol dictionary\nfunction decodeSymbolDictionary(\n  huffman,\n  refinement,\n  symbols,\n  numberOfNewSymbols,\n  numberOfExportedSymbols,\n  huffmanTables,\n  templateIndex,\n  at,\n  refinementTemplateIndex,\n  refinementAt,\n  decodingContext,\n  huffmanInput\n) {\n  if (huffman && refinement) {\n    throw new Jbig2Error(\"symbol refinement with Huffman is not supported\");\n  }\n\n  const newSymbols = [];\n  let currentHeight = 0;\n  let symbolCodeLength = log2(symbols.length + numberOfNewSymbols);\n\n  const decoder = decodingContext.decoder;\n  const contextCache = decodingContext.contextCache;\n  let tableB1, symbolWidths;\n  if (huffman) {\n    tableB1 = getStandardTable(1); // standard table B.1\n    symbolWidths = [];\n    symbolCodeLength = Math.max(symbolCodeLength, 1); // 6.5.8.2.3\n  }\n\n  while (newSymbols.length < numberOfNewSymbols) {\n    const deltaHeight = huffman\n      ? huffmanTables.tableDeltaHeight.decode(huffmanInput)\n      : decodeInteger(contextCache, \"IADH\", decoder); // 6.5.6\n    currentHeight += deltaHeight;\n    let currentWidth = 0,\n      totalWidth = 0;\n    const firstSymbol = huffman ? symbolWidths.length : 0;\n    while (true) {\n      const deltaWidth = huffman\n        ? huffmanTables.tableDeltaWidth.decode(huffmanInput)\n        : decodeInteger(contextCache, \"IADW\", decoder); // 6.5.7\n      if (deltaWidth === null) {\n        break; // OOB\n      }\n      currentWidth += deltaWidth;\n      totalWidth += currentWidth;\n      let bitmap;\n      if (refinement) {\n        // 6.5.8.2 Refinement/aggregate-coded symbol bitmap\n        const numberOfInstances = decodeInteger(contextCache, \"IAAI\", decoder);\n        if (numberOfInstances > 1) {\n          bitmap = decodeTextRegion(\n            huffman,\n            refinement,\n            currentWidth,\n            currentHeight,\n            0,\n            numberOfInstances,\n            1, // strip size\n            symbols.concat(newSymbols),\n            symbolCodeLength,\n            0, // transposed\n            0, // ds offset\n            1, // top left 7.4.3.1.1\n            0, // OR operator\n            huffmanTables,\n            refinementTemplateIndex,\n            refinementAt,\n            decodingContext,\n            0,\n            huffmanInput\n          );\n        } else {\n          const symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\n          const rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n          const rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n          const symbol =\n            symbolId < symbols.length\n              ? symbols[symbolId]\n              : newSymbols[symbolId - symbols.length];\n          bitmap = decodeRefinement(\n            currentWidth,\n            currentHeight,\n            refinementTemplateIndex,\n            symbol,\n            rdx,\n            rdy,\n            false,\n            refinementAt,\n            decodingContext\n          );\n        }\n        newSymbols.push(bitmap);\n      } else if (huffman) {\n        // Store only symbol width and decode a collective bitmap when the\n        // height class is done.\n        symbolWidths.push(currentWidth);\n      } else {\n        // 6.5.8.1 Direct-coded symbol bitmap\n        bitmap = decodeBitmap(\n          false,\n          currentWidth,\n          currentHeight,\n          templateIndex,\n          false,\n          null,\n          at,\n          decodingContext\n        );\n        newSymbols.push(bitmap);\n      }\n    }\n    if (huffman && !refinement) {\n      // 6.5.9 Height class collective bitmap\n      const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);\n      huffmanInput.byteAlign();\n      let collectiveBitmap;\n      if (bitmapSize === 0) {\n        // Uncompressed collective bitmap\n        collectiveBitmap = readUncompressedBitmap(\n          huffmanInput,\n          totalWidth,\n          currentHeight\n        );\n      } else {\n        // MMR collective bitmap\n        const originalEnd = huffmanInput.end;\n        const bitmapEnd = huffmanInput.position + bitmapSize;\n        huffmanInput.end = bitmapEnd;\n        collectiveBitmap = decodeMMRBitmap(\n          huffmanInput,\n          totalWidth,\n          currentHeight,\n          false\n        );\n        huffmanInput.end = originalEnd;\n        huffmanInput.position = bitmapEnd;\n      }\n      const numberOfSymbolsDecoded = symbolWidths.length;\n      if (firstSymbol === numberOfSymbolsDecoded - 1) {\n        // collectiveBitmap is a single symbol.\n        newSymbols.push(collectiveBitmap);\n      } else {\n        // Divide collectiveBitmap into symbols.\n        let i,\n          y,\n          xMin = 0,\n          xMax,\n          bitmapWidth,\n          symbolBitmap;\n        for (i = firstSymbol; i < numberOfSymbolsDecoded; i++) {\n          bitmapWidth = symbolWidths[i];\n          xMax = xMin + bitmapWidth;\n          symbolBitmap = [];\n          for (y = 0; y < currentHeight; y++) {\n            symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n          }\n          newSymbols.push(symbolBitmap);\n          xMin = xMax;\n        }\n      }\n    }\n  }\n\n  // 6.5.10 Exported symbols\n  const exportedSymbols = [],\n    flags = [];\n  let currentFlag = false,\n    i,\n    ii;\n  const totalSymbolsLength = symbols.length + numberOfNewSymbols;\n  while (flags.length < totalSymbolsLength) {\n    let runLength = huffman\n      ? tableB1.decode(huffmanInput)\n      : decodeInteger(contextCache, \"IAEX\", decoder);\n    while (runLength--) {\n      flags.push(currentFlag);\n    }\n    currentFlag = !currentFlag;\n  }\n  for (i = 0, ii = symbols.length; i < ii; i++) {\n    if (flags[i]) {\n      exportedSymbols.push(symbols[i]);\n    }\n  }\n  for (let j = 0; j < numberOfNewSymbols; i++, j++) {\n    if (flags[i]) {\n      exportedSymbols.push(newSymbols[j]);\n    }\n  }\n  return exportedSymbols;\n}\n\nfunction decodeTextRegion(\n  huffman,\n  refinement,\n  width,\n  height,\n  defaultPixelValue,\n  numberOfSymbolInstances,\n  stripSize,\n  inputSymbols,\n  symbolCodeLength,\n  transposed,\n  dsOffset,\n  referenceCorner,\n  combinationOperator,\n  huffmanTables,\n  refinementTemplateIndex,\n  refinementAt,\n  decodingContext,\n  logStripSize,\n  huffmanInput\n) {\n  if (huffman && refinement) {\n    throw new Jbig2Error(\"refinement with Huffman is not supported\");\n  }\n\n  // Prepare bitmap\n  const bitmap = [];\n  let i, row;\n  for (i = 0; i < height; i++) {\n    row = new Uint8Array(width);\n    if (defaultPixelValue) {\n      for (let j = 0; j < width; j++) {\n        row[j] = defaultPixelValue;\n      }\n    }\n    bitmap.push(row);\n  }\n\n  const decoder = decodingContext.decoder;\n  const contextCache = decodingContext.contextCache;\n\n  let stripT = huffman\n    ? -huffmanTables.tableDeltaT.decode(huffmanInput)\n    : -decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n  let firstS = 0;\n  i = 0;\n  while (i < numberOfSymbolInstances) {\n    const deltaT = huffman\n      ? huffmanTables.tableDeltaT.decode(huffmanInput)\n      : decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n    stripT += deltaT;\n\n    const deltaFirstS = huffman\n      ? huffmanTables.tableFirstS.decode(huffmanInput)\n      : decodeInteger(contextCache, \"IAFS\", decoder); // 6.4.7\n    firstS += deltaFirstS;\n    let currentS = firstS;\n    do {\n      let currentT = 0; // 6.4.9\n      if (stripSize > 1) {\n        currentT = huffman\n          ? huffmanInput.readBits(logStripSize)\n          : decodeInteger(contextCache, \"IAIT\", decoder);\n      }\n      const t = stripSize * stripT + currentT;\n      const symbolId = huffman\n        ? huffmanTables.symbolIDTable.decode(huffmanInput)\n        : decodeIAID(contextCache, decoder, symbolCodeLength);\n      const applyRefinement =\n        refinement &&\n        (huffman\n          ? huffmanInput.readBit()\n          : decodeInteger(contextCache, \"IARI\", decoder));\n      let symbolBitmap = inputSymbols[symbolId];\n      let symbolWidth = symbolBitmap[0].length;\n      let symbolHeight = symbolBitmap.length;\n      if (applyRefinement) {\n        const rdw = decodeInteger(contextCache, \"IARDW\", decoder); // 6.4.11.1\n        const rdh = decodeInteger(contextCache, \"IARDH\", decoder); // 6.4.11.2\n        const rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n        const rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n        symbolWidth += rdw;\n        symbolHeight += rdh;\n        symbolBitmap = decodeRefinement(\n          symbolWidth,\n          symbolHeight,\n          refinementTemplateIndex,\n          symbolBitmap,\n          (rdw >> 1) + rdx,\n          (rdh >> 1) + rdy,\n          false,\n          refinementAt,\n          decodingContext\n        );\n      }\n      const offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);\n      const offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);\n      let s2, t2, symbolRow;\n      if (transposed) {\n        // Place Symbol Bitmap from T1,S1\n        for (s2 = 0; s2 < symbolHeight; s2++) {\n          row = bitmap[offsetS + s2];\n          if (!row) {\n            continue;\n          }\n          symbolRow = symbolBitmap[s2];\n          // To ignore Parts of Symbol bitmap which goes\n          // outside bitmap region\n          const maxWidth = Math.min(width - offsetT, symbolWidth);\n          switch (combinationOperator) {\n            case 0: // OR\n              for (t2 = 0; t2 < maxWidth; t2++) {\n                row[offsetT + t2] |= symbolRow[t2];\n              }\n              break;\n            case 2: // XOR\n              for (t2 = 0; t2 < maxWidth; t2++) {\n                row[offsetT + t2] ^= symbolRow[t2];\n              }\n              break;\n            default:\n              throw new Jbig2Error(\n                `operator ${combinationOperator} is not supported`\n              );\n          }\n        }\n        currentS += symbolHeight - 1;\n      } else {\n        for (t2 = 0; t2 < symbolHeight; t2++) {\n          row = bitmap[offsetT + t2];\n          if (!row) {\n            continue;\n          }\n          symbolRow = symbolBitmap[t2];\n          switch (combinationOperator) {\n            case 0: // OR\n              for (s2 = 0; s2 < symbolWidth; s2++) {\n                row[offsetS + s2] |= symbolRow[s2];\n              }\n              break;\n            case 2: // XOR\n              for (s2 = 0; s2 < symbolWidth; s2++) {\n                row[offsetS + s2] ^= symbolRow[s2];\n              }\n              break;\n            default:\n              throw new Jbig2Error(\n                `operator ${combinationOperator} is not supported`\n              );\n          }\n        }\n        currentS += symbolWidth - 1;\n      }\n      i++;\n      const deltaS = huffman\n        ? huffmanTables.tableDeltaS.decode(huffmanInput)\n        : decodeInteger(contextCache, \"IADS\", decoder); // 6.4.8\n      if (deltaS === null) {\n        break; // OOB\n      }\n      currentS += deltaS + dsOffset;\n    } while (true);\n  }\n  return bitmap;\n}\n\nfunction decodePatternDictionary(\n  mmr,\n  patternWidth,\n  patternHeight,\n  maxPatternIndex,\n  template,\n  decodingContext\n) {\n  const at = [];\n  if (!mmr) {\n    at.push({\n      x: -patternWidth,\n      y: 0,\n    });\n    if (template === 0) {\n      at.push(\n        {\n          x: -3,\n          y: -1,\n        },\n        {\n          x: 2,\n          y: -2,\n        },\n        {\n          x: -2,\n          y: -2,\n        }\n      );\n    }\n  }\n  const collectiveWidth = (maxPatternIndex + 1) * patternWidth;\n  const collectiveBitmap = decodeBitmap(\n    mmr,\n    collectiveWidth,\n    patternHeight,\n    template,\n    false,\n    null,\n    at,\n    decodingContext\n  );\n  // Divide collective bitmap into patterns.\n  const patterns = [];\n  for (let i = 0; i <= maxPatternIndex; i++) {\n    const patternBitmap = [];\n    const xMin = patternWidth * i;\n    const xMax = xMin + patternWidth;\n    for (let y = 0; y < patternHeight; y++) {\n      patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n    }\n    patterns.push(patternBitmap);\n  }\n  return patterns;\n}\n\nfunction decodeHalftoneRegion(\n  mmr,\n  patterns,\n  template,\n  regionWidth,\n  regionHeight,\n  defaultPixelValue,\n  enableSkip,\n  combinationOperator,\n  gridWidth,\n  gridHeight,\n  gridOffsetX,\n  gridOffsetY,\n  gridVectorX,\n  gridVectorY,\n  decodingContext\n) {\n  const skip = null;\n  if (enableSkip) {\n    throw new Jbig2Error(\"skip is not supported\");\n  }\n  if (combinationOperator !== 0) {\n    throw new Jbig2Error(\n      `operator \"${combinationOperator}\" is not supported in halftone region`\n    );\n  }\n\n  // Prepare bitmap.\n  const regionBitmap = [];\n  let i, j, row;\n  for (i = 0; i < regionHeight; i++) {\n    row = new Uint8Array(regionWidth);\n    if (defaultPixelValue) {\n      for (j = 0; j < regionWidth; j++) {\n        row[j] = defaultPixelValue;\n      }\n    }\n    regionBitmap.push(row);\n  }\n\n  const numberOfPatterns = patterns.length;\n  const pattern0 = patterns[0];\n  const patternWidth = pattern0[0].length,\n    patternHeight = pattern0.length;\n  const bitsPerValue = log2(numberOfPatterns);\n  const at = [];\n  if (!mmr) {\n    at.push({\n      x: template <= 1 ? 3 : 2,\n      y: -1,\n    });\n    if (template === 0) {\n      at.push(\n        {\n          x: -3,\n          y: -1,\n        },\n        {\n          x: 2,\n          y: -2,\n        },\n        {\n          x: -2,\n          y: -2,\n        }\n      );\n    }\n  }\n  // Annex C. Gray-scale Image Decoding Procedure.\n  const grayScaleBitPlanes = [];\n  let mmrInput, bitmap;\n  if (mmr) {\n    // MMR bit planes are in one continuous stream. Only EOFB codes indicate\n    // the end of each bitmap, so EOFBs must be decoded.\n    mmrInput = new Reader(\n      decodingContext.data,\n      decodingContext.start,\n      decodingContext.end\n    );\n  }\n  for (i = bitsPerValue - 1; i >= 0; i--) {\n    if (mmr) {\n      bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);\n    } else {\n      bitmap = decodeBitmap(\n        false,\n        gridWidth,\n        gridHeight,\n        template,\n        false,\n        skip,\n        at,\n        decodingContext\n      );\n    }\n    grayScaleBitPlanes[i] = bitmap;\n  }\n  // 6.6.5.2 Rendering the patterns.\n  let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow;\n  for (mg = 0; mg < gridHeight; mg++) {\n    for (ng = 0; ng < gridWidth; ng++) {\n      bit = 0;\n      patternIndex = 0;\n      for (j = bitsPerValue - 1; j >= 0; j--) {\n        bit ^= grayScaleBitPlanes[j][mg][ng]; // Gray decoding\n        patternIndex |= bit << j;\n      }\n      patternBitmap = patterns[patternIndex];\n      x = (gridOffsetX + mg * gridVectorY + ng * gridVectorX) >> 8;\n      y = (gridOffsetY + mg * gridVectorX - ng * gridVectorY) >> 8;\n      // Draw patternBitmap at (x, y).\n      if (\n        x >= 0 &&\n        x + patternWidth <= regionWidth &&\n        y >= 0 &&\n        y + patternHeight <= regionHeight\n      ) {\n        for (i = 0; i < patternHeight; i++) {\n          regionRow = regionBitmap[y + i];\n          patternRow = patternBitmap[i];\n          for (j = 0; j < patternWidth; j++) {\n            regionRow[x + j] |= patternRow[j];\n          }\n        }\n      } else {\n        let regionX, regionY;\n        for (i = 0; i < patternHeight; i++) {\n          regionY = y + i;\n          if (regionY < 0 || regionY >= regionHeight) {\n            continue;\n          }\n          regionRow = regionBitmap[regionY];\n          patternRow = patternBitmap[i];\n          for (j = 0; j < patternWidth; j++) {\n            regionX = x + j;\n            if (regionX >= 0 && regionX < regionWidth) {\n              regionRow[regionX] |= patternRow[j];\n            }\n          }\n        }\n      }\n    }\n  }\n  return regionBitmap;\n}\n\nfunction readSegmentHeader(data, start) {\n  const segmentHeader = {};\n  segmentHeader.number = readUint32(data, start);\n  const flags = data[start + 4];\n  const segmentType = flags & 0x3f;\n  if (!SegmentTypes[segmentType]) {\n    throw new Jbig2Error(\"invalid segment type: \" + segmentType);\n  }\n  segmentHeader.type = segmentType;\n  segmentHeader.typeName = SegmentTypes[segmentType];\n  segmentHeader.deferredNonRetain = !!(flags & 0x80);\n\n  const pageAssociationFieldSize = !!(flags & 0x40);\n  const referredFlags = data[start + 5];\n  let referredToCount = (referredFlags >> 5) & 7;\n  const retainBits = [referredFlags & 31];\n  let position = start + 6;\n  if (referredFlags === 7) {\n    referredToCount = readUint32(data, position - 1) & 0x1fffffff;\n    position += 3;\n    let bytes = (referredToCount + 7) >> 3;\n    retainBits[0] = data[position++];\n    while (--bytes > 0) {\n      retainBits.push(data[position++]);\n    }\n  } else if (referredFlags === 5 || referredFlags === 6) {\n    throw new Jbig2Error(\"invalid referred-to flags\");\n  }\n\n  segmentHeader.retainBits = retainBits;\n\n  let referredToSegmentNumberSize = 4;\n  if (segmentHeader.number <= 256) {\n    referredToSegmentNumberSize = 1;\n  } else if (segmentHeader.number <= 65536) {\n    referredToSegmentNumberSize = 2;\n  }\n  const referredTo = [];\n  let i, ii;\n  for (i = 0; i < referredToCount; i++) {\n    let number;\n    if (referredToSegmentNumberSize === 1) {\n      number = data[position];\n    } else if (referredToSegmentNumberSize === 2) {\n      number = readUint16(data, position);\n    } else {\n      number = readUint32(data, position);\n    }\n    referredTo.push(number);\n    position += referredToSegmentNumberSize;\n  }\n  segmentHeader.referredTo = referredTo;\n  if (!pageAssociationFieldSize) {\n    segmentHeader.pageAssociation = data[position++];\n  } else {\n    segmentHeader.pageAssociation = readUint32(data, position);\n    position += 4;\n  }\n  segmentHeader.length = readUint32(data, position);\n  position += 4;\n\n  if (segmentHeader.length === 0xffffffff) {\n    // 7.2.7 Segment data length, unknown segment length\n    if (segmentType === 38) {\n      // ImmediateGenericRegion\n      const genericRegionInfo = readRegionSegmentInformation(data, position);\n      const genericRegionSegmentFlags =\n        data[position + RegionSegmentInformationFieldLength];\n      const genericRegionMmr = !!(genericRegionSegmentFlags & 1);\n      // searching for the segment end\n      const searchPatternLength = 6;\n      const searchPattern = new Uint8Array(searchPatternLength);\n      if (!genericRegionMmr) {\n        searchPattern[0] = 0xff;\n        searchPattern[1] = 0xac;\n      }\n      searchPattern[2] = (genericRegionInfo.height >>> 24) & 0xff;\n      searchPattern[3] = (genericRegionInfo.height >> 16) & 0xff;\n      searchPattern[4] = (genericRegionInfo.height >> 8) & 0xff;\n      searchPattern[5] = genericRegionInfo.height & 0xff;\n      for (i = position, ii = data.length; i < ii; i++) {\n        let j = 0;\n        while (j < searchPatternLength && searchPattern[j] === data[i + j]) {\n          j++;\n        }\n        if (j === searchPatternLength) {\n          segmentHeader.length = i + searchPatternLength;\n          break;\n        }\n      }\n      if (segmentHeader.length === 0xffffffff) {\n        throw new Jbig2Error(\"segment end was not found\");\n      }\n    } else {\n      throw new Jbig2Error(\"invalid unknown segment length\");\n    }\n  }\n  segmentHeader.headerEnd = position;\n  return segmentHeader;\n}\n\nfunction readSegments(header, data, start, end) {\n  const segments = [];\n  let position = start;\n  while (position < end) {\n    const segmentHeader = readSegmentHeader(data, position);\n    position = segmentHeader.headerEnd;\n    const segment = {\n      header: segmentHeader,\n      data,\n    };\n    if (!header.randomAccess) {\n      segment.start = position;\n      position += segmentHeader.length;\n      segment.end = position;\n    }\n    segments.push(segment);\n    if (segmentHeader.type === 51) {\n      break; // end of file is found\n    }\n  }\n  if (header.randomAccess) {\n    for (let i = 0, ii = segments.length; i < ii; i++) {\n      segments[i].start = position;\n      position += segments[i].header.length;\n      segments[i].end = position;\n    }\n  }\n  return segments;\n}\n\n// 7.4.1 Region segment information field\nfunction readRegionSegmentInformation(data, start) {\n  return {\n    width: readUint32(data, start),\n    height: readUint32(data, start + 4),\n    x: readUint32(data, start + 8),\n    y: readUint32(data, start + 12),\n    combinationOperator: data[start + 16] & 7,\n  };\n}\nconst RegionSegmentInformationFieldLength = 17;\n\nfunction processSegment(segment, visitor) {\n  const header = segment.header;\n\n  const data = segment.data,\n    end = segment.end;\n  let position = segment.start;\n  let args, at, i, atLength;\n  switch (header.type) {\n    case 0: // SymbolDictionary\n      // 7.4.2 Symbol dictionary segment syntax\n      const dictionary = {};\n      const dictionaryFlags = readUint16(data, position); // 7.4.2.1.1\n      dictionary.huffman = !!(dictionaryFlags & 1);\n      dictionary.refinement = !!(dictionaryFlags & 2);\n      dictionary.huffmanDHSelector = (dictionaryFlags >> 2) & 3;\n      dictionary.huffmanDWSelector = (dictionaryFlags >> 4) & 3;\n      dictionary.bitmapSizeSelector = (dictionaryFlags >> 6) & 1;\n      dictionary.aggregationInstancesSelector = (dictionaryFlags >> 7) & 1;\n      dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);\n      dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);\n      dictionary.template = (dictionaryFlags >> 10) & 3;\n      dictionary.refinementTemplate = (dictionaryFlags >> 12) & 1;\n      position += 2;\n      if (!dictionary.huffman) {\n        atLength = dictionary.template === 0 ? 4 : 1;\n        at = [];\n        for (i = 0; i < atLength; i++) {\n          at.push({\n            x: readInt8(data, position),\n            y: readInt8(data, position + 1),\n          });\n          position += 2;\n        }\n        dictionary.at = at;\n      }\n      if (dictionary.refinement && !dictionary.refinementTemplate) {\n        at = [];\n        for (i = 0; i < 2; i++) {\n          at.push({\n            x: readInt8(data, position),\n            y: readInt8(data, position + 1),\n          });\n          position += 2;\n        }\n        dictionary.refinementAt = at;\n      }\n      dictionary.numberOfExportedSymbols = readUint32(data, position);\n      position += 4;\n      dictionary.numberOfNewSymbols = readUint32(data, position);\n      position += 4;\n      args = [\n        dictionary,\n        header.number,\n        header.referredTo,\n        data,\n        position,\n        end,\n      ];\n      break;\n    case 6: // ImmediateTextRegion\n    case 7: // ImmediateLosslessTextRegion\n      const textRegion = {};\n      textRegion.info = readRegionSegmentInformation(data, position);\n      position += RegionSegmentInformationFieldLength;\n      const textRegionSegmentFlags = readUint16(data, position);\n      position += 2;\n      textRegion.huffman = !!(textRegionSegmentFlags & 1);\n      textRegion.refinement = !!(textRegionSegmentFlags & 2);\n      textRegion.logStripSize = (textRegionSegmentFlags >> 2) & 3;\n      textRegion.stripSize = 1 << textRegion.logStripSize;\n      textRegion.referenceCorner = (textRegionSegmentFlags >> 4) & 3;\n      textRegion.transposed = !!(textRegionSegmentFlags & 64);\n      textRegion.combinationOperator = (textRegionSegmentFlags >> 7) & 3;\n      textRegion.defaultPixelValue = (textRegionSegmentFlags >> 9) & 1;\n      textRegion.dsOffset = (textRegionSegmentFlags << 17) >> 27;\n      textRegion.refinementTemplate = (textRegionSegmentFlags >> 15) & 1;\n      if (textRegion.huffman) {\n        const textRegionHuffmanFlags = readUint16(data, position);\n        position += 2;\n        textRegion.huffmanFS = textRegionHuffmanFlags & 3;\n        textRegion.huffmanDS = (textRegionHuffmanFlags >> 2) & 3;\n        textRegion.huffmanDT = (textRegionHuffmanFlags >> 4) & 3;\n        textRegion.huffmanRefinementDW = (textRegionHuffmanFlags >> 6) & 3;\n        textRegion.huffmanRefinementDH = (textRegionHuffmanFlags >> 8) & 3;\n        textRegion.huffmanRefinementDX = (textRegionHuffmanFlags >> 10) & 3;\n        textRegion.huffmanRefinementDY = (textRegionHuffmanFlags >> 12) & 3;\n        textRegion.huffmanRefinementSizeSelector = !!(\n          textRegionHuffmanFlags & 0x4000\n        );\n      }\n      if (textRegion.refinement && !textRegion.refinementTemplate) {\n        at = [];\n        for (i = 0; i < 2; i++) {\n          at.push({\n            x: readInt8(data, position),\n            y: readInt8(data, position + 1),\n          });\n          position += 2;\n        }\n        textRegion.refinementAt = at;\n      }\n      textRegion.numberOfSymbolInstances = readUint32(data, position);\n      position += 4;\n      args = [textRegion, header.referredTo, data, position, end];\n      break;\n    case 16: // PatternDictionary\n      // 7.4.4. Pattern dictionary segment syntax\n      const patternDictionary = {};\n      const patternDictionaryFlags = data[position++];\n      patternDictionary.mmr = !!(patternDictionaryFlags & 1);\n      patternDictionary.template = (patternDictionaryFlags >> 1) & 3;\n      patternDictionary.patternWidth = data[position++];\n      patternDictionary.patternHeight = data[position++];\n      patternDictionary.maxPatternIndex = readUint32(data, position);\n      position += 4;\n      args = [patternDictionary, header.number, data, position, end];\n      break;\n    case 22: // ImmediateHalftoneRegion\n    case 23: // ImmediateLosslessHalftoneRegion\n      // 7.4.5 Halftone region segment syntax\n      const halftoneRegion = {};\n      halftoneRegion.info = readRegionSegmentInformation(data, position);\n      position += RegionSegmentInformationFieldLength;\n      const halftoneRegionFlags = data[position++];\n      halftoneRegion.mmr = !!(halftoneRegionFlags & 1);\n      halftoneRegion.template = (halftoneRegionFlags >> 1) & 3;\n      halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8);\n      halftoneRegion.combinationOperator = (halftoneRegionFlags >> 4) & 7;\n      halftoneRegion.defaultPixelValue = (halftoneRegionFlags >> 7) & 1;\n      halftoneRegion.gridWidth = readUint32(data, position);\n      position += 4;\n      halftoneRegion.gridHeight = readUint32(data, position);\n      position += 4;\n      halftoneRegion.gridOffsetX = readUint32(data, position) & 0xffffffff;\n      position += 4;\n      halftoneRegion.gridOffsetY = readUint32(data, position) & 0xffffffff;\n      position += 4;\n      halftoneRegion.gridVectorX = readUint16(data, position);\n      position += 2;\n      halftoneRegion.gridVectorY = readUint16(data, position);\n      position += 2;\n      args = [halftoneRegion, header.referredTo, data, position, end];\n      break;\n    case 38: // ImmediateGenericRegion\n    case 39: // ImmediateLosslessGenericRegion\n      const genericRegion = {};\n      genericRegion.info = readRegionSegmentInformation(data, position);\n      position += RegionSegmentInformationFieldLength;\n      const genericRegionSegmentFlags = data[position++];\n      genericRegion.mmr = !!(genericRegionSegmentFlags & 1);\n      genericRegion.template = (genericRegionSegmentFlags >> 1) & 3;\n      genericRegion.prediction = !!(genericRegionSegmentFlags & 8);\n      if (!genericRegion.mmr) {\n        atLength = genericRegion.template === 0 ? 4 : 1;\n        at = [];\n        for (i = 0; i < atLength; i++) {\n          at.push({\n            x: readInt8(data, position),\n            y: readInt8(data, position + 1),\n          });\n          position += 2;\n        }\n        genericRegion.at = at;\n      }\n      args = [genericRegion, data, position, end];\n      break;\n    case 48: // PageInformation\n      const pageInfo = {\n        width: readUint32(data, position),\n        height: readUint32(data, position + 4),\n        resolutionX: readUint32(data, position + 8),\n        resolutionY: readUint32(data, position + 12),\n      };\n      if (pageInfo.height === 0xffffffff) {\n        delete pageInfo.height;\n      }\n      const pageSegmentFlags = data[position + 16];\n      readUint16(data, position + 17); // pageStripingInformation\n      pageInfo.lossless = !!(pageSegmentFlags & 1);\n      pageInfo.refinement = !!(pageSegmentFlags & 2);\n      pageInfo.defaultPixelValue = (pageSegmentFlags >> 2) & 1;\n      pageInfo.combinationOperator = (pageSegmentFlags >> 3) & 3;\n      pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);\n      pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);\n      args = [pageInfo];\n      break;\n    case 49: // EndOfPage\n      break;\n    case 50: // EndOfStripe\n      break;\n    case 51: // EndOfFile\n      break;\n    case 53: // Tables\n      args = [header.number, data, position, end];\n      break;\n    case 62: // 7.4.15 defines 2 extension types which\n      // are comments and can be ignored.\n      break;\n    default:\n      throw new Jbig2Error(\n        `segment type ${header.typeName}(${header.type}) is not implemented`\n      );\n  }\n  const callbackName = \"on\" + header.typeName;\n  if (callbackName in visitor) {\n    // eslint-disable-next-line prefer-spread\n    visitor[callbackName].apply(visitor, args);\n  }\n}\n\nfunction processSegments(segments, visitor) {\n  for (let i = 0, ii = segments.length; i < ii; i++) {\n    processSegment(segments[i], visitor);\n  }\n}\n\nfunction parseJbig2Chunks(chunks) {\n  const visitor = new SimpleSegmentVisitor();\n  for (let i = 0, ii = chunks.length; i < ii; i++) {\n    const chunk = chunks[i];\n    const segments = readSegments({}, chunk.data, chunk.start, chunk.end);\n    processSegments(segments, visitor);\n  }\n  return visitor.buffer;\n}\n\nfunction parseJbig2(data) {\n  if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"IMAGE_DECODERS\")) {\n    throw new Error(\"Not implemented: parseJbig2\");\n  }\n  const end = data.length;\n  let position = 0;\n\n  if (\n    data[position] !== 0x97 ||\n    data[position + 1] !== 0x4a ||\n    data[position + 2] !== 0x42 ||\n    data[position + 3] !== 0x32 ||\n    data[position + 4] !== 0x0d ||\n    data[position + 5] !== 0x0a ||\n    data[position + 6] !== 0x1a ||\n    data[position + 7] !== 0x0a\n  ) {\n    throw new Jbig2Error(\"parseJbig2 - invalid header.\");\n  }\n\n  const header = Object.create(null);\n  position += 8;\n  const flags = data[position++];\n  header.randomAccess = !(flags & 1);\n  if (!(flags & 2)) {\n    header.numberOfPages = readUint32(data, position);\n    position += 4;\n  }\n\n  const segments = readSegments(header, data, position, end);\n  const visitor = new SimpleSegmentVisitor();\n  processSegments(segments, visitor);\n\n  const { width, height } = visitor.currentPageInfo;\n  const bitPacked = visitor.buffer;\n  const imgData = new Uint8ClampedArray(width * height);\n  let q = 0,\n    k = 0;\n  for (let i = 0; i < height; i++) {\n    let mask = 0,\n      buffer;\n    for (let j = 0; j < width; j++) {\n      if (!mask) {\n        mask = 128;\n        buffer = bitPacked[k++];\n      }\n      imgData[q++] = buffer & mask ? 0 : 255;\n      mask >>= 1;\n    }\n  }\n\n  return { imgData, width, height };\n}\n\nclass SimpleSegmentVisitor {\n  onPageInformation(info) {\n    this.currentPageInfo = info;\n    const rowSize = (info.width + 7) >> 3;\n    const buffer = new Uint8ClampedArray(rowSize * info.height);\n    // The contents of ArrayBuffers are initialized to 0.\n    // Fill the buffer with 0xFF only if info.defaultPixelValue is set\n    if (info.defaultPixelValue) {\n      buffer.fill(0xff);\n    }\n    this.buffer = buffer;\n  }\n\n  drawBitmap(regionInfo, bitmap) {\n    const pageInfo = this.currentPageInfo;\n    const width = regionInfo.width,\n      height = regionInfo.height;\n    const rowSize = (pageInfo.width + 7) >> 3;\n    const combinationOperator = pageInfo.combinationOperatorOverride\n      ? regionInfo.combinationOperator\n      : pageInfo.combinationOperator;\n    const buffer = this.buffer;\n    const mask0 = 128 >> (regionInfo.x & 7);\n    let offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);\n    let i, j, mask, offset;\n    switch (combinationOperator) {\n      case 0: // OR\n        for (i = 0; i < height; i++) {\n          mask = mask0;\n          offset = offset0;\n          for (j = 0; j < width; j++) {\n            if (bitmap[i][j]) {\n              buffer[offset] |= mask;\n            }\n            mask >>= 1;\n            if (!mask) {\n              mask = 128;\n              offset++;\n            }\n          }\n          offset0 += rowSize;\n        }\n        break;\n      case 2: // XOR\n        for (i = 0; i < height; i++) {\n          mask = mask0;\n          offset = offset0;\n          for (j = 0; j < width; j++) {\n            if (bitmap[i][j]) {\n              buffer[offset] ^= mask;\n            }\n            mask >>= 1;\n            if (!mask) {\n              mask = 128;\n              offset++;\n            }\n          }\n          offset0 += rowSize;\n        }\n        break;\n      default:\n        throw new Jbig2Error(\n          `operator ${combinationOperator} is not supported`\n        );\n    }\n  }\n\n  onImmediateGenericRegion(region, data, start, end) {\n    const regionInfo = region.info;\n    const decodingContext = new DecodingContext(data, start, end);\n    const bitmap = decodeBitmap(\n      region.mmr,\n      regionInfo.width,\n      regionInfo.height,\n      region.template,\n      region.prediction,\n      null,\n      region.at,\n      decodingContext\n    );\n    this.drawBitmap(regionInfo, bitmap);\n  }\n\n  onImmediateLosslessGenericRegion() {\n    this.onImmediateGenericRegion(...arguments);\n  }\n\n  onSymbolDictionary(\n    dictionary,\n    currentSegment,\n    referredSegments,\n    data,\n    start,\n    end\n  ) {\n    let huffmanTables, huffmanInput;\n    if (dictionary.huffman) {\n      huffmanTables = getSymbolDictionaryHuffmanTables(\n        dictionary,\n        referredSegments,\n        this.customTables\n      );\n      huffmanInput = new Reader(data, start, end);\n    }\n\n    // Combines exported symbols from all referred segments\n    let symbols = this.symbols;\n    if (!symbols) {\n      this.symbols = symbols = {};\n    }\n\n    const inputSymbols = [];\n    for (const referredSegment of referredSegments) {\n      const referredSymbols = symbols[referredSegment];\n      // referredSymbols is undefined when we have a reference to a Tables\n      // segment instead of a SymbolDictionary.\n      if (referredSymbols) {\n        inputSymbols.push(...referredSymbols);\n      }\n    }\n\n    const decodingContext = new DecodingContext(data, start, end);\n    symbols[currentSegment] = decodeSymbolDictionary(\n      dictionary.huffman,\n      dictionary.refinement,\n      inputSymbols,\n      dictionary.numberOfNewSymbols,\n      dictionary.numberOfExportedSymbols,\n      huffmanTables,\n      dictionary.template,\n      dictionary.at,\n      dictionary.refinementTemplate,\n      dictionary.refinementAt,\n      decodingContext,\n      huffmanInput\n    );\n  }\n\n  onImmediateTextRegion(region, referredSegments, data, start, end) {\n    const regionInfo = region.info;\n    let huffmanTables, huffmanInput;\n\n    // Combines exported symbols from all referred segments\n    const symbols = this.symbols;\n    const inputSymbols = [];\n    for (const referredSegment of referredSegments) {\n      const referredSymbols = symbols[referredSegment];\n      // referredSymbols is undefined when we have a reference to a Tables\n      // segment instead of a SymbolDictionary.\n      if (referredSymbols) {\n        inputSymbols.push(...referredSymbols);\n      }\n    }\n    const symbolCodeLength = log2(inputSymbols.length);\n    if (region.huffman) {\n      huffmanInput = new Reader(data, start, end);\n      huffmanTables = getTextRegionHuffmanTables(\n        region,\n        referredSegments,\n        this.customTables,\n        inputSymbols.length,\n        huffmanInput\n      );\n    }\n\n    const decodingContext = new DecodingContext(data, start, end);\n    const bitmap = decodeTextRegion(\n      region.huffman,\n      region.refinement,\n      regionInfo.width,\n      regionInfo.height,\n      region.defaultPixelValue,\n      region.numberOfSymbolInstances,\n      region.stripSize,\n      inputSymbols,\n      symbolCodeLength,\n      region.transposed,\n      region.dsOffset,\n      region.referenceCorner,\n      region.combinationOperator,\n      huffmanTables,\n      region.refinementTemplate,\n      region.refinementAt,\n      decodingContext,\n      region.logStripSize,\n      huffmanInput\n    );\n    this.drawBitmap(regionInfo, bitmap);\n  }\n\n  onImmediateLosslessTextRegion() {\n    this.onImmediateTextRegion(...arguments);\n  }\n\n  onPatternDictionary(dictionary, currentSegment, data, start, end) {\n    let patterns = this.patterns;\n    if (!patterns) {\n      this.patterns = patterns = {};\n    }\n    const decodingContext = new DecodingContext(data, start, end);\n    patterns[currentSegment] = decodePatternDictionary(\n      dictionary.mmr,\n      dictionary.patternWidth,\n      dictionary.patternHeight,\n      dictionary.maxPatternIndex,\n      dictionary.template,\n      decodingContext\n    );\n  }\n\n  onImmediateHalftoneRegion(region, referredSegments, data, start, end) {\n    // HalftoneRegion refers to exactly one PatternDictionary.\n    const patterns = this.patterns[referredSegments[0]];\n    const regionInfo = region.info;\n    const decodingContext = new DecodingContext(data, start, end);\n    const bitmap = decodeHalftoneRegion(\n      region.mmr,\n      patterns,\n      region.template,\n      regionInfo.width,\n      regionInfo.height,\n      region.defaultPixelValue,\n      region.enableSkip,\n      region.combinationOperator,\n      region.gridWidth,\n      region.gridHeight,\n      region.gridOffsetX,\n      region.gridOffsetY,\n      region.gridVectorX,\n      region.gridVectorY,\n      decodingContext\n    );\n    this.drawBitmap(regionInfo, bitmap);\n  }\n\n  onImmediateLosslessHalftoneRegion() {\n    this.onImmediateHalftoneRegion(...arguments);\n  }\n\n  onTables(currentSegment, data, start, end) {\n    let customTables = this.customTables;\n    if (!customTables) {\n      this.customTables = customTables = {};\n    }\n    customTables[currentSegment] = decodeTablesSegment(data, start, end);\n  }\n}\n\nclass HuffmanLine {\n  constructor(lineData) {\n    if (lineData.length === 2) {\n      // OOB line.\n      this.isOOB = true;\n      this.rangeLow = 0;\n      this.prefixLength = lineData[0];\n      this.rangeLength = 0;\n      this.prefixCode = lineData[1];\n      this.isLowerRange = false;\n    } else {\n      // Normal, upper range or lower range line.\n      // Upper range lines are processed like normal lines.\n      this.isOOB = false;\n      this.rangeLow = lineData[0];\n      this.prefixLength = lineData[1];\n      this.rangeLength = lineData[2];\n      this.prefixCode = lineData[3];\n      this.isLowerRange = lineData[4] === \"lower\";\n    }\n  }\n}\n\nclass HuffmanTreeNode {\n  constructor(line) {\n    this.children = [];\n    if (line) {\n      // Leaf node\n      this.isLeaf = true;\n      this.rangeLength = line.rangeLength;\n      this.rangeLow = line.rangeLow;\n      this.isLowerRange = line.isLowerRange;\n      this.isOOB = line.isOOB;\n    } else {\n      // Intermediate or root node\n      this.isLeaf = false;\n    }\n  }\n\n  buildTree(line, shift) {\n    const bit = (line.prefixCode >> shift) & 1;\n    if (shift <= 0) {\n      // Create a leaf node.\n      this.children[bit] = new HuffmanTreeNode(line);\n    } else {\n      // Create an intermediate node and continue recursively.\n      let node = this.children[bit];\n      if (!node) {\n        this.children[bit] = node = new HuffmanTreeNode(null);\n      }\n      node.buildTree(line, shift - 1);\n    }\n  }\n\n  decodeNode(reader) {\n    if (this.isLeaf) {\n      if (this.isOOB) {\n        return null;\n      }\n      const htOffset = reader.readBits(this.rangeLength);\n      return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset);\n    }\n    const node = this.children[reader.readBit()];\n    if (!node) {\n      throw new Jbig2Error(\"invalid Huffman data\");\n    }\n    return node.decodeNode(reader);\n  }\n}\n\nclass HuffmanTable {\n  constructor(lines, prefixCodesDone) {\n    if (!prefixCodesDone) {\n      this.assignPrefixCodes(lines);\n    }\n    // Create Huffman tree.\n    this.rootNode = new HuffmanTreeNode(null);\n    for (let i = 0, ii = lines.length; i < ii; i++) {\n      const line = lines[i];\n      if (line.prefixLength > 0) {\n        this.rootNode.buildTree(line, line.prefixLength - 1);\n      }\n    }\n  }\n\n  decode(reader) {\n    return this.rootNode.decodeNode(reader);\n  }\n\n  assignPrefixCodes(lines) {\n    // Annex B.3 Assigning the prefix codes.\n    const linesLength = lines.length;\n    let prefixLengthMax = 0;\n    for (let i = 0; i < linesLength; i++) {\n      prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength);\n    }\n\n    const histogram = new Uint32Array(prefixLengthMax + 1);\n    for (let i = 0; i < linesLength; i++) {\n      histogram[lines[i].prefixLength]++;\n    }\n    let currentLength = 1,\n      firstCode = 0,\n      currentCode,\n      currentTemp,\n      line;\n    histogram[0] = 0;\n\n    while (currentLength <= prefixLengthMax) {\n      firstCode = (firstCode + histogram[currentLength - 1]) << 1;\n      currentCode = firstCode;\n      currentTemp = 0;\n      while (currentTemp < linesLength) {\n        line = lines[currentTemp];\n        if (line.prefixLength === currentLength) {\n          line.prefixCode = currentCode;\n          currentCode++;\n        }\n        currentTemp++;\n      }\n      currentLength++;\n    }\n  }\n}\n\nfunction decodeTablesSegment(data, start, end) {\n  // Decodes a Tables segment, i.e., a custom Huffman table.\n  // Annex B.2 Code table structure.\n  const flags = data[start];\n  const lowestValue = readUint32(data, start + 1) & 0xffffffff;\n  const highestValue = readUint32(data, start + 5) & 0xffffffff;\n  const reader = new Reader(data, start + 9, end);\n\n  const prefixSizeBits = ((flags >> 1) & 7) + 1;\n  const rangeSizeBits = ((flags >> 4) & 7) + 1;\n  const lines = [];\n  let prefixLength,\n    rangeLength,\n    currentRangeLow = lowestValue;\n\n  // Normal table lines\n  do {\n    prefixLength = reader.readBits(prefixSizeBits);\n    rangeLength = reader.readBits(rangeSizeBits);\n    lines.push(\n      new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0])\n    );\n    currentRangeLow += 1 << rangeLength;\n  } while (currentRangeLow < highestValue);\n\n  // Lower range table line\n  prefixLength = reader.readBits(prefixSizeBits);\n  lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, \"lower\"]));\n\n  // Upper range table line\n  prefixLength = reader.readBits(prefixSizeBits);\n  lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));\n\n  if (flags & 1) {\n    // Out-of-band table line\n    prefixLength = reader.readBits(prefixSizeBits);\n    lines.push(new HuffmanLine([prefixLength, 0]));\n  }\n\n  return new HuffmanTable(lines, false);\n}\n\nconst standardTablesCache = {};\n\nfunction getStandardTable(number) {\n  // Annex B.5 Standard Huffman tables.\n  let table = standardTablesCache[number];\n  if (table) {\n    return table;\n  }\n  let lines;\n  switch (number) {\n    case 1:\n      lines = [\n        [0, 1, 4, 0x0],\n        [16, 2, 8, 0x2],\n        [272, 3, 16, 0x6],\n        [65808, 3, 32, 0x7], // upper\n      ];\n      break;\n    case 2:\n      lines = [\n        [0, 1, 0, 0x0],\n        [1, 2, 0, 0x2],\n        [2, 3, 0, 0x6],\n        [3, 4, 3, 0xe],\n        [11, 5, 6, 0x1e],\n        [75, 6, 32, 0x3e], // upper\n        [6, 0x3f], // OOB\n      ];\n      break;\n    case 3:\n      lines = [\n        [-256, 8, 8, 0xfe],\n        [0, 1, 0, 0x0],\n        [1, 2, 0, 0x2],\n        [2, 3, 0, 0x6],\n        [3, 4, 3, 0xe],\n        [11, 5, 6, 0x1e],\n        [-257, 8, 32, 0xff, \"lower\"],\n        [75, 7, 32, 0x7e], // upper\n        [6, 0x3e], // OOB\n      ];\n      break;\n    case 4:\n      lines = [\n        [1, 1, 0, 0x0],\n        [2, 2, 0, 0x2],\n        [3, 3, 0, 0x6],\n        [4, 4, 3, 0xe],\n        [12, 5, 6, 0x1e],\n        [76, 5, 32, 0x1f], // upper\n      ];\n      break;\n    case 5:\n      lines = [\n        [-255, 7, 8, 0x7e],\n        [1, 1, 0, 0x0],\n        [2, 2, 0, 0x2],\n        [3, 3, 0, 0x6],\n        [4, 4, 3, 0xe],\n        [12, 5, 6, 0x1e],\n        [-256, 7, 32, 0x7f, \"lower\"],\n        [76, 6, 32, 0x3e], // upper\n      ];\n      break;\n    case 6:\n      lines = [\n        [-2048, 5, 10, 0x1c],\n        [-1024, 4, 9, 0x8],\n        [-512, 4, 8, 0x9],\n        [-256, 4, 7, 0xa],\n        [-128, 5, 6, 0x1d],\n        [-64, 5, 5, 0x1e],\n        [-32, 4, 5, 0xb],\n        [0, 2, 7, 0x0],\n        [128, 3, 7, 0x2],\n        [256, 3, 8, 0x3],\n        [512, 4, 9, 0xc],\n        [1024, 4, 10, 0xd],\n        [-2049, 6, 32, 0x3e, \"lower\"],\n        [2048, 6, 32, 0x3f], // upper\n      ];\n      break;\n    case 7:\n      lines = [\n        [-1024, 4, 9, 0x8],\n        [-512, 3, 8, 0x0],\n        [-256, 4, 7, 0x9],\n        [-128, 5, 6, 0x1a],\n        [-64, 5, 5, 0x1b],\n        [-32, 4, 5, 0xa],\n        [0, 4, 5, 0xb],\n        [32, 5, 5, 0x1c],\n        [64, 5, 6, 0x1d],\n        [128, 4, 7, 0xc],\n        [256, 3, 8, 0x1],\n        [512, 3, 9, 0x2],\n        [1024, 3, 10, 0x3],\n        [-1025, 5, 32, 0x1e, \"lower\"],\n        [2048, 5, 32, 0x1f], // upper\n      ];\n      break;\n    case 8:\n      lines = [\n        [-15, 8, 3, 0xfc],\n        [-7, 9, 1, 0x1fc],\n        [-5, 8, 1, 0xfd],\n        [-3, 9, 0, 0x1fd],\n        [-2, 7, 0, 0x7c],\n        [-1, 4, 0, 0xa],\n        [0, 2, 1, 0x0],\n        [2, 5, 0, 0x1a],\n        [3, 6, 0, 0x3a],\n        [4, 3, 4, 0x4],\n        [20, 6, 1, 0x3b],\n        [22, 4, 4, 0xb],\n        [38, 4, 5, 0xc],\n        [70, 5, 6, 0x1b],\n        [134, 5, 7, 0x1c],\n        [262, 6, 7, 0x3c],\n        [390, 7, 8, 0x7d],\n        [646, 6, 10, 0x3d],\n        [-16, 9, 32, 0x1fe, \"lower\"],\n        [1670, 9, 32, 0x1ff], // upper\n        [2, 0x1], // OOB\n      ];\n      break;\n    case 9:\n      lines = [\n        [-31, 8, 4, 0xfc],\n        [-15, 9, 2, 0x1fc],\n        [-11, 8, 2, 0xfd],\n        [-7, 9, 1, 0x1fd],\n        [-5, 7, 1, 0x7c],\n        [-3, 4, 1, 0xa],\n        [-1, 3, 1, 0x2],\n        [1, 3, 1, 0x3],\n        [3, 5, 1, 0x1a],\n        [5, 6, 1, 0x3a],\n        [7, 3, 5, 0x4],\n        [39, 6, 2, 0x3b],\n        [43, 4, 5, 0xb],\n        [75, 4, 6, 0xc],\n        [139, 5, 7, 0x1b],\n        [267, 5, 8, 0x1c],\n        [523, 6, 8, 0x3c],\n        [779, 7, 9, 0x7d],\n        [1291, 6, 11, 0x3d],\n        [-32, 9, 32, 0x1fe, \"lower\"],\n        [3339, 9, 32, 0x1ff], // upper\n        [2, 0x0], // OOB\n      ];\n      break;\n    case 10:\n      lines = [\n        [-21, 7, 4, 0x7a],\n        [-5, 8, 0, 0xfc],\n        [-4, 7, 0, 0x7b],\n        [-3, 5, 0, 0x18],\n        [-2, 2, 2, 0x0],\n        [2, 5, 0, 0x19],\n        [3, 6, 0, 0x36],\n        [4, 7, 0, 0x7c],\n        [5, 8, 0, 0xfd],\n        [6, 2, 6, 0x1],\n        [70, 5, 5, 0x1a],\n        [102, 6, 5, 0x37],\n        [134, 6, 6, 0x38],\n        [198, 6, 7, 0x39],\n        [326, 6, 8, 0x3a],\n        [582, 6, 9, 0x3b],\n        [1094, 6, 10, 0x3c],\n        [2118, 7, 11, 0x7d],\n        [-22, 8, 32, 0xfe, \"lower\"],\n        [4166, 8, 32, 0xff], // upper\n        [2, 0x2], // OOB\n      ];\n      break;\n    case 11:\n      lines = [\n        [1, 1, 0, 0x0],\n        [2, 2, 1, 0x2],\n        [4, 4, 0, 0xc],\n        [5, 4, 1, 0xd],\n        [7, 5, 1, 0x1c],\n        [9, 5, 2, 0x1d],\n        [13, 6, 2, 0x3c],\n        [17, 7, 2, 0x7a],\n        [21, 7, 3, 0x7b],\n        [29, 7, 4, 0x7c],\n        [45, 7, 5, 0x7d],\n        [77, 7, 6, 0x7e],\n        [141, 7, 32, 0x7f], // upper\n      ];\n      break;\n    case 12:\n      lines = [\n        [1, 1, 0, 0x0],\n        [2, 2, 0, 0x2],\n        [3, 3, 1, 0x6],\n        [5, 5, 0, 0x1c],\n        [6, 5, 1, 0x1d],\n        [8, 6, 1, 0x3c],\n        [10, 7, 0, 0x7a],\n        [11, 7, 1, 0x7b],\n        [13, 7, 2, 0x7c],\n        [17, 7, 3, 0x7d],\n        [25, 7, 4, 0x7e],\n        [41, 8, 5, 0xfe],\n        [73, 8, 32, 0xff], // upper\n      ];\n      break;\n    case 13:\n      lines = [\n        [1, 1, 0, 0x0],\n        [2, 3, 0, 0x4],\n        [3, 4, 0, 0xc],\n        [4, 5, 0, 0x1c],\n        [5, 4, 1, 0xd],\n        [7, 3, 3, 0x5],\n        [15, 6, 1, 0x3a],\n        [17, 6, 2, 0x3b],\n        [21, 6, 3, 0x3c],\n        [29, 6, 4, 0x3d],\n        [45, 6, 5, 0x3e],\n        [77, 7, 6, 0x7e],\n        [141, 7, 32, 0x7f], // upper\n      ];\n      break;\n    case 14:\n      lines = [\n        [-2, 3, 0, 0x4],\n        [-1, 3, 0, 0x5],\n        [0, 1, 0, 0x0],\n        [1, 3, 0, 0x6],\n        [2, 3, 0, 0x7],\n      ];\n      break;\n    case 15:\n      lines = [\n        [-24, 7, 4, 0x7c],\n        [-8, 6, 2, 0x3c],\n        [-4, 5, 1, 0x1c],\n        [-2, 4, 0, 0xc],\n        [-1, 3, 0, 0x4],\n        [0, 1, 0, 0x0],\n        [1, 3, 0, 0x5],\n        [2, 4, 0, 0xd],\n        [3, 5, 1, 0x1d],\n        [5, 6, 2, 0x3d],\n        [9, 7, 4, 0x7d],\n        [-25, 7, 32, 0x7e, \"lower\"],\n        [25, 7, 32, 0x7f], // upper\n      ];\n      break;\n    default:\n      throw new Jbig2Error(`standard table B.${number} does not exist`);\n  }\n\n  for (let i = 0, ii = lines.length; i < ii; i++) {\n    lines[i] = new HuffmanLine(lines[i]);\n  }\n  table = new HuffmanTable(lines, true);\n  standardTablesCache[number] = table;\n  return table;\n}\n\nclass Reader {\n  constructor(data, start, end) {\n    this.data = data;\n    this.start = start;\n    this.end = end;\n    this.position = start;\n    this.shift = -1;\n    this.currentByte = 0;\n  }\n\n  readBit() {\n    if (this.shift < 0) {\n      if (this.position >= this.end) {\n        throw new Jbig2Error(\"end of data while reading bit\");\n      }\n      this.currentByte = this.data[this.position++];\n      this.shift = 7;\n    }\n    const bit = (this.currentByte >> this.shift) & 1;\n    this.shift--;\n    return bit;\n  }\n\n  readBits(numBits) {\n    let result = 0,\n      i;\n    for (i = numBits - 1; i >= 0; i--) {\n      result |= this.readBit() << i;\n    }\n    return result;\n  }\n\n  byteAlign() {\n    this.shift = -1;\n  }\n\n  next() {\n    if (this.position >= this.end) {\n      return -1;\n    }\n    return this.data[this.position++];\n  }\n}\n\nfunction getCustomHuffmanTable(index, referredTo, customTables) {\n  // Returns a Tables segment that has been earlier decoded.\n  // See 7.4.2.1.6 (symbol dictionary) or 7.4.3.1.6 (text region).\n  let currentIndex = 0;\n  for (let i = 0, ii = referredTo.length; i < ii; i++) {\n    const table = customTables[referredTo[i]];\n    if (table) {\n      if (index === currentIndex) {\n        return table;\n      }\n      currentIndex++;\n    }\n  }\n  throw new Jbig2Error(\"can't find custom Huffman table\");\n}\n\nfunction getTextRegionHuffmanTables(\n  textRegion,\n  referredTo,\n  customTables,\n  numberOfSymbols,\n  reader\n) {\n  // 7.4.3.1.7 Symbol ID Huffman table decoding\n\n  // Read code lengths for RUNCODEs 0...34.\n  const codes = [];\n  for (let i = 0; i <= 34; i++) {\n    const codeLength = reader.readBits(4);\n    codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n  }\n  // Assign Huffman codes for RUNCODEs.\n  const runCodesTable = new HuffmanTable(codes, false);\n\n  // Read a Huffman code using the assignment above.\n  // Interpret the RUNCODE codes and the additional bits (if any).\n  codes.length = 0;\n  for (let i = 0; i < numberOfSymbols; ) {\n    const codeLength = runCodesTable.decode(reader);\n    if (codeLength >= 32) {\n      let repeatedLength, numberOfRepeats, j;\n      switch (codeLength) {\n        case 32:\n          if (i === 0) {\n            throw new Jbig2Error(\"no previous value in symbol ID table\");\n          }\n          numberOfRepeats = reader.readBits(2) + 3;\n          repeatedLength = codes[i - 1].prefixLength;\n          break;\n        case 33:\n          numberOfRepeats = reader.readBits(3) + 3;\n          repeatedLength = 0;\n          break;\n        case 34:\n          numberOfRepeats = reader.readBits(7) + 11;\n          repeatedLength = 0;\n          break;\n        default:\n          throw new Jbig2Error(\"invalid code length in symbol ID table\");\n      }\n      for (j = 0; j < numberOfRepeats; j++) {\n        codes.push(new HuffmanLine([i, repeatedLength, 0, 0]));\n        i++;\n      }\n    } else {\n      codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n      i++;\n    }\n  }\n  reader.byteAlign();\n  const symbolIDTable = new HuffmanTable(codes, false);\n\n  // 7.4.3.1.6 Text region segment Huffman table selection\n\n  let customIndex = 0,\n    tableFirstS,\n    tableDeltaS,\n    tableDeltaT;\n\n  switch (textRegion.huffmanFS) {\n    case 0:\n    case 1:\n      tableFirstS = getStandardTable(textRegion.huffmanFS + 6);\n      break;\n    case 3:\n      tableFirstS = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n      customIndex++;\n      break;\n    default:\n      throw new Jbig2Error(\"invalid Huffman FS selector\");\n  }\n\n  switch (textRegion.huffmanDS) {\n    case 0:\n    case 1:\n    case 2:\n      tableDeltaS = getStandardTable(textRegion.huffmanDS + 8);\n      break;\n    case 3:\n      tableDeltaS = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n      customIndex++;\n      break;\n    default:\n      throw new Jbig2Error(\"invalid Huffman DS selector\");\n  }\n\n  switch (textRegion.huffmanDT) {\n    case 0:\n    case 1:\n    case 2:\n      tableDeltaT = getStandardTable(textRegion.huffmanDT + 11);\n      break;\n    case 3:\n      tableDeltaT = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n      customIndex++;\n      break;\n    default:\n      throw new Jbig2Error(\"invalid Huffman DT selector\");\n  }\n\n  if (textRegion.refinement) {\n    // Load tables RDW, RDH, RDX and RDY.\n    throw new Jbig2Error(\"refinement with Huffman is not supported\");\n  }\n\n  return {\n    symbolIDTable,\n    tableFirstS,\n    tableDeltaS,\n    tableDeltaT,\n  };\n}\n\nfunction getSymbolDictionaryHuffmanTables(\n  dictionary,\n  referredTo,\n  customTables\n) {\n  // 7.4.2.1.6 Symbol dictionary segment Huffman table selection\n\n  let customIndex = 0,\n    tableDeltaHeight,\n    tableDeltaWidth;\n  switch (dictionary.huffmanDHSelector) {\n    case 0:\n    case 1:\n      tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4);\n      break;\n    case 3:\n      tableDeltaHeight = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n      customIndex++;\n      break;\n    default:\n      throw new Jbig2Error(\"invalid Huffman DH selector\");\n  }\n\n  switch (dictionary.huffmanDWSelector) {\n    case 0:\n    case 1:\n      tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2);\n      break;\n    case 3:\n      tableDeltaWidth = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n      customIndex++;\n      break;\n    default:\n      throw new Jbig2Error(\"invalid Huffman DW selector\");\n  }\n\n  let tableBitmapSize, tableAggregateInstances;\n  if (dictionary.bitmapSizeSelector) {\n    tableBitmapSize = getCustomHuffmanTable(\n      customIndex,\n      referredTo,\n      customTables\n    );\n    customIndex++;\n  } else {\n    tableBitmapSize = getStandardTable(1);\n  }\n\n  if (dictionary.aggregationInstancesSelector) {\n    tableAggregateInstances = getCustomHuffmanTable(\n      customIndex,\n      referredTo,\n      customTables\n    );\n  } else {\n    tableAggregateInstances = getStandardTable(1);\n  }\n\n  return {\n    tableDeltaHeight,\n    tableDeltaWidth,\n    tableBitmapSize,\n    tableAggregateInstances,\n  };\n}\n\nfunction readUncompressedBitmap(reader, width, height) {\n  const bitmap = [];\n  for (let y = 0; y < height; y++) {\n    const row = new Uint8Array(width);\n    bitmap.push(row);\n    for (let x = 0; x < width; x++) {\n      row[x] = reader.readBit();\n    }\n    reader.byteAlign();\n  }\n  return bitmap;\n}\n\nfunction decodeMMRBitmap(input, width, height, endOfBlock) {\n  // MMR is the same compression algorithm as the PDF filter\n  // CCITTFaxDecode with /K -1.\n  const params = {\n    K: -1,\n    Columns: width,\n    Rows: height,\n    BlackIs1: true,\n    EndOfBlock: endOfBlock,\n  };\n  const decoder = new CCITTFaxDecoder(input, params);\n  const bitmap = [];\n  let currentByte,\n    eof = false;\n\n  for (let y = 0; y < height; y++) {\n    const row = new Uint8Array(width);\n    bitmap.push(row);\n    let shift = -1;\n    for (let x = 0; x < width; x++) {\n      if (shift < 0) {\n        currentByte = decoder.readNextChar();\n        if (currentByte === -1) {\n          // Set the rest of the bits to zero.\n          currentByte = 0;\n          eof = true;\n        }\n        shift = 7;\n      }\n      row[x] = (currentByte >> shift) & 1;\n      shift--;\n    }\n  }\n\n  if (endOfBlock && !eof) {\n    // Read until EOFB has been consumed.\n    const lookForEOFLimit = 5;\n    for (let i = 0; i < lookForEOFLimit; i++) {\n      if (decoder.readNextChar() === -1) {\n        break;\n      }\n    }\n  }\n\n  return bitmap;\n}\n\nclass Jbig2Image {\n  parseChunks(chunks) {\n    return parseJbig2Chunks(chunks);\n  }\n\n  parse(data) {\n    if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"IMAGE_DECODERS\")) {\n      throw new Error(\"Not implemented: Jbig2Image.parse\");\n    }\n    const { imgData, width, height } = parseJbig2(data);\n    this.width = width;\n    this.height = height;\n    return imgData;\n  }\n}\n\nexport { Jbig2Image };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FeatureTest, ImageKind } from \"./util.js\";\n\nfunction convertToRGBA(params) {\n  switch (params.kind) {\n    case ImageKind.GRAYSCALE_1BPP:\n      return convertBlackAndWhiteToRGBA(params);\n    case ImageKind.RGB_24BPP:\n      return convertRGBToRGBA(params);\n  }\n\n  return null;\n}\n\nfunction convertBlackAndWhiteToRGBA({\n  src,\n  srcPos = 0,\n  dest,\n  width,\n  height,\n  nonBlackColor = 0xffffffff,\n  inverseDecode = false,\n}) {\n  const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n  const [zeroMapping, oneMapping] = inverseDecode\n    ? [nonBlackColor, black]\n    : [black, nonBlackColor];\n  const widthInSource = width >> 3;\n  const widthRemainder = width & 7;\n  const srcLength = src.length;\n  dest = new Uint32Array(dest.buffer);\n  let destPos = 0;\n\n  for (let i = 0; i < height; i++) {\n    for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n      const elem = srcPos < srcLength ? src[srcPos] : 255;\n      dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n    }\n    if (widthRemainder === 0) {\n      continue;\n    }\n    const elem = srcPos < srcLength ? src[srcPos++] : 255;\n    for (let j = 0; j < widthRemainder; j++) {\n      dest[destPos++] = elem & (1 << (7 - j)) ? oneMapping : zeroMapping;\n    }\n  }\n  return { srcPos, destPos };\n}\n\nfunction convertRGBToRGBA({\n  src,\n  srcPos = 0,\n  dest,\n  destPos = 0,\n  width,\n  height,\n}) {\n  let i = 0;\n  const len32 = src.length >> 2;\n  const src32 = new Uint32Array(src.buffer, srcPos, len32);\n\n  if (FeatureTest.isLittleEndian) {\n    // It's a way faster to do the shuffle manually instead of working\n    // component by component with some Uint8 arrays.\n    for (; i < len32 - 2; i += 3, destPos += 4) {\n      const s1 = src32[i]; // R2B1G1R1\n      const s2 = src32[i + 1]; // G3R3B2G2\n      const s3 = src32[i + 2]; // B4G4R4B3\n\n      dest[destPos] = s1 | 0xff000000;\n      dest[destPos + 1] = (s1 >>> 24) | (s2 << 8) | 0xff000000;\n      dest[destPos + 2] = (s2 >>> 16) | (s3 << 16) | 0xff000000;\n      dest[destPos + 3] = (s3 >>> 8) | 0xff000000;\n    }\n\n    for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n      dest[destPos++] =\n        src[j] | (src[j + 1] << 8) | (src[j + 2] << 16) | 0xff000000;\n    }\n  } else {\n    for (; i < len32 - 2; i += 3, destPos += 4) {\n      const s1 = src32[i]; // R1G1B1R2\n      const s2 = src32[i + 1]; // G2B2R3G3\n      const s3 = src32[i + 2]; // B3R4G4B4\n\n      dest[destPos] = s1 | 0xff;\n      dest[destPos + 1] = (s1 << 24) | (s2 >>> 8) | 0xff;\n      dest[destPos + 2] = (s2 << 16) | (s3 >>> 16) | 0xff;\n      dest[destPos + 3] = (s3 << 8) | 0xff;\n    }\n\n    for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n      dest[destPos++] =\n        (src[j] << 24) | (src[j + 1] << 16) | (src[j + 2] << 8) | 0xff;\n    }\n  }\n\n  return { srcPos, destPos };\n}\n\nfunction grayToRGBA(src, dest) {\n  if (FeatureTest.isLittleEndian) {\n    for (let i = 0, ii = src.length; i < ii; i++) {\n      dest[i] = (src[i] * 0x10101) | 0xff000000;\n    }\n  } else {\n    for (let i = 0, ii = src.length; i < ii; i++) {\n      dest[i] = (src[i] * 0x1010100) | 0x000000ff;\n    }\n  }\n}\n\nexport { convertBlackAndWhiteToRGBA, convertToRGBA, grayToRGBA };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, BaseException, warn } from \"../shared/util.js\";\nimport { grayToRGBA } from \"../shared/image_utils.js\";\nimport { readUint16 } from \"./core_utils.js\";\n\nclass JpegError extends BaseException {\n  constructor(msg) {\n    super(`JPEG error: ${msg}`, \"JpegError\");\n  }\n}\n\nclass DNLMarkerError extends BaseException {\n  constructor(message, scanLines) {\n    super(message, \"DNLMarkerError\");\n    this.scanLines = scanLines;\n  }\n}\n\nclass EOIMarkerError extends BaseException {\n  constructor(msg) {\n    super(msg, \"EOIMarkerError\");\n  }\n}\n\n/**\n * This code was forked from https://github.com/notmasteryet/jpgjs.\n * The original version was created by GitHub user notmasteryet.\n *\n * - The JPEG specification can be found in the ITU CCITT Recommendation T.81\n *   (www.w3.org/Graphics/JPEG/itu-t81.pdf)\n * - The JFIF specification can be found in the JPEG File Interchange Format\n *   (www.w3.org/Graphics/JPEG/jfif3.pdf)\n * - The Adobe Application-Specific JPEG markers in the\n *   Supporting the DCT Filters in PostScript Level 2, Technical Note #5116\n *   (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)\n */\n\n// prettier-ignore\nconst dctZigZag = new Uint8Array([\n   0,\n   1,  8,\n  16,  9,  2,\n   3, 10, 17, 24,\n  32, 25, 18, 11, 4,\n   5, 12, 19, 26, 33, 40,\n  48, 41, 34, 27, 20, 13,  6,\n   7, 14, 21, 28, 35, 42, 49, 56,\n  57, 50, 43, 36, 29, 22, 15,\n  23, 30, 37, 44, 51, 58,\n  59, 52, 45, 38, 31,\n  39, 46, 53, 60,\n  61, 54, 47,\n  55, 62,\n  63\n]);\n\nconst dctCos1 = 4017; // cos(pi/16)\nconst dctSin1 = 799; // sin(pi/16)\nconst dctCos3 = 3406; // cos(3*pi/16)\nconst dctSin3 = 2276; // sin(3*pi/16)\nconst dctCos6 = 1567; // cos(6*pi/16)\nconst dctSin6 = 3784; // sin(6*pi/16)\nconst dctSqrt2 = 5793; // sqrt(2)\nconst dctSqrt1d2 = 2896; // sqrt(2) / 2\n\nfunction buildHuffmanTable(codeLengths, values) {\n  let k = 0,\n    i,\n    j,\n    length = 16;\n  while (length > 0 && !codeLengths[length - 1]) {\n    length--;\n  }\n  const code = [{ children: [], index: 0 }];\n  let p = code[0],\n    q;\n  for (i = 0; i < length; i++) {\n    for (j = 0; j < codeLengths[i]; j++) {\n      p = code.pop();\n      p.children[p.index] = values[k];\n      while (p.index > 0) {\n        p = code.pop();\n      }\n      p.index++;\n      code.push(p);\n      while (code.length <= i) {\n        code.push((q = { children: [], index: 0 }));\n        p.children[p.index] = q.children;\n        p = q;\n      }\n      k++;\n    }\n    if (i + 1 < length) {\n      // p here points to last code\n      code.push((q = { children: [], index: 0 }));\n      p.children[p.index] = q.children;\n      p = q;\n    }\n  }\n  return code[0].children;\n}\n\nfunction getBlockBufferOffset(component, row, col) {\n  return 64 * ((component.blocksPerLine + 1) * row + col);\n}\n\nfunction decodeScan(\n  data,\n  offset,\n  frame,\n  components,\n  resetInterval,\n  spectralStart,\n  spectralEnd,\n  successivePrev,\n  successive,\n  parseDNLMarker = false\n) {\n  const mcusPerLine = frame.mcusPerLine;\n  const progressive = frame.progressive;\n\n  const startOffset = offset;\n  let bitsData = 0,\n    bitsCount = 0;\n\n  function readBit() {\n    if (bitsCount > 0) {\n      bitsCount--;\n      return (bitsData >> bitsCount) & 1;\n    }\n    bitsData = data[offset++];\n    if (bitsData === 0xff) {\n      const nextByte = data[offset++];\n      if (nextByte) {\n        if (nextByte === /* DNL = */ 0xdc && parseDNLMarker) {\n          offset += 2; // Skip marker length.\n\n          const scanLines = readUint16(data, offset);\n          offset += 2;\n          if (scanLines > 0 && scanLines !== frame.scanLines) {\n            throw new DNLMarkerError(\n              \"Found DNL marker (0xFFDC) while parsing scan data\",\n              scanLines\n            );\n          }\n        } else if (nextByte === /* EOI = */ 0xd9) {\n          if (parseDNLMarker) {\n            // NOTE: only 8-bit JPEG images are supported in this decoder.\n            const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);\n            // Heuristic to attempt to handle corrupt JPEG images with too\n            // large `scanLines` parameter, by falling back to the currently\n            // parsed number of scanLines when it's at least (approximately)\n            // one \"half\" order of magnitude smaller than expected (fixes\n            // issue10880.pdf, issue10989.pdf, issue15492.pdf).\n            if (\n              maybeScanLines > 0 &&\n              Math.round(frame.scanLines / maybeScanLines) >= 5\n            ) {\n              throw new DNLMarkerError(\n                \"Found EOI marker (0xFFD9) while parsing scan data, \" +\n                  \"possibly caused by incorrect `scanLines` parameter\",\n                maybeScanLines\n              );\n            }\n          }\n          throw new EOIMarkerError(\n            \"Found EOI marker (0xFFD9) while parsing scan data\"\n          );\n        }\n        throw new JpegError(\n          `unexpected marker ${((bitsData << 8) | nextByte).toString(16)}`\n        );\n      }\n      // unstuff 0\n    }\n    bitsCount = 7;\n    return bitsData >>> 7;\n  }\n\n  function decodeHuffman(tree) {\n    let node = tree;\n    while (true) {\n      node = node[readBit()];\n      switch (typeof node) {\n        case \"number\":\n          return node;\n        case \"object\":\n          continue;\n      }\n      throw new JpegError(\"invalid huffman sequence\");\n    }\n  }\n\n  function receive(length) {\n    let n = 0;\n    while (length > 0) {\n      n = (n << 1) | readBit();\n      length--;\n    }\n    return n;\n  }\n\n  function receiveAndExtend(length) {\n    if (length === 1) {\n      return readBit() === 1 ? 1 : -1;\n    }\n    const n = receive(length);\n    if (n >= 1 << (length - 1)) {\n      return n;\n    }\n    return n + (-1 << length) + 1;\n  }\n\n  function decodeBaseline(component, blockOffset) {\n    const t = decodeHuffman(component.huffmanTableDC);\n    const diff = t === 0 ? 0 : receiveAndExtend(t);\n    component.blockData[blockOffset] = component.pred += diff;\n    let k = 1;\n    while (k < 64) {\n      const rs = decodeHuffman(component.huffmanTableAC);\n      const s = rs & 15,\n        r = rs >> 4;\n      if (s === 0) {\n        if (r < 15) {\n          break;\n        }\n        k += 16;\n        continue;\n      }\n      k += r;\n      const z = dctZigZag[k];\n      component.blockData[blockOffset + z] = receiveAndExtend(s);\n      k++;\n    }\n  }\n\n  function decodeDCFirst(component, blockOffset) {\n    const t = decodeHuffman(component.huffmanTableDC);\n    const diff = t === 0 ? 0 : receiveAndExtend(t) << successive;\n    component.blockData[blockOffset] = component.pred += diff;\n  }\n\n  function decodeDCSuccessive(component, blockOffset) {\n    component.blockData[blockOffset] |= readBit() << successive;\n  }\n\n  let eobrun = 0;\n  function decodeACFirst(component, blockOffset) {\n    if (eobrun > 0) {\n      eobrun--;\n      return;\n    }\n    let k = spectralStart;\n    const e = spectralEnd;\n    while (k <= e) {\n      const rs = decodeHuffman(component.huffmanTableAC);\n      const s = rs & 15,\n        r = rs >> 4;\n      if (s === 0) {\n        if (r < 15) {\n          eobrun = receive(r) + (1 << r) - 1;\n          break;\n        }\n        k += 16;\n        continue;\n      }\n      k += r;\n      const z = dctZigZag[k];\n      component.blockData[blockOffset + z] =\n        receiveAndExtend(s) * (1 << successive);\n      k++;\n    }\n  }\n\n  let successiveACState = 0,\n    successiveACNextValue;\n  function decodeACSuccessive(component, blockOffset) {\n    let k = spectralStart;\n    const e = spectralEnd;\n    let r = 0;\n    let s;\n    let rs;\n    while (k <= e) {\n      const offsetZ = blockOffset + dctZigZag[k];\n      const sign = component.blockData[offsetZ] < 0 ? -1 : 1;\n      switch (successiveACState) {\n        case 0: // initial state\n          rs = decodeHuffman(component.huffmanTableAC);\n          s = rs & 15;\n          r = rs >> 4;\n          if (s === 0) {\n            if (r < 15) {\n              eobrun = receive(r) + (1 << r);\n              successiveACState = 4;\n            } else {\n              r = 16;\n              successiveACState = 1;\n            }\n          } else {\n            if (s !== 1) {\n              throw new JpegError(\"invalid ACn encoding\");\n            }\n            successiveACNextValue = receiveAndExtend(s);\n            successiveACState = r ? 2 : 3;\n          }\n          continue;\n        case 1: // skipping r zero items\n        case 2:\n          if (component.blockData[offsetZ]) {\n            component.blockData[offsetZ] += sign * (readBit() << successive);\n          } else {\n            r--;\n            if (r === 0) {\n              successiveACState = successiveACState === 2 ? 3 : 0;\n            }\n          }\n          break;\n        case 3: // set value for a zero item\n          if (component.blockData[offsetZ]) {\n            component.blockData[offsetZ] += sign * (readBit() << successive);\n          } else {\n            component.blockData[offsetZ] = successiveACNextValue << successive;\n            successiveACState = 0;\n          }\n          break;\n        case 4: // eob\n          if (component.blockData[offsetZ]) {\n            component.blockData[offsetZ] += sign * (readBit() << successive);\n          }\n          break;\n      }\n      k++;\n    }\n    if (successiveACState === 4) {\n      eobrun--;\n      if (eobrun === 0) {\n        successiveACState = 0;\n      }\n    }\n  }\n\n  let blockRow = 0;\n  function decodeMcu(component, decode, mcu, row, col) {\n    const mcuRow = (mcu / mcusPerLine) | 0;\n    const mcuCol = mcu % mcusPerLine;\n    blockRow = mcuRow * component.v + row;\n    const blockCol = mcuCol * component.h + col;\n    const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n    decode(component, blockOffset);\n  }\n\n  function decodeBlock(component, decode, mcu) {\n    blockRow = (mcu / component.blocksPerLine) | 0;\n    const blockCol = mcu % component.blocksPerLine;\n    const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n    decode(component, blockOffset);\n  }\n\n  const componentsLength = components.length;\n  let component, i, j, k, n;\n  let decodeFn;\n  if (progressive) {\n    if (spectralStart === 0) {\n      decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n    } else {\n      decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n    }\n  } else {\n    decodeFn = decodeBaseline;\n  }\n\n  let mcu = 0,\n    fileMarker;\n  const mcuExpected =\n    componentsLength === 1\n      ? components[0].blocksPerLine * components[0].blocksPerColumn\n      : mcusPerLine * frame.mcusPerColumn;\n\n  let h, v;\n  while (mcu <= mcuExpected) {\n    // reset interval stuff\n    const mcuToRead = resetInterval\n      ? Math.min(mcuExpected - mcu, resetInterval)\n      : mcuExpected;\n\n    // The `mcuToRead === 0` case should only occur when all of the expected\n    // MCU data has been already parsed, i.e. when `mcu === mcuExpected`, but\n    // some corrupt JPEG images contain more data than intended and we thus\n    // want to skip over any extra RSTx markers below (fixes issue11794.pdf).\n    if (mcuToRead > 0) {\n      for (i = 0; i < componentsLength; i++) {\n        components[i].pred = 0;\n      }\n      eobrun = 0;\n\n      if (componentsLength === 1) {\n        component = components[0];\n        for (n = 0; n < mcuToRead; n++) {\n          decodeBlock(component, decodeFn, mcu);\n          mcu++;\n        }\n      } else {\n        for (n = 0; n < mcuToRead; n++) {\n          for (i = 0; i < componentsLength; i++) {\n            component = components[i];\n            h = component.h;\n            v = component.v;\n            for (j = 0; j < v; j++) {\n              for (k = 0; k < h; k++) {\n                decodeMcu(component, decodeFn, mcu, j, k);\n              }\n            }\n          }\n          mcu++;\n        }\n      }\n    }\n\n    // find marker\n    bitsCount = 0;\n    fileMarker = findNextFileMarker(data, offset);\n    if (!fileMarker) {\n      break; // Reached the end of the image data without finding any marker.\n    }\n    if (fileMarker.invalid) {\n      // Some bad images seem to pad Scan blocks with e.g. zero bytes, skip\n      // past those to attempt to find a valid marker (fixes issue4090.pdf).\n      const partialMsg = mcuToRead > 0 ? \"unexpected\" : \"excessive\";\n      warn(\n        `decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`\n      );\n      offset = fileMarker.offset;\n    }\n    if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) {\n      // RSTx\n      offset += 2;\n    } else {\n      break;\n    }\n  }\n\n  return offset - startOffset;\n}\n\n// A port of poppler's IDCT method which in turn is taken from:\n//   Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\n//   'Practical Fast 1-D DCT Algorithms with 11 Multiplications',\n//   IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\n//   988-991.\nfunction quantizeAndInverse(component, blockBufferOffset, p) {\n  const qt = component.quantizationTable,\n    blockData = component.blockData;\n  let v0, v1, v2, v3, v4, v5, v6, v7;\n  let p0, p1, p2, p3, p4, p5, p6, p7;\n  let t;\n\n  if (!qt) {\n    throw new JpegError(\"missing required Quantization Table.\");\n  }\n\n  // inverse DCT on rows\n  for (let row = 0; row < 64; row += 8) {\n    // gather block data\n    p0 = blockData[blockBufferOffset + row];\n    p1 = blockData[blockBufferOffset + row + 1];\n    p2 = blockData[blockBufferOffset + row + 2];\n    p3 = blockData[blockBufferOffset + row + 3];\n    p4 = blockData[blockBufferOffset + row + 4];\n    p5 = blockData[blockBufferOffset + row + 5];\n    p6 = blockData[blockBufferOffset + row + 6];\n    p7 = blockData[blockBufferOffset + row + 7];\n\n    // dequant p0\n    p0 *= qt[row];\n\n    // check for all-zero AC coefficients\n    if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n      t = (dctSqrt2 * p0 + 512) >> 10;\n      p[row] = t;\n      p[row + 1] = t;\n      p[row + 2] = t;\n      p[row + 3] = t;\n      p[row + 4] = t;\n      p[row + 5] = t;\n      p[row + 6] = t;\n      p[row + 7] = t;\n      continue;\n    }\n    // dequant p1 ... p7\n    p1 *= qt[row + 1];\n    p2 *= qt[row + 2];\n    p3 *= qt[row + 3];\n    p4 *= qt[row + 4];\n    p5 *= qt[row + 5];\n    p6 *= qt[row + 6];\n    p7 *= qt[row + 7];\n\n    // stage 4\n    v0 = (dctSqrt2 * p0 + 128) >> 8;\n    v1 = (dctSqrt2 * p4 + 128) >> 8;\n    v2 = p2;\n    v3 = p6;\n    v4 = (dctSqrt1d2 * (p1 - p7) + 128) >> 8;\n    v7 = (dctSqrt1d2 * (p1 + p7) + 128) >> 8;\n    v5 = p3 << 4;\n    v6 = p5 << 4;\n\n    // stage 3\n    v0 = (v0 + v1 + 1) >> 1;\n    v1 = v0 - v1;\n    t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;\n    v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;\n    v3 = t;\n    v4 = (v4 + v6 + 1) >> 1;\n    v6 = v4 - v6;\n    v7 = (v7 + v5 + 1) >> 1;\n    v5 = v7 - v5;\n\n    // stage 2\n    v0 = (v0 + v3 + 1) >> 1;\n    v3 = v0 - v3;\n    v1 = (v1 + v2 + 1) >> 1;\n    v2 = v1 - v2;\n    t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n    v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n    v7 = t;\n    t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n    v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n    v6 = t;\n\n    // stage 1\n    p[row] = v0 + v7;\n    p[row + 7] = v0 - v7;\n    p[row + 1] = v1 + v6;\n    p[row + 6] = v1 - v6;\n    p[row + 2] = v2 + v5;\n    p[row + 5] = v2 - v5;\n    p[row + 3] = v3 + v4;\n    p[row + 4] = v3 - v4;\n  }\n\n  // inverse DCT on columns\n  for (let col = 0; col < 8; ++col) {\n    p0 = p[col];\n    p1 = p[col + 8];\n    p2 = p[col + 16];\n    p3 = p[col + 24];\n    p4 = p[col + 32];\n    p5 = p[col + 40];\n    p6 = p[col + 48];\n    p7 = p[col + 56];\n\n    // check for all-zero AC coefficients\n    if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n      t = (dctSqrt2 * p0 + 8192) >> 14;\n      // Convert to 8-bit.\n      if (t < -2040) {\n        t = 0;\n      } else if (t >= 2024) {\n        t = 255;\n      } else {\n        t = (t + 2056) >> 4;\n      }\n      blockData[blockBufferOffset + col] = t;\n      blockData[blockBufferOffset + col + 8] = t;\n      blockData[blockBufferOffset + col + 16] = t;\n      blockData[blockBufferOffset + col + 24] = t;\n      blockData[blockBufferOffset + col + 32] = t;\n      blockData[blockBufferOffset + col + 40] = t;\n      blockData[blockBufferOffset + col + 48] = t;\n      blockData[blockBufferOffset + col + 56] = t;\n      continue;\n    }\n\n    // stage 4\n    v0 = (dctSqrt2 * p0 + 2048) >> 12;\n    v1 = (dctSqrt2 * p4 + 2048) >> 12;\n    v2 = p2;\n    v3 = p6;\n    v4 = (dctSqrt1d2 * (p1 - p7) + 2048) >> 12;\n    v7 = (dctSqrt1d2 * (p1 + p7) + 2048) >> 12;\n    v5 = p3;\n    v6 = p5;\n\n    // stage 3\n    // Shift v0 by 128.5 << 5 here, so we don't need to shift p0...p7 when\n    // converting to UInt8 range later.\n    v0 = ((v0 + v1 + 1) >> 1) + 4112;\n    v1 = v0 - v1;\n    t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;\n    v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;\n    v3 = t;\n    v4 = (v4 + v6 + 1) >> 1;\n    v6 = v4 - v6;\n    v7 = (v7 + v5 + 1) >> 1;\n    v5 = v7 - v5;\n\n    // stage 2\n    v0 = (v0 + v3 + 1) >> 1;\n    v3 = v0 - v3;\n    v1 = (v1 + v2 + 1) >> 1;\n    v2 = v1 - v2;\n    t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n    v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n    v7 = t;\n    t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n    v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n    v6 = t;\n\n    // stage 1\n    p0 = v0 + v7;\n    p7 = v0 - v7;\n    p1 = v1 + v6;\n    p6 = v1 - v6;\n    p2 = v2 + v5;\n    p5 = v2 - v5;\n    p3 = v3 + v4;\n    p4 = v3 - v4;\n\n    // Convert to 8-bit integers.\n    if (p0 < 16) {\n      p0 = 0;\n    } else if (p0 >= 4080) {\n      p0 = 255;\n    } else {\n      p0 >>= 4;\n    }\n    if (p1 < 16) {\n      p1 = 0;\n    } else if (p1 >= 4080) {\n      p1 = 255;\n    } else {\n      p1 >>= 4;\n    }\n    if (p2 < 16) {\n      p2 = 0;\n    } else if (p2 >= 4080) {\n      p2 = 255;\n    } else {\n      p2 >>= 4;\n    }\n    if (p3 < 16) {\n      p3 = 0;\n    } else if (p3 >= 4080) {\n      p3 = 255;\n    } else {\n      p3 >>= 4;\n    }\n    if (p4 < 16) {\n      p4 = 0;\n    } else if (p4 >= 4080) {\n      p4 = 255;\n    } else {\n      p4 >>= 4;\n    }\n    if (p5 < 16) {\n      p5 = 0;\n    } else if (p5 >= 4080) {\n      p5 = 255;\n    } else {\n      p5 >>= 4;\n    }\n    if (p6 < 16) {\n      p6 = 0;\n    } else if (p6 >= 4080) {\n      p6 = 255;\n    } else {\n      p6 >>= 4;\n    }\n    if (p7 < 16) {\n      p7 = 0;\n    } else if (p7 >= 4080) {\n      p7 = 255;\n    } else {\n      p7 >>= 4;\n    }\n\n    // store block data\n    blockData[blockBufferOffset + col] = p0;\n    blockData[blockBufferOffset + col + 8] = p1;\n    blockData[blockBufferOffset + col + 16] = p2;\n    blockData[blockBufferOffset + col + 24] = p3;\n    blockData[blockBufferOffset + col + 32] = p4;\n    blockData[blockBufferOffset + col + 40] = p5;\n    blockData[blockBufferOffset + col + 48] = p6;\n    blockData[blockBufferOffset + col + 56] = p7;\n  }\n}\n\nfunction buildComponentData(frame, component) {\n  const blocksPerLine = component.blocksPerLine;\n  const blocksPerColumn = component.blocksPerColumn;\n  const computationBuffer = new Int16Array(64);\n\n  for (let blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n    for (let blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n      const offset = getBlockBufferOffset(component, blockRow, blockCol);\n      quantizeAndInverse(component, offset, computationBuffer);\n    }\n  }\n  return component.blockData;\n}\n\nfunction findNextFileMarker(data, currentPos, startPos = currentPos) {\n  const maxPos = data.length - 1;\n  let newPos = startPos < currentPos ? startPos : currentPos;\n\n  if (currentPos >= maxPos) {\n    return null; // Don't attempt to read non-existent data and just return.\n  }\n  const currentMarker = readUint16(data, currentPos);\n  if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) {\n    return {\n      invalid: null,\n      marker: currentMarker,\n      offset: currentPos,\n    };\n  }\n  let newMarker = readUint16(data, newPos);\n  while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) {\n    if (++newPos >= maxPos) {\n      return null; // Don't attempt to read non-existent data and just return.\n    }\n    newMarker = readUint16(data, newPos);\n  }\n  return {\n    invalid: currentMarker.toString(16),\n    marker: newMarker,\n    offset: newPos,\n  };\n}\n\nclass JpegImage {\n  constructor({ decodeTransform = null, colorTransform = -1 } = {}) {\n    this._decodeTransform = decodeTransform;\n    this._colorTransform = colorTransform;\n  }\n\n  parse(data, { dnlScanLines = null } = {}) {\n    function readDataBlock() {\n      const length = readUint16(data, offset);\n      offset += 2;\n      let endOffset = offset + length - 2;\n\n      const fileMarker = findNextFileMarker(data, endOffset, offset);\n      if (fileMarker?.invalid) {\n        warn(\n          \"readDataBlock - incorrect length, current marker is: \" +\n            fileMarker.invalid\n        );\n        endOffset = fileMarker.offset;\n      }\n\n      const array = data.subarray(offset, endOffset);\n      offset += array.length;\n      return array;\n    }\n\n    function prepareComponents(frame) {\n      const mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n      const mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n      for (const component of frame.components) {\n        const blocksPerLine = Math.ceil(\n          (Math.ceil(frame.samplesPerLine / 8) * component.h) / frame.maxH\n        );\n        const blocksPerColumn = Math.ceil(\n          (Math.ceil(frame.scanLines / 8) * component.v) / frame.maxV\n        );\n        const blocksPerLineForMcu = mcusPerLine * component.h;\n        const blocksPerColumnForMcu = mcusPerColumn * component.v;\n\n        const blocksBufferSize =\n          64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n        component.blockData = new Int16Array(blocksBufferSize);\n        component.blocksPerLine = blocksPerLine;\n        component.blocksPerColumn = blocksPerColumn;\n      }\n      frame.mcusPerLine = mcusPerLine;\n      frame.mcusPerColumn = mcusPerColumn;\n    }\n\n    let offset = 0;\n    let jfif = null;\n    let adobe = null;\n    let frame, resetInterval;\n    let numSOSMarkers = 0;\n    const quantizationTables = [];\n    const huffmanTablesAC = [],\n      huffmanTablesDC = [];\n\n    let fileMarker = readUint16(data, offset);\n    offset += 2;\n    if (fileMarker !== /* SOI (Start of Image) = */ 0xffd8) {\n      throw new JpegError(\"SOI not found\");\n    }\n    fileMarker = readUint16(data, offset);\n    offset += 2;\n\n    markerLoop: while (fileMarker !== /* EOI (End of Image) = */ 0xffd9) {\n      let i, j, l;\n      switch (fileMarker) {\n        case 0xffe0: // APP0 (Application Specific)\n        case 0xffe1: // APP1\n        case 0xffe2: // APP2\n        case 0xffe3: // APP3\n        case 0xffe4: // APP4\n        case 0xffe5: // APP5\n        case 0xffe6: // APP6\n        case 0xffe7: // APP7\n        case 0xffe8: // APP8\n        case 0xffe9: // APP9\n        case 0xffea: // APP10\n        case 0xffeb: // APP11\n        case 0xffec: // APP12\n        case 0xffed: // APP13\n        case 0xffee: // APP14\n        case 0xffef: // APP15\n        case 0xfffe: // COM (Comment)\n          const appData = readDataBlock();\n\n          if (fileMarker === 0xffe0) {\n            // 'JFIF\\x00'\n            if (\n              appData[0] === 0x4a &&\n              appData[1] === 0x46 &&\n              appData[2] === 0x49 &&\n              appData[3] === 0x46 &&\n              appData[4] === 0\n            ) {\n              jfif = {\n                version: { major: appData[5], minor: appData[6] },\n                densityUnits: appData[7],\n                xDensity: (appData[8] << 8) | appData[9],\n                yDensity: (appData[10] << 8) | appData[11],\n                thumbWidth: appData[12],\n                thumbHeight: appData[13],\n                thumbData: appData.subarray(\n                  14,\n                  14 + 3 * appData[12] * appData[13]\n                ),\n              };\n            }\n          }\n          // TODO APP1 - Exif\n          if (fileMarker === 0xffee) {\n            // 'Adobe'\n            if (\n              appData[0] === 0x41 &&\n              appData[1] === 0x64 &&\n              appData[2] === 0x6f &&\n              appData[3] === 0x62 &&\n              appData[4] === 0x65\n            ) {\n              adobe = {\n                version: (appData[5] << 8) | appData[6],\n                flags0: (appData[7] << 8) | appData[8],\n                flags1: (appData[9] << 8) | appData[10],\n                transformCode: appData[11],\n              };\n            }\n          }\n          break;\n\n        case 0xffdb: // DQT (Define Quantization Tables)\n          const quantizationTablesLength = readUint16(data, offset);\n          offset += 2;\n          const quantizationTablesEnd = quantizationTablesLength + offset - 2;\n          let z;\n          while (offset < quantizationTablesEnd) {\n            const quantizationTableSpec = data[offset++];\n            const tableData = new Uint16Array(64);\n            if (quantizationTableSpec >> 4 === 0) {\n              // 8 bit values\n              for (j = 0; j < 64; j++) {\n                z = dctZigZag[j];\n                tableData[z] = data[offset++];\n              }\n            } else if (quantizationTableSpec >> 4 === 1) {\n              // 16 bit values\n              for (j = 0; j < 64; j++) {\n                z = dctZigZag[j];\n                tableData[z] = readUint16(data, offset);\n                offset += 2;\n              }\n            } else {\n              throw new JpegError(\"DQT - invalid table spec\");\n            }\n            quantizationTables[quantizationTableSpec & 15] = tableData;\n          }\n          break;\n\n        case 0xffc0: // SOF0 (Start of Frame, Baseline DCT)\n        case 0xffc1: // SOF1 (Start of Frame, Extended DCT)\n        case 0xffc2: // SOF2 (Start of Frame, Progressive DCT)\n          if (frame) {\n            throw new JpegError(\"Only single frame JPEGs supported\");\n          }\n          offset += 2; // Skip marker length.\n\n          frame = {};\n          frame.extended = fileMarker === 0xffc1;\n          frame.progressive = fileMarker === 0xffc2;\n          frame.precision = data[offset++];\n          const sofScanLines = readUint16(data, offset);\n          offset += 2;\n          frame.scanLines = dnlScanLines || sofScanLines;\n          frame.samplesPerLine = readUint16(data, offset);\n          offset += 2;\n          frame.components = [];\n          frame.componentIds = {};\n          const componentsCount = data[offset++];\n          let maxH = 0,\n            maxV = 0;\n          for (i = 0; i < componentsCount; i++) {\n            const componentId = data[offset];\n            const h = data[offset + 1] >> 4;\n            const v = data[offset + 1] & 15;\n            if (maxH < h) {\n              maxH = h;\n            }\n            if (maxV < v) {\n              maxV = v;\n            }\n            const qId = data[offset + 2];\n            l = frame.components.push({\n              h,\n              v,\n              quantizationId: qId,\n              quantizationTable: null, // See comment below.\n            });\n            frame.componentIds[componentId] = l - 1;\n            offset += 3;\n          }\n          frame.maxH = maxH;\n          frame.maxV = maxV;\n          prepareComponents(frame);\n          break;\n\n        case 0xffc4: // DHT (Define Huffman Tables)\n          const huffmanLength = readUint16(data, offset);\n          offset += 2;\n          for (i = 2; i < huffmanLength; ) {\n            const huffmanTableSpec = data[offset++];\n            const codeLengths = new Uint8Array(16);\n            let codeLengthSum = 0;\n            for (j = 0; j < 16; j++, offset++) {\n              codeLengthSum += codeLengths[j] = data[offset];\n            }\n            const huffmanValues = new Uint8Array(codeLengthSum);\n            for (j = 0; j < codeLengthSum; j++, offset++) {\n              huffmanValues[j] = data[offset];\n            }\n            i += 17 + codeLengthSum;\n\n            (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[\n              huffmanTableSpec & 15\n            ] = buildHuffmanTable(codeLengths, huffmanValues);\n          }\n          break;\n\n        case 0xffdd: // DRI (Define Restart Interval)\n          offset += 2; // Skip marker length.\n\n          resetInterval = readUint16(data, offset);\n          offset += 2;\n          break;\n\n        case 0xffda: // SOS (Start of Scan)\n          // A DNL marker (0xFFDC), if it exists, is only allowed at the end\n          // of the first scan segment and may only occur once in an image.\n          // Furthermore, to prevent an infinite loop, do *not* attempt to\n          // parse DNL markers during re-parsing of the JPEG scan data.\n          const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\n\n          offset += 2; // Skip marker length.\n\n          const selectorsCount = data[offset++],\n            components = [];\n          for (i = 0; i < selectorsCount; i++) {\n            const index = data[offset++];\n            const componentIndex = frame.componentIds[index];\n            const component = frame.components[componentIndex];\n            component.index = index;\n            const tableSpec = data[offset++];\n            component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n            component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n            components.push(component);\n          }\n          const spectralStart = data[offset++],\n            spectralEnd = data[offset++],\n            successiveApproximation = data[offset++];\n          try {\n            const processed = decodeScan(\n              data,\n              offset,\n              frame,\n              components,\n              resetInterval,\n              spectralStart,\n              spectralEnd,\n              successiveApproximation >> 4,\n              successiveApproximation & 15,\n              parseDNLMarker\n            );\n            offset += processed;\n          } catch (ex) {\n            if (ex instanceof DNLMarkerError) {\n              warn(`${ex.message} -- attempting to re-parse the JPEG image.`);\n              return this.parse(data, { dnlScanLines: ex.scanLines });\n            } else if (ex instanceof EOIMarkerError) {\n              warn(`${ex.message} -- ignoring the rest of the image data.`);\n              break markerLoop;\n            }\n            throw ex;\n          }\n          break;\n\n        case 0xffdc: // DNL (Define Number of Lines)\n          // Ignore the marker, since it's being handled in `decodeScan`.\n          offset += 4;\n          break;\n\n        case 0xffff: // Fill bytes\n          if (data[offset] !== 0xff) {\n            // Avoid skipping a valid marker.\n            offset--;\n          }\n          break;\n\n        default:\n          // Could be incorrect encoding -- the last 0xFF byte of the previous\n          // block could have been eaten by the encoder, hence we fallback to\n          // `startPos = offset - 3` when looking for the next valid marker.\n          const nextFileMarker = findNextFileMarker(\n            data,\n            /* currentPos = */ offset - 2,\n            /* startPos = */ offset - 3\n          );\n          if (nextFileMarker?.invalid) {\n            warn(\n              \"JpegImage.parse - unexpected data, current marker is: \" +\n                nextFileMarker.invalid\n            );\n            offset = nextFileMarker.offset;\n            break;\n          }\n          if (!nextFileMarker || offset >= data.length - 1) {\n            warn(\n              \"JpegImage.parse - reached the end of the image data \" +\n                \"without finding an EOI marker (0xFFD9).\"\n            );\n            break markerLoop;\n          }\n          throw new JpegError(\n            \"JpegImage.parse - unknown marker: \" + fileMarker.toString(16)\n          );\n      }\n      fileMarker = readUint16(data, offset);\n      offset += 2;\n    }\n\n    this.width = frame.samplesPerLine;\n    this.height = frame.scanLines;\n    this.jfif = jfif;\n    this.adobe = adobe;\n    this.components = [];\n    for (const component of frame.components) {\n      // Prevent errors when DQT markers are placed after SOF{n} markers,\n      // by assigning the `quantizationTable` entry after the entire image\n      // has been parsed (fixes issue7406.pdf).\n      const quantizationTable = quantizationTables[component.quantizationId];\n      if (quantizationTable) {\n        component.quantizationTable = quantizationTable;\n      }\n\n      this.components.push({\n        index: component.index,\n        output: buildComponentData(frame, component),\n        scaleX: component.h / frame.maxH,\n        scaleY: component.v / frame.maxV,\n        blocksPerLine: component.blocksPerLine,\n        blocksPerColumn: component.blocksPerColumn,\n      });\n    }\n    this.numComponents = this.components.length;\n    return undefined;\n  }\n\n  _getLinearizedBlockData(width, height, isSourcePDF = false) {\n    const scaleX = this.width / width,\n      scaleY = this.height / height;\n\n    let component, componentScaleX, componentScaleY, blocksPerScanline;\n    let x, y, i, j, k;\n    let index;\n    let offset = 0;\n    let output;\n    const numComponents = this.components.length;\n    const dataLength = width * height * numComponents;\n    const data = new Uint8ClampedArray(dataLength);\n    const xScaleBlockOffset = new Uint32Array(width);\n    const mask3LSB = 0xfffffff8; // used to clear the 3 LSBs\n    let lastComponentScaleX;\n\n    for (i = 0; i < numComponents; i++) {\n      component = this.components[i];\n      componentScaleX = component.scaleX * scaleX;\n      componentScaleY = component.scaleY * scaleY;\n      offset = i;\n      output = component.output;\n      blocksPerScanline = (component.blocksPerLine + 1) << 3;\n      // Precalculate the `xScaleBlockOffset`. Since it doesn't depend on the\n      // component data, that's only necessary when `componentScaleX` changes.\n      if (componentScaleX !== lastComponentScaleX) {\n        for (x = 0; x < width; x++) {\n          j = 0 | (x * componentScaleX);\n          xScaleBlockOffset[x] = ((j & mask3LSB) << 3) | (j & 7);\n        }\n        lastComponentScaleX = componentScaleX;\n      }\n      // linearize the blocks of the component\n      for (y = 0; y < height; y++) {\n        j = 0 | (y * componentScaleY);\n        index = (blocksPerScanline * (j & mask3LSB)) | ((j & 7) << 3);\n        for (x = 0; x < width; x++) {\n          data[offset] = output[index + xScaleBlockOffset[x]];\n          offset += numComponents;\n        }\n      }\n    }\n\n    // decodeTransform contains pairs of multiplier (-256..256) and additive\n    let transform = this._decodeTransform;\n\n    // In PDF files, JPEG images with CMYK colour spaces are usually inverted\n    // (this can be observed by extracting the raw image data).\n    // Since the conversion algorithms (see below) were written primarily for\n    // the PDF use-cases, attempting to use `JpegImage` to parse standalone\n    // JPEG (CMYK) images may thus result in inverted images (see issue 9513).\n    //\n    // Unfortunately it's not (always) possible to tell, from the image data\n    // alone, if it needs to be inverted. Thus in an attempt to provide better\n    // out-of-box behaviour when `JpegImage` is used standalone, default to\n    // inverting JPEG (CMYK) images if and only if the image data does *not*\n    // come from a PDF file and no `decodeTransform` was passed by the user.\n    if (!isSourcePDF && numComponents === 4 && !transform) {\n      transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);\n    }\n\n    if (transform) {\n      for (i = 0; i < dataLength; ) {\n        for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {\n          data[i] = ((data[i] * transform[k]) >> 8) + transform[k + 1];\n        }\n      }\n    }\n    return data;\n  }\n\n  get _isColorConversionNeeded() {\n    if (this.adobe) {\n      // The adobe transform marker overrides any previous setting.\n      return !!this.adobe.transformCode;\n    }\n    if (this.numComponents === 3) {\n      if (this._colorTransform === 0) {\n        // If the Adobe transform marker is not present and the image\n        // dictionary has a 'ColorTransform' entry, explicitly set to `0`,\n        // then the colours should *not* be transformed.\n        return false;\n      } else if (\n        this.components[0].index === /* \"R\" = */ 0x52 &&\n        this.components[1].index === /* \"G\" = */ 0x47 &&\n        this.components[2].index === /* \"B\" = */ 0x42\n      ) {\n        // If the three components are indexed as RGB in ASCII\n        // then the colours should *not* be transformed.\n        return false;\n      }\n      return true;\n    }\n    // `this.numComponents !== 3`\n    if (this._colorTransform === 1) {\n      // If the Adobe transform marker is not present and the image\n      // dictionary has a 'ColorTransform' entry, explicitly set to `1`,\n      // then the colours should be transformed.\n      return true;\n    }\n    return false;\n  }\n\n  _convertYccToRgb(data) {\n    let Y, Cb, Cr;\n    for (let i = 0, length = data.length; i < length; i += 3) {\n      Y = data[i];\n      Cb = data[i + 1];\n      Cr = data[i + 2];\n      data[i] = Y - 179.456 + 1.402 * Cr;\n      data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n      data[i + 2] = Y - 226.816 + 1.772 * Cb;\n    }\n    return data;\n  }\n\n  _convertYccToRgba(data, out) {\n    for (let i = 0, j = 0, length = data.length; i < length; i += 3, j += 4) {\n      const Y = data[i];\n      const Cb = data[i + 1];\n      const Cr = data[i + 2];\n      out[j] = Y - 179.456 + 1.402 * Cr;\n      out[j + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n      out[j + 2] = Y - 226.816 + 1.772 * Cb;\n      out[j + 3] = 255;\n    }\n    return out;\n  }\n\n  _convertYcckToRgb(data) {\n    let Y, Cb, Cr, k;\n    let offset = 0;\n    for (let i = 0, length = data.length; i < length; i += 4) {\n      Y = data[i];\n      Cb = data[i + 1];\n      Cr = data[i + 2];\n      k = data[i + 3];\n\n      data[offset++] =\n        -122.67195406894 +\n        Cb *\n          (-6.60635669420364e-5 * Cb +\n            0.000437130475926232 * Cr -\n            5.4080610064599e-5 * Y +\n            0.00048449797120281 * k -\n            0.154362151871126) +\n        Cr *\n          (-0.000957964378445773 * Cr +\n            0.000817076911346625 * Y -\n            0.00477271405408747 * k +\n            1.53380253221734) +\n        Y *\n          (0.000961250184130688 * Y -\n            0.00266257332283933 * k +\n            0.48357088451265) +\n        k * (-0.000336197177618394 * k + 0.484791561490776);\n\n      data[offset++] =\n        107.268039397724 +\n        Cb *\n          (2.19927104525741e-5 * Cb -\n            0.000640992018297945 * Cr +\n            0.000659397001245577 * Y +\n            0.000426105652938837 * k -\n            0.176491792462875) +\n        Cr *\n          (-0.000778269941513683 * Cr +\n            0.00130872261408275 * Y +\n            0.000770482631801132 * k -\n            0.151051492775562) +\n        Y *\n          (0.00126935368114843 * Y -\n            0.00265090189010898 * k +\n            0.25802910206845) +\n        k * (-0.000318913117588328 * k - 0.213742400323665);\n\n      data[offset++] =\n        -20.810012546947 +\n        Cb *\n          (-0.000570115196973677 * Cb -\n            2.63409051004589e-5 * Cr +\n            0.0020741088115012 * Y -\n            0.00288260236853442 * k +\n            0.814272968359295) +\n        Cr *\n          (-1.53496057440975e-5 * Cr -\n            0.000132689043961446 * Y +\n            0.000560833691242812 * k -\n            0.195152027534049) +\n        Y *\n          (0.00174418132927582 * Y -\n            0.00255243321439347 * k +\n            0.116935020465145) +\n        k * (-0.000343531996510555 * k + 0.24165260232407);\n    }\n    // Ensure that only the converted RGB data is returned.\n    return data.subarray(0, offset);\n  }\n\n  _convertYcckToRgba(data) {\n    for (let i = 0, length = data.length; i < length; i += 4) {\n      const Y = data[i];\n      const Cb = data[i + 1];\n      const Cr = data[i + 2];\n      const k = data[i + 3];\n\n      data[i] =\n        -122.67195406894 +\n        Cb *\n          (-6.60635669420364e-5 * Cb +\n            0.000437130475926232 * Cr -\n            5.4080610064599e-5 * Y +\n            0.00048449797120281 * k -\n            0.154362151871126) +\n        Cr *\n          (-0.000957964378445773 * Cr +\n            0.000817076911346625 * Y -\n            0.00477271405408747 * k +\n            1.53380253221734) +\n        Y *\n          (0.000961250184130688 * Y -\n            0.00266257332283933 * k +\n            0.48357088451265) +\n        k * (-0.000336197177618394 * k + 0.484791561490776);\n\n      data[i + 1] =\n        107.268039397724 +\n        Cb *\n          (2.19927104525741e-5 * Cb -\n            0.000640992018297945 * Cr +\n            0.000659397001245577 * Y +\n            0.000426105652938837 * k -\n            0.176491792462875) +\n        Cr *\n          (-0.000778269941513683 * Cr +\n            0.00130872261408275 * Y +\n            0.000770482631801132 * k -\n            0.151051492775562) +\n        Y *\n          (0.00126935368114843 * Y -\n            0.00265090189010898 * k +\n            0.25802910206845) +\n        k * (-0.000318913117588328 * k - 0.213742400323665);\n\n      data[i + 2] =\n        -20.810012546947 +\n        Cb *\n          (-0.000570115196973677 * Cb -\n            2.63409051004589e-5 * Cr +\n            0.0020741088115012 * Y -\n            0.00288260236853442 * k +\n            0.814272968359295) +\n        Cr *\n          (-1.53496057440975e-5 * Cr -\n            0.000132689043961446 * Y +\n            0.000560833691242812 * k -\n            0.195152027534049) +\n        Y *\n          (0.00174418132927582 * Y -\n            0.00255243321439347 * k +\n            0.116935020465145) +\n        k * (-0.000343531996510555 * k + 0.24165260232407);\n      data[i + 3] = 255;\n    }\n    return data;\n  }\n\n  _convertYcckToCmyk(data) {\n    let Y, Cb, Cr;\n    for (let i = 0, length = data.length; i < length; i += 4) {\n      Y = data[i];\n      Cb = data[i + 1];\n      Cr = data[i + 2];\n      data[i] = 434.456 - Y - 1.402 * Cr;\n      data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\n      data[i + 2] = 481.816 - Y - 1.772 * Cb;\n      // K in data[i + 3] is unchanged\n    }\n    return data;\n  }\n\n  _convertCmykToRgb(data) {\n    let c, m, y, k;\n    let offset = 0;\n    for (let i = 0, length = data.length; i < length; i += 4) {\n      c = data[i];\n      m = data[i + 1];\n      y = data[i + 2];\n      k = data[i + 3];\n\n      data[offset++] =\n        255 +\n        c *\n          (-0.00006747147073602441 * c +\n            0.0008379262121013727 * m +\n            0.0002894718188643294 * y +\n            0.003264231057537806 * k -\n            1.1185611867203937) +\n        m *\n          (0.000026374107616089405 * m -\n            0.00008626949158638572 * y -\n            0.0002748769067499491 * k -\n            0.02155688794978967) +\n        y *\n          (-0.00003878099212869363 * y -\n            0.0003267808279485286 * k +\n            0.0686742238595345) -\n        k * (0.0003361971776183937 * k + 0.7430659151342254);\n\n      data[offset++] =\n        255 +\n        c *\n          (0.00013596372813588848 * c +\n            0.000924537132573585 * m +\n            0.00010567359618683593 * y +\n            0.0004791864687436512 * k -\n            0.3109689587515875) +\n        m *\n          (-0.00023545346108370344 * m +\n            0.0002702845253534714 * y +\n            0.0020200308977307156 * k -\n            0.7488052167015494) +\n        y *\n          (0.00006834815998235662 * y +\n            0.00015168452363460973 * k -\n            0.09751927774728933) -\n        k * (0.0003189131175883281 * k + 0.7364883807733168);\n\n      data[offset++] =\n        255 +\n        c *\n          (0.000013598650411385307 * c +\n            0.00012423956175490851 * m +\n            0.0004751985097583589 * y -\n            0.0000036729317476630422 * k -\n            0.05562186980264034) +\n        m *\n          (0.00016141380598724676 * m +\n            0.0009692239130725186 * y +\n            0.0007782692450036253 * k -\n            0.44015232367526463) +\n        y *\n          (5.068882914068769e-7 * y +\n            0.0017778369011375071 * k -\n            0.7591454649749609) -\n        k * (0.0003435319965105553 * k + 0.7063770186160144);\n    }\n    // Ensure that only the converted RGB data is returned.\n    return data.subarray(0, offset);\n  }\n\n  _convertCmykToRgba(data) {\n    for (let i = 0, length = data.length; i < length; i += 4) {\n      const c = data[i];\n      const m = data[i + 1];\n      const y = data[i + 2];\n      const k = data[i + 3];\n\n      data[i] =\n        255 +\n        c *\n          (-0.00006747147073602441 * c +\n            0.0008379262121013727 * m +\n            0.0002894718188643294 * y +\n            0.003264231057537806 * k -\n            1.1185611867203937) +\n        m *\n          (0.000026374107616089405 * m -\n            0.00008626949158638572 * y -\n            0.0002748769067499491 * k -\n            0.02155688794978967) +\n        y *\n          (-0.00003878099212869363 * y -\n            0.0003267808279485286 * k +\n            0.0686742238595345) -\n        k * (0.0003361971776183937 * k + 0.7430659151342254);\n\n      data[i + 1] =\n        255 +\n        c *\n          (0.00013596372813588848 * c +\n            0.000924537132573585 * m +\n            0.00010567359618683593 * y +\n            0.0004791864687436512 * k -\n            0.3109689587515875) +\n        m *\n          (-0.00023545346108370344 * m +\n            0.0002702845253534714 * y +\n            0.0020200308977307156 * k -\n            0.7488052167015494) +\n        y *\n          (0.00006834815998235662 * y +\n            0.00015168452363460973 * k -\n            0.09751927774728933) -\n        k * (0.0003189131175883281 * k + 0.7364883807733168);\n\n      data[i + 2] =\n        255 +\n        c *\n          (0.000013598650411385307 * c +\n            0.00012423956175490851 * m +\n            0.0004751985097583589 * y -\n            0.0000036729317476630422 * k -\n            0.05562186980264034) +\n        m *\n          (0.00016141380598724676 * m +\n            0.0009692239130725186 * y +\n            0.0007782692450036253 * k -\n            0.44015232367526463) +\n        y *\n          (5.068882914068769e-7 * y +\n            0.0017778369011375071 * k -\n            0.7591454649749609) -\n        k * (0.0003435319965105553 * k + 0.7063770186160144);\n      data[i + 3] = 255;\n    }\n    return data;\n  }\n\n  getData({\n    width,\n    height,\n    forceRGBA = false,\n    forceRGB = false,\n    isSourcePDF = false,\n  }) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        isSourcePDF === true,\n        'JpegImage.getData: Unexpected \"isSourcePDF\" value for PDF files.'\n      );\n    }\n    if (this.numComponents > 4) {\n      throw new JpegError(\"Unsupported color mode\");\n    }\n    // Type of data: Uint8ClampedArray(width * height * numComponents)\n    const data = this._getLinearizedBlockData(width, height, isSourcePDF);\n\n    if (this.numComponents === 1 && (forceRGBA || forceRGB)) {\n      const len = data.length * (forceRGBA ? 4 : 3);\n      const rgbaData = new Uint8ClampedArray(len);\n      let offset = 0;\n      if (forceRGBA) {\n        grayToRGBA(data, new Uint32Array(rgbaData.buffer));\n      } else {\n        for (const grayColor of data) {\n          rgbaData[offset++] = grayColor;\n          rgbaData[offset++] = grayColor;\n          rgbaData[offset++] = grayColor;\n        }\n      }\n      return rgbaData;\n    } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\n      if (forceRGBA) {\n        const rgbaData = new Uint8ClampedArray((data.length / 3) * 4);\n        return this._convertYccToRgba(data, rgbaData);\n      }\n      return this._convertYccToRgb(data);\n    } else if (this.numComponents === 4) {\n      if (this._isColorConversionNeeded) {\n        if (forceRGBA) {\n          return this._convertYcckToRgba(data);\n        }\n        if (forceRGB) {\n          return this._convertYcckToRgb(data);\n        }\n        return this._convertYcckToCmyk(data);\n      } else if (forceRGBA) {\n        return this._convertCmykToRgba(data);\n      } else if (forceRGB) {\n        return this._convertCmykToRgb(data);\n      }\n    }\n    return data;\n  }\n}\n\nexport { JpegImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseException, info, unreachable, warn } from \"../shared/util.js\";\nimport { log2, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\n\nclass JpxError extends BaseException {\n  constructor(msg) {\n    super(`JPX error: ${msg}`, \"JpxError\");\n  }\n}\n\n// Table E.1\nconst SubbandsGainLog2 = {\n  LL: 0,\n  LH: 1,\n  HL: 1,\n  HH: 2,\n};\n\nclass JpxImage {\n  constructor() {\n    this.failOnCorruptedImage = false;\n  }\n\n  parse(data) {\n    const head = readUint16(data, 0);\n    // No box header, immediate start of codestream (SOC)\n    if (head === 0xff4f) {\n      this.parseCodestream(data, 0, data.length);\n      return;\n    }\n\n    const length = data.length;\n    let position = 0;\n    while (position < length) {\n      let headerSize = 8;\n      let lbox = readUint32(data, position);\n      const tbox = readUint32(data, position + 4);\n      position += headerSize;\n      if (lbox === 1) {\n        // XLBox: read UInt64 according to spec.\n        // JavaScript's int precision of 53 bit should be sufficient here.\n        lbox =\n          readUint32(data, position) * 4294967296 +\n          readUint32(data, position + 4);\n        position += 8;\n        headerSize += 8;\n      }\n      if (lbox === 0) {\n        lbox = length - position + headerSize;\n      }\n      if (lbox < headerSize) {\n        throw new JpxError(\"Invalid box field size\");\n      }\n      const dataLength = lbox - headerSize;\n      let jumpDataLength = true;\n      switch (tbox) {\n        case 0x6a703268: // 'jp2h'\n          jumpDataLength = false; // parsing child boxes\n          break;\n        case 0x636f6c72: // 'colr'\n          // Colorspaces are not used, the CS from the PDF is used.\n          const method = data[position];\n          if (method === 1) {\n            // enumerated colorspace\n            const colorspace = readUint32(data, position + 3);\n            switch (colorspace) {\n              case 16: // this indicates a sRGB colorspace\n              case 17: // this indicates a grayscale colorspace\n              case 18: // this indicates a YUV colorspace\n                break;\n              default:\n                warn(\"Unknown colorspace \" + colorspace);\n                break;\n            }\n          } else if (method === 2) {\n            info(\"ICC profile not supported\");\n          }\n          break;\n        case 0x6a703263: // 'jp2c'\n          this.parseCodestream(data, position, position + dataLength);\n          break;\n        case 0x6a502020: // 'jP\\024\\024'\n          if (readUint32(data, position) !== 0x0d0a870a) {\n            warn(\"Invalid JP2 signature\");\n          }\n          break;\n        // The following header types are valid but currently not used:\n        case 0x6a501a1a: // 'jP\\032\\032'\n        case 0x66747970: // 'ftyp'\n        case 0x72726571: // 'rreq'\n        case 0x72657320: // 'res '\n        case 0x69686472: // 'ihdr'\n          break;\n        default:\n          const headerType = String.fromCharCode(\n            (tbox >> 24) & 0xff,\n            (tbox >> 16) & 0xff,\n            (tbox >> 8) & 0xff,\n            tbox & 0xff\n          );\n          warn(`Unsupported header type ${tbox} (${headerType}).`);\n          break;\n      }\n      if (jumpDataLength) {\n        position += dataLength;\n      }\n    }\n  }\n\n  parseImageProperties(stream) {\n    let newByte = stream.getByte();\n    while (newByte >= 0) {\n      const oldByte = newByte;\n      newByte = stream.getByte();\n      const code = (oldByte << 8) | newByte;\n      // Image and tile size (SIZ)\n      if (code === 0xff51) {\n        stream.skip(4);\n        const Xsiz = stream.getInt32() >>> 0; // Byte 4\n        const Ysiz = stream.getInt32() >>> 0; // Byte 8\n        const XOsiz = stream.getInt32() >>> 0; // Byte 12\n        const YOsiz = stream.getInt32() >>> 0; // Byte 16\n        stream.skip(16);\n        const Csiz = stream.getUint16(); // Byte 36\n        this.width = Xsiz - XOsiz;\n        this.height = Ysiz - YOsiz;\n        this.componentsCount = Csiz;\n        // Results are always returned as `Uint8ClampedArray`s.\n        this.bitsPerComponent = 8;\n        return;\n      }\n    }\n    throw new JpxError(\"No size marker found in JPX stream\");\n  }\n\n  parseCodestream(data, start, end) {\n    const context = {};\n    let doNotRecover = false;\n    try {\n      let position = start;\n      while (position + 1 < end) {\n        const code = readUint16(data, position);\n        position += 2;\n\n        let length = 0,\n          j,\n          sqcd,\n          spqcds,\n          spqcdSize,\n          scalarExpounded,\n          tile;\n        switch (code) {\n          case 0xff4f: // Start of codestream (SOC)\n            context.mainHeader = true;\n            break;\n          case 0xffd9: // End of codestream (EOC)\n            break;\n          case 0xff51: // Image and tile size (SIZ)\n            length = readUint16(data, position);\n            const siz = {};\n            siz.Xsiz = readUint32(data, position + 4);\n            siz.Ysiz = readUint32(data, position + 8);\n            siz.XOsiz = readUint32(data, position + 12);\n            siz.YOsiz = readUint32(data, position + 16);\n            siz.XTsiz = readUint32(data, position + 20);\n            siz.YTsiz = readUint32(data, position + 24);\n            siz.XTOsiz = readUint32(data, position + 28);\n            siz.YTOsiz = readUint32(data, position + 32);\n            const componentsCount = readUint16(data, position + 36);\n            siz.Csiz = componentsCount;\n            const components = [];\n            j = position + 38;\n            for (let i = 0; i < componentsCount; i++) {\n              const component = {\n                precision: (data[j] & 0x7f) + 1,\n                isSigned: !!(data[j] & 0x80),\n                XRsiz: data[j + 1],\n                YRsiz: data[j + 2],\n              };\n              j += 3;\n              calculateComponentDimensions(component, siz);\n              components.push(component);\n            }\n            context.SIZ = siz;\n            context.components = components;\n            calculateTileGrids(context, components);\n            context.QCC = [];\n            context.COC = [];\n            break;\n          case 0xff5c: // Quantization default (QCD)\n            length = readUint16(data, position);\n            const qcd = {};\n            j = position + 2;\n            sqcd = data[j++];\n            switch (sqcd & 0x1f) {\n              case 0:\n                spqcdSize = 8;\n                scalarExpounded = true;\n                break;\n              case 1:\n                spqcdSize = 16;\n                scalarExpounded = false;\n                break;\n              case 2:\n                spqcdSize = 16;\n                scalarExpounded = true;\n                break;\n              default:\n                throw new Error(\"Invalid SQcd value \" + sqcd);\n            }\n            qcd.noQuantization = spqcdSize === 8;\n            qcd.scalarExpounded = scalarExpounded;\n            qcd.guardBits = sqcd >> 5;\n            spqcds = [];\n            while (j < length + position) {\n              const spqcd = {};\n              if (spqcdSize === 8) {\n                spqcd.epsilon = data[j++] >> 3;\n                spqcd.mu = 0;\n              } else {\n                spqcd.epsilon = data[j] >> 3;\n                spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n                j += 2;\n              }\n              spqcds.push(spqcd);\n            }\n            qcd.SPqcds = spqcds;\n            if (context.mainHeader) {\n              context.QCD = qcd;\n            } else {\n              context.currentTile.QCD = qcd;\n              context.currentTile.QCC = [];\n            }\n            break;\n          case 0xff5d: // Quantization component (QCC)\n            length = readUint16(data, position);\n            const qcc = {};\n            j = position + 2;\n            let cqcc;\n            if (context.SIZ.Csiz < 257) {\n              cqcc = data[j++];\n            } else {\n              cqcc = readUint16(data, j);\n              j += 2;\n            }\n            sqcd = data[j++];\n            switch (sqcd & 0x1f) {\n              case 0:\n                spqcdSize = 8;\n                scalarExpounded = true;\n                break;\n              case 1:\n                spqcdSize = 16;\n                scalarExpounded = false;\n                break;\n              case 2:\n                spqcdSize = 16;\n                scalarExpounded = true;\n                break;\n              default:\n                throw new Error(\"Invalid SQcd value \" + sqcd);\n            }\n            qcc.noQuantization = spqcdSize === 8;\n            qcc.scalarExpounded = scalarExpounded;\n            qcc.guardBits = sqcd >> 5;\n            spqcds = [];\n            while (j < length + position) {\n              const spqcd = {};\n              if (spqcdSize === 8) {\n                spqcd.epsilon = data[j++] >> 3;\n                spqcd.mu = 0;\n              } else {\n                spqcd.epsilon = data[j] >> 3;\n                spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n                j += 2;\n              }\n              spqcds.push(spqcd);\n            }\n            qcc.SPqcds = spqcds;\n            if (context.mainHeader) {\n              context.QCC[cqcc] = qcc;\n            } else {\n              context.currentTile.QCC[cqcc] = qcc;\n            }\n            break;\n          case 0xff52: // Coding style default (COD)\n            length = readUint16(data, position);\n            const cod = {};\n            j = position + 2;\n            const scod = data[j++];\n            cod.entropyCoderWithCustomPrecincts = !!(scod & 1);\n            cod.sopMarkerUsed = !!(scod & 2);\n            cod.ephMarkerUsed = !!(scod & 4);\n            cod.progressionOrder = data[j++];\n            cod.layersCount = readUint16(data, j);\n            j += 2;\n            cod.multipleComponentTransform = data[j++];\n\n            cod.decompositionLevelsCount = data[j++];\n            cod.xcb = (data[j++] & 0xf) + 2;\n            cod.ycb = (data[j++] & 0xf) + 2;\n            const blockStyle = data[j++];\n            cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);\n            cod.resetContextProbabilities = !!(blockStyle & 2);\n            cod.terminationOnEachCodingPass = !!(blockStyle & 4);\n            cod.verticallyStripe = !!(blockStyle & 8);\n            cod.predictableTermination = !!(blockStyle & 16);\n            cod.segmentationSymbolUsed = !!(blockStyle & 32);\n            cod.reversibleTransformation = data[j++];\n            if (cod.entropyCoderWithCustomPrecincts) {\n              const precinctsSizes = [];\n              while (j < length + position) {\n                const precinctsSize = data[j++];\n                precinctsSizes.push({\n                  PPx: precinctsSize & 0xf,\n                  PPy: precinctsSize >> 4,\n                });\n              }\n              cod.precinctsSizes = precinctsSizes;\n            }\n            const unsupported = [];\n            if (cod.selectiveArithmeticCodingBypass) {\n              unsupported.push(\"selectiveArithmeticCodingBypass\");\n            }\n            if (cod.terminationOnEachCodingPass) {\n              unsupported.push(\"terminationOnEachCodingPass\");\n            }\n            if (cod.verticallyStripe) {\n              unsupported.push(\"verticallyStripe\");\n            }\n            if (cod.predictableTermination) {\n              unsupported.push(\"predictableTermination\");\n            }\n            if (unsupported.length > 0) {\n              doNotRecover = true;\n              warn(`JPX: Unsupported COD options (${unsupported.join(\", \")}).`);\n            }\n            if (context.mainHeader) {\n              context.COD = cod;\n            } else {\n              context.currentTile.COD = cod;\n              context.currentTile.COC = [];\n            }\n            break;\n          case 0xff90: // Start of tile-part (SOT)\n            length = readUint16(data, position);\n            tile = {};\n            tile.index = readUint16(data, position + 2);\n            tile.length = readUint32(data, position + 4);\n            tile.dataEnd = tile.length + position - 2;\n            tile.partIndex = data[position + 8];\n            tile.partsCount = data[position + 9];\n\n            context.mainHeader = false;\n            if (tile.partIndex === 0) {\n              // reset component specific settings\n              tile.COD = context.COD;\n              tile.COC = context.COC.slice(0); // clone of the global COC\n              tile.QCD = context.QCD;\n              tile.QCC = context.QCC.slice(0); // clone of the global COC\n            }\n            context.currentTile = tile;\n            break;\n          case 0xff93: // Start of data (SOD)\n            tile = context.currentTile;\n            if (tile.partIndex === 0) {\n              initializeTile(context, tile.index);\n              buildPackets(context);\n            }\n\n            // moving to the end of the data\n            length = tile.dataEnd - position;\n            parseTilePackets(context, data, position, length);\n            break;\n          case 0xff53: // Coding style component (COC)\n            warn(\"JPX: Codestream code 0xFF53 (COC) is not implemented.\");\n          /* falls through */\n          case 0xff55: // Tile-part lengths, main header (TLM)\n          case 0xff57: // Packet length, main header (PLM)\n          case 0xff58: // Packet length, tile-part header (PLT)\n          case 0xff64: // Comment (COM)\n            length = readUint16(data, position);\n            // skipping content\n            break;\n          default:\n            throw new Error(\"Unknown codestream code: \" + code.toString(16));\n        }\n        position += length;\n      }\n    } catch (e) {\n      if (doNotRecover || this.failOnCorruptedImage) {\n        throw new JpxError(e.message);\n      } else {\n        warn(`JPX: Trying to recover from: \"${e.message}\".`);\n      }\n    }\n    this.tiles = transformComponents(context);\n    this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;\n    this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;\n    this.componentsCount = context.SIZ.Csiz;\n  }\n}\n\nfunction calculateComponentDimensions(component, siz) {\n  // Section B.2 Component mapping\n  component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);\n  component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);\n  component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);\n  component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);\n  component.width = component.x1 - component.x0;\n  component.height = component.y1 - component.y0;\n}\nfunction calculateTileGrids(context, components) {\n  const siz = context.SIZ;\n  // Section B.3 Division into tile and tile-components\n  const tiles = [];\n  let tile;\n  const numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);\n  const numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);\n  for (let q = 0; q < numYtiles; q++) {\n    for (let p = 0; p < numXtiles; p++) {\n      tile = {};\n      tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);\n      tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);\n      tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);\n      tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);\n      tile.width = tile.tx1 - tile.tx0;\n      tile.height = tile.ty1 - tile.ty0;\n      tile.components = [];\n      tiles.push(tile);\n    }\n  }\n  context.tiles = tiles;\n\n  const componentsCount = siz.Csiz;\n  for (let i = 0, ii = componentsCount; i < ii; i++) {\n    const component = components[i];\n    for (let j = 0, jj = tiles.length; j < jj; j++) {\n      const tileComponent = {};\n      tile = tiles[j];\n      tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);\n      tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);\n      tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);\n      tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);\n      tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;\n      tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;\n      tile.components[i] = tileComponent;\n    }\n  }\n}\nfunction getBlocksDimensions(context, component, r) {\n  const codOrCoc = component.codingStyleParameters;\n  const result = {};\n  if (!codOrCoc.entropyCoderWithCustomPrecincts) {\n    result.PPx = 15;\n    result.PPy = 15;\n  } else {\n    result.PPx = codOrCoc.precinctsSizes[r].PPx;\n    result.PPy = codOrCoc.precinctsSizes[r].PPy;\n  }\n  // calculate codeblock size as described in section B.7\n  result.xcb_ =\n    r > 0\n      ? Math.min(codOrCoc.xcb, result.PPx - 1)\n      : Math.min(codOrCoc.xcb, result.PPx);\n  result.ycb_ =\n    r > 0\n      ? Math.min(codOrCoc.ycb, result.PPy - 1)\n      : Math.min(codOrCoc.ycb, result.PPy);\n  return result;\n}\nfunction buildPrecincts(context, resolution, dimensions) {\n  // Section B.6 Division resolution to precincts\n  const precinctWidth = 1 << dimensions.PPx;\n  const precinctHeight = 1 << dimensions.PPy;\n  // Jasper introduces codeblock groups for mapping each subband codeblocks\n  // to precincts. Precinct partition divides a resolution according to width\n  // and height parameters. The subband that belongs to the resolution level\n  // has a different size than the level, unless it is the zero resolution.\n\n  // From Jasper documentation: jpeg2000.pdf, section K: Tier-2 coding:\n  // The precinct partitioning for a particular subband is derived from a\n  // partitioning of its parent LL band (i.e., the LL band at the next higher\n  // resolution level)... The LL band associated with each resolution level is\n  // divided into precincts... Each of the resulting precinct regions is then\n  // mapped into its child subbands (if any) at the next lower resolution\n  // level. This is accomplished by using the coordinate transformation\n  // (u, v) = (ceil(x/2), ceil(y/2)) where (x, y) and (u, v) are the\n  // coordinates of a point in the LL band and child subband, respectively.\n  const isZeroRes = resolution.resLevel === 0;\n  const precinctWidthInSubband = 1 << (dimensions.PPx + (isZeroRes ? 0 : -1));\n  const precinctHeightInSubband = 1 << (dimensions.PPy + (isZeroRes ? 0 : -1));\n  const numprecinctswide =\n    resolution.trx1 > resolution.trx0\n      ? Math.ceil(resolution.trx1 / precinctWidth) -\n        Math.floor(resolution.trx0 / precinctWidth)\n      : 0;\n  const numprecinctshigh =\n    resolution.try1 > resolution.try0\n      ? Math.ceil(resolution.try1 / precinctHeight) -\n        Math.floor(resolution.try0 / precinctHeight)\n      : 0;\n  const numprecincts = numprecinctswide * numprecinctshigh;\n\n  resolution.precinctParameters = {\n    precinctWidth,\n    precinctHeight,\n    numprecinctswide,\n    numprecinctshigh,\n    numprecincts,\n    precinctWidthInSubband,\n    precinctHeightInSubband,\n  };\n}\nfunction buildCodeblocks(context, subband, dimensions) {\n  // Section B.7 Division sub-band into code-blocks\n  const xcb_ = dimensions.xcb_;\n  const ycb_ = dimensions.ycb_;\n  const codeblockWidth = 1 << xcb_;\n  const codeblockHeight = 1 << ycb_;\n  const cbx0 = subband.tbx0 >> xcb_;\n  const cby0 = subband.tby0 >> ycb_;\n  const cbx1 = (subband.tbx1 + codeblockWidth - 1) >> xcb_;\n  const cby1 = (subband.tby1 + codeblockHeight - 1) >> ycb_;\n  const precinctParameters = subband.resolution.precinctParameters;\n  const codeblocks = [];\n  const precincts = [];\n  let i, j, codeblock, precinctNumber;\n  for (j = cby0; j < cby1; j++) {\n    for (i = cbx0; i < cbx1; i++) {\n      codeblock = {\n        cbx: i,\n        cby: j,\n        tbx0: codeblockWidth * i,\n        tby0: codeblockHeight * j,\n        tbx1: codeblockWidth * (i + 1),\n        tby1: codeblockHeight * (j + 1),\n      };\n\n      codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);\n      codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);\n      codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);\n      codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);\n\n      // Calculate precinct number for this codeblock, codeblock position\n      // should be relative to its subband, use actual dimension and position\n      // See comment about codeblock group width and height\n      const pi = Math.floor(\n        (codeblock.tbx0_ - subband.tbx0) /\n          precinctParameters.precinctWidthInSubband\n      );\n      const pj = Math.floor(\n        (codeblock.tby0_ - subband.tby0) /\n          precinctParameters.precinctHeightInSubband\n      );\n      precinctNumber = pi + pj * precinctParameters.numprecinctswide;\n\n      codeblock.precinctNumber = precinctNumber;\n      codeblock.subbandType = subband.type;\n      codeblock.Lblock = 3;\n\n      if (\n        codeblock.tbx1_ <= codeblock.tbx0_ ||\n        codeblock.tby1_ <= codeblock.tby0_\n      ) {\n        continue;\n      }\n      codeblocks.push(codeblock);\n      // building precinct for the sub-band\n      let precinct = precincts[precinctNumber];\n      if (precinct !== undefined) {\n        if (i < precinct.cbxMin) {\n          precinct.cbxMin = i;\n        } else if (i > precinct.cbxMax) {\n          precinct.cbxMax = i;\n        }\n        if (j < precinct.cbyMin) {\n          precinct.cbxMin = j;\n        } else if (j > precinct.cbyMax) {\n          precinct.cbyMax = j;\n        }\n      } else {\n        precincts[precinctNumber] = precinct = {\n          cbxMin: i,\n          cbyMin: j,\n          cbxMax: i,\n          cbyMax: j,\n        };\n      }\n      codeblock.precinct = precinct;\n    }\n  }\n  subband.codeblockParameters = {\n    codeblockWidth: xcb_,\n    codeblockHeight: ycb_,\n    numcodeblockwide: cbx1 - cbx0 + 1,\n    numcodeblockhigh: cby1 - cby0 + 1,\n  };\n  subband.codeblocks = codeblocks;\n  subband.precincts = precincts;\n}\nfunction createPacket(resolution, precinctNumber, layerNumber) {\n  const precinctCodeblocks = [];\n  // Section B.10.8 Order of info in packet\n  const subbands = resolution.subbands;\n  // sub-bands already ordered in 'LL', 'HL', 'LH', and 'HH' sequence\n  for (let i = 0, ii = subbands.length; i < ii; i++) {\n    const subband = subbands[i];\n    const codeblocks = subband.codeblocks;\n    for (let j = 0, jj = codeblocks.length; j < jj; j++) {\n      const codeblock = codeblocks[j];\n      if (codeblock.precinctNumber !== precinctNumber) {\n        continue;\n      }\n      precinctCodeblocks.push(codeblock);\n    }\n  }\n  return {\n    layerNumber,\n    codeblocks: precinctCodeblocks,\n  };\n}\nfunction LayerResolutionComponentPositionIterator(context) {\n  const siz = context.SIZ;\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const layersCount = tile.codingStyleDefaultParameters.layersCount;\n  const componentsCount = siz.Csiz;\n  let maxDecompositionLevelsCount = 0;\n  for (let q = 0; q < componentsCount; q++) {\n    maxDecompositionLevelsCount = Math.max(\n      maxDecompositionLevelsCount,\n      tile.components[q].codingStyleParameters.decompositionLevelsCount\n    );\n  }\n\n  let l = 0,\n    r = 0,\n    i = 0,\n    k = 0;\n\n  this.nextPacket = function JpxImage_nextPacket() {\n    // Section B.12.1.1 Layer-resolution-component-position\n    for (; l < layersCount; l++) {\n      for (; r <= maxDecompositionLevelsCount; r++) {\n        for (; i < componentsCount; i++) {\n          const component = tile.components[i];\n          if (r > component.codingStyleParameters.decompositionLevelsCount) {\n            continue;\n          }\n\n          const resolution = component.resolutions[r];\n          const numprecincts = resolution.precinctParameters.numprecincts;\n          for (; k < numprecincts; ) {\n            const packet = createPacket(resolution, k, l);\n            k++;\n            return packet;\n          }\n          k = 0;\n        }\n        i = 0;\n      }\n      r = 0;\n    }\n    throw new JpxError(\"Out of packets\");\n  };\n}\nfunction ResolutionLayerComponentPositionIterator(context) {\n  const siz = context.SIZ;\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const layersCount = tile.codingStyleDefaultParameters.layersCount;\n  const componentsCount = siz.Csiz;\n  let maxDecompositionLevelsCount = 0;\n  for (let q = 0; q < componentsCount; q++) {\n    maxDecompositionLevelsCount = Math.max(\n      maxDecompositionLevelsCount,\n      tile.components[q].codingStyleParameters.decompositionLevelsCount\n    );\n  }\n\n  let r = 0,\n    l = 0,\n    i = 0,\n    k = 0;\n\n  this.nextPacket = function JpxImage_nextPacket() {\n    // Section B.12.1.2 Resolution-layer-component-position\n    for (; r <= maxDecompositionLevelsCount; r++) {\n      for (; l < layersCount; l++) {\n        for (; i < componentsCount; i++) {\n          const component = tile.components[i];\n          if (r > component.codingStyleParameters.decompositionLevelsCount) {\n            continue;\n          }\n\n          const resolution = component.resolutions[r];\n          const numprecincts = resolution.precinctParameters.numprecincts;\n          for (; k < numprecincts; ) {\n            const packet = createPacket(resolution, k, l);\n            k++;\n            return packet;\n          }\n          k = 0;\n        }\n        i = 0;\n      }\n      l = 0;\n    }\n    throw new JpxError(\"Out of packets\");\n  };\n}\nfunction ResolutionPositionComponentLayerIterator(context) {\n  const siz = context.SIZ;\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const layersCount = tile.codingStyleDefaultParameters.layersCount;\n  const componentsCount = siz.Csiz;\n  let l, r, c, p;\n  let maxDecompositionLevelsCount = 0;\n  for (c = 0; c < componentsCount; c++) {\n    const component = tile.components[c];\n    maxDecompositionLevelsCount = Math.max(\n      maxDecompositionLevelsCount,\n      component.codingStyleParameters.decompositionLevelsCount\n    );\n  }\n  const maxNumPrecinctsInLevel = new Int32Array(\n    maxDecompositionLevelsCount + 1\n  );\n  for (r = 0; r <= maxDecompositionLevelsCount; ++r) {\n    let maxNumPrecincts = 0;\n    for (c = 0; c < componentsCount; ++c) {\n      const resolutions = tile.components[c].resolutions;\n      if (r < resolutions.length) {\n        maxNumPrecincts = Math.max(\n          maxNumPrecincts,\n          resolutions[r].precinctParameters.numprecincts\n        );\n      }\n    }\n    maxNumPrecinctsInLevel[r] = maxNumPrecincts;\n  }\n  l = 0;\n  r = 0;\n  c = 0;\n  p = 0;\n\n  this.nextPacket = function JpxImage_nextPacket() {\n    // Section B.12.1.3 Resolution-position-component-layer\n    for (; r <= maxDecompositionLevelsCount; r++) {\n      for (; p < maxNumPrecinctsInLevel[r]; p++) {\n        for (; c < componentsCount; c++) {\n          const component = tile.components[c];\n          if (r > component.codingStyleParameters.decompositionLevelsCount) {\n            continue;\n          }\n          const resolution = component.resolutions[r];\n          const numprecincts = resolution.precinctParameters.numprecincts;\n          if (p >= numprecincts) {\n            continue;\n          }\n          for (; l < layersCount; ) {\n            const packet = createPacket(resolution, p, l);\n            l++;\n            return packet;\n          }\n          l = 0;\n        }\n        c = 0;\n      }\n      p = 0;\n    }\n    throw new JpxError(\"Out of packets\");\n  };\n}\nfunction PositionComponentResolutionLayerIterator(context) {\n  const siz = context.SIZ;\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const layersCount = tile.codingStyleDefaultParameters.layersCount;\n  const componentsCount = siz.Csiz;\n  const precinctsSizes = getPrecinctSizesInImageScale(tile);\n  const precinctsIterationSizes = precinctsSizes;\n  let l = 0,\n    r = 0,\n    c = 0,\n    px = 0,\n    py = 0;\n\n  this.nextPacket = function JpxImage_nextPacket() {\n    // Section B.12.1.4 Position-component-resolution-layer\n    for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n      for (; px < precinctsIterationSizes.maxNumWide; px++) {\n        for (; c < componentsCount; c++) {\n          const component = tile.components[c];\n          const decompositionLevelsCount =\n            component.codingStyleParameters.decompositionLevelsCount;\n          for (; r <= decompositionLevelsCount; r++) {\n            const resolution = component.resolutions[r];\n            const sizeInImageScale =\n              precinctsSizes.components[c].resolutions[r];\n            const k = getPrecinctIndexIfExist(\n              px,\n              py,\n              sizeInImageScale,\n              precinctsIterationSizes,\n              resolution\n            );\n            if (k === null) {\n              continue;\n            }\n            for (; l < layersCount; ) {\n              const packet = createPacket(resolution, k, l);\n              l++;\n              return packet;\n            }\n            l = 0;\n          }\n          r = 0;\n        }\n        c = 0;\n      }\n      px = 0;\n    }\n    throw new JpxError(\"Out of packets\");\n  };\n}\nfunction ComponentPositionResolutionLayerIterator(context) {\n  const siz = context.SIZ;\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const layersCount = tile.codingStyleDefaultParameters.layersCount;\n  const componentsCount = siz.Csiz;\n  const precinctsSizes = getPrecinctSizesInImageScale(tile);\n  let l = 0,\n    r = 0,\n    c = 0,\n    px = 0,\n    py = 0;\n\n  this.nextPacket = function JpxImage_nextPacket() {\n    // Section B.12.1.5 Component-position-resolution-layer\n    for (; c < componentsCount; ++c) {\n      const component = tile.components[c];\n      const precinctsIterationSizes = precinctsSizes.components[c];\n      const decompositionLevelsCount =\n        component.codingStyleParameters.decompositionLevelsCount;\n      for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n        for (; px < precinctsIterationSizes.maxNumWide; px++) {\n          for (; r <= decompositionLevelsCount; r++) {\n            const resolution = component.resolutions[r];\n            const sizeInImageScale = precinctsIterationSizes.resolutions[r];\n            const k = getPrecinctIndexIfExist(\n              px,\n              py,\n              sizeInImageScale,\n              precinctsIterationSizes,\n              resolution\n            );\n            if (k === null) {\n              continue;\n            }\n            for (; l < layersCount; ) {\n              const packet = createPacket(resolution, k, l);\n              l++;\n              return packet;\n            }\n            l = 0;\n          }\n          r = 0;\n        }\n        px = 0;\n      }\n      py = 0;\n    }\n    throw new JpxError(\"Out of packets\");\n  };\n}\nfunction getPrecinctIndexIfExist(\n  pxIndex,\n  pyIndex,\n  sizeInImageScale,\n  precinctIterationSizes,\n  resolution\n) {\n  const posX = pxIndex * precinctIterationSizes.minWidth;\n  const posY = pyIndex * precinctIterationSizes.minHeight;\n  if (\n    posX % sizeInImageScale.width !== 0 ||\n    posY % sizeInImageScale.height !== 0\n  ) {\n    return null;\n  }\n  const startPrecinctRowIndex =\n    (posY / sizeInImageScale.width) *\n    resolution.precinctParameters.numprecinctswide;\n  return posX / sizeInImageScale.height + startPrecinctRowIndex;\n}\nfunction getPrecinctSizesInImageScale(tile) {\n  const componentsCount = tile.components.length;\n  let minWidth = Number.MAX_VALUE;\n  let minHeight = Number.MAX_VALUE;\n  let maxNumWide = 0;\n  let maxNumHigh = 0;\n  const sizePerComponent = new Array(componentsCount);\n  for (let c = 0; c < componentsCount; c++) {\n    const component = tile.components[c];\n    const decompositionLevelsCount =\n      component.codingStyleParameters.decompositionLevelsCount;\n    const sizePerResolution = new Array(decompositionLevelsCount + 1);\n    let minWidthCurrentComponent = Number.MAX_VALUE;\n    let minHeightCurrentComponent = Number.MAX_VALUE;\n    let maxNumWideCurrentComponent = 0;\n    let maxNumHighCurrentComponent = 0;\n    let scale = 1;\n    for (let r = decompositionLevelsCount; r >= 0; --r) {\n      const resolution = component.resolutions[r];\n      const widthCurrentResolution =\n        scale * resolution.precinctParameters.precinctWidth;\n      const heightCurrentResolution =\n        scale * resolution.precinctParameters.precinctHeight;\n      minWidthCurrentComponent = Math.min(\n        minWidthCurrentComponent,\n        widthCurrentResolution\n      );\n      minHeightCurrentComponent = Math.min(\n        minHeightCurrentComponent,\n        heightCurrentResolution\n      );\n      maxNumWideCurrentComponent = Math.max(\n        maxNumWideCurrentComponent,\n        resolution.precinctParameters.numprecinctswide\n      );\n      maxNumHighCurrentComponent = Math.max(\n        maxNumHighCurrentComponent,\n        resolution.precinctParameters.numprecinctshigh\n      );\n      sizePerResolution[r] = {\n        width: widthCurrentResolution,\n        height: heightCurrentResolution,\n      };\n      scale <<= 1;\n    }\n    minWidth = Math.min(minWidth, minWidthCurrentComponent);\n    minHeight = Math.min(minHeight, minHeightCurrentComponent);\n    maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent);\n    maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent);\n    sizePerComponent[c] = {\n      resolutions: sizePerResolution,\n      minWidth: minWidthCurrentComponent,\n      minHeight: minHeightCurrentComponent,\n      maxNumWide: maxNumWideCurrentComponent,\n      maxNumHigh: maxNumHighCurrentComponent,\n    };\n  }\n  return {\n    components: sizePerComponent,\n    minWidth,\n    minHeight,\n    maxNumWide,\n    maxNumHigh,\n  };\n}\nfunction buildPackets(context) {\n  const siz = context.SIZ;\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const componentsCount = siz.Csiz;\n  // Creating resolutions and sub-bands for each component\n  for (let c = 0; c < componentsCount; c++) {\n    const component = tile.components[c];\n    const decompositionLevelsCount =\n      component.codingStyleParameters.decompositionLevelsCount;\n    // Section B.5 Resolution levels and sub-bands\n    const resolutions = [];\n    const subbands = [];\n    for (let r = 0; r <= decompositionLevelsCount; r++) {\n      const blocksDimensions = getBlocksDimensions(context, component, r);\n      const resolution = {};\n      const scale = 1 << (decompositionLevelsCount - r);\n      resolution.trx0 = Math.ceil(component.tcx0 / scale);\n      resolution.try0 = Math.ceil(component.tcy0 / scale);\n      resolution.trx1 = Math.ceil(component.tcx1 / scale);\n      resolution.try1 = Math.ceil(component.tcy1 / scale);\n      resolution.resLevel = r;\n      buildPrecincts(context, resolution, blocksDimensions);\n      resolutions.push(resolution);\n\n      let subband;\n      if (r === 0) {\n        // one sub-band (LL) with last decomposition\n        subband = {};\n        subband.type = \"LL\";\n        subband.tbx0 = Math.ceil(component.tcx0 / scale);\n        subband.tby0 = Math.ceil(component.tcy0 / scale);\n        subband.tbx1 = Math.ceil(component.tcx1 / scale);\n        subband.tby1 = Math.ceil(component.tcy1 / scale);\n        subband.resolution = resolution;\n        buildCodeblocks(context, subband, blocksDimensions);\n        subbands.push(subband);\n        resolution.subbands = [subband];\n      } else {\n        const bscale = 1 << (decompositionLevelsCount - r + 1);\n        const resolutionSubbands = [];\n        // three sub-bands (HL, LH and HH) with rest of decompositions\n        subband = {};\n        subband.type = \"HL\";\n        subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n        subband.tby0 = Math.ceil(component.tcy0 / bscale);\n        subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n        subband.tby1 = Math.ceil(component.tcy1 / bscale);\n        subband.resolution = resolution;\n        buildCodeblocks(context, subband, blocksDimensions);\n        subbands.push(subband);\n        resolutionSubbands.push(subband);\n\n        subband = {};\n        subband.type = \"LH\";\n        subband.tbx0 = Math.ceil(component.tcx0 / bscale);\n        subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n        subband.tbx1 = Math.ceil(component.tcx1 / bscale);\n        subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n        subband.resolution = resolution;\n        buildCodeblocks(context, subband, blocksDimensions);\n        subbands.push(subband);\n        resolutionSubbands.push(subband);\n\n        subband = {};\n        subband.type = \"HH\";\n        subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n        subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n        subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n        subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n        subband.resolution = resolution;\n        buildCodeblocks(context, subband, blocksDimensions);\n        subbands.push(subband);\n        resolutionSubbands.push(subband);\n\n        resolution.subbands = resolutionSubbands;\n      }\n    }\n    component.resolutions = resolutions;\n    component.subbands = subbands;\n  }\n  // Generate the packets sequence\n  const progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;\n  switch (progressionOrder) {\n    case 0:\n      tile.packetsIterator = new LayerResolutionComponentPositionIterator(\n        context\n      );\n      break;\n    case 1:\n      tile.packetsIterator = new ResolutionLayerComponentPositionIterator(\n        context\n      );\n      break;\n    case 2:\n      tile.packetsIterator = new ResolutionPositionComponentLayerIterator(\n        context\n      );\n      break;\n    case 3:\n      tile.packetsIterator = new PositionComponentResolutionLayerIterator(\n        context\n      );\n      break;\n    case 4:\n      tile.packetsIterator = new ComponentPositionResolutionLayerIterator(\n        context\n      );\n      break;\n    default:\n      throw new JpxError(`Unsupported progression order ${progressionOrder}`);\n  }\n}\nfunction parseTilePackets(context, data, offset, dataLength) {\n  let position = 0;\n  let buffer,\n    bufferSize = 0,\n    skipNextBit = false;\n  function readBits(count) {\n    while (bufferSize < count) {\n      const b = data[offset + position];\n      position++;\n      if (skipNextBit) {\n        buffer = (buffer << 7) | b;\n        bufferSize += 7;\n        skipNextBit = false;\n      } else {\n        buffer = (buffer << 8) | b;\n        bufferSize += 8;\n      }\n      if (b === 0xff) {\n        skipNextBit = true;\n      }\n    }\n    bufferSize -= count;\n    return (buffer >>> bufferSize) & ((1 << count) - 1);\n  }\n  function skipMarkerIfEqual(value) {\n    if (\n      data[offset + position - 1] === 0xff &&\n      data[offset + position] === value\n    ) {\n      skipBytes(1);\n      return true;\n    } else if (\n      data[offset + position] === 0xff &&\n      data[offset + position + 1] === value\n    ) {\n      skipBytes(2);\n      return true;\n    }\n    return false;\n  }\n  function skipBytes(count) {\n    position += count;\n  }\n  function alignToByte() {\n    bufferSize = 0;\n    if (skipNextBit) {\n      position++;\n      skipNextBit = false;\n    }\n  }\n  function readCodingpasses() {\n    if (readBits(1) === 0) {\n      return 1;\n    }\n    if (readBits(1) === 0) {\n      return 2;\n    }\n    let value = readBits(2);\n    if (value < 3) {\n      return value + 3;\n    }\n    value = readBits(5);\n    if (value < 31) {\n      return value + 6;\n    }\n    value = readBits(7);\n    return value + 37;\n  }\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const sopMarkerUsed = context.COD.sopMarkerUsed;\n  const ephMarkerUsed = context.COD.ephMarkerUsed;\n  const packetsIterator = tile.packetsIterator;\n  while (position < dataLength) {\n    alignToByte();\n    if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {\n      // Skip also marker segment length and packet sequence ID\n      skipBytes(4);\n    }\n    const packet = packetsIterator.nextPacket();\n    if (!readBits(1)) {\n      continue;\n    }\n    const layerNumber = packet.layerNumber,\n      queue = [];\n    let codeblock;\n    for (let i = 0, ii = packet.codeblocks.length; i < ii; i++) {\n      codeblock = packet.codeblocks[i];\n      let precinct = codeblock.precinct;\n      const codeblockColumn = codeblock.cbx - precinct.cbxMin;\n      const codeblockRow = codeblock.cby - precinct.cbyMin;\n      let codeblockIncluded = false;\n      let firstTimeInclusion = false;\n      let valueReady, zeroBitPlanesTree;\n      if (codeblock.included !== undefined) {\n        codeblockIncluded = !!readBits(1);\n      } else {\n        // reading inclusion tree\n        precinct = codeblock.precinct;\n        let inclusionTree;\n        if (precinct.inclusionTree !== undefined) {\n          inclusionTree = precinct.inclusionTree;\n        } else {\n          // building inclusion and zero bit-planes trees\n          const width = precinct.cbxMax - precinct.cbxMin + 1;\n          const height = precinct.cbyMax - precinct.cbyMin + 1;\n          inclusionTree = new InclusionTree(width, height, layerNumber);\n          zeroBitPlanesTree = new TagTree(width, height);\n          precinct.inclusionTree = inclusionTree;\n          precinct.zeroBitPlanesTree = zeroBitPlanesTree;\n          for (let l = 0; l < layerNumber; l++) {\n            if (readBits(1) !== 0) {\n              throw new JpxError(\"Invalid tag tree\");\n            }\n          }\n        }\n\n        if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) {\n          while (true) {\n            if (readBits(1)) {\n              valueReady = !inclusionTree.nextLevel();\n              if (valueReady) {\n                codeblock.included = true;\n                codeblockIncluded = firstTimeInclusion = true;\n                break;\n              }\n            } else {\n              inclusionTree.incrementValue(layerNumber);\n              break;\n            }\n          }\n        }\n      }\n      if (!codeblockIncluded) {\n        continue;\n      }\n      if (firstTimeInclusion) {\n        zeroBitPlanesTree = precinct.zeroBitPlanesTree;\n        zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);\n        while (true) {\n          if (readBits(1)) {\n            valueReady = !zeroBitPlanesTree.nextLevel();\n            if (valueReady) {\n              break;\n            }\n          } else {\n            zeroBitPlanesTree.incrementValue();\n          }\n        }\n        codeblock.zeroBitPlanes = zeroBitPlanesTree.value;\n      }\n      const codingpasses = readCodingpasses();\n      while (readBits(1)) {\n        codeblock.Lblock++;\n      }\n      const codingpassesLog2 = log2(codingpasses);\n      // rounding down log2\n      const bits =\n        (codingpasses < 1 << codingpassesLog2\n          ? codingpassesLog2 - 1\n          : codingpassesLog2) + codeblock.Lblock;\n      const codedDataLength = readBits(bits);\n      queue.push({\n        codeblock,\n        codingpasses,\n        dataLength: codedDataLength,\n      });\n    }\n    alignToByte();\n    if (ephMarkerUsed) {\n      skipMarkerIfEqual(0x92);\n    }\n    while (queue.length > 0) {\n      const packetItem = queue.shift();\n      codeblock = packetItem.codeblock;\n      if (codeblock.data === undefined) {\n        codeblock.data = [];\n      }\n      codeblock.data.push({\n        data,\n        start: offset + position,\n        end: offset + position + packetItem.dataLength,\n        codingpasses: packetItem.codingpasses,\n      });\n      position += packetItem.dataLength;\n    }\n  }\n  return position;\n}\nfunction copyCoefficients(\n  coefficients,\n  levelWidth,\n  levelHeight,\n  subband,\n  delta,\n  mb,\n  reversible,\n  segmentationSymbolUsed,\n  resetContextProbabilities\n) {\n  const x0 = subband.tbx0;\n  const y0 = subband.tby0;\n  const width = subband.tbx1 - subband.tbx0;\n  const codeblocks = subband.codeblocks;\n  const right = subband.type.charAt(0) === \"H\" ? 1 : 0;\n  const bottom = subband.type.charAt(1) === \"H\" ? levelWidth : 0;\n\n  for (let i = 0, ii = codeblocks.length; i < ii; ++i) {\n    const codeblock = codeblocks[i];\n    const blockWidth = codeblock.tbx1_ - codeblock.tbx0_;\n    const blockHeight = codeblock.tby1_ - codeblock.tby0_;\n    if (blockWidth === 0 || blockHeight === 0) {\n      continue;\n    }\n    if (codeblock.data === undefined) {\n      continue;\n    }\n\n    const bitModel = new BitModel(\n      blockWidth,\n      blockHeight,\n      codeblock.subbandType,\n      codeblock.zeroBitPlanes,\n      mb\n    );\n    let currentCodingpassType = 2; // first bit plane starts from cleanup\n\n    // collect data\n    const data = codeblock.data;\n    let totalLength = 0,\n      codingpasses = 0;\n    let j, jj, dataItem;\n    for (j = 0, jj = data.length; j < jj; j++) {\n      dataItem = data[j];\n      totalLength += dataItem.end - dataItem.start;\n      codingpasses += dataItem.codingpasses;\n    }\n    const encodedData = new Uint8Array(totalLength);\n    let position = 0;\n    for (j = 0, jj = data.length; j < jj; j++) {\n      dataItem = data[j];\n      const chunk = dataItem.data.subarray(dataItem.start, dataItem.end);\n      encodedData.set(chunk, position);\n      position += chunk.length;\n    }\n    // decoding the item\n    const decoder = new ArithmeticDecoder(encodedData, 0, totalLength);\n    bitModel.setDecoder(decoder);\n\n    for (j = 0; j < codingpasses; j++) {\n      switch (currentCodingpassType) {\n        case 0:\n          bitModel.runSignificancePropagationPass();\n          break;\n        case 1:\n          bitModel.runMagnitudeRefinementPass();\n          break;\n        case 2:\n          bitModel.runCleanupPass();\n          if (segmentationSymbolUsed) {\n            bitModel.checkSegmentationSymbol();\n          }\n          break;\n      }\n\n      if (resetContextProbabilities) {\n        bitModel.reset();\n      }\n\n      currentCodingpassType = (currentCodingpassType + 1) % 3;\n    }\n\n    let offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width;\n    const sign = bitModel.coefficentsSign;\n    const magnitude = bitModel.coefficentsMagnitude;\n    const bitsDecoded = bitModel.bitsDecoded;\n    const magnitudeCorrection = reversible ? 0 : 0.5;\n    let k, n, nb;\n    position = 0;\n    // Do the interleaving of Section F.3.3 here, so we do not need\n    // to copy later. LL level is not interleaved, just copied.\n    const interleave = subband.type !== \"LL\";\n    for (j = 0; j < blockHeight; j++) {\n      const row = (offset / width) | 0; // row in the non-interleaved subband\n      const levelOffset = 2 * row * (levelWidth - width) + right + bottom;\n      for (k = 0; k < blockWidth; k++) {\n        n = magnitude[position];\n        if (n !== 0) {\n          n = (n + magnitudeCorrection) * delta;\n          if (sign[position] !== 0) {\n            n = -n;\n          }\n          nb = bitsDecoded[position];\n          const pos = interleave ? levelOffset + (offset << 1) : offset;\n          coefficients[pos] = reversible && nb >= mb ? n : n * (1 << (mb - nb));\n        }\n        offset++;\n        position++;\n      }\n      offset += width - blockWidth;\n    }\n  }\n}\nfunction transformTile(context, tile, c) {\n  const component = tile.components[c];\n  const codingStyleParameters = component.codingStyleParameters;\n  const quantizationParameters = component.quantizationParameters;\n  const decompositionLevelsCount =\n    codingStyleParameters.decompositionLevelsCount;\n  const spqcds = quantizationParameters.SPqcds;\n  const scalarExpounded = quantizationParameters.scalarExpounded;\n  const guardBits = quantizationParameters.guardBits;\n  const segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;\n  const resetContextProbabilities =\n    codingStyleParameters.resetContextProbabilities;\n  const precision = context.components[c].precision;\n\n  const reversible = codingStyleParameters.reversibleTransformation;\n  const transform = reversible\n    ? new ReversibleTransform()\n    : new IrreversibleTransform();\n\n  const subbandCoefficients = [];\n  let b = 0;\n  for (let i = 0; i <= decompositionLevelsCount; i++) {\n    const resolution = component.resolutions[i];\n\n    const width = resolution.trx1 - resolution.trx0;\n    const height = resolution.try1 - resolution.try0;\n    // Allocate space for the whole sublevel.\n    const coefficients = new Float32Array(width * height);\n\n    for (let j = 0, jj = resolution.subbands.length; j < jj; j++) {\n      let mu, epsilon;\n      if (!scalarExpounded) {\n        // formula E-5\n        mu = spqcds[0].mu;\n        epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);\n      } else {\n        mu = spqcds[b].mu;\n        epsilon = spqcds[b].epsilon;\n        b++;\n      }\n\n      const subband = resolution.subbands[j];\n      const gainLog2 = SubbandsGainLog2[subband.type];\n\n      // calculate quantization coefficient (Section E.1.1.1)\n      const delta = reversible\n        ? 1\n        : 2 ** (precision + gainLog2 - epsilon) * (1 + mu / 2048);\n      const mb = guardBits + epsilon - 1;\n\n      // In the first resolution level, copyCoefficients will fill the\n      // whole array with coefficients. In the succeeding passes,\n      // copyCoefficients will consecutively fill in the values that belong\n      // to the interleaved positions of the HL, LH, and HH coefficients.\n      // The LL coefficients will then be interleaved in Transform.iterate().\n      copyCoefficients(\n        coefficients,\n        width,\n        height,\n        subband,\n        delta,\n        mb,\n        reversible,\n        segmentationSymbolUsed,\n        resetContextProbabilities\n      );\n    }\n    subbandCoefficients.push({\n      width,\n      height,\n      items: coefficients,\n    });\n  }\n\n  const result = transform.calculate(\n    subbandCoefficients,\n    component.tcx0,\n    component.tcy0\n  );\n  return {\n    left: component.tcx0,\n    top: component.tcy0,\n    width: result.width,\n    height: result.height,\n    items: result.items,\n  };\n}\nfunction transformComponents(context) {\n  const siz = context.SIZ;\n  const components = context.components;\n  const componentsCount = siz.Csiz;\n  const resultImages = [];\n  for (let i = 0, ii = context.tiles.length; i < ii; i++) {\n    const tile = context.tiles[i];\n    const transformedTiles = [];\n    for (let c = 0; c < componentsCount; c++) {\n      transformedTiles[c] = transformTile(context, tile, c);\n    }\n    const tile0 = transformedTiles[0];\n    const out = new Uint8ClampedArray(tile0.items.length * componentsCount);\n    const result = {\n      left: tile0.left,\n      top: tile0.top,\n      width: tile0.width,\n      height: tile0.height,\n      items: out,\n    };\n\n    // Section G.2.2 Inverse multi component transform\n    let shift, offset;\n    let pos = 0,\n      j,\n      jj,\n      y0,\n      y1,\n      y2;\n    if (tile.codingStyleDefaultParameters.multipleComponentTransform) {\n      const fourComponents = componentsCount === 4;\n      const y0items = transformedTiles[0].items;\n      const y1items = transformedTiles[1].items;\n      const y2items = transformedTiles[2].items;\n      const y3items = fourComponents ? transformedTiles[3].items : null;\n\n      // HACK: The multiple component transform formulas below assume that\n      // all components have the same precision. With this in mind, we\n      // compute shift and offset only once.\n      shift = components[0].precision - 8;\n      offset = (128 << shift) + 0.5;\n\n      const component0 = tile.components[0];\n      const alpha01 = componentsCount - 3;\n      jj = y0items.length;\n      if (!component0.codingStyleParameters.reversibleTransformation) {\n        // inverse irreversible multiple component transform\n        for (j = 0; j < jj; j++, pos += alpha01) {\n          y0 = y0items[j] + offset;\n          y1 = y1items[j];\n          y2 = y2items[j];\n          out[pos++] = (y0 + 1.402 * y2) >> shift;\n          out[pos++] = (y0 - 0.34413 * y1 - 0.71414 * y2) >> shift;\n          out[pos++] = (y0 + 1.772 * y1) >> shift;\n        }\n      } else {\n        // inverse reversible multiple component transform\n        for (j = 0; j < jj; j++, pos += alpha01) {\n          y0 = y0items[j] + offset;\n          y1 = y1items[j];\n          y2 = y2items[j];\n          const g = y0 - ((y2 + y1) >> 2);\n\n          out[pos++] = (g + y2) >> shift;\n          out[pos++] = g >> shift;\n          out[pos++] = (g + y1) >> shift;\n        }\n      }\n      if (fourComponents) {\n        for (j = 0, pos = 3; j < jj; j++, pos += 4) {\n          out[pos] = (y3items[j] + offset) >> shift;\n        }\n      }\n    } else {\n      // no multi-component transform\n      for (let c = 0; c < componentsCount; c++) {\n        const items = transformedTiles[c].items;\n        shift = components[c].precision - 8;\n        offset = (128 << shift) + 0.5;\n        for (pos = c, j = 0, jj = items.length; j < jj; j++) {\n          out[pos] = (items[j] + offset) >> shift;\n          pos += componentsCount;\n        }\n      }\n    }\n    resultImages.push(result);\n  }\n  return resultImages;\n}\nfunction initializeTile(context, tileIndex) {\n  const siz = context.SIZ;\n  const componentsCount = siz.Csiz;\n  const tile = context.tiles[tileIndex];\n  for (let c = 0; c < componentsCount; c++) {\n    const component = tile.components[c];\n    const qcdOrQcc =\n      context.currentTile.QCC[c] !== undefined\n        ? context.currentTile.QCC[c]\n        : context.currentTile.QCD;\n    component.quantizationParameters = qcdOrQcc;\n    const codOrCoc =\n      context.currentTile.COC[c] !== undefined\n        ? context.currentTile.COC[c]\n        : context.currentTile.COD;\n    component.codingStyleParameters = codOrCoc;\n  }\n  tile.codingStyleDefaultParameters = context.currentTile.COD;\n}\n\n// Section B.10.2 Tag trees\nclass TagTree {\n  constructor(width, height) {\n    const levelsLength = log2(Math.max(width, height)) + 1;\n    this.levels = [];\n    for (let i = 0; i < levelsLength; i++) {\n      const level = {\n        width,\n        height,\n        items: [],\n      };\n      this.levels.push(level);\n      width = Math.ceil(width / 2);\n      height = Math.ceil(height / 2);\n    }\n  }\n\n  reset(i, j) {\n    let currentLevel = 0,\n      value = 0,\n      level;\n    while (currentLevel < this.levels.length) {\n      level = this.levels[currentLevel];\n      const index = i + j * level.width;\n      if (level.items[index] !== undefined) {\n        value = level.items[index];\n        break;\n      }\n      level.index = index;\n      i >>= 1;\n      j >>= 1;\n      currentLevel++;\n    }\n    currentLevel--;\n    level = this.levels[currentLevel];\n    level.items[level.index] = value;\n    this.currentLevel = currentLevel;\n    delete this.value;\n  }\n\n  incrementValue() {\n    const level = this.levels[this.currentLevel];\n    level.items[level.index]++;\n  }\n\n  nextLevel() {\n    let currentLevel = this.currentLevel;\n    let level = this.levels[currentLevel];\n    const value = level.items[level.index];\n    currentLevel--;\n    if (currentLevel < 0) {\n      this.value = value;\n      return false;\n    }\n\n    this.currentLevel = currentLevel;\n    level = this.levels[currentLevel];\n    level.items[level.index] = value;\n    return true;\n  }\n}\n\nclass InclusionTree {\n  constructor(width, height, defaultValue) {\n    const levelsLength = log2(Math.max(width, height)) + 1;\n    this.levels = [];\n    for (let i = 0; i < levelsLength; i++) {\n      const items = new Uint8Array(width * height);\n      for (let j = 0, jj = items.length; j < jj; j++) {\n        items[j] = defaultValue;\n      }\n\n      const level = {\n        width,\n        height,\n        items,\n      };\n      this.levels.push(level);\n\n      width = Math.ceil(width / 2);\n      height = Math.ceil(height / 2);\n    }\n  }\n\n  reset(i, j, stopValue) {\n    let currentLevel = 0;\n    while (currentLevel < this.levels.length) {\n      const level = this.levels[currentLevel];\n      const index = i + j * level.width;\n      level.index = index;\n      const value = level.items[index];\n\n      if (value === 0xff) {\n        break;\n      }\n\n      if (value > stopValue) {\n        this.currentLevel = currentLevel;\n        // already know about this one, propagating the value to top levels\n        this.propagateValues();\n        return false;\n      }\n\n      i >>= 1;\n      j >>= 1;\n      currentLevel++;\n    }\n    this.currentLevel = currentLevel - 1;\n    return true;\n  }\n\n  incrementValue(stopValue) {\n    const level = this.levels[this.currentLevel];\n    level.items[level.index] = stopValue + 1;\n    this.propagateValues();\n  }\n\n  propagateValues() {\n    let levelIndex = this.currentLevel;\n    let level = this.levels[levelIndex];\n    const currentValue = level.items[level.index];\n    while (--levelIndex >= 0) {\n      level = this.levels[levelIndex];\n      level.items[level.index] = currentValue;\n    }\n  }\n\n  nextLevel() {\n    let currentLevel = this.currentLevel;\n    let level = this.levels[currentLevel];\n    const value = level.items[level.index];\n    level.items[level.index] = 0xff;\n    currentLevel--;\n    if (currentLevel < 0) {\n      return false;\n    }\n\n    this.currentLevel = currentLevel;\n    level = this.levels[currentLevel];\n    level.items[level.index] = value;\n    return true;\n  }\n}\n\n// Section D. Coefficient bit modeling\nclass BitModel {\n  static UNIFORM_CONTEXT = 17;\n\n  static RUNLENGTH_CONTEXT = 18;\n\n  // Table D-1\n  // The index is binary presentation: 0dddvvhh, ddd - sum of Di (0..4),\n  // vv - sum of Vi (0..2), and hh - sum of Hi (0..2)\n  static LLAndLHContextsLabel = new Uint8Array([\n    0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4,\n    7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6,\n    8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8,\n  ]);\n\n  static HLContextLabel = new Uint8Array([\n    0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8,\n    8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3,\n    4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8,\n  ]);\n\n  static HHContextLabel = new Uint8Array([\n    0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5,\n    5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8,\n    8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8,\n  ]);\n\n  constructor(width, height, subband, zeroBitPlanes, mb) {\n    this.width = width;\n    this.height = height;\n\n    let contextLabelTable;\n    if (subband === \"HH\") {\n      contextLabelTable = BitModel.HHContextLabel;\n    } else if (subband === \"HL\") {\n      contextLabelTable = BitModel.HLContextLabel;\n    } else {\n      contextLabelTable = BitModel.LLAndLHContextsLabel;\n    }\n    this.contextLabelTable = contextLabelTable;\n\n    const coefficientCount = width * height;\n\n    // coefficients outside the encoding region treated as insignificant\n    // add border state cells for significanceState\n    this.neighborsSignificance = new Uint8Array(coefficientCount);\n    this.coefficentsSign = new Uint8Array(coefficientCount);\n    let coefficentsMagnitude;\n    if (mb > 14) {\n      coefficentsMagnitude = new Uint32Array(coefficientCount);\n    } else if (mb > 6) {\n      coefficentsMagnitude = new Uint16Array(coefficientCount);\n    } else {\n      coefficentsMagnitude = new Uint8Array(coefficientCount);\n    }\n    this.coefficentsMagnitude = coefficentsMagnitude;\n    this.processingFlags = new Uint8Array(coefficientCount);\n\n    const bitsDecoded = new Uint8Array(coefficientCount);\n    if (zeroBitPlanes !== 0) {\n      for (let i = 0; i < coefficientCount; i++) {\n        bitsDecoded[i] = zeroBitPlanes;\n      }\n    }\n    this.bitsDecoded = bitsDecoded;\n\n    this.reset();\n  }\n\n  setDecoder(decoder) {\n    this.decoder = decoder;\n  }\n\n  reset() {\n    // We have 17 contexts that are accessed via context labels,\n    // plus the uniform and runlength context.\n    this.contexts = new Int8Array(19);\n\n    // Contexts are packed into 1 byte:\n    // highest 7 bits carry the index, lowest bit carries mps\n    this.contexts[0] = (4 << 1) | 0;\n    this.contexts[BitModel.UNIFORM_CONTEXT] = (46 << 1) | 0;\n    this.contexts[BitModel.RUNLENGTH_CONTEXT] = (3 << 1) | 0;\n  }\n\n  setNeighborsSignificance(row, column, index) {\n    const neighborsSignificance = this.neighborsSignificance;\n    const width = this.width,\n      height = this.height;\n    const left = column > 0;\n    const right = column + 1 < width;\n    let i;\n\n    if (row > 0) {\n      i = index - width;\n      if (left) {\n        neighborsSignificance[i - 1] += 0x10;\n      }\n      if (right) {\n        neighborsSignificance[i + 1] += 0x10;\n      }\n      neighborsSignificance[i] += 0x04;\n    }\n\n    if (row + 1 < height) {\n      i = index + width;\n      if (left) {\n        neighborsSignificance[i - 1] += 0x10;\n      }\n      if (right) {\n        neighborsSignificance[i + 1] += 0x10;\n      }\n      neighborsSignificance[i] += 0x04;\n    }\n\n    if (left) {\n      neighborsSignificance[index - 1] += 0x01;\n    }\n    if (right) {\n      neighborsSignificance[index + 1] += 0x01;\n    }\n    neighborsSignificance[index] |= 0x80;\n  }\n\n  runSignificancePropagationPass() {\n    const decoder = this.decoder;\n    const width = this.width,\n      height = this.height;\n    const coefficentsMagnitude = this.coefficentsMagnitude;\n    const coefficentsSign = this.coefficentsSign;\n    const neighborsSignificance = this.neighborsSignificance;\n    const processingFlags = this.processingFlags;\n    const contexts = this.contexts;\n    const labels = this.contextLabelTable;\n    const bitsDecoded = this.bitsDecoded;\n    const processedInverseMask = ~1;\n    const processedMask = 1;\n    const firstMagnitudeBitMask = 2;\n\n    for (let i0 = 0; i0 < height; i0 += 4) {\n      for (let j = 0; j < width; j++) {\n        let index = i0 * width + j;\n        for (let i1 = 0; i1 < 4; i1++, index += width) {\n          const i = i0 + i1;\n          if (i >= height) {\n            break;\n          }\n          // clear processed flag first\n          processingFlags[index] &= processedInverseMask;\n\n          if (coefficentsMagnitude[index] || !neighborsSignificance[index]) {\n            continue;\n          }\n\n          const contextLabel = labels[neighborsSignificance[index]];\n          const decision = decoder.readBit(contexts, contextLabel);\n          if (decision) {\n            const sign = this.decodeSignBit(i, j, index);\n            coefficentsSign[index] = sign;\n            coefficentsMagnitude[index] = 1;\n            this.setNeighborsSignificance(i, j, index);\n            processingFlags[index] |= firstMagnitudeBitMask;\n          }\n          bitsDecoded[index]++;\n          processingFlags[index] |= processedMask;\n        }\n      }\n    }\n  }\n\n  decodeSignBit(row, column, index) {\n    const width = this.width,\n      height = this.height;\n    const coefficentsMagnitude = this.coefficentsMagnitude;\n    const coefficentsSign = this.coefficentsSign;\n    let contribution, sign0, sign1, significance1;\n    let contextLabel, decoded;\n\n    // calculate horizontal contribution\n    significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0;\n    if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {\n      sign1 = coefficentsSign[index + 1];\n      if (significance1) {\n        sign0 = coefficentsSign[index - 1];\n        contribution = 1 - sign1 - sign0;\n      } else {\n        contribution = 1 - sign1 - sign1;\n      }\n    } else if (significance1) {\n      sign0 = coefficentsSign[index - 1];\n      contribution = 1 - sign0 - sign0;\n    } else {\n      contribution = 0;\n    }\n    const horizontalContribution = 3 * contribution;\n\n    // calculate vertical contribution and combine with the horizontal\n    significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0;\n    if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {\n      sign1 = coefficentsSign[index + width];\n      if (significance1) {\n        sign0 = coefficentsSign[index - width];\n        contribution = 1 - sign1 - sign0 + horizontalContribution;\n      } else {\n        contribution = 1 - sign1 - sign1 + horizontalContribution;\n      }\n    } else if (significance1) {\n      sign0 = coefficentsSign[index - width];\n      contribution = 1 - sign0 - sign0 + horizontalContribution;\n    } else {\n      contribution = horizontalContribution;\n    }\n\n    if (contribution >= 0) {\n      contextLabel = 9 + contribution;\n      decoded = this.decoder.readBit(this.contexts, contextLabel);\n    } else {\n      contextLabel = 9 - contribution;\n      decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1;\n    }\n    return decoded;\n  }\n\n  runMagnitudeRefinementPass() {\n    const decoder = this.decoder;\n    const width = this.width,\n      height = this.height;\n    const coefficentsMagnitude = this.coefficentsMagnitude;\n    const neighborsSignificance = this.neighborsSignificance;\n    const contexts = this.contexts;\n    const bitsDecoded = this.bitsDecoded;\n    const processingFlags = this.processingFlags;\n    const processedMask = 1;\n    const firstMagnitudeBitMask = 2;\n    const length = width * height;\n    const width4 = width * 4;\n\n    for (let index0 = 0, indexNext; index0 < length; index0 = indexNext) {\n      indexNext = Math.min(length, index0 + width4);\n      for (let j = 0; j < width; j++) {\n        for (let index = index0 + j; index < indexNext; index += width) {\n          // significant but not those that have just become\n          if (\n            !coefficentsMagnitude[index] ||\n            (processingFlags[index] & processedMask) !== 0\n          ) {\n            continue;\n          }\n\n          let contextLabel = 16;\n          if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {\n            processingFlags[index] ^= firstMagnitudeBitMask;\n            // first refinement\n            const significance = neighborsSignificance[index] & 127;\n            contextLabel = significance === 0 ? 15 : 14;\n          }\n\n          const bit = decoder.readBit(contexts, contextLabel);\n          coefficentsMagnitude[index] =\n            (coefficentsMagnitude[index] << 1) | bit;\n          bitsDecoded[index]++;\n          processingFlags[index] |= processedMask;\n        }\n      }\n    }\n  }\n\n  runCleanupPass() {\n    const decoder = this.decoder;\n    const width = this.width,\n      height = this.height;\n    const neighborsSignificance = this.neighborsSignificance;\n    const coefficentsMagnitude = this.coefficentsMagnitude;\n    const coefficentsSign = this.coefficentsSign;\n    const contexts = this.contexts;\n    const labels = this.contextLabelTable;\n    const bitsDecoded = this.bitsDecoded;\n    const processingFlags = this.processingFlags;\n    const processedMask = 1;\n    const firstMagnitudeBitMask = 2;\n    const oneRowDown = width;\n    const twoRowsDown = width * 2;\n    const threeRowsDown = width * 3;\n    let iNext;\n    for (let i0 = 0; i0 < height; i0 = iNext) {\n      iNext = Math.min(i0 + 4, height);\n      const indexBase = i0 * width;\n      const checkAllEmpty = i0 + 3 < height;\n      for (let j = 0; j < width; j++) {\n        const index0 = indexBase + j;\n        // using the property: labels[neighborsSignificance[index]] === 0\n        // when neighborsSignificance[index] === 0\n        const allEmpty =\n          checkAllEmpty &&\n          processingFlags[index0] === 0 &&\n          processingFlags[index0 + oneRowDown] === 0 &&\n          processingFlags[index0 + twoRowsDown] === 0 &&\n          processingFlags[index0 + threeRowsDown] === 0 &&\n          neighborsSignificance[index0] === 0 &&\n          neighborsSignificance[index0 + oneRowDown] === 0 &&\n          neighborsSignificance[index0 + twoRowsDown] === 0 &&\n          neighborsSignificance[index0 + threeRowsDown] === 0;\n        let i1 = 0,\n          index = index0;\n        let i = i0,\n          sign;\n        if (allEmpty) {\n          const hasSignificantCoefficent = decoder.readBit(\n            contexts,\n            BitModel.RUNLENGTH_CONTEXT\n          );\n          if (!hasSignificantCoefficent) {\n            bitsDecoded[index0]++;\n            bitsDecoded[index0 + oneRowDown]++;\n            bitsDecoded[index0 + twoRowsDown]++;\n            bitsDecoded[index0 + threeRowsDown]++;\n            continue; // next column\n          }\n          i1 =\n            (decoder.readBit(contexts, BitModel.UNIFORM_CONTEXT) << 1) |\n            decoder.readBit(contexts, BitModel.UNIFORM_CONTEXT);\n          if (i1 !== 0) {\n            i = i0 + i1;\n            index += i1 * width;\n          }\n\n          sign = this.decodeSignBit(i, j, index);\n          coefficentsSign[index] = sign;\n          coefficentsMagnitude[index] = 1;\n          this.setNeighborsSignificance(i, j, index);\n          processingFlags[index] |= firstMagnitudeBitMask;\n\n          index = index0;\n          for (let i2 = i0; i2 <= i; i2++, index += width) {\n            bitsDecoded[index]++;\n          }\n\n          i1++;\n        }\n        for (i = i0 + i1; i < iNext; i++, index += width) {\n          if (\n            coefficentsMagnitude[index] ||\n            (processingFlags[index] & processedMask) !== 0\n          ) {\n            continue;\n          }\n\n          const contextLabel = labels[neighborsSignificance[index]];\n          const decision = decoder.readBit(contexts, contextLabel);\n          if (decision === 1) {\n            sign = this.decodeSignBit(i, j, index);\n            coefficentsSign[index] = sign;\n            coefficentsMagnitude[index] = 1;\n            this.setNeighborsSignificance(i, j, index);\n            processingFlags[index] |= firstMagnitudeBitMask;\n          }\n          bitsDecoded[index]++;\n        }\n      }\n    }\n  }\n\n  checkSegmentationSymbol() {\n    const decoder = this.decoder;\n    const contexts = this.contexts;\n    const symbol =\n      (decoder.readBit(contexts, BitModel.UNIFORM_CONTEXT) << 3) |\n      (decoder.readBit(contexts, BitModel.UNIFORM_CONTEXT) << 2) |\n      (decoder.readBit(contexts, BitModel.UNIFORM_CONTEXT) << 1) |\n      decoder.readBit(contexts, BitModel.UNIFORM_CONTEXT);\n    if (symbol !== 0xa) {\n      throw new JpxError(\"Invalid segmentation symbol\");\n    }\n  }\n}\n\n// Section F, Discrete wavelet transformation\nclass Transform {\n  constructor() {\n    if (this.constructor === Transform) {\n      unreachable(\"Cannot initialize Transform.\");\n    }\n  }\n\n  calculate(subbands, u0, v0) {\n    let ll = subbands[0];\n    for (let i = 1, ii = subbands.length; i < ii; i++) {\n      ll = this.iterate(ll, subbands[i], u0, v0);\n    }\n    return ll;\n  }\n\n  extend(buffer, offset, size) {\n    // Section F.3.7 extending... using max extension of 4\n    let i1 = offset - 1,\n      j1 = offset + 1;\n    let i2 = offset + size - 2,\n      j2 = offset + size;\n    buffer[i1--] = buffer[j1++];\n    buffer[j2++] = buffer[i2--];\n    buffer[i1--] = buffer[j1++];\n    buffer[j2++] = buffer[i2--];\n    buffer[i1--] = buffer[j1++];\n    buffer[j2++] = buffer[i2--];\n    buffer[i1] = buffer[j1];\n    buffer[j2] = buffer[i2];\n  }\n\n  filter(x, offset, length) {\n    unreachable(\"Abstract method `filter` called\");\n  }\n\n  iterate(ll, hl_lh_hh, u0, v0) {\n    const llWidth = ll.width,\n      llHeight = ll.height;\n    let llItems = ll.items;\n    const width = hl_lh_hh.width;\n    const height = hl_lh_hh.height;\n    const items = hl_lh_hh.items;\n    let i, j, k, l, u, v;\n\n    // Interleave LL according to Section F.3.3\n    for (k = 0, i = 0; i < llHeight; i++) {\n      l = i * 2 * width;\n      for (j = 0; j < llWidth; j++, k++, l += 2) {\n        items[l] = llItems[k];\n      }\n    }\n    // The LL band is not needed anymore.\n    llItems = ll.items = null;\n\n    const bufferPadding = 4;\n    const rowBuffer = new Float32Array(width + 2 * bufferPadding);\n\n    // Section F.3.4 HOR_SR\n    if (width === 1) {\n      // if width = 1, when u0 even keep items as is, when odd divide by 2\n      if ((u0 & 1) !== 0) {\n        for (v = 0, k = 0; v < height; v++, k += width) {\n          items[k] *= 0.5;\n        }\n      }\n    } else {\n      for (v = 0, k = 0; v < height; v++, k += width) {\n        rowBuffer.set(items.subarray(k, k + width), bufferPadding);\n\n        this.extend(rowBuffer, bufferPadding, width);\n        this.filter(rowBuffer, bufferPadding, width);\n\n        items.set(rowBuffer.subarray(bufferPadding, bufferPadding + width), k);\n      }\n    }\n\n    // Accesses to the items array can take long, because it may not fit into\n    // CPU cache and has to be fetched from main memory. Since subsequent\n    // accesses to the items array are not local when reading columns, we\n    // have a cache miss every time. To reduce cache misses, get up to\n    // 'numBuffers' items at a time and store them into the individual\n    // buffers. The colBuffers should be small enough to fit into CPU cache.\n    let numBuffers = 16;\n    const colBuffers = [];\n    for (i = 0; i < numBuffers; i++) {\n      colBuffers.push(new Float32Array(height + 2 * bufferPadding));\n    }\n    let b,\n      currentBuffer = 0;\n    ll = bufferPadding + height;\n\n    // Section F.3.5 VER_SR\n    if (height === 1) {\n      // if height = 1, when v0 even keep items as is, when odd divide by 2\n      if ((v0 & 1) !== 0) {\n        for (u = 0; u < width; u++) {\n          items[u] *= 0.5;\n        }\n      }\n    } else {\n      for (u = 0; u < width; u++) {\n        // if we ran out of buffers, copy several image columns at once\n        if (currentBuffer === 0) {\n          numBuffers = Math.min(width - u, numBuffers);\n          for (k = u, l = bufferPadding; l < ll; k += width, l++) {\n            for (b = 0; b < numBuffers; b++) {\n              colBuffers[b][l] = items[k + b];\n            }\n          }\n          currentBuffer = numBuffers;\n        }\n\n        currentBuffer--;\n        const buffer = colBuffers[currentBuffer];\n        this.extend(buffer, bufferPadding, height);\n        this.filter(buffer, bufferPadding, height);\n\n        // If this is last buffer in this group of buffers, flush all buffers.\n        if (currentBuffer === 0) {\n          k = u - numBuffers + 1;\n          for (l = bufferPadding; l < ll; k += width, l++) {\n            for (b = 0; b < numBuffers; b++) {\n              items[k + b] = colBuffers[b][l];\n            }\n          }\n        }\n      }\n    }\n\n    return { width, height, items };\n  }\n}\n\n// Section 3.8.2 Irreversible 9-7 filter\nclass IrreversibleTransform extends Transform {\n  filter(x, offset, length) {\n    const len = length >> 1;\n    offset |= 0;\n    let j, n, current, next;\n\n    const alpha = -1.586134342059924;\n    const beta = -0.052980118572961;\n    const gamma = 0.882911075530934;\n    const delta = 0.443506852043971;\n    const K = 1.230174104914001;\n    const K_ = 1 / K;\n\n    // step 1 is combined with step 3\n\n    // step 2\n    j = offset - 3;\n    for (n = len + 4; n--; j += 2) {\n      x[j] *= K_;\n    }\n\n    // step 1 & 3\n    j = offset - 2;\n    current = delta * x[j - 1];\n    for (n = len + 3; n--; j += 2) {\n      next = delta * x[j + 1];\n      x[j] = K * x[j] - current - next;\n      if (n--) {\n        j += 2;\n        current = delta * x[j + 1];\n        x[j] = K * x[j] - current - next;\n      } else {\n        break;\n      }\n    }\n\n    // step 4\n    j = offset - 1;\n    current = gamma * x[j - 1];\n    for (n = len + 2; n--; j += 2) {\n      next = gamma * x[j + 1];\n      x[j] -= current + next;\n      if (n--) {\n        j += 2;\n        current = gamma * x[j + 1];\n        x[j] -= current + next;\n      } else {\n        break;\n      }\n    }\n\n    // step 5\n    j = offset;\n    current = beta * x[j - 1];\n    for (n = len + 1; n--; j += 2) {\n      next = beta * x[j + 1];\n      x[j] -= current + next;\n      if (n--) {\n        j += 2;\n        current = beta * x[j + 1];\n        x[j] -= current + next;\n      } else {\n        break;\n      }\n    }\n\n    // step 6\n    if (len !== 0) {\n      j = offset + 1;\n      current = alpha * x[j - 1];\n      for (n = len; n--; j += 2) {\n        next = alpha * x[j + 1];\n        x[j] -= current + next;\n        if (n--) {\n          j += 2;\n          current = alpha * x[j + 1];\n          x[j] -= current + next;\n        } else {\n          break;\n        }\n      }\n    }\n  }\n}\n\n// Section 3.8.1 Reversible 5-3 filter\nclass ReversibleTransform extends Transform {\n  filter(x, offset, length) {\n    const len = length >> 1;\n    offset |= 0;\n    let j, n;\n\n    for (j = offset, n = len + 1; n--; j += 2) {\n      x[j] -= (x[j - 1] + x[j + 1] + 2) >> 2;\n    }\n\n    for (j = offset + 1, n = len; n--; j += 2) {\n      x[j] += (x[j - 1] + x[j + 1]) >> 1;\n    }\n  }\n}\n\nexport { JpxImage };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getVerbosityLevel, setVerbosityLevel } from \"./shared/util.js\";\nimport { Jbig2Image } from \"./core/jbig2.js\";\nimport { JpegImage } from \"./core/jpg.js\";\nimport { JpxImage } from \"./core/jpx.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion =\n  typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : void 0;\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild =\n  typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : void 0;\n\nexport {\n  getVerbosityLevel,\n  Jbig2Image,\n  JpegImage,\n  JpxImage,\n  setVerbosityLevel,\n};\n"],"names":["isNodeJS","process","versions","nw","electron","type","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","MAX_IMAGE_SIZE_TO_CACHE","LINE_FACTOR","LINE_DESCENT_FACTOR","BASELINE_FACTOR","RenderingIntentFlag","ANY","DISPLAY","PRINT","SAVE","ANNOTATIONS_FORMS","ANNOTATIONS_STORAGE","ANNOTATIONS_DISABLE","OPLIST","AnnotationMode","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","AnnotationEditorPrefix","AnnotationEditorType","NONE","FREETEXT","STAMP","INK","AnnotationEditorParamsType","RESIZE","CREATE","FREETEXT_SIZE","FREETEXT_COLOR","FREETEXT_OPACITY","INK_COLOR","INK_THICKNESS","INK_OPACITY","PermissionFlag","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","CARET","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationReplyType","GROUP","REPLY","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","AnnotationActionEventType","E","X","D","U","Fo","Bl","PO","PC","PV","PI","K","F","V","C","DocumentActionEventType","WC","WS","DS","WP","DP","PageActionEventType","O","VerbosityLevel","ERRORS","WARNINGS","INFOS","CMapCompressionType","BINARY","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotation","endAnnotation","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","verbosity","setVerbosityLevel","level","Number","isInteger","getVerbosityLevel","info","msg","console","log","warn","unreachable","Error","assert","cond","_isValidProtocol","url","protocol","createValidAbsoluteUrl","baseUrl","options","addDefaultProtocol","startsWith","dots","match","length","tryConvertEncoding","stringToUTF8String","absoluteUrl","URL","shadow","obj","prop","value","nonSerializable","Object","defineProperty","enumerable","configurable","writable","BaseException","BaseExceptionClosure","message","name","constructor","prototype","PasswordException","code","UnknownErrorException","details","InvalidPDFException","MissingPDFException","UnexpectedResponseException","status","FormatError","AbortException","bytesToString","bytes","undefined","MAX_ARGUMENT_COUNT","String","fromCharCode","apply","strBuf","i","chunkEnd","Math","min","chunk","subarray","push","join","stringToBytes","str","Uint8Array","charCodeAt","string32","objectSize","keys","objectFromMap","map","create","key","isLittleEndian","buffer8","view32","Uint32Array","buffer","isEvalSupported","Function","FeatureTest","isOffscreenCanvasSupported","OffscreenCanvas","platform","navigator","isMac","includes","isCSSRoundSupported","globalThis","CSS","supports","hexNumbers","Array","n","toString","padStart","Util","makeHexColor","r","g","b","scaleMinMax","minMax","temp","m1","m2","applyTransform","p","m","xt","yt","applyInverseTransform","d","getAxialAlignedBoundingBox","p1","p2","slice","p3","p4","max","inverseTransform","singularValueDecompose2dScale","transpose","a","c","first","second","sqrt","sx","sy","normalizeRect","rect","intersect","rect1","rect2","xLow","xHigh","yLow","yHigh","bezierBoundingBox","x0","y0","x1","y1","x2","y2","x3","y3","tvalues","bounds","t","t1","t2","b2ac","sqrtb2ac","abs","j","mt","jlen","PDFStringTranslateTable","stringToPDFString","encoding","decoder","TextDecoder","fatal","decode","ex","ii","charAt","decodeURIComponent","escape","utf8StringToString","unescape","encodeURIComponent","isArrayBuffer","v","byteLength","isArrayEqual","arr1","arr2","getModificationDate","date","Date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","PromiseCapability","settled","promise","Promise","resolve","reject","data","reason","NormalizeRegex","NormalizationMap","normalizeUnicode","Map","replaceAll","_","normalize","get","getUuid","crypto","randomUUID","buf","getRandomValues","floor","random","AnnotationPrefix","CIRCULAR_REF","Symbol","EOF","CmdCache","NameCache","RefCache","clearPrimitiveCaches","Name","Cmd","cmd","nonSerializableClosure","Dict","xref","_map","objId","suppressEncryption","__nonSerializable__","assignXref","newXref","size","key1","key2","key3","Ref","fetch","getAsync","fetchAsync","getArray","isArray","getRaw","getKeys","getRawValues","values","set","has","forEach","callback","empty","emptyDict","merge","dictArray","mergeSubDicts","mergedDict","properties","dict","entries","property","subDict","clear","clone","num","gen","fromString","ref","exec","parseInt","RefSet","parent","_set","Set","put","add","remove","delete","iterator","RefSetCache","putAlias","aliasRef","isName","isCmd","isDict","isRefsEqual","v1","v2","BaseStream","isEmpty","isDataLoaded","getByte","getBytes","peekByte","peekedByte","pos","peekBytes","getUint16","b0","b1","getInt32","b2","b3","getByteRange","begin","end","getString","skip","reset","moveStart","makeSubStream","start","getBaseStreams","PDF_VERSION_REGEXP","getLookupTableFactory","initializer","lookup","MissingDataException","ParserEOFException","XRefEntryException","XRefParseException","arrayBuffersToBytes","arr","dataLength","item","getInheritableProperty","stopWhenFound","visited","ROMAN_NUMBER_MAP","toRomanNumerals","number","lowerCase","romanBuf","romanStr","toLowerCase","log2","x","ceil","readInt8","offset","readUint16","readUint32","isWhiteSpace","ch","parseXFAPath","path","positionPattern","split","component","escapePDFName","char","substring","escapeString","_collectJS","entry","list","parents","element","js","collectActions","eventType","actions","additionalActionsDicts","additionalActions","action","actionDict","Action","XMLEntities","encodeToXmlString","codePointAt","entity","toUpperCase","validateFontName","fontFamily","mustWarn","re","RegExp","test","ident","validateCSSFont","cssFontInfo","DEFAULT_CSS_FONT_OBLIQUE","DEFAULT_CSS_FONT_WEIGHT","CSS_FONT_WEIGHT_VALUES","fontWeight","italicAngle","weight","angle","parseFloat","isNaN","recoverJsURL","URL_OPEN_METHODS","regex","jsUrl","newWindow","numberToString","roundedValue","round","toFixed","getNewAnnotationsMap","annotationStorage","newAnnotationsByPage","annotations","pageIndex","isAscii","stringToUTF16HexString","stringToUTF16String","bigEndian","getRotationMatrix","rotation","width","height","QeTable","qe","nmps","nlps","switchFlag","ArithmeticDecoder","bp","dataEnd","chigh","clow","byteIn","ct","readBit","contexts","cx_index","cx_mps","qeTableIcx","qeIcx","ccittEOL","ccittEOF","twoDimPass","twoDimHoriz","twoDimVert0","twoDimVertR1","twoDimVertL1","twoDimVertR2","twoDimVertL2","twoDimVertR3","twoDimVertL3","twoDimTable","whiteTable1","whiteTable2","blackTable1","blackTable2","blackTable3","CCITTFaxDecoder","source","next","eof","eoline","EndOfLine","byteAlign","EncodedByteAlign","columns","Columns","rows","Rows","eoblock","EndOfBlock","black","BlackIs1","codingLine","refLine","codingPos","row","nextLine2D","inputBits","inputBuf","outputBits","rowsDone","code1","_lookBits","_eatBits","readNextChar","refPos","blackPixels","bits","err","code2","code3","_getTwoDimCode","_addPixels","_getBlackCode","_getWhiteCode","_addPixelsNeg","gotEOL","a1","_findTableCode","table","limit","limitValue","result","Jbig2Error","ContextCache","getContexts","id","Int8Array","DecodingContext","contextCache","cache","MAX_INT_32","MIN_INT_32","decodeInteger","procedure","prev","readBits","bit","sign","signedValue","decodeIAID","codeLength","SegmentTypes","CodingTemplates","y","RefinementTemplates","coding","reference","ReusedContexts","RefinementReusedContexts","decodeBitmapTemplate0","decodingContext","bitmap","contextLabel","pixel","row1","row2","OLD_PIXEL_MASK","decodeBitmap","mmr","templateIndex","prediction","at","input","Reader","decodeMMRBitmap","useskip","template","concat","sort","templateLength","templateX","templateY","changingTemplateEntries","reuseMask","minX","maxX","minY","k","changingEntriesLength","changingTemplateX","changingTemplateY","changingTemplateBit","Uint16Array","sbb_left","sbb_top","sbb_right","pseudoPixelContext","ltp","i0","j0","shift","sltp","decodeRefinement","referenceBitmap","offsetX","offsetY","codingTemplate","codingTemplateLength","codingTemplateX","Int32Array","codingTemplateY","referenceTemplate","referenceTemplateLength","referenceTemplateX","referenceTemplateY","referenceWidth","referenceHeight","decodeSymbolDictionary","huffman","refinement","symbols","numberOfNewSymbols","numberOfExportedSymbols","huffmanTables","refinementTemplateIndex","refinementAt","huffmanInput","newSymbols","currentHeight","symbolCodeLength","tableB1","symbolWidths","getStandardTable","deltaHeight","tableDeltaHeight","currentWidth","totalWidth","firstSymbol","deltaWidth","tableDeltaWidth","numberOfInstances","decodeTextRegion","symbolId","rdx","rdy","symbol","bitmapSize","tableBitmapSize","collectiveBitmap","readUncompressedBitmap","originalEnd","bitmapEnd","position","numberOfSymbolsDecoded","xMin","xMax","bitmapWidth","symbolBitmap","exportedSymbols","flags","currentFlag","totalSymbolsLength","runLength","defaultPixelValue","numberOfSymbolInstances","stripSize","inputSymbols","transposed","dsOffset","referenceCorner","combinationOperator","logStripSize","stripT","tableDeltaT","firstS","deltaT","deltaFirstS","tableFirstS","currentS","currentT","symbolIDTable","applyRefinement","symbolWidth","symbolHeight","rdw","rdh","offsetT","offsetS","s2","symbolRow","maxWidth","deltaS","tableDeltaS","decodePatternDictionary","patternWidth","patternHeight","maxPatternIndex","collectiveWidth","patterns","patternBitmap","decodeHalftoneRegion","regionWidth","regionHeight","enableSkip","gridWidth","gridHeight","gridOffsetX","gridOffsetY","gridVectorX","gridVectorY","regionBitmap","numberOfPatterns","pattern0","bitsPerValue","grayScaleBitPlanes","mmrInput","mg","ng","patternIndex","patternRow","regionRow","regionX","regionY","readSegmentHeader","segmentHeader","segmentType","typeName","deferredNonRetain","pageAssociationFieldSize","referredFlags","referredToCount","retainBits","referredToSegmentNumberSize","referredTo","pageAssociation","genericRegionInfo","readRegionSegmentInformation","genericRegionSegmentFlags","RegionSegmentInformationFieldLength","genericRegionMmr","searchPatternLength","searchPattern","headerEnd","readSegments","header","segments","segment","randomAccess","processSegment","visitor","args","atLength","dictionary","dictionaryFlags","huffmanDHSelector","huffmanDWSelector","bitmapSizeSelector","aggregationInstancesSelector","bitmapCodingContextUsed","bitmapCodingContextRetained","refinementTemplate","textRegion","textRegionSegmentFlags","textRegionHuffmanFlags","huffmanFS","huffmanDS","huffmanDT","huffmanRefinementDW","huffmanRefinementDH","huffmanRefinementDX","huffmanRefinementDY","huffmanRefinementSizeSelector","patternDictionary","patternDictionaryFlags","halftoneRegion","halftoneRegionFlags","genericRegion","pageInfo","resolutionX","resolutionY","pageSegmentFlags","lossless","requiresBuffer","combinationOperatorOverride","callbackName","processSegments","parseJbig2Chunks","chunks","SimpleSegmentVisitor","parseJbig2","numberOfPages","currentPageInfo","bitPacked","imgData","Uint8ClampedArray","q","mask","onPageInformation","rowSize","drawBitmap","regionInfo","mask0","offset0","onImmediateGenericRegion","region","onImmediateLosslessGenericRegion","arguments","onSymbolDictionary","currentSegment","referredSegments","getSymbolDictionaryHuffmanTables","customTables","referredSegment","referredSymbols","onImmediateTextRegion","getTextRegionHuffmanTables","onImmediateLosslessTextRegion","onPatternDictionary","onImmediateHalftoneRegion","onImmediateLosslessHalftoneRegion","onTables","decodeTablesSegment","HuffmanLine","lineData","isOOB","rangeLow","prefixLength","rangeLength","prefixCode","isLowerRange","HuffmanTreeNode","line","children","isLeaf","buildTree","node","decodeNode","reader","htOffset","HuffmanTable","lines","prefixCodesDone","assignPrefixCodes","rootNode","linesLength","prefixLengthMax","histogram","currentLength","firstCode","currentCode","currentTemp","lowestValue","highestValue","prefixSizeBits","rangeSizeBits","currentRangeLow","standardTablesCache","currentByte","numBits","getCustomHuffmanTable","index","currentIndex","numberOfSymbols","codes","runCodesTable","repeatedLength","numberOfRepeats","customIndex","tableAggregateInstances","endOfBlock","params","lookForEOFLimit","Jbig2Image","parseChunks","parse","convertToRGBA","kind","convertBlackAndWhiteToRGBA","convertRGBToRGBA","src","srcPos","dest","nonBlackColor","inverseDecode","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","destPos","elem","len32","src32","s1","s3","jj","grayToRGBA","JpegError","DNLMarkerError","scanLines","EOIMarkerError","dctZigZag","dctCos1","dctSin1","dctCos3","dctSin3","dctCos6","dctSin6","dctSqrt2","dctSqrt1d2","buildHuffmanTable","codeLengths","pop","getBlockBufferOffset","col","blocksPerLine","decodeScan","frame","components","resetInterval","spectralStart","spectralEnd","successivePrev","successive","parseDNLMarker","mcusPerLine","progressive","startOffset","bitsData","bitsCount","nextByte","maybeScanLines","blockRow","precision","decodeHuffman","tree","receive","receiveAndExtend","decodeBaseline","blockOffset","huffmanTableDC","diff","blockData","pred","rs","huffmanTableAC","s","z","decodeDCFirst","decodeDCSuccessive","eobrun","decodeACFirst","e","successiveACState","successiveACNextValue","decodeACSuccessive","offsetZ","decodeMcu","mcu","mcuRow","mcuCol","blockCol","h","decodeBlock","componentsLength","decodeFn","fileMarker","mcuExpected","blocksPerColumn","mcusPerColumn","mcuToRead","findNextFileMarker","invalid","partialMsg","marker","quantizeAndInverse","blockBufferOffset","qt","quantizationTable","v0","v3","v4","v5","v6","v7","p0","p5","p6","p7","buildComponentData","computationBuffer","Int16Array","currentPos","startPos","maxPos","newPos","currentMarker","newMarker","JpegImage","decodeTransform","colorTransform","_decodeTransform","_colorTransform","dnlScanLines","readDataBlock","endOffset","array","prepareComponents","samplesPerLine","maxH","maxV","blocksPerLineForMcu","blocksPerColumnForMcu","blocksBufferSize","jfif","adobe","numSOSMarkers","quantizationTables","huffmanTablesAC","huffmanTablesDC","markerLoop","l","appData","version","major","minor","densityUnits","xDensity","yDensity","thumbWidth","thumbHeight","thumbData","flags0","flags1","transformCode","quantizationTablesLength","quantizationTablesEnd","quantizationTableSpec","tableData","extended","sofScanLines","componentIds","componentsCount","componentId","qId","quantizationId","huffmanLength","huffmanTableSpec","codeLengthSum","huffmanValues","selectorsCount","componentIndex","tableSpec","successiveApproximation","processed","nextFileMarker","output","scaleX","scaleY","numComponents","_getLinearizedBlockData","isSourcePDF","componentScaleX","componentScaleY","blocksPerScanline","xScaleBlockOffset","mask3LSB","lastComponentScaleX","_isColorConversionNeeded","_convertYccToRgb","Y","Cb","Cr","_convertYccToRgba","out","_convertYcckToRgb","_convertYcckToRgba","_convertYcckToCmyk","_convertCmykToRgb","_convertCmykToRgba","getData","forceRGBA","forceRGB","len","rgbaData","grayColor","JpxError","SubbandsGainLog2","LL","LH","HL","HH","JpxImage","failOnCorruptedImage","head","parseCodestream","headerSize","lbox","tbox","jumpDataLength","method","colorspace","headerType","parseImageProperties","stream","newByte","oldByte","Xsiz","Ysiz","XOsiz","YOsiz","Csiz","bitsPerComponent","context","doNotRecover","sqcd","spqcds","spqcdSize","scalarExpounded","tile","mainHeader","siz","XTsiz","YTsiz","XTOsiz","YTOsiz","isSigned","XRsiz","YRsiz","calculateComponentDimensions","SIZ","calculateTileGrids","QCC","COC","qcd","noQuantization","guardBits","spqcd","epsilon","mu","SPqcds","QCD","currentTile","qcc","cqcc","cod","scod","entropyCoderWithCustomPrecincts","sopMarkerUsed","ephMarkerUsed","progressionOrder","layersCount","multipleComponentTransform","decompositionLevelsCount","xcb","ycb","blockStyle","selectiveArithmeticCodingBypass","resetContextProbabilities","terminationOnEachCodingPass","verticallyStripe","predictableTermination","segmentationSymbolUsed","reversibleTransformation","precinctsSizes","precinctsSize","PPx","PPy","unsupported","COD","partIndex","partsCount","initializeTile","buildPackets","parseTilePackets","tiles","transformComponents","numXtiles","numYtiles","tx0","ty0","tx1","ty1","tileComponent","tcx0","tcy0","tcx1","tcy1","getBlocksDimensions","codOrCoc","codingStyleParameters","xcb_","ycb_","buildPrecincts","resolution","dimensions","precinctWidth","precinctHeight","isZeroRes","resLevel","precinctWidthInSubband","precinctHeightInSubband","numprecinctswide","trx1","trx0","numprecinctshigh","try1","try0","numprecincts","precinctParameters","buildCodeblocks","subband","codeblockWidth","codeblockHeight","cbx0","tbx0","cby0","tby0","cbx1","tbx1","cby1","tby1","codeblocks","precincts","codeblock","precinctNumber","cbx","cby","tbx0_","tby0_","tbx1_","tby1_","pi","pj","subbandType","Lblock","precinct","cbxMin","cbxMax","cbyMin","cbyMax","codeblockParameters","numcodeblockwide","numcodeblockhigh","createPacket","layerNumber","precinctCodeblocks","subbands","LayerResolutionComponentPositionIterator","tileIndex","codingStyleDefaultParameters","maxDecompositionLevelsCount","nextPacket","JpxImage_nextPacket","resolutions","packet","ResolutionLayerComponentPositionIterator","ResolutionPositionComponentLayerIterator","maxNumPrecinctsInLevel","maxNumPrecincts","PositionComponentResolutionLayerIterator","getPrecinctSizesInImageScale","precinctsIterationSizes","px","py","maxNumHigh","maxNumWide","sizeInImageScale","getPrecinctIndexIfExist","ComponentPositionResolutionLayerIterator","pxIndex","pyIndex","precinctIterationSizes","posX","minWidth","posY","minHeight","startPrecinctRowIndex","MAX_VALUE","sizePerComponent","sizePerResolution","minWidthCurrentComponent","minHeightCurrentComponent","maxNumWideCurrentComponent","maxNumHighCurrentComponent","scale","widthCurrentResolution","heightCurrentResolution","blocksDimensions","bscale","resolutionSubbands","packetsIterator","bufferSize","skipNextBit","count","skipMarkerIfEqual","skipBytes","alignToByte","readCodingpasses","queue","codeblockColumn","codeblockRow","codeblockIncluded","firstTimeInclusion","valueReady","zeroBitPlanesTree","included","inclusionTree","InclusionTree","TagTree","nextLevel","incrementValue","zeroBitPlanes","codingpasses","codingpassesLog2","codedDataLength","packetItem","copyCoefficients","coefficients","levelWidth","levelHeight","delta","mb","reversible","right","bottom","blockWidth","blockHeight","bitModel","BitModel","currentCodingpassType","totalLength","dataItem","encodedData","setDecoder","runSignificancePropagationPass","runMagnitudeRefinementPass","runCleanupPass","checkSegmentationSymbol","coefficentsSign","magnitude","coefficentsMagnitude","bitsDecoded","magnitudeCorrection","nb","interleave","levelOffset","transformTile","quantizationParameters","ReversibleTransform","IrreversibleTransform","subbandCoefficients","Float32Array","gainLog2","items","calculate","left","top","resultImages","transformedTiles","tile0","fourComponents","y0items","y1items","y2items","y3items","component0","alpha01","qcdOrQcc","levelsLength","levels","currentLevel","defaultValue","stopValue","propagateValues","levelIndex","currentValue","UNIFORM_CONTEXT","RUNLENGTH_CONTEXT","LLAndLHContextsLabel","HLContextLabel","HHContextLabel","contextLabelTable","coefficientCount","neighborsSignificance","processingFlags","setNeighborsSignificance","column","labels","processedInverseMask","processedMask","firstMagnitudeBitMask","i1","decision","decodeSignBit","contribution","sign0","sign1","significance1","decoded","horizontalContribution","width4","index0","indexNext","significance","oneRowDown","twoRowsDown","threeRowsDown","iNext","indexBase","checkAllEmpty","allEmpty","hasSignificantCoefficent","i2","Transform","u0","ll","iterate","extend","j1","j2","filter","hl_lh_hh","llWidth","llHeight","llItems","u","bufferPadding","rowBuffer","numBuffers","colBuffers","currentBuffer","current","alpha","beta","gamma","K_","pdfjsVersion","pdfjsBuild"],"sourceRoot":""}